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


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



###  Команда MOV #########################################################

 ### Осуществляет передачу содержимого второго операнда в первый.

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

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 2 байта            +----------------+
    ¦ MOV  Регистр1, Регистр2 ¦ t = 2 такта            ¦   100010 d w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 3-4 байта          ¦  mod  reg  r/m ¦
    ¦ MOV  Регистр,  Память   ¦ t = 9+ЕА тактов        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
    +-------------------------+ l = 3-4 байта          +----------------¦
    ¦ MOV  Память,   Регистр  ¦ t = 8+ЕА тактов        ¦     dispH      ¦
    +-------------------------+                        +----------------+

                                                       7                0
    +-------------------------+ l = 3-6 байта          +----------------+
    ¦ MOV  Память, Константа  ¦ t = 10+ЕА тактов       ¦   1100011  w   ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod 000  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       ¦----------------¦
                                                       ¦     dispH      ¦
                                                       ¦----------------¦
                                                       ¦     dataL      ¦
                                                       ¦----------------¦
                                                       ¦     dataH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 2-3 байта          +----------------+
    ¦ MOV  Регистр, Константа ¦ t = 4 такта            ¦   1011 w reg   ¦
    +-------------------------+                        ¦----------------¦
     Нельзя определять сегментные регистры.            ¦     dataL      ¦
                                                       ¦----------------¦
                                                       ¦     dataH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ MOV  Аккумулятор, Память¦ t = 10 тактов          ¦   1010000  w   ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦     dispL      ¦
                                                       ¦----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 3 байта            +----------------+
    ¦ MOV  Память, Аккумулятор¦ t = 10 тактов          ¦   1010001  w   ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦     dispL      ¦
                                                       ¦----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ MOV СегРегистр, Память  ¦ t = 8+ЕА тактов        ¦   10001110     ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 2-4 байта          ¦  mod 0sreg r/m ¦
    ¦ MOV СегРегистр, Регистр ¦ t = 8+ЕА тактов        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
       Нельзя использовать регистр  CS, т.к.           +----------------¦
       результат операции будет неопределен.           ¦     dispH      ¦
      При   инициализации    рекомендуется            +----------------+
       использовать регистр АХ.

                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ MOV Память,  СегРегистр ¦ t = 9+ЕА тактов        ¦   10001100     ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 2-4 байта          ¦  mod 0sreg r/m ¦
    ¦ MOV Регистр, CегРегистр ¦ t = 9+ЕА тактов        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

###  Команда XCHG #########################################################

 ### Обменивает  содержимое  двух  операндов.  В  качестве операндов нельзя
 использовать сегментные регистры.

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

 ### Форматы команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ XCHG  Регистр,  AX      ¦ t =    тактов          ¦    10010 reg   ¦
    +-------------------------+                        +----------------+
     Команда XCHG AX, AX используется
     как команда пустой операции  NOP.
                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ XCHG Регистр1, Регистр2 ¦ t = 4 такта            ¦   1000011  w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+ l = 2-4 байта          ¦  mod reg  r/m  ¦
    ¦ XCHG Регистр,  Память   ¦ t = 17+ЕА тактов       ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+

###  Команда XLAT #########################################################

 ### Заменяет содержимое аккумулятора AL на значение, выбираемое из таблицы,
 на которую указывает регистр BX. Содержимое  AL интепретируется как индекс
 выбираемого байта.

      +-----------------------------------+           ¦  П А М Я Т Ь
  ВХ  ¦ эффективный адрес таблицы   ------------------¦----------------¦
      +-----------------------------------+           ¦                ¦
                                                  ¦   ¦----------------¦
                        +-----------------+       ¦   ¦                ¦
       Регистр AL перед ¦   и н д е к с ----------¦   ¦----------------¦
       выполнением XLAT +-----------------+       ¦   ¦                ¦
                                                  ¦   ¦----------------¦
                                                     ¦                ¦
                        +-----------------+     -----¦----------------¦
       Регистр AL после ¦   содержимое ----------------- содержимое   ¦
       выполнения  XLAT +-----------------+           ¦----------------¦
                                                                       ¦
 ### Регистр флажков не модифицируется.

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 1 байт             +----------------+
    ¦ XLAT                    ¦ t = 11 тактов          ¦    11010111    ¦
    +-------------------------+                        +----------------+

 ### Примечание:
     Смещение  адресного  значения таблицы  можно загрузить в регистр  ВХ с
 помощью  команд  LEA,  LDS  или  другими  способами.

###  Команда LEA #########################################################

 ### Загружает   в  первый  операнд   эффективный  адрес   памяти,  который
 вычисляется в  соответствии с указанным режимом адресации второго опреанда.
 В  качестве  первого  операнда  нельзя  использовать  сегментные  регистры.

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

 ### Формат команды:
                                                       7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ LEA   Регистр, Память   ¦ t = 2+ЕА тактов        ¦   10001101     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod reg  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
     Во многих случаях команда LEA идентична команде MOV с непосредственным
 операндом. Например:

     LEA  BX,  EXWORD   - эквивалентно -   MOV  BX,  OFFSET  EXWORD
                                          (оператор   OFFSET   сообщает,
                                          что  надо переслать  СМЕЩЕНИЕ
                                          адресного значения переменной)

###  Команда LDS #########################################################

 ### Загружает  в  первый  операнд  (обычно регистр SI)  значение  смещения,
 расположенное  по  адресу  второго  операнда, а  в  регистр  DS  загружает
 значение  сегмента,  расположенное  по  адресу  второго  операнда + 2.

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

 ### Формат команды:
                                                      7                0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ LDS   Регистр, Память   ¦ t = 16+ЕА тактов       ¦   11000101     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod reg  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
     Указатель ( сегмент: смещение ) можно организовать с помощью директивы
 DD,  если  операндом  директивы   будет   адресное   выражение.  Например:

     ...............................
     TABLE           DB  '0123456789'
     ...............................
     TABLE POINTER   DD   TABLE         ; В  переменной   TABLE POINTER
     ...............................      содержится указатель на TABLE
     ...............................      сегмент:смещение
     ...............................
     LDS   SI,  TABLE POINTER           ; Из переменной  TABLE POINTER в
     ...............................      регистр DS загружается сегмент,
     ...............................      в регистр SI - смещение

###  Команда LES #########################################################

 ### Загружает  в  первый  операнд  (обычно регистр DI)  значение  смещения,
 расположенное  по  адресу  второго  операнда, а  в  регистр  ES  загружает
 значение  сегмента,  расположенное  по  адресу  второго  операнда + 2.

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

 ### Формат команды:
                                                       7               0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ LES   Регистр, Память   ¦ t = 16+ЕА тактов       ¦   11000100     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod reg  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
     Указатель ( сегмент: смещение ) можно организовать с помощью директивы
 DD,  если  операндом  директивы   будет   адресное   выражение.  Например:

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

 ### Формат команды:
                                                       7               0
    +-------------------------+ l = 2-4 байта          +----------------+
    ¦ LES   Регистр, Память   ¦ t = 16+ЕА тактов       ¦   11000100     ¦
    +-------------------------+                        ¦----------------¦
                                                       ¦  mod reg  r/m  ¦
                                                       ¦----------------¦
                                                       ¦     dispL      ¦
                                                       +----------------¦
                                                       ¦     dispH      ¦
                                                       +----------------+
 ### Примечание:
     Указатель ( сегмент: смещение ) можно организовать с помощью директивы
 DD,  если  операндом  директивы   будет   адресное   выражение.  Например:

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