В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > AVR > Команды
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Команда FMULSU - Дробное умножение знакового с незнаковым

Описание:

Эта инструкция выполняет 8-бит x 8-бит --> 16-бит знаковое умножение и сдвиг результата на 1 бит влево.

П

усть (N.Q) обозначают дробное число с N двоичных цифр слева от точки, и Q двоичных цифр справа от точки. Умножение между двумя числами в форматах (N1.Q1) и (N2.Q2) даст результат в формате ((N1 + N2). (Q1 + Q2)). Формат (1.7) широко используется как формат входных чисел для сигнальной обработки, а получившийся в результате формат (2.14) - как результат. Сдвиг влево необходим для того, что бы старший байт результата был в таком же формате как входные числа. Инструкция FMULS, включая операцию сдвига, выполняется за такое же число циклов как инструкция MULSU.

Формат (1,7) наиболее широко используется со знаковыми числами, в то время как FMULSU выполняет умножение одного незнакового и одного знакового числа. Поэтому эта инструкция наиболее полезна для расчета двух частичных результатов при выполнении знакового умножения с 16-биттными данными в формате (1.15), дающие результат в формате (1.31).

Примечание: результат операции FMULSU может подвергнуться двойному переполнению, если интерпретировать число в формате (1.15). MSB умножения, до сдвига, должно быть учтено, и находится в бите переноса. См. следующий пример.

Множимое Rd и множитель Rr - два регистра, содержащих знаковые дробные числа, у которых мнимая точка расположена между битом 6 и битом 7. Множимое Rd - знаковое дробное число, и множитель Rr - незнаковое дробное число. 16-битный знаковый дробный результат с мнимой точкой между битом 14 и битом 15 помещается в R1 (старший байт) и R0 (младший байт).

Эта инструкция не доступна во всех устройствах. Обратитесь к сводной инструкции конкретного устройства.

Операция:

  R1:R0 <-- Rd x Rr (знаковое (1.15) <-- знаковое (1.7) x незнаковое (1.7))
 
  Синтаксис Операнды: Счетчик программ:
  FMULSU Rd,Rr 16 d 23, 16 r 23 PC <- PC + 1


16-разрядный код операции:

0000 0011 1ddd 1rrr

Булевы выражения регистра статуса (SREG)
I T H S V N Z C
- - - - - - + +


C: R16

Установлен, если бит 15 результата до сдвига в лево установлен, очищен в ином случае.

Z: R15 · R14 · R13 · R12 · R11 · R10 · R9 · R8 · R7 · R6 · R5 · R4 · R3 · R2 · R1 · R0

Установлен, если результат равен $0000, очищен в ином случае.

R: (результат)соответствует R1,R0 после выполнения команды.

Пример:

;******************************************************************************
;* ОПИСАНИЕ
;*Знаковое дробное умножение двух 16-битных чисел и 32-битным результатом.
;* Используются:
;*r19:r18:r17:r16 = ( r23:r22 * r21:r20 ) << 1
;******************************************************************************
fmuls16x16_32:
clrr2
fmulsr23, r21;((знаковый)ah * (знаковый)bh) << 1
movwr19:r18, r1:r0
fmulr22, r20;(al * bl) << 1
adcr18, r2
movwr17:r16, r1:r0
fmulsur23, r20;(( знаковый)ah * bl) << 1
sbcr19, r2
addr17, r0
adcr18, r1
adcr19, r2
fmulsur21, r22;(( знаковый)bh * al) << 1
sbcr19, r2
addr17, r0
adcr18, r1
adcr19, r2

Слов: 1 (2 байта)

Циклов:2