Дослідження способів представлення даних в пам’яті комп’ютера з архітектурою х86

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи
Варіант:
27

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет «Львівська політехніка» Кафедра ЕОМ Звіт до лабораторної роботи № 3 з дисципліни: “ Засоби системного програмування” на тему: “ Дослідження способів представлення даних в пам’яті комп’ютера з архітектурою х86” Мета Вивчити способи задання констант та змінних в Асемблері, набути навики інтерпретування даних в пам’яті комп’ютера з архітектурою х86. Короткі теоретичні відомості Асемблер допускає два основні методи визначення даних: через вказування довжини даних та за їх значенням. В першому випадку використовуються директиви визначення даних, а у другому безпосереднє значення або директива EQU. Розглянемо основний формат визначення даних: [ім’я] Dn вираз - Ім’я елемента даних не є обов’язковим але якщо в програмі є посилання на деякий елемент, те це робиться за допомогою імені. - Для визначення елементів даних є наступні директиви: DB (байт) DW (слово – 2 байти) DD (подвійне слово – 4 байти), DQ (8 байт) DT (10 байт). Директива EQU Директива EQU не визначає елемент даних, але визначає значення, що може бути використане для підстановки в інших командах. Директива LABEL Директива LABEL створює мітку, яка не займає місця в пам’яті, а просто вказує на адресу команди або дані, що слідують за нею. Має наступний формат: мітка LABEL тип Мітка – це назва містки, параметр тип може приймати одне з значень: BYTE (1 байт), WORD (2 байти), DWORD (4 байти), FWORD (6 байт), QWORD (8 байт), TBYTE (10 байт), NEAR (ближня мітка), FAR (дальня мітка). Мітка отримує значення рівне зміщенню в сегменті адрес наступної за нею команди або зміщенню в сегменті даних наступного за нею операнду і тип вказаний явно. За допомогою міток з різними типами зручно організовувати доступ до одних і тих самих даних, що інтерпретуватимуться по різному в залежності від типу мітки. Наприклад, як байти чи як слова. Або здійснювати ближні чи дальні перерходи. Завдання: Створити *.exe програму, яка розміщує в пам’яті даних комп’ютера, операнди, що задані варіантом. Вхідні операнди А, В, С, D, E, F з індексом u вважати без знаковими і довжиною в байтах, згідно з індексу, з індексом fs вважати з рухомою комою одинарної точності (32 біти), з індексом fd вважати з рухомою комою подвійної точності (64 біти), з індексом fe вважати з рухомою комою розширеної точності (80 біт); операнди А, В, С розмістити в сегменті DATA з довільним вирівнюванням сегменту, D, E, F розмістити в сегменті DATA1 з вирівнюванням сегменту BYTE, WORD, DWORD, PARA, PAGE. Крім цього операнд А є масивом з 3-ох елементів. При оголошені призначити операндам початкові значення використовуючи всі можливі системи лічби. К – константа, довжина якої визначається значенням(згідно варіанту), а значення задане в шістнадцятковому форматі. Для її опису слід використати директиву EQU. Задати одну мітку в довільному місці сегменту даних. В одному з сегментів на вибір розташувати змінну Message db 'Прізвище',13,10,'$', де 'Прізвище' – прізвище виконавця роботи, яке вивести на екран. За допомогою Debug, дослідити представлення даних в пам’яті комп’ютера для кожного з варіантів вирівнювання (продемонструвати розміщення даних та здійснити інтерпретацію). Скласти звіт про виконану роботу з приведенням тексту програми з коментарями, дампу пам’яті для кожного з варіантів вирівнювання стеку, та аналітично інтерпретувати дані для кожної зі змінних. Індивідуальне завдання(Варіант 27): № Операнди K  27 A4,B3u,C2,Dfs,E8,F8, K A77627   Текст програми та результати її виконання: STACK SEGMENT PARA STACK 'STACK' db 100h DUP (?) STACK ENDS DATA SEGMENT WORD 'DATA' Message db 'YAROM',13,10,'$' A dd 4513fa12h B dw 0005h, 00B5Ch C dw 0123Q,0ABCh, 9874 DATA ENDS DATA1 SEGMENT WORD 'DATA' LBL LABEL BYTE D dd 3.14e3; 32/8=4 byte E dq 1235674489ABCDEFh ; 16 digit (unsigned) F dq 1234524489ABCDEFh K equ A77627h DATA1 ENDS CODE SEGMENT PARA 'CODE' ASSUME cs:CODE, ds:DATA Start: push ds ;initialize stack segment sub ax,ax ;initialize stack segment push ax ;initialize stack segment mov ax,Data ;initialize data segment mov ds,ax ;initialize data segment mov ah,09 ;display message mov dx,OFFSET Message int 21h mov ah,4Ch ;DOS terminate program function int 21h ;end of the program CODE ENDS END Start /Рис.1 Результат виконання програми Дамп пам’яті містить такі дані: Стрічка яка міститься під міткою Message – “YAROM” ASCII код даної стрічки відповідає сумі ASCII кодів всіх літер стрічки: ВПК: 59 41 52 4F 4D. Змінна A: ВПК: 12 FA 13 45 Змінна B: ВПК: 05 00 5C 0B Змінна C: 01 23q=00 53h 0A BCh 9874 = 2692h ВПК: 53 00 BC 0A 92 26 Мітка LBL (параметр типу BYTE) Пам’ять не виділяється, мітка вказує на молодший байт змінної, яка знаходиться зразу після неї, а саме: EF. Змінна D: ВПК: 00 40 44 45 Змінна E: ВПК: EF CD AB 89 44 67 35 12 Змінна F: ВПК: EF CD AB 89 44 52 34 12 Дамп пам’яті відображено на рис.2, де оранжевим кольором відображена стрічка Message, червоним– змінна А, жовтим– змінна В, зеленим – змінна С, рожевим – змінна D, фіолетовим– змінна E, синім – змінна F. Чорним позначено байт вирівнювання границі. Коричневим колом відмічений перший байт змінної D, на який вказує мітка “LBL+0”. Константа К не заноситься в пам’ять, а заміняється числом, що їй відповідає у тексті програми на етапі розбору коду препроцесором. Рис.2. Вмістиме дампу пам’яті Висновок: Під час виконання даної лабораторної роботи я дослідив систему представлення даних у пам’яті комп’ютера з архітектурою х86 та вдосконалив навички у користуванні відлагоджувачем Turbo Debuger.
Антиботан аватар за замовчуванням

09.10.2016 12:10-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!