Главная Программирование Софт Документы Статьи Обо мне


Основные команды языка 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     ¦
                                       переходом)      +----------------+

[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]
Сайт создан в системе uCoz