Quantcast
Channel: MSP430 Technical Forums
Viewing all articles
Browse latest Browse all 2077

16 bit multiply in asm - pretty quick

$
0
0

I do all my programming in assembly and needed a little multiply routine, and came up with this.  Not sure if it's been shown before.  The method dates back to the ancient Chinese and Egyptians.  Beats adding in a loop.

 

No overflow checking, so if your numbers are too big it's going to wrap around.  You'll need to declare op1, op2, and answer.  I used R7, R8, and R9

            mov		#0100h, op1
            mov		#00F0h, op2
            
            
Multiply	mov.w	#0, answer	; clear our answer register
nextBit		clrc			; clear carry since it will come into MSB on the rrc
		rrc	op1		; get LSB of op1 into carry
		jnc	dbl		; no bit, we dont add op2 into answer
		add	op2,answer	; the bit was set, add into the answer
			
dbl		add	op2,op2		; double our op2 in prep for the next bit
		cmp	#0,op1		; see if we have any more bits!
		jz	done		; nope, exit
		jmp	nextBit         ; yes, still have bits in op1, go again
done					; op1, op2 have been destroyed, answer has multiplied value



Viewing all articles
Browse latest Browse all 2077

Trending Articles