SAL – арифметический сдвиг влево
D0 /4 | SAL r/m8, 1 | арифметический сдвиг r/m8 влево на 1 разряд | |||
D2 /4 | SAL r/m8, CL
| арифметический сдвиг r/m8 влево на CL разрядов | |||
D1 /4 | SAL r/m16, 1 | арифметический сдвиг r/m16 влево на 1 разряд | |||
D3 /4 | SAL r/m16, CL | арифметический сдвиг r/m16 влево на CL разрядов |
Описание.
Эта инструкция производит арифметический (он же логический – см. инструкцию SHL) сдвиг содержимого своего операнда влево на указанное вторым операндом число разрядов.
Сдвиг выполняется по следующей схеме:
---¬ ----------¬
¦CF¦<--+ операнд ¦<- 0
L--- L----------
Имеются две разновидности сдвига: одноразрядный и многоразрядный. В последнем случае количество разрядов, на которое производится сдвиг, должно быть предварительно занесено в регистр CL.
Флажок CF содержит значение последнего выдвинутого из операнда разряда.
Значение флажка OF в операции многоразрядного сдвига не определено. В операции одноразрядного сдвига он представляет собой результат операции “исключающее ИЛИ” между значением старшего разряда результата и содержимым флажка CF после выполнения сдвига. Таким образом, единичное значение флажка OF свидетельствует о том, что содержимое старшего разряда результата отличается от его исходного значения, а нулевое значение – что старший разряд операнда не изменился.
Флажки SF, ZF и PF устанавливаются в соответствии с полученным результатом.
Значение флажка AF не определено.