From: Scott Dattalo
;****************************************** ;bcd_subtract ; ; Computes z = x - y ; where x,y,z are all 8-bit packed BCD numbers ; Exits with C=1 (and DC=1 too) if x>=y ; and with z=1 if x==y. ; Note that z can be aliased to x or y so that ;it's possible to calculate x = x-y or y = x-y ; 9 cycles (+ return) bcd_subtract MOVF y, W ;W = y SUBWF x, W ;W = x-y RLF z, F ;lsb of z has the carry SKPDC ;if lsn of x < lsn of y ADDLW -0x06 ; then convert lsn of the ; result to BCD. BTFSS z, 0 ;Similarly for the msn's ADDLW -0x60 RRF z, F ;Get the carry MOVWF z ;and save the result RETURN