Команды SAL и SAR выполняют побитовый сдвиг числа влево и вправо соответственно. Если сдвиг производится влево (в сторону старших битов), то в младший разряд записывается значение равное 0. Если сдвиг выполняется вправо, то значение старшего разряда остается неизменным.

 

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

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

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