
- •Загальні методичні вказівки
- •1.3 Завдання на роботу
- •1.4 Контрольні запитання
- •2.3 Завдання на роботу
- •Варіанти завдань:
- •Варіанти завдань
- •3.4 Приклад оформлення звіту
- •4.3 Завдання на роботу
- •Варіанти завдань
- •4.4 Приклад оформлення звіту
- •5.3 Завдання на роботу
- •Варіанти завдань
- •5.4 Приклад оформлення звіту
- •6.3 Завдання на роботу
- •Контрольні запитання
- •А) команда rol; б) команда ror; в) команда rcl; г) команда rcr
- •7.3 Завдання на роботу
- •7.4 Приклад оформлення звіту
- •8.3 Завдання на роботу
- •8.4 Приклад оформлення звіту
- •X 28 розрядів bl, di, si y 12 розрядів ax
- •9.3 Завдання на роботу
- •9.4 Приклад оформлення звіту
- •10.2 Завдання на роботу
- •10.3 Варіанти завдань
- •11.3 Завдання на роботу
- •11.4 Контрольні запитання
- •12.3 Завдання на роботу
- •12.4 Приклад оформлення звіту
- •Виконання:
- •13.3 Завдання на роботу
- •13.4 Контрольні запитання
- •14.3 Завдання на роботу
- •Контрольні запитання
- •15.3 Завдання на роботу
- •16.3 Завдання на роботу
- •16.4 Контрольні запитання
- •17.3 Завдання на роботу
- •17.4 Контрольні запитання
- •18.3 Завдання на роботу
- •18.4 Контрольні запитання
- •19.3 Завдання на роботу
- •12.3 Контрольні запитання
- •20.3 Завдання на роботу
- •20.4 Контрольні запитання
- •21.3 Завдання на роботу
- •21.4 Контрольні запитання
- •Перелік рекомендованих джерел
4.3 Завдання на роботу
Визначити стан регістрів та комірок пам’яті після виконання команд
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.
DEC-декремент
(Операнд) (Операнд) — 1
По цій команді початковий вміст операнда, визначеного в команді, зменшується на 1. Операнд може зберігатися в регістрі загального призначення або елементі пам'яті. Не допускається завдання операндів в регістрах сегментів. Операція виконується як над однобайтовими, так і над двобайтовими числами. Операнд розглядається як беззнакове число. Команда DEC не впливає на прапорець CF.
Приклад. Хай в регістрі BL записано 00 і виконується командиа DEC BL. Новим вмістом регістра BL буде число FFH. Оскільки результат є від’ємним, відмінним від нуля числом в додатковому коді, прапорець знаку SF встановлюється в 1, а прапорець нуля ZF скидається в 0. Оскільки в результаті присутні вісім відмінних від нуля бітів, тобто парне число, прапорець паритету PF теж встановлений в 1.
Прапорці, що змінюються після команди: OF; SF; ZF; AF; PF.
СМР-порівняння операндів
(1-й операнд) — (2-й операнд)
Вміст другого операнда при виконанні цієї команди віднімається з вмісту першого операнда. Результат операції змінює прапорці AF, CF, PF, SF і ZF. Самі операнди не змінюються. Перший операнд може бути записаний в регістрі або в елементі пам'яті. Другий операнд може бути заданий в регістрі, комірці пам'яті або безпосереднім операндом. Не допускається використовувати для запису операндів сегментний регістр або записувати обидва операнди одночасно в елементи оперативної пам'яті. Команда здійснює операції як із словами, так і з байтами.
Приклад. Хай в регістрі АХ записано число 024DH, в регіс-трі СХ, а в регістрі прапорців процесора – число F046H. Після виконання команди СМР АХ, СХ в регістрі прапорців буде записано нове число F083H
Прапорці, що змінюються після команди:OF, SF, ZF, AF, PF, CF.