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


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



 ### При  многоразрядном  сдвиге  вторым  операндом  является  регистр   CL,
 содержимое которого интерпретируется как число сдвигов. При  одноразрядном
 сдвиге  на месте второго операнда должна стоять единица.

 ### Время  выполнения
      при однобитном сдвиге регистра  - 2  такта,
      при однобитном сдвиге слова или байта памяти  - 15 + ЕА  тактов.
      при многоразрядном сдвиге регистра  - 8 + 4 * (CL)  тактов
      при многоразрядном сдвиге слова или байта памяти - 20 + ЕА + 4 * (CL)
       тактов
     Команды сдвигов имеют длину  2 - 4 байта.

###  Команда  RCL #########################################################

 ### Осуществляет  циклический  сдвиг  влево с переносом  старшего  бита во
 флажок CF, а значения флажка - в младший бит.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - ------+
        ¦    ¦         ¦ CF <-----------------      <---       ¦
        +------- - - ---- ¦ +                +------ - - ---- ^+
                          ¦                                   ¦
                          ¦                                   ¦
                          +-----------------------------------+

 ### Модифицирует флажки  OF и  CF. Флажок  CF  содержит значение последнего
 сдвинутого бита. В однобитных сдвигах флажок OF = 1, если операция изменила
 значение старшего (знакового) бита операнда. При  сдвиге  на  несколько бит
 состояние флажка OF не определено.

 ### Формат команды:
                                                       7                0
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ RCL  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  010  r/m ¦
    ¦ RCL  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     байт)  или  WORD  (слово).                        +----------------+

###  Команда  RCR #########################################################

 ### Осуществляет  циклический сдвиг  вправо с переносом  младшего  бита во
 флажок CF, а значения флажка - в старший бит.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF ----------------->       --->       ¦
        +------- - - ---- ^+                 +------ - - ---- ¦ +
                          ¦                                   ¦
                          ¦                                   ¦
                          +-----------------------------------+

 ### Модифицирует флажки  OF и  CF. Флажок  CF  содержит значение последнего
 сдвинутого бита. В однобитных сдвигах флажок OF = 1, если операция изменила
 значение старшего (знакового) бита операнда. При  сдвиге  на  несколько бит
 состояние флажка OF не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ RCR  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  011  r/m ¦
    ¦ RCR  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

###  Команда  ROL #########################################################

 ### Осуществляет  циклический  сдвиг  влево  с  преносом  старшего  бита в
 младший бит и флажок CF.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - --------+
        ¦    ¦         ¦ CF ¦                ¦       <---        ¦
        +------- - - ---- ^+                 +-  -- - - ----- ^ -+
                          ¦                     ¦             ¦
                          ¦                     ¦             ¦
                          +-----------------------------------+

 ### Модифицирует флажки  OF и  CF. Флажок  CF  содержит значение последнего
 сдвинутого бита. В однобитных сдвигах флажок OF = 1, если операция изменила
 значение старшего (знакового) бита операнда. При  сдвиге  на  несколько бит
 состояние флажка OF не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ ROL  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  000  r/m ¦
    ¦ ROL  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

###  Команда  ROR #########################################################

 ### Осуществляет  циклический сдвиг  вправо  с переносом  младшего  бита в
 старший бит  и  флажок  CF.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF ¦                ¦       --->       ¦
        +------- - - ---- ^ +                +- ^ -- - - -----¦-+
                          ¦                     ¦             ¦
                          ¦                     ¦             ¦
                          +-----------------------------------+

 ### Модифицирует флажки  OF и  CF. Флажок  CF  содержит значение последнего
 сдвинутого бита. В однобитных сдвигах флажок OF = 1, если операция изменила
 значение старшего (знакового) бита операнда. При  сдвиге  на  несколько бит
 состояние флажка OF не определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ ROR  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  001  r/m ¦
    ¦ ROR  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

###  Команда  SAL #########################################################

 ### Осуществляет арифметический сдвиг влево. Младший бит загружается нулем.
 Если содержимое операнда интерпретируется как число в дополнительном  коде,
 то команда  SAL  не отличается от команды  логического  сдвига  влево  SHL.
 Старший бит переносится во флажок CF.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF <-----------------       <---       ¦
        +------- - - -------+                +------ - - ---- ^ +
                                                              ¦
                                                            0 +

 ### Модифицирует  флажки  OF, SF, ZF, PF и CF  в зависимости от результата.
 Флажок  CF  содержит  значение  последнего  сдвинутого  бита. В однобитных
 сдвигах флажок OF = 1, если операция изменила значение старшего (знакового)
 бита  операнда. При  сдвиге  на  несколько  бит  состояние  флажка  OF  не
 определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ SAL  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  100  r/m ¦
    ¦ SAL  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

###  Команда  SAR #########################################################

 ### Осуществляет арифметический сдвиг вправо. Старший бит не сдвигается, а
 тиражируется в соседнем правом бите, поэтому при интерпретации содержимого
 операнда  как  знакового  числа,  его  знак  не  изменяется.  Младший  бит
 переносится во флажок CF.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF ¦            +----       --->       ¦
        +------- - - ---- ^ +            ¦   +- ^ -- - - -----¦-+
                          ¦              ¦      ¦             ¦
                          ¦              +------+             ¦
                          +-----------------------------------+

 ### Модифицирует  флажки  OF, SF, ZF, PF и CF  в зависимости от результата.
 Флажок  CF  содержит  значение  последнего  сдвинутого  бита. В однобитных
 сдвигах флажок OF = 1, если операция изменила значение старшего (знакового)
 бита  операнда. При  сдвиге  на  несколько  бит  состояние  флажка  OF  не
 определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ SAR  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  111  r/m ¦
    ¦ SAR  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт) или  WORD (слово).                         +----------------+

###  Команда  SHL #########################################################

 ### Осуществляет логический сдвиг влево. В младший бит загружается нуль, а
 выдвигаемый  старший  бит  перносится  во флажок CF и при следующем сдвиге
 теряется.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF <-----------------       <---       ¦
        +------- - - -------+                +------ - - ---- ^ +
                                                              ¦
                                                            0 +

 ### Модифицирует  флажки  OF, SF, ZF, PF и CF  в зависимости от результата.
 Флажок  CF  содержит  значение  последнего  сдвинутого  бита. В однобитных
 сдвигах флажок OF = 1, если операция изменила значение старшего (знакового)
 бита  операнда. При  сдвиге  на  несколько  бит  состояние  флажка  OF  не
 определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ SHL  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  100  r/m ¦
    ¦ SHL  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

###  Команда  SHR #########################################################

 ### Осуществляет  логический сдвиг вправо.  В старший бит загружается нуль,
 а выдвигаемый  младший бит  перносится во флажок CF и при следующем сдвиге
 теряется.

          Регистр флажков               Слово(байт) регистра/памяти

       15                   0             15(7)                 0
        +------- - - -------+                +------ - - -------+
        ¦    ¦         ¦ CF ¦                ¦       --->       ¦
        +------- - - ---- ^ +                +- ^ -- - - -----¦-+
                          ¦                     ¦             ¦
                          ¦                   0 +             ¦
                          +-----------------------------------+

 ### Модифицирует  флажки  OF, SF, ZF, PF и CF  в зависимости от результата.
 Флажок  CF  содержит  значение  последнего  сдвинутого  бита. В однобитных
 сдвигах флажок OF = 1, если операция изменила значение старшего (знакового)
 бита  операнда. При  сдвиге  на  несколько  бит  состояние  флажка  OF  не
 определено.

 ### Формат команды:
                                                       7                0
    +-------------------------+                        +----------------+
    ¦ SHR  Регистр, СL        ¦                        ¦   110100 v w   ¦
    +-------------------------+                        ¦----------------¦
    +-------------------------+                        ¦  mod  101  r/m ¦
    ¦ SHR  Память,  СL        ¦                        ¦----------------¦
    +-------------------------+                        ¦     dispL      ¦
     При обращении к памяти необходимо                 +----------------¦
     использовать  модификаторы   BYTE                 ¦     dispH      ¦
     (байт)  или  WORD  (слово).                       +----------------+

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