posted to PICList Mon Aug 4 09:29:57 1997
Clyde Smith-Stubbs
HI-TECH
Software,
http://www.htsoft.com/
; Word multiplication for PIC 16C5x #ifdef _PIC12 psect text,class=ENTRY,delta=2 #else psect text,class=CODE,delta=2 #endif global awmul,lwmul ; The main multiply thingo. Called with one operand in btemp and the ; other in btemp+2. It really doesn't matter which one is where. ; The multiplier is copied to plier, and the product built up in ; acca where it belongs STATUS equ 3 C equ 0 Z equ 2 lwmul awmul clrf prod ;initialize product clrf prod+1 loop bcf STATUS,C ;clear carry again rrf plier+1 ;shift multiplier down rrf plier btfss STATUS,C ;skip if multiplier lsb not set goto lop1 movf btemp,w ;add multiplicand to product addwf prod movf btemp+1,w btfsc STATUS,C incf btemp+1,w addwf prod+1 lop1 bcf STATUS,C ;clear carry rlf btemp ;shift multiplicand up rlf btemp+1 movf plier,w iorwf plier+1,w btfss STATUS,Z ;test for early return goto loop retlw 0 ;done, result in prod psect temp,global,class=BANK0,space=1,ovrld btemp ds 2 plier ds 2 prod ds 2 global used_btemp0 global used_btemp1 global used_btemp2 global used_btemp3 global used_btemp4 global used_btemp5 end