User Tools

Site Tools


16-bit multiply with 32-bit product

;16-bit multiply with 32-bit product 
;took from
multiplier	= $f7 
multiplicand	= $f9 
product		= $fb 
mult16 		lda	#$00
		sta	product+2	; clear upper bits of product
		sta	product+3 
		ldx	#$10		; set binary count to 16 
shift_r		lsr	multiplier+1	; divide multiplier by 2 
		ror	multiplier
		bcc	rotate_r 
		lda	product+2	; get upper half of product and add multiplicand
		adc	multiplicand
		sta	product+2
		lda	product+3 
		adc	multiplicand+1
rotate_r	ror			; rotate partial product 
		sta	product+3 
		ror	product+2
		ror	product+1 
		ror	product 
		bne	shift_r 
base/16bit_multiplication_32-bit_product.txt · Last modified: 2018-09-04 23:32 by agentfriday