>>QUOTING>> What I like even more about the subwf method is, that it also works for incrementing counters: movlw 1 addwf L btfss PSW, CY addwf M btfss PSW, CY addwf H ... The OT part: I have noticed that dyed-in-the-wool bit-bangers who have learned assembly on old strange asymetrical architectures, jump to try strange shifting+logical solutions for common optimization problems, and fail more often than not, on the PIC, because of its symetrical architecture that does not penalize the 'straight' way to do things ! Comments ? ;) >>ME>> This dyed-in-the-wool bit-banger does sometimes like to use a few "strange shifting" solutions for things, even on the PIC--sometimes that can be the best approach. For example, if an address is available that will always read zero (or if you can spare a byte of RAM to store a zero in) it becomes possible to do multi-byte addition faster than via any other means. Some examples: ; To add a byte to a 3-byte number: movf source,w addwf dest0,f rlf kz,w ; KZ == known zero addwf dest1,f rlf kz,w addwf dest2,f ; To add two bytes together, with valid carry-in (if source is 255, then carry-out will be wrong) rlf kz,w addwf source,w addwf dest,f ; To add zero to dest, with valid carry-in and carry-out rlf kz,w addwf dest,f ; To add 1-254 to dest, with valid carry-in and carry-out rlf kz,w addlw (the number) addwf dest,f ; To add 255 to dest, with valid carry-in and carry-out movlw 255 btfss C addwf dest,f