SX Microcontroller Math Method

Multiply 16x16 bit macro from Bob Fehrenbach, Scott Dattalo

Posted to PICList Mon Aug 4 10:17:59 1997

;*******************************************************************
; Double Precision Multiplication
;
; n_2 : n_1 * n_4 : n_3 -> q_4:q_3:q_2:q_1
;
; Standard shift and add.
; Execution time: 215 to 295 clock cycles.
; Code space: 22 locations
;
; Cleaned up and corrected version from Microchip Ap note by BF.
; Note: Ap note has errors! Additional mods by Scott Dattalo.
;
;*******************************************************************


mpy16b16: macro
local m1, m2
	clr	q_4
	clr	q_3
	clr	q_2
	clr	q_1
	setb	q_2.7
m1:
	rr	n_2
	rr	n_1
	sb	C
	jmp	m2
	mov	W, n_3
	add	q_3, W
	mov	W, n_4
	snb	C
	movsz	W, ++n_4
	add	q_4, W
m2:
	rr	q_4
	rr	q_3
	rr	q_2
	rr	q_1
	sb	C
	jmp	m1

endm