S
SHR Логический сдвиг вправо
Команда shr осуществляет сдвиг вправо всех битов операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате:
SHR операнд,1
Сдвиг осуществляется на 1 бит. В старший бит операнда загружается 0, а младший теряется. Если команда записана в формате:
SHR onepand,CL
Сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда заполняются нулями, а младшие, пройдя через флаг CF, теряются (рис. П11).
Рис. П11. Действие команды shr.
В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги CF, OF, PF, SF и ZF.
Пример 1:
mov AL,7 shr AL,1; AL=3, CF=1
Пример 2:
mov AX, lFF0h mov CL,4 shr AX,CL; AX=01FFh, CF=0
Пример 3:
mov DX,9513h mov CL,8 shr DX,CL; DX=0095h, CF=0
Допустим сдвиг 32-битовых операндов. Допустимо указание числа бит сдвига как с помощью регистра CL, так и непосредственным значением. Максимальная величина сдвига составляет 31 бит.
Пример 1:
mov ESI,0FFFF0009h shr ESI,8; ESI=00FFFF00h, CF=0
Пример 2:
; В полях данных mem dd 11111111h ;B программном сегменте shr mem,12; mem=00011111h, CF=0