Naja,
ich dachte eigentlich, es ist ziemlich gut beschrieben auf dieser Seite

Also ganz kurz,
db bzw dw legen werte im Flash ab.
Es gibt hier eine enge Bindung mit Zeigern.
Am besten setzt man zuerst ein Label, und dann definiert man seine Werte
Code:
text:
.db 'H','A','L','L','O',0
Ich hab hier einfach einen String genommen.
Nach dem Assemblieren werden die Bytes im Flash liegen...

Zugriff geht ganz einfach,
man braucht den Z Zeiger und die Funktion lpm
Code:
ldi ZH,HIGH(2*text)
ldi ZL,LOW(2*text)
Jetzt "zeigt" der Z-Zeiger auch das Label "text" bzw. das erste Element von (Hier der Buchstabe H)

Als nächstes kommt der Befehl "lpm"

Code:
lpm
Jetzt hast Du den Inhalt worauf Z-Zeiger zeigt in Register R0 geladen.
Damit machst Du was Du auch immer lustig bist
Code:
mov R16,R0
Du kannst den Zeiger inkrementieren
Code:
adiw ZL,1
jetzt zeigt er auf 'A'
oder verringern
Code:
sbiw ZL,1
Jetzt zeigt er wieder auf 'H'
Man kann auch ein Paar Bytes in einem springen
Code:
adiw ZL,5
Jetzt klarer ?

Gruß Sebastian