;PROGRAM-8) SUBWF komutu kullanılarak oluşturulan döngüye örnek program. 
;Bu programda SAYAC adlı bir saklayıcının içerisine döngünün tekrar 
;sayısı konulmuştur. Döngünün her tekrarında INCF komutuyla SAYAC 
;içerisindeki değer bir arttırılır. SUBWF komutuyla W saklayıcı içerisindeki 
;sabit sayı karşılaştırılır. Karşılaştırma sonunda etkilenen sıfır 
;(Zero) bayrağı kontrol edilerek döngü sona erdirilir.

;Şekil 7 – 10 : PROG8.ASM programının akış diyagramı.

;===PROG8.ASM====05/05/2005================================
	LIST	P=16F628A
	INCLUDE	"P16F628A.INC"
	__CONFIG _RC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
;----------------------------------------------------------
SAYAC	EQU	h'20'		;SAYAC saklayıcısını tanımla
	BANKSEL	TRISB		;BANK1'e geç 
	CLRF		TRISB		;PORTB uçları çıkış
	BANKSEL	PORTB		;BANK0'a geç
	CLRF		PORTB		;PortB'deki LED'leri söndür.
BASLA
	CLRF		PORTB		;portB'yi sil
	CLRF		SAYAC		;SAYAC'ı sil
TEKRAR
	MOVF		SAYAC, W		;SAYAC'ı W’ye yükle(sıfırla)	
	MOVWF	PORTB		;W saklayıcıyı PortB'ye gönder
	INCF		SAYAC, F		;SAYAC ? SAYAC+1
	MOVLW	h'F5'		;W saklayıcıya h'F5' yükle
	SUBWF	SAYAC, W		;W ? SAYAC-W
	BTFSS	STATUS, 2		;STATUS bit2=1 mi?
	GOTO 	TEKRAR		;Hayır, TEKRAR'a git
DONGU
	GOTO		DONGU
	END
;-----------------------------------------------------------
