Иллюстрированный самоучитель по Assembler

J

Jcc Команды условных переходов

Команды, обозначаемые (в книгах, не в программах!) Jcc, осуществляют переход по указанному адресу при выполнении условия, заданного мнемоникой команды. Если заданное условие не выполняется, переход не осуществляется, а выполняется команда, следующая за командой Jcc. Переход может осуществляться как вперед, так и назад в диапазоне + 127…-128 байтов.

В составе команд процессора предусмотрены следующие команды условных переходов:

Команда Перейти, если Условие перехода
ja выше CF=0 и ZF=0
jae выше или равно CF=0
jb ниже CF=1
jbe ниже или равно CF=1 или ZF=1
jc перенос CF=1
jcxz CX=0 CX=0
je равно ZF=1
jg больше ZF=0 или SF=OF
jge больше или равно SF=OF
jl меньше SF не равно OF
jle меньше или равно ZF=1 или SF не равно OF
jna не выше CF=1 или ZF=1
jnae не выше и не равно CF=1
jnb не ниже CF=0
jnbe не ниже и не равно CF=0 и ZF=0
jnc нет переноса CF=0
jne не равно ZF=0
jng не больше ZF=1 или SF не равно OF
jnge не больше и не равно SF не равно OF
jnl не меньше SF=OF
jnle не меньше и не равно ZF=0 и SF=OF
jno нет переполнения OF=0
jnp нет четности PF=0
jns знаковый бит равен О SF=0
jnz не нуль ZF=0
jo переполнение OF=1
jp есть четность PF=1
jpe сумма битов четная PF=1
jpo сумма битов нечетная PF=0
js знаковый бит равен SF=1
jz нуль ZF= I

Команды условных переходов, осуществляющие переход по условию "выше – ниже", предназначены для анализа чисел без знака; команды, осуществляющие переход по условию "больше – меньше", предназначены для анализа чисел со знаком.

Пример 1:

cmp СХ,0; CX=0?
je equal; Если да, перейти па метку equal

Пример 2:

cmp AX,1000; Пусть AX=8000h=32768
;(=-32768)
ja above; 32768 > 1000. Переход будет

Пример 3:

cmp AX,1000h; Пусть AX=8000h=-32768
; (=32768)
jg greater; -32768 < 1000h. Перехода не будет

Пример 4:

int 21h; Вызов системной функции
jc error; Если CF=1 (ошибка), перейти
; на метку error

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › J Команды условных переходов имеют варианты 16- и 32-разрядной адресации (при тех же мнемонических обозначениях) и могут передавать управление в диапазоне -32768…+32767 байт для сегментов с атрибутом размера 16 и в диапазоне -231…+231-1 байт для сегментов с атрибутом размера 32.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.