R
ROL Циклический сдвиг влево
Команда 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