Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Завдання на роботу. Визначити стан регістрів та комірок пам’яті після виконання команд
Визначити стан регістрів та комірок пам’яті після виконання команд 1) AND [SI+07], AX 2) OR [BX+SI+2], AX 3) XOR DX, [SI+18] 4) NOT WORD [BX+0A] Можна вказувати стан тільки тих регістрів та комірок пам’яті, котрі змінюються даною командою. Перед кожною наступною командою зберігається стан регістрів і комірок пам’яті, встановлених попередніми командами.
Початковий стан регістрів та комірок пам’яті:
АX=72DE BX=0006 DX=5EAC SI=0004 DS:0000 CD 20 00 A0 00 9A F0 FE DS:0008 1D F0 07 21 A1 FD CC 0A DS:0010 20 0C 80 02 A2 1A 10 0C DS:0018 01 01 01 00 02 07 FF FF
Аркуш із очіуваними станами регістрів та комірок пам’яті підписати у викладача, після чого виконати команди у оболонці Turbo Debugger і перевірити правильність очікуваних результатів.
Варіанти завдань Початковий стан регістрів: АX=72DE BX=0006 DX=5EAC SI=0004 1 AND [SI+07], AX OR [SI+BX], DL XOR DX, [SI+14] NOT WORD [BX+09] 2 OR [BX+SI+03], BH XOR DX,[SI+16] NOT WORD [BX] AND [SI+05], DX 3 XOR DX, [SI+14] NOT WORD AX AND AL,[SI+06] OR [BX+SI], DL 4 NOT WORD [BX+09] AND [SI+05], DX OR BYTE [BX],73 XOR DX, [SI] 5 AND AH,[SI] NOT WORD [BX] OR [BX+04], DL XOR DX, [SI+04] 6 OR [SI+BX+10],DL XOR DX, [04] AND AL,[SI+BX] NOT WORD [SI] 7 XOR DX,[SI+16] AND [SI+05], DX OR BYTE [SI],12 NOT WORD AX 8 AND AL,[SI+06] NOT WORD [SI] OR [BX+04], DL XOR DX, [SI+03] 9 OR BYTE [BX],74 XOR DX, [BX+04] AND [SI+BX], DX NOT WORD [BX+09] 10 NOT WORD AX AND [SI+05], DX OR BYTE [BX],14 XOR DX, [SI] 11 AND [SI+05], DX NOT WORD [BX] OR [BX+04], DL XOR DX, [SI+04] 12 OR [BX+SI+04], DL XOR DX, [04] AND AL,[SI+BX] NOT WORD [SI] 13 XOR DX, [SI+04] AND [SI+05], DX OR BYTE [SI],74 NOT WORD AX 14 NOT WORD [BX] AND [SI+05], DX OR BYTE [BX],22 XOR DX, [SI]
4.4 Приклад оформлення звіту
Покроковий стан флагів: 1 крок: зміна стану прапорців: с = 1 та а = 1. АX=72DE BX=0006 DX=5EAC SI=0004 DS:0000 CD 20 00 A0 00 9A F0 FE DS:0008 1D F0 07 21 A1 FD DE 72 DS:0010 20 0C 80 02 A2 1A 10 0C DS:0018 01 01 01 00 02 07 FF FF 2 крок: зміна стану прапорців: с = 0, s = 0 та а = 0. АX=72DE BX=0006 DX=5EAC SI=0004 DS:0000 CD 20 00 A0 00 9A F0 FE DS:0008 1D F0 07 00 02 FD DE 72 DS:0010 20 0C 80 02 A2 1A 10 0C DS:0018 01 01 01 00 02 07 FF FF 3 крок: прапорці не помінялися. АX=72DE BX=0006 DX= 5E65 SI=0004 DS:0000 CD 20 00 A0 00 9A F0 FE DS:0008 1D F0 07 21 A1 FD DE 72 DS:0010 20 0C 80 02 A2 1A 10 0C DS:0018 01 01 01 00 02 07 FF FF 4 крок: зміна стану прапорців: с = 1, s = 1 та а = 1. АX=72DE BX=0006 DX=5E65 SI=0004 DS:0000 CD 20 00 A0 00 9A F0 FE DS:0008 1D F0 07 00 02 FD DE 72 DS:0010 DF F3 80 02 A2 1A 10 0C DS:0018 01 01 01 00 02 07 FF FF ЛАБОРАТОРНА РОБОТА №5
АРИФМЕТИЧНІ ОПЕРАЦІЇ ДОДАВАННЯ, ВІДНІМАННЯ
5.1 Мета роботи
Ознайомитися з простими арифметичними опера-ціями та вдосконалити свої знання у роботі з регістрами флагів.
5.2 Теоретичні відомості ADD – додавання (1-й операнд) (1-й операнд) + (2-й операнд) Після цієї команди здійснюється додавання першого і другого операндів. Результат поміщається на місце зберігання першого операнду. Попереднє значення першого операнду втра-чається. Вміст комірки другого операнду залишається незмінним. Місцем зберігання першого операнду може бути регістр або комірка пам'яті; другого операнда – регістр або комірка пам'яті, або він може бути заданий безпосередньо операндом. Не дозволяється використовувати для запису операндів сегментні регістри, а також комірки пам'яті для одночасного зберігання двох операндів. Операнди можуть бути числами із знаком або без нього і бути байтами або словами. Приклад. Нехай регістр DL містить число 58Н, однобайтова комірка пам'яті TEST_BYTE містить 27Н, а в регістрі прапорців процесора записано число F046H. Після виконання команди ADD TEST_BYTE,DL в комірку пам'яті буде записане число 7FH. Вміст регістра DL 0101 1000 = 58Н Вміст комірки TEST_BYTE 0 010 0111 = 27Н Новий вміст комірки TEST_BYTE 0111 1111 = 7FH Число одиничних бітів в комірці пам'яті TEST_BYTE після виконання команди рівне семи, тобто непарне число, тому прапорець паритету PF скидається в нуль. Прапорці SF і ZF обнуляються, оскільки результат операції – позитивне, відмінне від нуля число. Прапорці CF і OF також обнуляються, зважаючи на відсутність перенесення і переповнювання відповідно. Прапо-рець AF має нульове значення, оскільки немає перенесення з третього розряду. Прапорці, що змінюються: OF,SF,ZF,AF,PF,CF. SUВ – віднімання (1-й операнд) ← (1-й операнд) – (2-й операнд). Вміст другого операнда при виконанні команди віднімається з вмісту першого операнда і результат розміщується на місце першого операнда. Перший операнд при цьому втрачається, а другий зберігається незмінним. Перший операнд може бути заданий в регістрі або комірці пам'яті. Другий операнд може бути заданий в регістрі, комірці пам'яті або безпосередньо. Не допускається використовування сегментного регістра або одночасний запис обидвох операндів в комірках пам'яті. Операнди можуть бути як знаковими, так і беззнаковими числами. Можливе виконання 8- і 16-розрядних операцій. Приклад. Розглянемо випадок, коли регістр DL містить число 58Н, регістр DH – число 20Н і регістр прапорців процесора – чис-ло F046H. Після виконання команди SUB DL, DH в регістрі DL буде записано число 38Н, а в регістрі прапорців – число F002H. Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF.
NEG – заперечення (Операнд) – (Операнд). Після цієї команди заданий операнд віднімається з нуля, а результат записується за адресою операнда, який стирається. Операнд може бути заданий в регістрі загального призначення або комірці пам'яті у форматі байта або слова. Команда NEG впливає на прапорці AF, CF, ОF, PF, SF і ZF. Приклад. Нехай в регістрі ВХ записано число 2. Після виконання команди NEG новим вмістом регістру ВХ буде FFFEH, що є записом числа –2 в додатковому коді. Прапорці, що змінюються після команди: ОF, SF, ZF, AF, РF і СF.
INC-інкремент (Операнд) (Операнд) + 1 По цій команді початковий операнд збільшується на 1. Операнд може бути заданий в регістрі загального призначення або в комірці пам'яті. Сегментні регістри не можуть бути використані для зберігання операндів. Команда INC може використовуватися як з однобайтовими, так і двобайтовими операндами. Операнди інтерпретуються як числа без знаку. Команда впливає на прапорці AF, OF, PF, SF і ZF і не змінює прапорця CF. Приклад. Нехай регістр ВХ задає двобайтову комірку пам'яті з вмістом FE00H і виконується команда INC WORD PTR [ВХ]. Новим вмістом пам'яті після виконання команди буде число FE01H. Оскільки результатом операції є негативне, відмінне від нуля число в додатковому коді, то прапорець SF встановлений в 1, а прапорець ZF — в 0. Наявність тільки одного відмінного від нуля розряду в молодшому байті слова обумовлює скидання прапорця паритету в 0. Прапорці, що змінюються після команди: OF, SF, AF, PF і ZF. Date: 2015-12-12; view: 464; Нарушение авторских прав |