logo

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

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

PACKSSWB

Упаковать с насыщением слова со знаком

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

O

D

I

T

S

Z

A

P

C

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Пример

0F 63 /r

PACKSSWB mm,mm/m64

Упаковать с насыщением знаковые слова из  mm и mm/m64 в байты, результат поместить в mm

packsswb mm1,mm2

0F 6B /r

PACKSSWD mm,mm/m64

Упаковать с насыщением знаковые двойные слова из  mm и mm/m64 в слова, результат поместить в mm

packsswd mm1,[ebp]

Описание:

Команда PACKSS упаковывает с насыщением элементы данных со знаком из обоих операндов и записывает результат в операнд-назначение. Операндом-назначением является MMX-регистр. Операндом-источником может быть как MMX-регистр, так и операнд в памяти.

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

Команда PACKSSWB упаковывает 4 знаковых слова из обоих операндов в 8 знаковых байт. Если значение слова больше или меньше границ диапазона знакового байта, то результат упаковки насыщается соответственно до 7Fh или до 80h.

Команда PACKSSDB упаковывает два знаковых двойных слова из обоих операндов в 4 знаковых слова. Если значение двойного слова больше или меньше границ диапазона знакового слова, то результат упаковки насыщается соответственно до 7FFFh или до 8000h.

Операция:

IF Команда PACKSSWB

THEN

  DEST(7..0) = SaturateSignedWordToSignedByte DEST(15..0);

  DEST(15..8) = SaturateSignedWordToSignedByte DEST(31..16);

  DEST(23..16) = SaturateSignedWordToSignedByte DEST(47..32);

  DEST(31..24) = SaturateSignedWordToSignedByte DEST(63..48);

  DEST(39..32) = SaturateSignedWordToSignedByte SRC(15..0);

  DEST(47..40) = SaturateSignedWordToSignedByte SRC(31..16);

  DEST(55..48) = SaturateSignedWordToSignedByte SRC(47..32);

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

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

  DEST(15..0) = SaturateSignedDoublewordToSignedWord DEST(31..0);

  DEST(31..16) = SaturateSignedDoublewordToSignedWord DEST(63..32);

  DEST(47..32) = SaturateSignedDoublewordToSignedWord SRC(31..0);

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

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