Hmm...ich hab das jetzt so gelöst:
Code:
;Programm
;CDurTonleiter rauf und runter spielen
.include "m8def.inc"

.def tmp = r16               	;Mein Universallregister
.def lpm_reg = r0				;Mein lpm-Register
.def zaehler = r17				;Mein Zählregister, prüft, ob das Wort zu Ende ist

.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

   	ldi ZH, HIGH(daten1 * 2)
   	ldi ZL, LOW(daten1 * 2)

	ldi zaehler, 0b00000000		;Zähler auf 0 setzen

   	sei                    		;Interrupts zulassen

loop:
	cpi zaehler, 0b00000110		;Vergleich Zähler mit 6
	breq loop					;wenn Zähler != 6, dann wieder zu "loop:" springen

einlesen:
	
	lpm                     	;nächstes Byte des String nach r0 einlesen
   	mov tmp, lpm_reg            ;Inhalt von R0 nach "tmp" kopieren
   	adiw ZL,1               	;Adresse des Z-Pointers um 1 erhöhen
	inc zaehler					;Zähler um 1 erhöhen

	rjmp loop					;wieder zurück zu "loop:"


daten1:
	.db "Hallo!"             	;immer eine gerade Anzahl an Bytes
Sorry, versteh die Befehle cp und cpc aber leider nicht (wegen untere Bytes und obere?) Aber mein Code geht auch.
Nachteil ist eben, dass von Anfang an klar sein muss, aus wieviel Zeichen dsa Wort besteht.

[edit]
Ich bin auch mal eben was essen.