Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: fmul, fmuls...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
777777
В мегах есть команды, которые после умножения сдвигают результат влево. Фича полезная для дробных вычислений с фиксированной точкой, но обычно прихрдится иметь дело с как минимум двухбайтовыми данными. Можно ли эти команды приспособить для умножения двухбайтовых чисел?
alexeyv
Ты наверное ищешь Это:
CODE
;**********************************************************************
********
;*
;* FUNCTION
;* fmuls16x16_32
;* DECRIPTION
;* Signed fractional multiply of two 16bits numbers with 32bits result.
;* USAGE
;* r19:r18:r17:r16 = ( r23:r22 * r21:r20 ) << 1
;* STATISTICS
;* Cycles : 20 + ret
;* Words : 16 + ret
;* Register usage: r0 to r2 and r16 to r23 (11 registers)
;* NOTE
;* The routine is non-destructive to the operands.
;*
;******************************************************************************

fmuls16x16_32:
clr r2
fmuls r23, r21 ; ( (signed)ah * (signed)bh ) << 1
movw r19:r18, r1:r0
fmul r22, r20 ; ( al * bl ) << 1
adc r18, r2
movw r17:r16, r1:r0
fmulsu r23, r20 ; ( (signed)ah * bl ) << 1
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
fmulsu r21, r22 ; ( (signed)bh * al ) << 1
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
ret


Более подробную информацию можно прочитать в Application Note AVR201: Using the AVR® Hardware Multiplier
777777
Цитата(alexeyv @ Jul 7 2011, 08:22) *
Ты наверное ищешь Это:

Да, точняк!

Цитата(alexeyv @ Jul 7 2011, 08:22) *
Более подробную информацию можно прочитать в Application Note AVR201: Using the AVR® Hardware Multiplier

По аппнотам лазил, а эта как-то прошла мимо sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.