Дослідження способів представлення даних

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Комп'ютерна інженерія
Кафедра:
ЕОМ

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

Рік:
2014
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Засоби системного програмування
Група:
КІ 2
Варіант:
2 11

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

Міністерство освіти та науки України Національний університет «Львівська політехніка»  ЗВІТ З лабораторної роботи №3 З дисципліни: «Засоби системного програмування» На тему: «Дослідження способів представлення даних в пам’яті комп’ютера з архітектурою х86.» Мета: вивчити способи задання констант та змінних в Асемблері, набути навики інтерпретування даних в пам’яті комп’ютера з архітектурою х86. ЗАВДАННЯ: Створити *.exe програму, яка розміщує в пам’яті даних комп’ютера, операнди, що задані варіантом. Вхідні операнди А, В, С, D, E, F з індексом u вважати без знаковими і довжиною в байтах, згідно з індексу, з індексом fs вважати з рухомою комою одинарної точності (32 біти), з індексом fd вважати з рухомою комою подвійної точності (64 біти), з індексом fe вважати з рухомою комою розширеної точності (80 біт); операнди А, В, С розмістити в сегменті DATA з довільним вирівнюванням сегменту, D, E, F розмістити в сегменті DATA1 з вирівнюванням сегменту BYTE, WORD, DWORD, PARA, PAGE (див. [5]). Крім цього операнд А є масивом з 3-ох елементів. При оголошені призначити операндам початкові значення використовуючи всі можливі системи лічби. К – константа, довжина якої визначається значенням(згідно варіанту), а значення задане в шістнадцятковому форматі. Для її опису слід використати директиву EQU. Задати одну мітку в довільному місці сегменту даних. В одному з сегментів на вибір розташувати змінну Message db 'Прізвище',13,10,'$', де 'Прізвище' – прізвище виконавця роботи, яке вивести на екран. За допомогою Debug, дослідити представлення даних в пам’яті комп’ютера для кожного з варіантів вирівнювання (продемонструвати розміщення даних та здійснити інтерпретацію). Скласти звіт про виконану роботу з приведенням тексту програми з коментарями, дампу пам’яті для кожного з варіантів вирівнювання стеку, та аналітично інтерпретувати дані для кожної зі змінних. Дати відповідь на контрольні запитання. ВАРІАНТИ ЗАВДАНЬ: № Операнди K  1 A2,B1u,C4,Dfd,E10,F3, K 1254021  2 A2,B4u,Cfs,D8u,E10,F5, K 202  3 A4,B3u,C4,Dfd,E10,F8, K 37788663  4 A1,B4u,Cfs,D10u,E1,F8, K 45694  5 A8,B1u,C4,Dfd,E10,F5, K 505  6 A2,B4u,Cfs,D8u,E10,F7, K 6DD02316  7 A4,B5u,C4,Dfs,E10,F8, K 717  8 A4,B2u,Cds,D10u,E1,F8, K 88  9 A1,B3u,C4,Dfd,E8,F2, K 29  10 A2,B5u,Cfs,D8u,E10,F4, K 2310  11 A4,B3u,C4,Dfd,E8,F8, K 311  12 A2,B4u,Cfd,D10u,E1,F8, K 7055E0AC  13 A8,B1u,C4,Dfe,E2,F5, K 2513  14 A2,B3u,Cfd,D8u,E10,F1, K 614  15 A4,B5u,C4,Dfe,E10,F8, K 4569600F  16 A1,B3u,Cfe,D10u,E4,F8, K 616  17 A1,B1u,C3,Dfe,E10,F4, K 1017  18 A2,B4u,Cfs,D8u,E10,F5, K 56987018  19 A4,B3u,C4,Dfd,E10,F8, K 4019  20 A8,B4u,Cfe,D10u,E1,F8, K 18932020  21 A10,B1u,C4,Dfs,E8,F5, K 21  22 A8,B4u,Cfd,D8u,E10,F7, K 45781022  23 A4,B5u,C4,Dfe,E10,F8, K 7AA02023  24 A2,B2u,Cfs,D10u,E1,F8, K 74569024  25 A1,B3u,C4,Dfd,E8,F4, K 2B05025  26 A2,B6u,Cfs,D8u,E10,F4, K 6C26  27 A4,B3u,C2,Dfs,E8,F8, K A77627  28 A8,B4u,Cfd,D10u,E1,F2, K 3FF28  29 A10,B1u,C4,Dfe,E2,F5, K 12A0C029  30 A2,B6u,Cfd,D8u,E10,F1, K 25630   Мій варіант: №2 Лістинг програми STACK SEGMENT PARA STACK 'STACK' db 100h DUP (?) STACK ENDS DATA SEGMENT PAGE 'DATA' HelloMessage db 'Bakay',13,10,'$' A dw 0123Q,0ABCh, 9874 B dd 4513fa12h C dd 3.14e3; 32/8=4 byte DATA ENDS DATA1 SEGMENT DWORD 'DATA' LBL LABEL BYTE D dq 1235674489ABCDEFh ; 16 digit (unsigned) E dt 123567114489ABCDEFh ; 20 digit (signed), >0 F dw 00BCh, 4BCDh, 2ADBh ; 5 byte = 3*2 byte, signed K equ 202h DATA1 ENDS CODE SEGMENT PARA 'CODE' ASSUME cs:CODE, ds:DATA ProgramStart: 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 HelloMessage int 21h mov ah,4Ch ;DOS terminate program function int 21h ;end of the program CODE ENDS END ProgramStart  Скріншот дампу пам’яті Червоним кольором виділена змінна HelloMessage, далі жовтим кольором змінна A, фіолетовим кольором змінна B, жовтим кольором змінна C, фіолетовим кольором змінна D, помаранчевим кольором змінна E, червоним кольором змінна F. Асемблер перетворює всі змінні в шістнадцятковий формат і записує байти в об’єктному коді в зворотної послідовності - справа наліво. Переведення змінних у представлення в пам’яті комп’ютера В дампі пам’яті всі змінні зберігаються в 16 системі числення. Символьна змінна HelloMessage зберігається в пам’яті за допомогою ASCII коду – записується 16-кове значення кожного символу. B – 42 a – 61 k – 6B a – 61 y – 79 13 – 0D 10 – 0A $ – 24 В результаті в дампі ми отримаємо: 42 61 6B 61 79 0D 0A 24 Під кожний елемент змінної А виділяється 2 байти: Значення 0123Q 8 системи числення переводиться в 16 систему числення – 00 53. Оскільки дані зберігаються в пам’яті комп’ютера в зворотній послідовності, то це число записується в дамп як 53 00. Число 0ABCh змінної А вже є у 16 коді, тому переводити не потрібно, а тільки записується у зворотньому порядку – BC 0A. Число 9874 змінної А задане у 10 системі числення. Переводимо його у 16 СЧ і отримуємо число 26 92, а за аналогічним принципом воно в пам’яті запишеться як 92 26. Під змінну B виділяється 4 байти. Вона є вже записана у 16 СЧ: 4513FA12h, тому переводити не потрібно, а тільки записати у зворотній послідовності: 12 FA 13 45. Під змінну C також виділяється 4 байти. Ця змінна є у форматі з рухомою комою одинарної точності і записана у 10 СЧ. Після переводу у 16 СЧ буде 45444000h, а у зворотньому порядку в дампі отримаємо 00 40 44 45. Два наступних байти пропускаються, оскільки вирівнювання наступного сегменту є зі значенням DWORD, а отже адреса сегменту може починатися тільки з адреси кратної 4. Змінна D займає 8 байт і вже є записана у 16 СЧ: 1235674489ABCDEFh, тому переводити не потрібно, а тільки записати у зворотній послідовності: EF CD AB 89 44 67 35 12. Змінна E займає 10 байт і вже є записана у 16 СЧ: 00123567114489ABCDEFh, тому переводити не потрібно, а тільки записати у зворотній послідовності: EF CD AB 89 44 11 67 35 12 00. Під кожний елемент змінної F виділяється 2 байти: Значення 00BCh є у 16 системі числення, тому просто записуємо у зворотньому порядку – BC 00. Аналогічно робимо і для решти частин змінної F: 4BCDh => CD 4B, 2ADB => DB 2A. Висновок На цій лабораторній роботі я вивчив способи задання констант та змінних в Асемблері, набув навики інтерпретування даних в пам’яті комп’ютера з архітектурою х86.
Антиботан аватар за замовчуванням

28.05.2014 14:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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