			LIST	P=16F877A
			INCLUDE "P16F877A.INC"
			__CONFIG _XT_OSC & _CP_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_ON & _WRT_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF

;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

; REGISTROS

R1H			EQU	H'21'
R1M			EQU	H'22'
R1L			EQU	H'23'
AD2H		EQU	H'24'
AD2M		EQU	H'25'
AD2L		EQU	H'26'


;RUTINA
RESET		ORG		H'00'
			GOTO	INICIO
			ORG		H'05'

INICIO		MOVLW	.52		
			MOVWF	R1H
			MOVLW	.18		
			MOVWF	R1M
			MOVLW	.9	
			MOVWF	R1L

			MOVLW	.12		
			MOVWF	AD2H
			MOVLW	.34		
			MOVWF	AD2M
			MOVLW	.4		
			MOVWF	AD2L


ADD			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          ;


			NOP
			GOTO	$-1
	

			END