###
При многоразрядном
сдвиге вторым операндом
является регистр
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 (слово).
+----------------+
|