mult32.asm

来自「AVR单片机的典型程序」· 汇编 代码 · 共 47 行

ASM
47
字号
; File Name		Mult32.asm"
; Support Email	Per@hum.au.dk
; Target MCU		AT90Sxxxx

;	R e v i s i o n   H I S T O R Y 

;	rev.	date		who	why
;	----	------------	---	---------------------------------------------------
;	0.01	May 17, 2001	PB	Creation after a great idea from Thorleif Bundgaard
;

;.DEVICE AT90S4414			; change if an other device is used
;.include "4414def.inc"		; change if an other device is used

.def	Mult		=r8
.def	Mult1		=r9
.def	Base		=r10
.def	Base1		=r11
.def	Base2		=r12
.def	Base3		=r13
.def	Base4		=r14		; Base4 is just used as a adc zero ....
.def	Lcount		=r18

; Entry : Base1, Base / Mult1, Mult
; Result :
; Int : Base3, Base2, Base1, Base
; 18 Words off program space
; Execution at 1 MHz. between 150 and 200 uS. depending on the input numbers

Mult32:	ldi	Lcount,16
		mov	Base2,Base		; Prepare "Shift reg"
		mov	Base3,Base1
		clr	Base
		clr	Base1
		clr	Base4
Mult1:		add	Base,Base		; Shift 32 bit register one bit left
		adc	Base1,Base1
		adc	Base2,Base2
		adc	Base3,Base3
		brcc	Mult2			; No carry => Next
		add	Base,Mult		; Add Multiplicant
		adc	Base1,Mult1
		adc	Base2,Base4		; adc with zero to let carry ripple through
		adc	Base3,Base4		
Mult2:		dec	Lcount			; Finished ?
		brne	Mult1			; No, Loopback
		ret

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?