ja moin leute
hab mal wieder ein problem... will mir einen binär zu bcd Wandler programieren. und jedes mal wenn ich jezz zb von einer 255 eine hundert abziehe wir das Carry- bzw Digit-carry- Flag gestetzt. kann mir jemand sagen wieso?

hier noch mein code...

Code:
main
		clrf	BCD_100er
		clrf	BCD_10er
		clrf	BCD_1er
		clrdc	
		clrc
		btfss	PORTA,0
		goto	main

;Lade variable die in BCD zu Wandeln ist.
		movlw	D'255'
		movwf	ZU_WANDELN

;Subtrahiere den wert mit 100 solange bis Ergebnis 0
;wenn ja dann springe zu "weiter" sonst wiederhole
;bis ergebniss 0
	Hunderter
		movlw	D'100'
		subwf	ZU_WANDELN,1
		incf	BCD_100er,1
		bdc		weiter
		goto	Hunderter

;addiere den Wert 100 zur speicherzelle 
;um wieder einen genauen wert zu habe
	weiter
		clrdc
		decf	BCD_100er,1
		movlw	D'100'
		addwf	ZU_WANDELN,1
		clrc

;Subtrahiere den wert mit 10 solange bis Ergebnis 0
;wenn ja dann springe zu "Zehner" sonst wiederhole
;bis ergebniss 0
	Zehner
		clrdc
		movlw	D'10'
		subwf	ZU_WANDELN,1
		incf	BCD_10er,1
		bdc		go_on
		goto	Zehner

;addiere den Wert 100 zur speicherzelle 
;um wieder einen genauen wert zu habe
	go_on
		clrdc
		decf	BCD_100er,1
		movlw	D'10'
		addwf	ZU_WANDELN,1

;Subtrahiere den wert mit 1 solange bis Ergebnis 0
;wenn ja dann springe zu "Zehner" sonst wiederhole
;bis ergebniss 0
	Einer
		movlw	D'1'
		subwf	ZU_WANDELN,1
		incf	BCD_1er,1
		bdc		Ausgeben
		goto	Einer
wäre über jede antwort erfreut...