Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум КТіООР.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
4.21 Mб
Скачать

2.7.1 Основні теоретичні відомості

СМР-порівняння операндів

(1-й операнд) — (2-й операнд)

Вміст другого операнда при виконанні цієї команди віднімається з вмісту першого операнда. Результат операції змінює прапори AF, CF, PF, SF і ZF. Самі операнди не змінюються. Перший операнд може бути записаний в регістрі або в елементі пам'яті. Другий операнд може бути заданий в регістрі, комірці пам'яті, або безпосереднім операндом. Не допускається використовувати для запису операндів сегментний регістр або записувати обидва операнди одночасно в елементи оперативної пам'яті. Команда здійснює операції як із словами, так і з байтами.

Приклад. Хай в регістрі АХ записано число 024DH, в регістрі СХ, а в регістрі прапорів процесора – число F046H. Після виконання команди СМР в регістрі прапорів буде записано нове число F083H

Прапорці, що змінюються після команди:OF, SF, ZF, AF, PF, CF.

JМP-безумовний перехід

Команда здійснює безумовну передачу управління.

Приклади запису на мові асемблера JMP NEXT_PROC

Ja/jnbe – перехід, якщо більше/перехід, якщо не менше або рівно

Якщо(CF) = 0 і (ZF) = 0, то (IP)  (IP) + Disp 8.

Команди здійснюють передачу управління за адресою, яка задається цільовим операндом, при виконанні умови одночасної рівності нулю прапорів CF і ZF. В іншому випадку виконується наступна команда. Адреса цільового операнда генерується додаванням байта зміщення з адресою наступної команди. Так як байт зміщення представляє собою 8-бітове ціле знакове число, команди можуть вказувати адресу переходу в діапазоні +127 байт  –128 байт від послідньої адреси команди. Команди зручно використовувати при порівнянні беззнакових чисел.

Приклад. Нехай регістр AL містить число 62Н і виконується наступна послідовність команд:

CMP AL,60H

JA UPPER

RET

UPPER: AND AL,5EH

Перша команда в цій послідовності здійснює скидання в нуль прапорів CF і ZF. Після виконання команди JA UPPER управління передається команді з адресою UPPER і виконується команда AND AL,5EH. Це свідчить про те, що вміст регістру AL більший за шіснадцяткове число 60Н.

Якщо регістр AL містить число 41Н, то в наведеному прикладі в результаті виконання першої команди прапор CF буде встановлений в 1 і наступною за командою JA буде виконуватися команда RET.

Jae/jnb/jnc – перехід, якщо більше чи рівно/перехід, якщо не менше/перехід, якщо нема переносу

Якщо (CF) = 0, то (IP)  (IP) + Disp 8.

При виконанні умови рівності нулю прапора CF команди передають управління за адресою, яка задана цільовим операндом. В іншому випадку виконується наступна команда. Адреса цільового операнда визначається додавання байта зміщення з адресою наступної команди. Так як байт зміщення є 8-бітове ціле знакове число, то команди JAE/JNB/JNC можуть передавати управління командам з адресою пам’яті з діапазону +127байт  –128байт. Команди використовуються для порівняння беззнакових чисел.

Приклад. Нехай регістр ВХ містить число D823H і виконуються наступні команди:

SUB BX,100H

JAE ERROR

CALL NEW

RET

ERROR: ADD DL,125

Перша команда скидає в нуль прапор CF. Після виконання другої команди управління передається команді ADD DL,125 з адресою ERROR. Це означає, що вміст регістру BX більший за число 100Н або рівний йому.

Якщо в регістрі ВХ записане число 0047Н, то в приведеному прикладі при виконанні першої команди прапор CF буде встановлений в одиницю і наступною командою буде CALL NEW.