Schummler! *lol*
Da steht mein beispiel ja fast Wort für Wort! *rofl* *@ Thomas -> schau da mal*

@ Thomas:
Stell Dir ein Buchregal vor!
Mit dem Z-Register gibst Du nun die Position des Buches an.
Code:
ldi ZL , LOW  (datenlabel * 2)
ldi ZH , HIGH (datenlabel *2)
Danach ziehst Du das passende Buch mit dem Befehl lpm aus dem Regal und packst es in den Einkaufswagen r0.
Da Du es aber nach dem bezahlen mit nach Hause nehmen möchtest musst Du es in einen Beutel packen, r16, da Du den Einkaufswagen nicht mitnehmen darfst/kannst bzw. willst -> für dieses beispiel!

Jetzt verstanden?

Wenn Du dann aber mehrere Bücher haben möchtest, musst Du mehrere Male einkaufen gehen.
Wenn Du vor dem regal stehst musst Du den Pointer für das Regal um eine Position (Byte) erhöhen, um das nächste Buch einzupacken!

Also mal in Stichworten:
- Datenpointer
- Schleife öffnen
- lpm
- r0 (lpm_reg) in r16 (temp) übertragen
- Datenzähler um 1 erhöhen
- Schleife wiederhohlen

Das wars!
Das ist eigentlich, wenn man es einmal verstanden hat, garnicht schwer!?



Ps:
Habs glatt überlesen! ;o)
Die beiden labels sind die Positionen für die daten, die Du auslesen willst, Dein Bücherregal!