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: