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 clr prod ;initialize product clr prod+1 loop clrb C ;clear carry again rr plier+1 ;shift multiplier down rr plier sb C ;skip if multiplier lsb not set jmp lop1 mov W, btemp ;add multiplicand to product add prod, W mov W, btemp+1 snb C mov W, ++btemp+1 add prod+1, W lop1 clrb C ;clear carry rl btemp ;shift multiplicand up rl btemp+1 mov W, plier or W, plier+1 sb Z ;test for early return jmp loop retw #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
Comments: