
- •Севастопольский национальный университЕт ядерной энергии и промышленности инструктивно-методические указания для проведения лабораторного занятия №2
- •Заведующий кафедрой кс
- •Лабораторное занятие №2
- •1Теоретический раздел
- •2.1 Модель целочисленного mmx-расширения
- •2.3 Особенности команд mmx-расширения
- •2.4 Команды пересылки
- •1.1Команды сложения и вычитания
- •1.2Команды умножения
- •1.3Команды сравнения
- •1.4 Команды логических операций
- •1.5Команды сдвига
- •1.6Команды упаковки и распаковки
- •2Порядок выполнения работы
- •4. Процедуры вычисления выражений.
- •3Содержание отчета
- •4Контрольные вопросы
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
… … …