В системе команд МП 8086 имеется 19 двухбайтовых команд условных переходов. Все они имеют единый формат:
КОП disp8
При выполнении этих команд анализируется некоторые условия, закодированные текущими состояниями флагов, и в зависимости от удовлетворения условия переход осуществляется или нет. Если условие истинно, управление передается по адресу перехода путем прибавления к содержимому IP однобайтного знакового смещения (с расширением до 16 бит). А если условие ложно, выполняется следующая по порядку команда. Таким образом, все условные переходы в МП i8086 являются короткими.
Следует отметить, что большинство команд условных переходов имеет две мнемоники подчеркивающие содержательный смысл проверяемого условия и введенные для удобства программирования.
Команды позволяют проверить все отношения между знаковыми и беззнаковыми числами. Фигурирующие в определении команд термины “больше” и “меньше” относятся к знаковым числам, представленным в дополнительном коде, а “выше” и “ниже” - к беззнаковым. Например, число BE “меньше” и “выше” числа 37.
Команду JCXZ удобно помещать в начале цикла, особенно в том случае, если возможна ситуация при которой цикл (со счетчиком СХ) не выполнится ни разу.
| Мнемоника
| Условие
| Отношение
| Функция перейти, если
|
| JA/JNBE
| CFÚZF=0
| >
| выше/не ниже или равно
|
| JAE/JNB
| CF=0
| ³
| выше или равно/не ниже
|
| JB/JNAE
| CF=1
| <
| ниже/не выше или равно
|
| JBE/JNA
| CFÚZF=1
| £
| ниже или равно/не выше
|
| JC
| CF=1
|
| есть перенос
|
| JE/JZ
| ZF=1
| =
| равно/нуль
|
| JG/JNLE
| (SFÅOF)ÚZF=0
| >
| больше/не меньше или равно
|
| JGE/JNL
| SFÅOF=0
| ³
| больше или равно/не меньше
|
| JL/JNGE
| SFÅOF=1
| <
| меньше/не больше или равно
|
| JLE/JNG
| (SFÅOF)ÚZF=1
| £
| меньше или равно/не больше
|
| JNC
| CF=0
|
| нет переноса
|
| JNE/JNZ
| ZF=0
| ¹
| не равно/не нуль
|
| JNO
| OF=0
|
| нет переполнения
|
| JNP/JPO
| PF=0
|
| нет паритета/паритет не четный
|
| JNS
| SF=0
|
| нет знака -
|
| JO
| OF=1
|
| есть переполнение
|
| JP/JPE
| PF=1
|
| есть паритет/паритет четный
|
| JS
| SF=1
|
| есть знак -
|
| JCXZ
| (CX)=0
|
| содержимое регистра СХ=0
|