From: Dwayne Reid
...here is an example that takes the value in R1H,M,L and adds it to the value contained in AD2H,M,L (result in AD2H,M,L). You should be able to see how to extend it to more than 24 bits.
There is a similar version that does subtraction. I often extend to 40 bits or more - its easier to do this when manipulating integer values than it is to try and figure out which bits I can discard.
;now add new sample movfw R1L ; addwf AD2L,F ;LS byte movfw R1M ;middle byte skpnc incfsz R1M,W addwf AD2M,F ; movfw R1H ;MS byte skpnc incfsz R1H,W addwf AD2H,F ;
Interested:
Code:
;********** ; For 17C family processors. ; from std.ins.aspic at http://www.embedinc.com/pic if fam_17 add24 macro dest, src, temp movfp src+0, wreg addwf dest+0 ;add byte 0 movfp src+1, wreg addwfc dest+1 ;add byte 1 movfp src+2, wreg addwfc dest+2 ;add byte 2 endm endif ;end of 17C processor case ;
See also: