Команды ROL и ROR - команды циклического побитового сдвига переданного им значения. Все биты переданного числа сдвигаются влево (в сторону старших битов) командой ROL или вправо (в сторону младших битов) командой ROR.

 

Команда ROL
Синтаксис: ROL op1,op2
Операнды: op1 - r/m8, r/m16, r/m32
op2 - i8, CL
Назначение: Циклический сдвиг влево
Процессор: 8086+
Флаги: Флаг OF изменяется только в случае сдвига на 1 бит - он устанавливается, если изменилось значение старшего бита, и сбрасывается, если старший бит не изменился. Для сдвигов на несколько бит, флаг OF неопределен.
Флаг CF становится равным старшему биту операнда после сдвига. Флаги ZF, PF, SF устанавливаются в соответствии с результатом. Значение флага AF не определено.
Если счетчик сдвига равен 0, то флаги не изменяются.
Комментарий: Команда ROL выполняет побитовый сдвиг операнда влево. Старший бит операнда помещается на место младшего. Все биты операнда сдвигаются влево на место старших битов. Величина сдвига определяется вторым операндом

Использование в качестве второго операнда непосредственных значений больших 1 стало возможным только начиная с 80186 процессора.
Начиная с 80286 процессоров у второго операнда учитываются только пять младших бит (значения от 0 до 31). Процессоры ниже 80286 учитывали все биты операнда.
Ограничения: Нет
Примеры:
mov	cl,4
rol	ax,cl
jc	l1
Команда ROR
Синтаксис: ROR op1,op2
Операнды: op1 - r/m8, r/m16, r/m32
op2 - i8, CL
Назначение: Циклический сдвиг вправо
Процессор: 8086+
Флаги: Флаг OF изменяется только в случае сдвига на 1 бит - он устанавливается, если изменилось значение старшего бита, и сбрасывается, если старший бит не изменился. Для сдвигов на несколько бит, флаг OF неопределен.
Флаг CF становится равным младшему биту операнда после сдвига. Флаги ZF, PF, SF устанавливаются в соответствии с результатом. Значение флага AF не определено.
Если счетчик сдвига равен 0, то флаги не изменяются.
Комментарий: Команда ROR выполняет побитовый сдвиг операнда вправо. Младший бит операнда помещается на место старшего. Все биты операнда сдвигаются вправо на место младших битов. Величина сдвига определяется вторым операндом

Использование в качестве второго операнда непосредственных значений больших 1 стало возможным только начиная с 80186 процессора.
Начиная с 80286 процессоров у второго операнда учитываются только пять младших бит (значения от 0 до 31). Процессоры ниже 80286 учитывали все биты операнда.
Ограничения: Нет
Примеры:
mov	cl,4
ror	ax,cl
jc	l1