From: Kevin Blain
; Multi-byte add routine.
; requires number of registers, start register address
; affects w, FSR / INDF and status
; result in N_hi and N_lo
movlw number_of_registers
movwf counter ; used to count how many successive registers to add
together
movlw start_register_address
movwf fsr ; used FSR and INDF to address successive memory
locations
clrf N_hi ; start with zero in N_hi and N_lo
clrf N_lo
loop:
movf INDF,w ; get latest byte to add in
addwf N_lo,f ; add to low order byte
skpnc ; test carry, if set, increment the hi order byte
incf N_hi,f
incf FSR,f
decfsz counter ; if counter is >1 then repeat loop
goto loop
; counter is zero, N_hi and N_lo contain reasult, w has changes tolast
value, FSR has last pointer
; total routine size 13 words.
; execution time 4+ (10 x number of resisters) cycles
Questions: