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

SHL


(SHift logical Left)

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

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

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


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

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

одновременно слева в операнд вдвигается нулевой бит;

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



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

11 00
OF CF
?r

Применение:


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

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

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

    Этот эффект, как вы помните, обусловлен тем, что флаг of устанавливается в единицу всякий раз при изменении знакового разряда операнда.
    Команду shl удобно использовать для умножения целочисленных операндов без знака на степени 2. Кстати сказать, это самый быстрый способ умножения;  умножить содержимое ax на 16 (2 в степени 4).

            mov     ax,17         shl     ax,4         

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



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