logo

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

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

PUNPCKHDQ

Распаковать старшие упакованные двойные слова

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

Код

Команда

Описание

Пример

0F 68 /r

PUNPCKHBW mm,mm/m64

Копировать старшие байты из mm/m64 и mm поочередно в mm

punpckhbw mm1,[ecx]

0F 69 /r

PUNPCKHWD mm,mm/m64

Копировать старшие слова из mm/m64 и mm поочередно в mm

punpckhwd mm5,mm3

0F 6A /r

PUNPCKHDQ mm,mm/m64

Копировать старшие двойные слова из mm/m64 и mm поочередно в mm

punpckhdq mm1,mm2

Описание:

Команда PUNPCKH распаковывает старшие элементы операнда-источника и операнда-назначения в операнд-назначение. Элементы двух операндов записываются в результат через один, т.е. в старший элемент результата помещается старший элемент операнда-источника, в следующий более младший элемент — старший элемент операнда-назначения, далее — следующий элемент из операнда-источника, элемент из операнда-назначения и т.д. до полного заполнения всех элементов результата, этот результат затем помещается в операнд-назначение.

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

Команда PUNPCKHBW распаковывает байты.

Команда PUNPCKHWD распаковывает слова.

Команда PUNPCKHDQ распаковывает двойные слова.

Операция:

IF Команда PUNPCKHBW

THEN

  DEST(7..0) = DEST(39..32);

  DEST(15..8) = SRC(39..32);

  DEST(23..16) = DEST(47..40);

  DEST(31..24) = SRC(47..40);

  DEST(39..32) = DEST(55..48);

  DEST(47..40) = SRC(55..48);

  DEST(55..48) = DEST(63..56);

  DEST(63..56) = SRC(63..56);

ELSE IF Команда PUNPCKHW

THEN

  DEST(15..0) = DEST(47..32);

  DEST(31..16) = SRC(47..32);

  DEST(47..32) = DEST(63..48);

  DEST(63..48) = SRC(63..48);

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

  DEST(31..0) = DEST(63..32)

  DEST(63..32) = SRC(63..32);

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       Сервер радиолюбителей России - схемы, документация,

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