Дослідження способів представлення даних в пам’яті комп’ютера з архітектурою х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:13

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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