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