ХАНДЫФАР

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


____________________SHR reg/mem8, 1 - Беззнаковое деление reg/mem8 на 2, один раз.

____________________SHR reg/mem8, CL - Беззнаковое деление reg/mem8 на 2, CL раз.

____________________SHR reg/mem16, 1 - Беззнаковое деление reg/mem16 на 2, один раз.

____________________SHR reg/mem16, CL - Беззнаковое деление reg/mem16 на 2, CL раз.


Сдвигает биты в первом операнде (операнд назначения) вправо на количество бит, указанное во втором операнде. Биты, сдвинутые за пределы границы целевого операнда, сначала сдвигаются во флаг CF, а затем отбрасываются. В конце операции сдвига флаг 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, 00111100b__; Копируем значение 00111100 в регистр al
  8. ________mov_____cl, 2__________; Копируем значение 2 в регистр cl
  9. ________shr_____al, cl_________; Выполняем логический сдвиг в al на 2 вправо, 00001111
  10. ________mov_____ax, 4C00h______; Копируем значение функции завершения процесса в ah а значение в al
  11. ________int_____21h ___________; Вызываем прерывание DOS
  12. ____main endp _________________; Конец процедуры main
  13. code ends _____________________; Конец сегмента кода
  14. end main ______________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda