ХАНДЫФАР

Арифметический сдвиг регистра или ячейки памяти влево


__________________________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 не определён.


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public ___________; Начало сегмента кода
  5. ____assume cs:code
  6. ____main proc _________________; Начало процедуры main
  7. ________mov_____al, 00001111b__; Копируем значение 00001111 в регистр al
  8. ________mov_____cl, 2__________; Копируем значение 2 в регистр cl
  9. ________sal_____al, cl_________; Выполняем арифметический сдвиг в al на 2 влево, 00111100
  10. ________mov_____ax, 4C00h______; Копируем значение функции завершения процесса в ah а значение в al
  11. ________int_____21h ___________; Вызываем прерывание DOS
  12. ____main endp _________________; Конец процедуры main
  13. code ends _____________________; Конец сегмента кода
  14. end main ______________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda