Команда ROR осуществляет циклический сдвиг вправо всех битов операнда. Если команда записана в формате

ror операнд,1

сдвиг осуществляется на 1 бит. Младший бит операнда записывается в его старший разряд и одновременно поступает в флаг CF (рис.Ш). Если команда записана в формате

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