;PROGRAM-16) 16 bit’lik iki sayının toplanmasına örnek program. 
;h'61A3' ve h'2EE0' sayılarını toplar. Program çalıştığında 
;toplamın alt bayt'ı PortB'deki LED'lerde görülür. Üst bayt'ın 
;toplamını görmek için RA0 butonuna basılır.
;2 bayt'lık h'61A3' sayısına A, h'2EE0' sayısına da B dersek, 
;bu sayıları 1 bayt'lık veri depolayabilen 2 tane saklayıcı 
;kullanmamız gerekir. 


;===PROG16.ASM====17/05/2005================================
	LIST	P=16F628A
	INCLUDE	"P16F628A.INC"
	__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;-----------------------------------------------------------
	CBLOCK	20h
AL,AH,BL,BH			;Değişken adreslerini atama bloğu
	ENDC
	ORG	h'00'		;Program kodlarının başlangıcı
	CLRF	PORTB		;PortB'yi sıfırla
	BANKSEL 	TRISB		;BANK1'e geç
	CLRF	TRISB		;PortB'nin tüm uçları çıkış
	MOVLW	H'FF'		;	W ? h'FF'
	MOVWF	TRISA		;PortA'nın tüm uçları giriş
	BANKSEL 	PORTB		;BANK0'a geç
	MOVLW	h'07'		;W saklayıcıya h’07’ yükle 
	MOVWF	CMCON		;W?CMCON PORTA girişleri dijital
BASLA
	MOVLW	h'A3'		;W ? h'A3'
	MOVWF	AL		;AL ? h'A3'
	MOVLW	h'61'		;W ? h'61'
	MOVWF	AH		;AH ? h'61'	
	MOVLW	h'E0'		;W ? h'E0'
	MOVWF	BL		;BL ? h'E0'
	MOVLW	h'2E'		;W ? h'2E'
	MOVWF	BH		;BH ? h'2E'
TOPLA	
	MOVF	AL, W		;W ? AL
	ADDWF	BL, F		;BL=BL+W(AL), alt bayt toplamı
	BTFSC	STATUS, 0	;CARRY BAYRAĞI=1 mi ?
	INCF	BH, F		;Evet, BH=BH+1 	
	MOVF	AH, W		;W ? AH
	ADDWF	BH, F		;BH=BH+W(AH), üst bayt toplamı
ALT_BAYT_GOSTER
	MOVF	BL, W		;W ? BL
	MOVWF	PORTB		;Alt bayt toplamını göster
TEST_RA0
	BTFSC	PORTA, 0	;RA0 butonuna basıldı mı?
	GOTO	TEST_RA0	;Hayır, tekrar test et
UST_BAYT_GOSTER
	MOVF	BH, W		;Evet, W ? BH
	MOVWF	PORTB		;Üst bayt toplamını göster.
DONGU
	GOTO	DONGU
	END		
;-----------------------------------------------------------
