Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
PSRAW
Влияние команды на флаги и форматы команды:
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) при невыровненной ссылке в память.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru