R
ROR Циклический сдвиг вправо
Команда ROR осуществляет циклический сдвиг вправо всех битов операнда. Если команда записана в формате:
ror операнд,1
Сдвиг осуществляется на 1 бит. Младший бит операнда записывается в его старший разряд и одновременно поступает в флаг CF (рис. П7). Если команда записана в формате:
ror операнд,CL
Сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов младшие биты операнда перемещаются в его старшие разряды. Последний перенесенный бит одновременно заносится в флаг CF.
Рис. П7. Действие команды ror.
В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги OF и CF.
Пример 1:
mov AX,2 ror AX,1; AX=0001h, CF=0
Пример 2:
mov DL,81h ror DL,1; DL=C0h, CF=1
Пример 3:
mov BX,000Eh mov CL,4 ror BX,CL; BX=E000h, CF=1
Пример 4:
mov BX,0009h mov CL,4 ror BX,CL; BX=9000h, CF=1
Допустим сдвиг 32-битовых операндов. Допустимо указание числа бит сдвига как с помощью регистра CL, так и непосредственным значением. Максимальная величина сдвига составляет 31 бит.
Пример:
mov EDI,90000001h ror EDI,12; EDI=00190000h