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


Основные команды языка ASSEMBLER



###  Команда JMP #########################################################

 ### Осуществляет безусловный переход, модифицируя указатель команд IP (при
 переходе типа  NEAR) или  пару регистров  CS:IP  (при  переходе типа  FAR).
     Старое  значение  регистров  IP  и  CS  теряется.

 ### Регистр флажков не модифицируется.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ JMP SHORT  Метка        ¦ t = 15 тактов          ¦    11101011    ¦
    +-------------------------+                        ¦----------------¦
     Относительный  переход  типа   NEAR.              ¦     dispL      ¦
     Диапазон перехода  -128 : +127 байт.              +----------------+
     Если осуществляется  переход  назад,
     оператор SHORT можно опустить.
                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ JMP  Метка типа NEAR    ¦ t = 15 тактов          ¦    11101001    ¦
    +-------------------------+                        ¦----------------¦
     Относительный  переход  типа   NEAR.              ¦     dispL      ¦
     Диапазон  перехода  -32768 : +32767               ¦----------------¦
     байт.                                             ¦     dispH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ JMP  Память             ¦ t = 18+ЕА тактов       ¦    11111111    ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 2 байта            ¦  mod  100  r/m ¦
    ¦ JMP  Регистр            ¦ t = 11 тактов          ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     Косвенный переход типа  NEAR. Адрес               +----------------¦
     перехода загружается из 16-битового               ¦     dispH      ¦
     общего регистра или слова памяти.                 +----------------+

                                                       7                0
    +-------------------------+ l = 5 байтов           +----------------+
    ¦ JMP  Метка типа FAR     ¦ t = 15 тактов          ¦    11101010    ¦
    +-------------------------+                        ¦----------------¦
     Прямой переход типа FAR:                          ¦     offL       ¦
      значение off загружается в IP,                  ¦----------------¦
      значение seg загружается в CS.                  ¦     offH       ¦
                                                       ¦----------------¦
                                                       ¦     segL       ¦
                                                       ¦----------------¦
                                                       ¦     segH       ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ JMP   Память            ¦ t = 24+ЕА тактов       ¦    11111111    ¦
    +-------------------------+                        ¦----------------¦
     Косвенный переход типа  FAR:                      ¦  mod  101  r/m ¦
      слово памяти загружается в IP,                  ¦----------------¦
      следующее слово памяти - в CS.                  ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

###  Команда CALL #########################################################

 ### Передает  управление   подпрограмме   с   автоматическим   сохранением
 адреса  возврата  в  стеке.

 ### Регистр флажков не модифицируется.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ CALL Метка типа NEAR    ¦ t = 19 тактов          ¦    11101000    ¦
    +-------------------------+                        ¦----------------¦
     Относительный переход типа NEAR:                  ¦     dispL      ¦
      производится  декремент  SP на 2,               ¦----------------¦
      включается в стек  содержимое IP,               ¦     dispH      ¦
      прибавляется  к  содержимому  IP                +----------------+
       значение индексного смещения.
                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ CALL Память             ¦ t = (21+EA) тактов     ¦    11111111    ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 2 байта            ¦ mod  010  r/m  ¦
    ¦ CALL Регистр            ¦ t = 16 тактов          ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     Косвенный  переход  типа  NEAR:                   +----------------¦
     * производится декремент  SP на  2,               ¦     dispH      ¦
     * включается  в стек содержимое IP,               +----------------+
     * слово,   адресуемое    операндом
       загружается в регистр IP.
                                                       7                0
    +-------------------------+ l = 5 байтов           +----------------+
    ¦ CALL Метка типа FAR     ¦ t = 28 тактов          ¦    10011010    ¦
    +-------------------------+                        ¦----------------¦
     Прямой  переход  типа  FAR:                       ¦     offL       ¦
     * уменьшается содержимое SP на 2,                 ¦----------------¦
     * заносится в стек содержимое CS,                 ¦     offH       ¦
     * уменьшается содержимое SP на 2,                 ¦----------------¦
     * заносится в стек содержимое IP,                 ¦     segL       ¦
     * в IP заносится off, в CS - seg.                 ¦----------------¦
                                                       ¦     segH       ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ CALL Память             ¦ t = (37+EA) тактов     ¦    11111111    ¦
    +-------------------------+                        ¦----------------¦
     Косвенный  переход  типа  FAR:                    ¦  mod  011  r/m ¦
      уменьшается содержимое SP на 2,                 ¦----------------¦
      заносится в стек содержимое CS,                 ¦     dispL      ¦
      уменьшается содержимое SP на 2,                 +----------------¦
      заносится в стек содержимое IP,                 ¦     dispH      ¦
      слово,  адресуемое   операндом,                 +----------------+
       загружается в  IP, а следующее
       слово - в регистр CS.

###  Команда RET ############################################################

 ### Возвращает  управление  вызывающей  программе.  Команда возврата - это
 косвенный  переход, т.к.  адрес  перехода  извлекается  из  вершины  стека.
     Команда  возврата  с  операндом-константой   дополнительно  прибавляет,
 содержащееся в ней данное,  к указателю стека  SP, что упрощает возврат из
 подпрограмм, параметры которых передаются в стеке.

 ### Регистр флажков не модифицируется.

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ RET                     ¦ t = 8 тактов           ¦    0011010 w   ¦
    +-------------------------+                        +----------------+
     Возврат типа NEAR:
      слово из стека помещается в  IP,
      содержимое SP увеличивается на 2
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ RET                     ¦ t = 18 тактов          ¦    0011010 w   ¦
    +-------------------------+                        +----------------+
     Возврат типа FAR:
      слово из стека помещается в  IP,
      содержимое SP увеличивается на 2
      слово из стека помещается в  CS,
      содержимое SP увеличивается на 2
                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ RET  Константа          ¦ t = 12 тактов          ¦    0011010 w   ¦
    +-------------------------+                        ¦----------------¦
     Возврат типа NEAR:                                ¦     dataL      ¦
      слово из стека  помещается в  IP,               ¦----------------¦
      содержимое SP увеличивается на 2                ¦     dataH      ¦
      к  содержимому   SP  добавляется                +----------------+
       значение константы.


                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ RET  Константа          ¦ t = 17 тактов          ¦    0011010 w   ¦
    +-------------------------+                        ¦----------------¦
     Возврат типа FAR:                                 ¦     dataL      ¦
      слово из стека помещается в  IP,                ¦----------------¦
      содержимое SP увеличивается на 2                ¦     dataH      ¦
      слово из стека помещается в  CS,                +----------------+
      содержимое SP увеличивается на 2
      к  содержимому   SP  добавляется
       значение константы.

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