;
;					ESEMPIO 1.3
;
;				Autore: Mikel Etxebarria
;			(c) Microsystems Engineering (Bilbao)
;
;Esempio per simulazione
;
;Sommare due numeri, A e B, di 16 bits ciascuno.
;
		
		List	p=16F84		;Tipo di processore
		include	"P16F84.INC"	;Definizioni di registri interni

Dato_A_L	equ	0x10		;Determina la posizione del dato A (basso)
Dato_A_H	equ 	0x11		;Determina la posizione del dato A (alto)
Dato_B_L	equ	0x12		;Determina la posizione del dato B (basso)
Dato_B_H	equ	0x13		;Determina la posizione del dato B (alto)
Risultato_L	equ	0x14		;Determina la posizione del risultato (basso)
Risultato_H	equ	0x15		;Determina la posizione del risultato (alto)

		org	0x00		;Vettore di Reset
		goto	Inizio

		org	0x05		;Salva il vettore di interrupt

Inizio		movf	Dato_A_L,W	;Carica meno peso del dato A
		addwf	Dato_B_L,W	;Somma meno peso del dato B
		movwf	Risultato_L	;Memorizza il risultato
		movf	Dato_A_H,W	;Carica più peso del dato A
		btfsc	STATUS,C	;C'è stato trasporto anteriore ??
		addlw	1		;Si, aggiungi 1 all'accumulatore
		addwf	Dato_B_H,W	;Somma più peso del dato B
		movwf	Risultato_H	;Conserva il risultato

Stop		nop			;Metti breakpoint di arresto
		nop

		end			;Fine del programma principale
