Иллюстрированный самоучитель по Assembler

S

SHR Логический сдвиг вправо

Команда shr осуществляет сдвиг вправо всех битов операнда. Младший бит операнда поступает в флаг CF. Если команда записана в формате:

SHR операнд,1

Сдвиг осуществляется на 1 бит. В старший бит операнда загружается 0, а младший теряется. Если команда записана в формате:

SHR onepand,CL

Сдвиг осуществляется на число бит, указанное в регистре-счетчике CL, при этом в процессе последовательных сдвигов старшие биты операнда заполняются нулями, а младшие, пройдя через флаг CF, теряются (рис. П11).

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › S
Рис. П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

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › S Допустим сдвиг 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
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.