ХАНДЫФАР
Арифметический сдвиг регистра или ячейки памяти влево
__________________________SAL reg/mem8, 1 - Умножить reg/mem8 на 2, один раз.
__________________________SAL reg/mem8, CL - Умножить reg/mem8 на 2, CL раз.
__________________________SAL reg/mem16, 1 - Умножить reg/mem16 на 2, один раз.
__________________________SAL reg/mem16, CL - Умножить reg/mem16 на 2, CL раз.
Сдвигает биты в первом операнде (операнд назначения) влево на количество бит, указанное во втором операнде. Биты, сдвинутые за пределы границы целевого операнда, сначала сдвигаются во флаг CF, а затем отбрасываются. В конце операции сдвига флаг CF содержит последний бит, смещённый из целевого операнда.
Инструкции SAL и SHL выполняют одну и ту же операцию; они сдвигают биты в целевом операнде влево (в сторону расположения более значимых битов). При каждом подсчёте сдвигов старший бит целевого операнда сдвигается во флаг CF, а младший бит очищается.
Флаг CF содержит значение последнего бита, смещённого из целевого операнда; он не определён для инструкций SHL, где количество больше или равно размеру (в битах) целевого операнда. Флаг OF применяется только для сдвигов на 1 бит, в противном случае он не определён. Флаги SF, ZF и PF устанавливаются в соответствии с результатом. Если значение равно 0, то флаги не затрагиваются. Для ненулевого значения флаг AF не определён.