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

Jb/jnae/jc – перехід, якщо менше/перехід, якщо не більше або рівно/перехід,тобто, перенесення

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

Команди передають управління за адресою, при умові, що прапор перенесення CF встановлений в 1. Інакше виконується наступна по черзі команда. Оскільки байт зміщення є 8-бітове ціле число із знаком, команди JB/JNAF/JC можуть передавати управління командам з адресами з діапазону -127байт-+128байт від останньої адреси команди переходу.

Приклад. Нехай регістр AL містить 00, однобайтова комірка пам'яті TEST-BIT містить 1 і виконується наступна послідовність команд:

CMP AL,TEST_BIT

JB PARITY

AND DL,AL

RET

PARITY: HLT

Команда CMP AL,ТEST_BIT встановлює прапор CF в 1. Після виконання другої команди управління передається команді з адресою PARITY, тобто команді HLT. Це означає, що вміст регістра AL менше вмісту комірки пам'яті TEST-BIT. Якщо регістр AL і комірка пам'яті TEST-BIT містять одне і те ж число 00, то при виконанні першої команди прапор CF буде скинений в 0 і виконуватиметься наступна команда - AND AL.DL.

Jbe/jna-перехід, якщо менше або рівно/перехід, якщо не більше

Якщо (CF)=1 або (ZF)=1, тo (IP)(IP) + Disp8.

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

Приклад. Нехай двобайтовий елемент пам'яті NEW_DATA містить число 0001Н і виконуються команди

CMP WORD PTR NEW_DATA,01

JBH FOUND

CLD

RET

FOUND: AND AL.00

Оскільки обидва операнди першої команди рівні один одному (обидва рівні 01), після її виконання буде встановлений в одиницю прапор ZF. Після виконання другої команди управління буде передано за адресою FOUND, де знаходиться команда AND AL.00, яка виконується наступною після JBE FOUND командою. Це означає, що вміст двобайтовї комірки пам’яті NEW_DATA менше або рівно значенню другого операнду (в даному випадку 1).

Якщо в елементі пам'яті NEW_DATA міститься число 0024Н, то відбудеться перехід до команди CLD

Jcxz-перехід, якщо вміст регістра сх рівний нулю

Якщо (СХ) = 0, то (IP)  (IP) + Disp8.

Команда передає управління за адресою, що задається цільовим операндом, за умови, що вміст регістра СХ рівний 0. Інакше виконується наступна за JCXZ команда. Адреса цільового операнда обчислюється додаванням байта зміщення з адресою наступної команди. Оскільки зміщення є 8-бітове ціле число із знаком, команда може вказувати адресу переходу в діапазоні .+ 127 байт -128 байт від кінця команди.

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

DEC CX

JCXZ SKIP_REPEAT

CALL REPEAT

RET

SKIP_REPEAT: STD

Перша команда зменшує вміст регістру СХ до 0. Після виконання другої команди управління буде передано команді STD з адресою SKIP_REPEAT.