###
Команды условного
перехода - это близкие
(NEAR) относительные
переходы. Операнд - метка является 8-битным
смещением (относительно
текущего состояния указателя команд IP), поэтому команды могут
выполнить
переход только на 127 байт вперед или на 128 байт назад.
### Время выполнения команд равно 4 тактам синхронизации (если
переход не
осуществлен) и 16 тактам (если переход произошел). При этом не учитывается
время реинициализации очереди команд, которое увеличивает время выполнения
на 4 такта. Длина команд равна 2 байтам.
### Переход по результату
знакового сравнения
###########################
### Команды осуществляют переход, если выполнено условие
сравнения двух
чисел, интерпретированных как знаковые.
Допустим, арифметические флажки установлены
в результате сравнения
двух знаковых чисел командой CMP. Тогда
переход осуществляется, если:
+-----------------------------------------------------------------------+
¦ мнемоника команд ¦состояние флажков¦ соотношение
двух чисел
¦
¦ условного перехода +-----------------¦
¦
¦
¦ OF ¦ ZF ¦ SF ¦
¦
+---------------------+-----+-----+-----+-------------------------------¦
¦ JL / JNGE ¦
0 ¦ - ¦ 1
¦ меньше / не больше или равны
¦
¦
¦ 1 ¦ - ¦
0 ¦
¦
+---------------------+-----+-----+-----+-------------------------------¦
¦ JNL / JGE ¦
0 ¦ - ¦ 0
¦ больше или равны / не меньше
¦
¦
¦ 1 ¦ - ¦
1 ¦
¦
+---------------------+-----+-----+-----+-------------------------------¦
¦ JLE / JNG ¦
0 ¦ 1 ¦ 1
¦ меньше или равны / не больше
¦
¦
¦ 1 ¦ 1 ¦
0 ¦
¦
+---------------------+-----+-----+-----+-------------------------------¦
¦ JNLE / JG ¦
0 ¦ 0 ¦ 0
¦ больше / не меньше или равны
¦
¦
¦ 1 ¦ 0 ¦
1 ¦
¦
+-----------------------------------------------------------------------+
### Регистр флажков не модифицируется.
### Форматы команд:
7
0
+-------------------------+
+----------------+
¦ JL Метка
¦
¦ 01111100
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNGE Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JLE Метка
¦
¦ 01111110
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNG Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JNL Метка
¦
¦ 01110101
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JGE Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JNLE Метка
¦
¦ 01111101
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JG Метка
¦
+----------------+
+-------------------------+
### Переход по результату
беззнакового сравнения
########################
### Команды осуществляют переход, если выполнено условие
сравнения двух
чисел, интерпретированных как беззнаковые.
Допустим, арифметические флажки установлены
в результате сравнения
двух беззнаковых чисел командой CMP. Тогда переход
осуществляется, если:
+-----------------------------------------------------------------------+
¦ мнемоника команд ¦состояние флажков¦ соотношение
двух чисел
¦
¦ условного перехода +-----------------¦
¦
¦
¦ CF ¦
ZF ¦
¦
+---------------------+--------+--------+-------------------------------¦
¦ JB / JNAE / ¦
1 ¦ -
¦ ниже / не выше или равны /
¦
¦ JC
¦
¦
¦ есть перенос
¦
+---------------------+--------+--------+-------------------------------¦
¦ JBE / JNA ¦
1 ¦ 0
¦ ниже или равны / не выше
¦
¦
¦ 0 ¦
1 ¦
¦
¦
¦ 1 ¦
1 ¦
¦
+---------------------+--------+--------+-------------------------------¦
¦ JNB / JAE / ¦
0 ¦ -
¦ выше или равны / не ниже /
¦
¦ JNC
¦
¦
¦ нет переноса
¦
+---------------------+--------+--------+-------------------------------¦
¦ JNBE / JA ¦
0 ¦ 0
¦ выше / не ниже или равны
¦
+-----------------------------------------------------------------------+
### Регистр флажков не модифицируется.
### Форматы команд:
7
0
+-------------------------+
+----------------+
¦ JB Метка
¦
¦ 01110010
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNAE Метка
¦
+----------------+
+-------------------------+
+-------------------------+
¦ JC Метка
¦
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JBE Метка
¦
¦ 01110110
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNA Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JNB Метка
¦
¦ 01110011
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JAE Метка
¦
+----------------+
+-------------------------+
+-------------------------+
¦ JNC Метка
¦
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JNBE Метка
¦
¦ 01110111
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JA Метка
¦
+----------------+
+-------------------------+
### Переход по состоянию
отдельных флажков
##############################
### Команды проверяют состояние соответствующего флажка и, в
зависимости
от равенства его 0 или 1, осуществляют переход.
+-------------------------------------------------------------------+
¦ мнемоника ¦ состояние флажков ¦
комментарий
¦
¦ команды +-------------------¦
¦
¦
¦ OF ¦ ZF ¦ PF ¦ SF ¦
¦
+------------+----+----+----+----+----------------------------------¦
¦ JE / JZ ¦ - ¦ 1 ¦ -
¦ - ¦ равно / нуль
¦
+------------+----+----+----+----+----------------------------------¦
¦ JP / JPE ¦ - ¦ - ¦ 1 ¦
- ¦ есть паритет /
паритет четный ¦
+------------+----+----+----+----+----------------------------------¦
¦ JO ¦
1 ¦ - ¦ - ¦ -
¦ есть переполнение
¦
+------------+----+----+----+----+----------------------------------¦
¦ JS ¦
- ¦ - ¦ - ¦ 1
¦ есть знак
¦
+------------+----+----+----+----+----------------------------------¦
¦ JNE / JNZ ¦ - ¦ 0 ¦ - ¦ -
¦ не равно / не нуль
¦
+------------+----+----+----+----+----------------------------------¦
¦ JNP / JPO ¦ - ¦ - ¦ 0 ¦ -
¦ нет паритета / паритет
нечетный ¦
+------------+----+----+----+----+----------------------------------¦
¦ JNO ¦ 0
¦ - ¦ - ¦ - ¦
нет переполнения
¦
+------------+----+----+----+----+----------------------------------¦
¦ JNS ¦ -
¦ - ¦ - ¦ 0 ¦
нет знака
¦
+-------------------------------------------------------------------+
### Регистр флажков не модифицируется.
### Форматы команд:
7
0
+-------------------------+
+----------------+
¦ JE Метка
¦
¦ 01110100
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JZ Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JNE Метка
¦
¦ 01111000
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNZ Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JP Метка
¦
¦ 01110110
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JPE Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JPO Метка
¦
¦ 01111011
¦
+-------------------------+
¦----------------¦
+-------------------------+
¦
dispL ¦
¦ JNP Метка
¦
+----------------+
+-------------------------+
7
0
+-------------------------+
+----------------+
¦ JO Метка
¦
¦ 01111010
¦
+-------------------------+
¦----------------¦
¦
dispL ¦
+----------------+
7
0
+-------------------------+
+----------------+
¦ JNO Метка
¦
¦ 01110001
¦
+-------------------------+
¦----------------¦
¦
dispL ¦
+----------------+
7
0
+-------------------------+
+----------------+
¦ JS Метка
¦
¦ 01110000
¦
+-------------------------+
¦----------------¦
¦
dispL ¦
+----------------+
7
0
+-------------------------+
+----------------+
¦ JNS Метка
¦
¦ 01111001
¦
+-------------------------+
¦----------------¦
¦
dispL ¦
+----------------+
### Команда
JCXZ#########################################################
### Осуществляет переход, если регистр СХ
равен 0. Используется для
обхода цикла в случаях, когда счетчик
циклов равен нулю.
### Регистр флажков не модифицируется.
### Формат команды:
7
0
+-------------------------+ l = 2 байта
+----------------+
¦ JCXZ Метка
¦ t = 6 тактов (без
¦ 11100001
¦
+-------------------------+
перехода)
¦----------------¦
t = 18 тактов (с
¦
dispL ¦
переходом)
+----------------+
|