;
;					EJEMPLO 1.3
;
;				Autor: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Ejemplo para simulación
;
;Sumar dos números, A y B, de 16 bits cada uno.
;
		
		List	p=16F84		;Tipo de procesador
		include	"P16F84.INC"	;Definiciones de registros internos

Dato_A_L	equ	0x10		;Define la posición del dato A (bajo)
Dato_A_H	equ 	0x11		;Define la posición del dato A (alto)
Dato_B_L	equ	0x12		;Define la posición del dato B (bajo)
Dato_B_H	equ	0x13		;Define la posición del dato B (alto)
Resultado_L	equ	0x14		;Define la posición del resultado (bajo)
Resultado_H	equ	0x15		;Define la posición del resultado (alto)

		org	0x00		;Vector de Reset
		goto	Inicio

		org	0x05		;Salva el vector de interrupción

Inicio		movf	Dato_A_L,W	;Carga menos peso del dato A
		addwf	Dato_B_L,W	;Suma menos peso del dato B
		movwf	Resultado_L	;Almacena el resultado
		movf	Dato_A_H,W	;Carga más peso del dato A
		btfsc	STATUS,C	;Hubo acarreo anterior ??
		addlw	1		;Si, suma 1 al acumulador
		addwf	Dato_B_H,W	;Suma más peso del dato B
		movwf	Resultado_H	;Guarda el resultado

Stop		nop			;Poner breakpoint de parada
		nop

		end			;Fin del programa fuente
