PIC 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
	clrf q_4
	clrf q_3
	clrf q_2
	clrf q_1
	bsf q_2, 7
m1:
	rrf n_2, f
	rrf n_1, f
	skpc
	goto m2
	movf n_3, w
	addwf q_3, f
	movf n_4, w
	skpnc
	incfsz n_4, w
	addwf q_4, f
m2:
	rrf q_4, f
	rrf q_3, f
	rrf q_2, f
	rrf q_1, f
	skpc
	goto m1

endm