logo

Главная Система команд x86 Базовая система команд CPU SHRD

Система команд x86

Программирование - Архитектура и система команд микропроцессоров x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

SHRD

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

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

?

 

 

 

*

*

?

*

*

 

Код

Команда

Описание

Проц.

Пример

OF AC

SHRD r/m16,r16,imm8

Сдвинуть r/m16 вправо на imm8 бит, заполнив сдвинутые биты битами из r16

Intel386

shrd ax,bx,10

OF AC

SHRD r/m32,r32,imm8

Сдвинуть r/m32 вправо на imm8 бит, заполнив сдвинутые биты битами из r32

Intel386

shrd eax,ecx,4

OF AD

SHRD r/m16,r16,CL

Сдвинуть r/m16 вправо на CL бит, заполнив сдвинутые биты битами из r16

Intel386

shrd [di],bx,cl

OF AD

SHRD r/m32,r32,CL

Сдвинуть r/m32 вправо на CL бит, заполнив сдвинутые биты битами из r32

Intel386

shrd [ebx],eax,cl

Описание:

Команда SHRD сдвигает первый операнд, задаваемый полем r/m, вправо на столько бит, на сколько указывает третий операнд-счетчик. Второй операнд (регистр общего назначения) содержит биты, которые при выполнении операции вдвигаются слева в значение первого операнда. Результат сохраняется обратно в первый операнд, а второй операнд-регистр остается неизменным.

Операнд-счетчик задается либо непосредственным байтом, либо содержимым регистра CL. Значение счетчика сдвига берется по модулю 32, чтобы ограничить его в рамках от 0 до 31. Эта команда полезна для сдвигов двойной точности (операнды длиной 64 бита или более).

Флаги SF, ZF и PF устанавливаются согласно значению результата. Флаг CF устанавливается в значение последнего младшего выдвинутого бита операнда-источника. Флаги OF и AF оставляются неопределенными для операций многобитовых сдвигов, для операции сдвига на 1 бит флаг OF устанавливается, если происходит изменение знака операнда-источника, и сбрасывается, если изменения знака не происходит. Если операнд-счетчик равен 0, то флаги не изменяются. Если величина операнда-счетчика превышает размерность операнда-источника, то по результатам операции значения флагов не определены.

Операция:

(* Count представляет собой беззнаковое целое, согласованное с последним операндом команды (байтом imm8 или байтом в регистре CL) *)

ShiftAmt = count MOD 32;

InBits = register;  (* Допускается частичное перекрытие операндов *)

IF ShiftAmt = 0

THEN (нет операции)

ELSE

  IF ShiftAmt ³ OperandSize

  THEN (* Плохие параметры *)

     r/m = UNDEFINED;

     CF, OF, SZ, ZF, AF, PF = UNDEFINED;

  ELSE (* Выполнить сдвиг *)

     CF = BIT[r/m,ShiftArm - 1]; (* Последний бит выдвигается *)

     FOR i = 0 TO OperandSize - 1 - ShiftAmt

     DO BIT[r/m,i] = BIT[r/m,i-ShiftAmt]; OD;

     FOR i = OperandSize - ShiftAmt TO OperandSize - 1

     DO BIT[r/m,i] = BIT[InBits,i + ShiftAmt - OperandSize]; OD;

     (* SF, ZF, PF  устанавливаются согласно значению результата *)

     Установить SF, ZF, PF согласно r/m;

     AF = UNDEFINED;

  FI;

FI;

Особые ситуации защищенного режима:

#GP(0), если операнд-назначение находится в сегменте, запрещенном для записи, если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.

Особые ситуации режима V86:

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


Входит в группу команд: Базовая система команд CPU




Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Top.Mail.Ru       Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники