Bis dahin hab ichs erstmal verstanden.
Den Übertragsflag versteh ich nicht ganz. Ist das denn der Übertrag, den man auch aus dem schriftlichen rechnen kennt?

[edit]
Also nehmen wir mal die Zeilen hier:
Code:
ldi tmp, LOW  ((tonleiter1 * 2) + daten_laenge)	;vergleiche LOW-Byte 
   	cp ZL, tmp 
	ldi tmp, HIGH ((tonleiter1 * 2) + daten_laenge)	;vergleiche HIGH-Byte 
	cpc ZH, tmp 
	brne pruefTonaus								;zu "pruefTonaus:" springen
Nach der Zeile "cp ZL, tmp" wird doch gar nicht mit breq oder brne geprüft, wie das Ergebnis war, wozu vergleicht man dann eigentlich?