Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Завдання на роботу
Визначити стан регістрів та комірок пам’яті після виконання команд: 1) MOV ВХ, 000А 3) MOV [BX+0003], BX 2) MOV [BX+0001], 56B3 4) MOV AX, [BX+0002] Можна вказувати стан тільки тих регістрів та комірок пам’яті, котрі змінюються даною командою. Перед кожною наступною командою зберігається стан регістрів і комірок пам’яті, встановлених попередніми командами. Аркуш із очікуваними станами регістрів та комірок пам’яті підписати у викладача, після чого виконати команди у оболонці Turbo Debugger і перевірити правильність очікуваних результатів. Варіанти завдань 1 MOV BX, 0001 MOV [BX+0004], DX MOV [BX +0002], BX MOV DX, [BX+0006] 2 MOV AX, 000B MOV [AX+0010], CX MOV [AX+0002], AX MOV CX, [AX+0001] 3 MOV BX, 0005 MOV [BX+0001],BX MOV [BX+0002],AX MOV CX, [BX+0005] 4 MOV AX, 0003 MOV [AX+0011], DX MOV [AX+0004],DX MOV CX, [AX+0001] 5 MOV CX, 000A MOV DX, [CX+0012] MOV [CX+0012], AX MOV BX, [CX+0010] 6 MOV AX, 0001 MOV [AX+0002], BX MOV [AX+0008], DX MOV BX, [AX+0010] 7 MOV DX, 0007 MOV [DX], AX MOV [DX+0002], BX MOV AX, [DX+0001] 8 MOV BX, 0001 MOV [BX+0004], DX MOV [BX +0002], BX MOV DX, [BX+0006] 9 MOV AX, 000B MOV [AX+0010], CX MOV [AX+0002], AX MOV CX, [AX+0001] 10 MOV BX, 0005 MOV [BX+0001],BX MOV [BX+0002],AX MOV CX, [BX+0005] 11 MOV AX, 0003 MOV [AX+0011], DX MOV [AX+0004],DX MOV CX, [AX+0001] 12 MOV CX, 000A MOV DX, [CX+0012] MOV [CX+0012], AX MOV BX, [CX+0010] MOV [01], BX MOV DH, [12] 13 MOV AX, 0001 MOV [AX+0002], BX MOV [AX+0008], DX MOV BX, [AX+0010] 14 MOV DX, 0007 MOV [DX], AX MOV [DX+0002], BX MOV AX, [DX+0001]
3.4 Приклад оформлення звіту Після виконання команд, вказаних у завданні 3.2, стан регістрів та комірок пам’яті (покомандно) буде наступний: 1) AX=****,BX= 000A, DS:0000 CD 20 00 A0 01 9A F0 FE CX=****,DX=****, DS:0008 1D F1 01 06 B5 FD D1 0A SI=****,DI=****, DS:0010 01 09 03 04 02 08 F2 F3 BP=****. DS:0018 CB 25 6D AA D1 EA F5 F4 2) AX=****,BX=000A, DS:0000 CD 20 00 A0 01 9A F0 FE CX=****,DX=****, DS:0008 1D F1 01 B3 56 FD D1 0A SI=-****,DI=****, DS:0010 01 09 03 04 02 08 F2 F3 BP=****. DS:0018 CB 25 6D AA D1 EA F5 F4 3) AX=****,BX=000A, DS:0000 CD 20 00 A0 01 9A F0 FE CX=****,DX=****, DS:0008 1D F1 01 B3 56 0A 00 0A SI=****,DI=****, DS:0010 01 09 03 04 02 08 F2 F3 BP=****. DS:0018 CB 25 6D AA D1 EA F5 F4 4) AX= 0A56,BX=000A, DS:0000 CD 20 00 A0 01 9A F0 FE CX=****,DX=****, DS:0008 1D F1 01 B3 56 0A 000A SI=****,DI=****, DS:0010 01 09 03 04 02 08 F2 F3 BP=****. DS:0018 CB 25 6D AA D1 EA F5 F4 ЛАБОРАТОРНА РОБОТА №4
ЛОГІЧНІ ОПЕРАЦІЇ. РЕГІСТР ПРАПОРЦІВ
4.1 Мета роботи
Навчитися виконувати логічні операції за допомогою команд мови Асемблер. Ознайомитися із особливостями встановлення прапорців.
4.2 Теоретичні відомості Регістр прапорців (ознак) flags призначений для задання параметрів роботи процесора, а також для індикації стану арифметичних, логічних та інших операцій шляхом встановлення бітів (або, як їх ще називають, прапорців) даного регістра.
Таблиця 4.1 - Опис прапорців регістра ознак
Продовження таблиці 4.1
Для ручного (програмного) встановлення чи скидання (обнулення) прапорців регістра flags існують спеціальні команди, які мають наступний формат: − встановити прапорець (записати в прапорець одиничку) st< перша літера назви прапорця > − скинути прапорець (записати в прапорець нуль) cl< перша літера назви прапорця > Наприклад:
sti;встановити прапорець i nterrupt flag (I F) cli;скинути прапорець i nterrupt flag (I F) stc;встановити прапорець c arry flag (C F) cld;скинути прапорець d irection flag (D F) AND – логічне множення (l-й операнд) (1-й операнд) AND (2-й операнд) (CF) 0 (OF) 0 Після цієї команди здійснюється логічне множення першого операнда на другий. Попереднє значення першого операнду при цьому втрачається, а другий операнд зберігається незмінним. Перший операнд може бути записаний в регістрі або комірці пам'яті. Другий операнд може бути заданий в регістрі, комірці пам'яті або безпосередньо операндом. Не можна використовувати для зберігання операндів сегментні регістри, а також записувати обидва операнди одночасно в комірки пам'яті. По команді можна виконувати операції над байтами або словами. Після виконання цієї команди прапорці CF і OF завжди будуть рівні нулю. Приклад. Нехай регістр BX містить число 024DH, регістр BP – число F007H. Після виконання команди AND BX, BP в регістрі BX буде записане число 0005H. Вміст регістра BX 0000 0010 0100 1101 = 024DH Вміст регістра BP 1111 0000 0000 0111 = F007H Новий вміст регістра BX 0000 0000 0000 0101 = 0005H Число одиничних бітів в молодшому байті регістра BX дорівнює два, тобто, число парне,тому прапорець паритету PF встановлений в одиницю. Так як результатом булевої операції AND є додатнє, відмінне від нуля число в додатковому коді, прапорці SF і ZF дорівнюють нулю. Прапорці CF і OF завжди встановлені в нуль, оскільки відсутнє перенесення і переповнення відповідно. Прапорець AF не визначений. Прапорці, що змінюються після команди: OF, SF, ZF, AF, PF, CF. OR-логічне АБО (1-й Операнд) (1-й Операнд) АБО (2-й Операнд). (CF) 0 (OF) 0 Після цієї команди виконується операція логічного складання обидвох операндів. Результат записується замість першого операнда, попереднє значення якого стирається. Другий операнд не змінюється. Перший операнд може бути заданий в регістрі або комірці пам'яті. Другий операнд може бути також і безпосереднім операндом. Не допускається використовувати для запису операндів регістри сегментів, а також задавати обидва операнди одночасно в комірках пам'яті. Операнди можуть бути задані одно- або двобайтовими числами. Команда OR завжди скидає в 0 прапорці CF і OF.
Приклад. Нехай вміст регістру АХ дорівює 1468Н, регістру DX – 8553 Н і регістру прапорців – F046H. Після виконання команди OR AX,DX новими значеннями регістру АХ і регістру прапорців будуть 957ВН та F086H відповідно.
Оскільки число відмінних від нуля розрядів молодшого байта регістру АХ парне, прапорець паритету PF встановлений в 1. Оскільки результат операції АБО – негативне, відмінне від нуля число в додатковому коді, прапорець SF встановлений в 1, а ZF – в 0. Прапорці CF і OF також мають нульове значення через відсутність перенесення і переповнення. Значення прапорця AF не визначено.
Прапорці, що змінюються після команди: 0F, SF, ZF, AF, РF і СF. NOT-логічне заперечення (Операнд) Інверсія всіх розрядів (Операнд).
Після цієї команди виконується інверсія всіх розрядів операнда. Операнди можуть бути задані в регістрах загального призначення або одно- або двобайтових комірках пам'яті. Команда NOT не впливає на прапорці.
Приклад. Нехай вміст регістра BL рівний нулю. Hовим значенням BL після виконання команди NOT буде FFH.
XOR – Виняткове ЧИ (Перший операнд) ← (1-й операнд) XOR (2-й операнд). (CF) ← 0 (ОF) ← 0 Після цієї команди виконується логічна операція Виняткове ЧИ з першим і другим операндами. Результат розміщується на місце зберігання першого операнда, і він втрачається. Другий операнд зберігається. Перший операнд може бути заданий в регістрі або в комірці пам'яті. Другий операнд може бути заданий в регістрі, комірці пам'яті або безпосередньо. Не допускається використовувати для запису будь-якого з операндів сегментні регістри або записувати їх одночасно в комірки пам'яті. Операція проводиться як над 8-, так і над 16-розрядними числами. Прапорці перенесення CF і переповнення ОF завжди скидаються в 0.
Приклад. Нехай регістр АХ містить число 7FFFH, регістр DX – число 8000Н, а регістр прапорців – число F046H. Після виконання команди XOR AX, DX регістр АХ міститиме число FFFFH, а регістр прапорців – F086H.
Вміст регістра АХ 0111 1111 1111 1111 = 7FFFH Вміст регістра DX 1000 0000 0000 0000 = 8000Н Новий вміст регістра АХ 1111 1111 1111 1111 = FFFFH
Оскільки молодші вісім розрядів регістра АХ містять вісім одиничних бітів, тобто парна кількість, прапорець паритету PF встановлюється в 1. Оскільки результат є від’ємним, відмінним від нуля числом в додатковому коді, прапорець знаку SF встановлюється в 1, а прапорець нуля ZF скидається в 0. Оскільки при виконанні цієї команди ніколи не буває перенесення і переповнення, прапорці перенесення CF і переповнення ОF завжди скидаються в 0. Стан прапорця додаткового перенесення AF є невизначеним.
Прапорці, що змінюються після операції: OF, SF, ZF, АF, PF, CF. Date: 2015-12-12; view: 401; Нарушение авторских прав |