Hi Michi, einfach das Programm, was du geschrieben hast, kompilieren, dann ist automatisch eine *.hex Datei in deinem Ordner.
Kompilieren kannst du mit F7.

@Florian:
So, erstmal gut soweit:
Code:
.include "m8def.inc"

.def tmp = r16               	;Mein Universallregister
.def lpm_reg = r0				;Mein lpm-Register

.equ time0 = 256-90				;Damit wird der Timer0 vorgeladen
.equ daten_laenge = 6			;Länge des Strings

.org 0x000
   	rjmp reset					;Interruptvektor "reset:"

reset:
   	;Stack einrichten
   	ldi tmp, HIGH(RAMEND)      	;HIGH-Byte der obersten RAM-Adresse
   	out SPH, tmp
   	ldi tmp, LOW(RAMEND)      	;Low-Byte der obersten RAM-Adresse
   	out SPL, tmp

	;Timer Register werden belegt, hier Timer 0
	ldi tmp, (1<<CS02)				;Prescaler ist 1024
	out TCCR0, tmp					;Register TCCR0 ist für den Prescaller zuständig
	ldi tmp, time0					;Hier wird der Timer vorgeladen
	out TCNT0, tmp
	ldi tmp, (1<<TOIE0)				;Hier werden Interrupts nach Timer0 Überlauf eingeschaltet
	out TIMSK, tmp					;Register TIMSK ist dafür zuständig

	;Z-Register mit daten1 füllen
   	ldi ZH, HIGH(tonleiter1 * 2)
   	ldi ZL, LOW(tonleiter1 * 2)

   	sei                    		;Interrupts zulassen

main:
	lpm							;Daten laden
   	mov tmp, lpm_reg           ;in temp verschieben
   	adiw ZL, 1                 	;Z um eins erhöhen
   	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
   	breq ende                   ;springe zu ende, wenn letztes Byte ausgelesen
   	rjmp main					;nochmal

ende:							;Endschleife
	rjmp ende

tonleiter1:
	.db 28, 16, 14, 0			;Werte zum Vorladen des Timers für die Töne
								;c', a' und c''
Allerdings muss hier noch die daten_laenge angepasst werden, oder? Also jetzt sind das ja 4 Bytes und nicht mehr 6, oder?

Gruß
Thomas