Atmel AVR Microcontroller Basic Math Code Library

for Multiplication

Multiply 8 bits by 8 bits in software by http://elm-chan.org/

;-----------------------------------------------------------------------------:
; 8bit x 8bit unsigned multiply
;
; Register variables:
;  Call:  var10 = 8bit multiplicand
;         var11 = <don't care>
;         var20 = 8bit multiplier
;         lc    = <don't care> (high register must be allocated)
;
;  Result:var1[1:0] = 16bit result of var10 * var20
;         var20     = <not changed>
;         lc        = 0
;
; Size  = 9 words
; Clock = 64 cycles (+ret)
; Stack = 0 byte


mul08u:		sub	var11,var11	;initialize variables
		ldi	lc,9		; lc = 9;
		brcc	PC+2		;---- calcurating loop
		add	var11,var20	;
		ror	var11		;
		ror	var10		;
		dec	lc		;if (--lc > 0)
		brne	PC-5		; continue loop;
		ret