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

rol операнд,1

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

rol операнд,CL

сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда перемещаются в его младшие разряды. Последний перенесенный бит одновременно заносится в флаг CF.

Рис. П6. Действие команды rol.

В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги OF и CF.

Пример 1


mov AX,1
rol AX,1 ;AX=0002h, CF=0

Пример 2


mov DL,8 Oh
rol DL,1 ;DL=01h, CF=1

Пример 3


mov DX,3000h
mov CL,4
rol DX,CL ;DX=0003h, CF=1

Пример 4


mov DX,2000h
mov CL,4
rol DX,CL ;DX=0002h, CF=0


Допустим сдвиг 32-битовых операндов. Допустимо указание числа бит сдвига как с помощью регистра CL, так и непосредственным значением. Максимальная величина сдвига составляет 31 бит.

Пример


mov ЕАХ,012345678h
rol EАХ,16 ;EAX=56781234h