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

       

RCR Циклический сдвиг вправо через бит переноса


Команда rсl осуществляет сдвиг вправо всех битов операнда. Если команда записана в формате

rcl операнд,1

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

rcl операнд,CL

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

Рис. П.5. Действие команды rcl.

В качестве операнда можно указывать любой регистр (кроме сегментного) или ячейку памяти размером как в байт, так и в слово. Не допускается использовать в качестве операнда непосредственное значение. Команда воздействует на флаги OF и CF.

Пример 1

clc ;Сбросим флаг CF

mov AX, 2

rcr АХ,1 ;АХ=1, CF=0

Пример 2



stc ;Установим флаг CF

mov DL,8

rcr DL,1 ;DL=84h, CF=0

Пример 3

clc ;Сбросим флаг CF

mov BX,OFh

rcr BX,1 ;BX=7, CF=1

Пример 4

clc ;Сбросим флаг CF

mov DH,80h

mov CL,5 ;Счетчик сдвигов

rcr DH,CL ;DH=4, CF=0

Допустим сдвиг 32-битовых операндов. Допустимо указание числа бит сдвига как с помощью регистра CL, так и непосредственным значением. Максимальная величина сдвига составляет 31 бит.

Пример

mov ESI,0FFFF000lh

clc ;Сбросим флаг CF

rcr ESI,8 ;ESI=02FFFF00h, CF=0

Pentium+P RDMSR Чтение особого регистра модели

Команда читает содержимое внутреннего регистра, специфического для конкретной модели процессора.

REP Повторение

REPE Повторение пока равно

REPZ Повторение пока нуль

REPNE Повторение пока равно

REPNZ Повторение пока не равно

Префиксы повторения, позволяющие организовывать циклическое выполнение команд обработки строк cmps, movs и seas, и при этом проверять наличие указанного в префиксе условия.

Префикс rep, будучи установлен перед строковой командой movs или stos, заставляет ее выполняться СХ раз.

Префикс rере (и полностью эквивалентный ему префикс repz), будучи установлен перед строковой командой cmps или seas, заставляет ее выполняться до тех пор, пока результат выполнения равен 0 и, соответственно, ZF=1, но не более СХ раз.

Префикс rерnе (и полностью эквивалентный ему префикс repnz), будучи установлен перед строковой командой cmps или seas, заставляет ее выполняться до тех пор, пока результат выполнения не равен 0 и, соответственно, ZF=0, но не более СХ раз.

Примеры использования префиксов повторения см. в описаниях строковых команд cmps, movs и seas.



Содержание раздела