Основные команды языка ASSEMBLER
### Команды условного перехода - это близкие (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 ¦
переходом) +----------------+
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|