Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ-2-MMX_.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
295.94 Кб
Скачать

1.5Команды сдвига

Среди ММХ-команд сдвига существуют команды арифметического и логического сдвига. Обратите внимание на то обстоятельство, что ММХ-команд сдвига упакованных байтов нет. Сдвигать можно только упакованные слова, двойные слова и учетверенные слова (целиком весь ММХ-регистр).

psllw | pslld | psllq приемник, источник — команды логического сдвига влево упакованных слов, двойных слов или учетверенных слов в приемник на количество разрядов, указанных значением источник. Результат помещается в приемник, который является одним из ММХ-регистров. Источник— либо ММХ-регистр, либо 64-разрядная ячейка памяти. Освобождающиеся в результате сдвига младшие биты упакованных элементов nрueмнuк заполняются нулями.

psllw | pslld | psllq приемник, количество_сдвигов —команды логического сдвига влево аналогичны рассмотренным выше командам, за исключением того, что все упакованные слова, двойные слова и учетверенные слова в приемник сдвигаются на количество разрядов, указанных значением непосредственного операнда источник. Освобождающиеся в результате сдвига младшие биты упакованных элементов лриемник заполняются нулями.

psrlw | psrld | psrlq приемник,источник —команды логического сдвига вправо упакованных слов, двойных слов или учетверенных слов в приемник на количество разрядов, указанных значением в источник. Результат помещается в приемник, который является одним из ММХ-регистров. Источник— либо ММХ-регистр, либо 64-разрядная ячейка памяти. Освобождающиеся в результате сдвига старшие биты упакованных элементов приемник заполняются нулями.

psrlw | psrld | psrlq приемник, количество_сдвигов — команды логического сдвига вправо аналогичны рассмотренным выше командам, за исключением того, что все упакованные слова, двойные слова или учетверенные слова в приемник сдвигаются на количество разрядов, указанных значением непосредственного операнда источник. Освобождающиеся в результате сдвига старшие биты упакованных элементов приемник заполняются нулями.

.data ;сегмент данных

mem dw 0ffffh

df 0ffffffffffffh

mem1 dw 4

df 0

.code

... ... ...

movq rmmx0, mem ;rmmx0=ffff ffff ffff ffff

;mem1 =0000 0000 0000 0004

psllw rmmx0, mem1 ;rmmx0=fff0 fff0 fff0 fff0

psrlw rmmx0, 4 ;rmmx0=0fff 0fff 0fff 0fff

... ... ...

Следующие команды являются командами арифметического сдвига. Эти команды сдвигают значение операнда вправо. Команд арифметического сдвига влево нет, так как они аналогичны командам логического сдвига, не сохраняющим значения знакового разряда.

psraw | psrad приемник,источник— команды арифметического сдвига вправо упакованных слов или двойных слов в приемник на количество разрядов, указанных в источник. Результат помещается в приемник, который является одним из ММХ-регистров. Источник— либо ММХ-регистр, либо 64-разрядная ячейка памяти. Освобождающиеся в результате сдвига старшие биты упакованных элементов приемник заполняются значением знаковых (старших) разрядов этих элементов.

.data ;сегмент данных

mem dw 0fff0h

df 0fff0fff0fff0h

mem1 dw 4

df 0

.code

… … …

movq rmmx0, mem ;rmmx0=fff0 fff0 fff0 fff0

;mem1 =0000 0000 0000 0004

psraw rmmx0, 4 ;rmmx0=ffff ffff ffff ffff

… … …

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]