Основные команды языка 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 (слово). +----------------+
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|