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

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

Якщо (SF)#(OF), то (IP)  (IP) + Disp8.

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

Приклад. Нехай регістр АХ містить число FFFFH, регістр DX - число 0002Н і виконуються наступні команди:

CMP AX,DX

JL CHECK

CLC

RET

CHECK: AND АХ, 00

Перша команда встановлює прапор SF в 1, а прапор OF в 0. Після виконання команди JL CHECK управління передається за адресою CHECK і виконується команда AND AX,00. Це означає, що вміст регістра АХ менше вмісту регістра DX.

Якщо регістр АХ містить число 0124Н, а регістр DX - число 0020Н, тоді після виконання першої команди прапори SF і OF будуть скинені в 0 і замість переходу за адресою CHECK виконуватиметься наступна за JL команда CLC.

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

Якщо (SF)#(OF) або (ZF) = 1, то (IP)  (IP) + Disp8.

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

Приклад. Нехай в регістрі СХ записано число D700H, в регістрі ВР - число 0124Н і виконується наступна послідовність команд:

СМР СХ,ВР

JLE NEXT

AND AL,00

RET

NEXT: ADD АХ, 127

Перша команда встановлює прапор SF в 1 і скидає прапор OF в 0. Після виконання другої команди управління передається за адресою NEXT і виконується команда ADD АХ,127. Це означає, що вміст регістра СХ не більше вмісту регістру ВР.

Якщо регістр СХ містить число 0125Н, регістр ВР - число 0124Н, тоді перша команда скине в 0 обидва прапори SF і OF і замість передачі управління за адресою NEXT наступною виконуваною командою буде AND AL,00.

Jne/jnz-переход по нерівності /переход, якщо не нуль

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

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

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

DEC ВХ

JNE OUTPUT

ADD AX,4000H

RET

OUTPUT: CLD

Перша команда скидає в 0 прапор ZF. Після виконання команди JNE OUTPUT управління передається за адресою OUTPUT, по якій розташована наступна виконувана команда CLD. Це означає, що вміст регістра ВХ не рівний нулю.

JNO-перехід, якщо немає переповнювання

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

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

Приклад. Нехай вміст регістра АХ дорівнюю 6800Н, регістра ВХ– 1000Н і виконується наступна послідовність команд:

ADD AX,BX

JNO NOT_YET

ADD АХ, 256

RET

NOT-YET: CLD

Перша команда скидає в 0 прапор OF. Після виконання команди JNO NOT_YET управління передається за адресою NOT_YET, де розташована команда CLD. Це означає, що результат додавання виконаного по команді ADD AX,BX, не виходить за розрядну сітку регістра АХ.