Справочник по языку Ассемблера IBM PC

ROL


(Rotate operand Left)

Циклический сдвиг операнда влево

Схема команды:  rol операнд,количество_сдвигов 

Назначение: операция циклического сдвига операнда влево.


Алгоритм работы:

сдвиг всех битов операнда влево на один разряд, при этом старший бит операнда вдвигается в операнд справа и становится значением младшего бита операнда;

одновременно выдвигаемый бит становится значением флага переноса cf;

указанные выше два действия повторяются количество раз, равное значению второго операнда.



Состояние флагов после выполнения команды:

11 00
OF CF
?r

Применение:


Команда rol используется для циклического сдвига разрядов операнда влево. Отличие этого сдвига от rcl в том, что очередной сдвигаемый бит одновременно вдвигается в операнд справа и становится значением флага cf. Так же, как и для других сдвигов, значение второго операнда (счетчика сдвига) ограничено диапазоном 0...31. Это объясняется тем, что микропроцессор использует только пять младших разрядов операнда количество_разрядов. Аналогично другим командам сдвига сохраняется эффект, связанный с поведением флага of, значение которого имеет смысл только в операциях сдвига на один разряд:

    если of=1, то текущее значение флага cf и выдвигаемого слева бита операнда различны;

    если of=0, то текущее значение флага cf и выдвигаемого слева бита операнда совпадают.

    Этот эффект, как вы помните, обусловлен тем, что флаг of устанавливается в единицу всякий раз при изменении знакового разряда операнда.

    ;поменять местами половинки регистра eax:         mov     ax,0ffff0000h         mov     cl,16         rol     eax,cl  ;eax=0000ffffh         

    См. также: урок 9 и команды , , , , , ,



    Содержание раздела