Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
PADDUSB
Влияние команды на флаги и форматы команды:
0F DC /r |
PADDUSB mm,mm/m64 |
Сложить с насыщением беззнаковые упакованные байты из mm и mm/m64, результат поместить в mm |
paddusb mm5,mm7 |
0F DD /r |
PADDUSW mm,mm/m64 |
Сложить с насыщением беззнаковые упакованные слова из mm и mm/m64, результат поместить в mm |
paddusw mm1,[ebx] |
Описание:
Команда PADDUS производит сложение беззнаковых элементов операнда-источника с соответствующими беззнаковыми элементами операнда-назначения, используя принцип насыщения. Результат операции записывается в операнд-назначение.
Операндом-назначением является MMX-регистр. Операндом-источником может быть как MMX-регистр, так и операнд в памяти.
Команда PADDUSB производит сложение беззнаковых байтов. Если значение результата больше или меньше границ диапазона беззнакового байта, то результат операции насыщается соответственно до FFh или до 00h.
Команада PADDUSW производит сложение беззнаковых слов. Если значение результата больше или меньше границ диапазона без знакового слова, то результат операции насыщается соответственно до FFFFh или до 0000h.
Операция:
IF Команда PADDUSB
THEN
DEST(7..0) = SaturateToUnsignedByte(DEST(7..0) + SRC (7..0));
DEST(15..8) = SaturateToUnsignedByte(DEST(15..8) + SRC(15..8));
DEST(23..16) = SaturateToUnsignedByte(DEST(23..16)+ SRC(23..16));
DEST(31..24) = SaturateToUnsignedByte(DEST(31..24) + SRC(31..24));
DEST(39..32) = SaturateToUnsignedByte(DEST(39..32) + SRC(39..32));
DEST(47..40) = SaturateToUnsignedByte(DEST(47..40)+ SRC(47..40));
DEST(55..48) = SaturateToUnsignedByte(DEST(55..48) + SRC(55..48));
DEST(63..56) = SaturateToUnsignedByte(DEST(63..56) + SRC(63..56));
ELSE (* Команда PADDUSW *)
DEST(15..0) = SaturateToUnsignedWord(DEST(15..0) + SRC(15..0));
DEST(31..16) = SaturateToUnsignedWord(DEST(31..16 ) + SRC(31..16));
DEST(47..32) = SaturateToUnsignedWord(DEST(47..32 ) + SRC(47..32));
DEST(63..48) = SaturateToUnsignedWord(DEST(63..48) + SRC(63..48));
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