Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать неотразимый комплимент Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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: 73; Нарушение авторских прав

mydocx.ru - 2015-2019 year. (0.01 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию