logo

Главная Система команд x86 Набор команд MMX PSRAW

Система команд 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

PSRAW

Арифметический сдвиг вправо упакованных слов

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

Код

Команда

Описание

Пример

0F E1 /r

PSRAW mm,mm/m64

Арифметический сдвиг вправо упакованных слов в mm на mm/m64 бит

psraw mm3,mm2

0F 71 /4 ib

PSRAW mm,imm8

Арифметический сдвиг вправо упакованных слов в mm на imm8 бит

psraw mm2,5

0F E2 /r

PSRAD mm,mm/m64

Арифметический сдвиг вправо упакованных двойных слов в mm на mm/m64 бит

psrad mm1,[ecx]

0F 72 /4 ib

PSRAD mm,imm8

Арифметический сдвиг вправо упакованных двойных слов в mm на imm8 бит

psrad mm2,10

Описание:

Команда PSRA производит сдвиг вправо битов первого операнда на число позиций, указанное во втором операнде. Результат сдвига записывается в операнд-назначение. Освобождающиеся старшие биты каждого элемента заполняются знаковым битом. Если значение второго операнда больше 15 (для слов), 31 (для двойных слов) или 63 (для учетверенных слов), то весь элемент будет заполнен знаковым битом.

Операндом-назначением является MMX-регистр. Операндом-источником может быть MMX-регистр, 64-разрядный операнд в памяти или непосредственное 8-разрядное значение.

Команда PSRAW сдвигает каждое из четырех слов операнда-назначения вправо на число позиций, указанное в операнде-источнике. Старшие биты каждого слова заполняются знаковым битом.

Команда PSRAD сдвигает каждое из двух двойных слов операнда-назначения вправо на число позиций, указанное в операнде-источнике. Старшие биты каждого двойного слова заполняются знаковым битом.

Команда PSRAQ сдвигает учетверенное слово операнда-назначения вправо на число позиций, указанное в операнде-источнике. Старшие биты заполняются знаковым битом.

Операция:

IF Команда PSRAW

THEN

  DEST(15..0) = SignExtend (DEST(15..0) >> COUNT);

  DEST(31..16) = SignExtend (DEST(31..16) >> COUNT);

  DEST(47..32) = SignExtend (DEST(47..32) >> COUNT);

  DEST(63..48) = SignExtend (DEST(63..48) >> COUNT);

ELSE (* Команда PSRAD *)

  DEST(31..0) = SignExtend (DEST(31..0) >> COUNT);

  DEST(63..32) = SignExtend (DEST(63..32) >> COUNT);

FI;

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


#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

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


#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#UD, если CRO.EM=1.
#NM, если CRO.TS=1.
#MF, если есть отложенные необработанные незамаскированные исключения FPU.

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


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

Входит в группу команд: Набор команд MMX




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

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

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