Der Flash-Speicher ist Word-weise organisiert.
Während es keine größeren Probleme bei der SRAM- und EEPROM - Programmierung
gibt (Byte-orientiert), stellt sich immer wieder die Frage, warum Adressen
im Flash mit zwei multipliziert werden müssen.
Beispiel: .db 0 ; führt zu einem Warning
.db 0,0
Hier ergänzt der Assembler nach der ersten 0 eine weitere 0, um
auf geradzahlige Word-Grenzen zu kommen.
Der Assembler des AVR-Studios legt immer den Zeilenanfang einer .db-Definition
auf eine Word - Adresse (gerade Byte-Adresse). Wenn man jetzt den Flash - Speicher auslesen möchte, muß man natürlich dann die Markenadresse mit zwei multiplizieren, da die Markenadresse immer auf einer Word - Grenze liegt,
um mit
z. B.
LMP R16,Z+ ; ein Byte aus dem Flash auslesen zu können.
Das nachfolgende Byte läßt sich dann, ohne die Word - Grenzen zu beachten,
mit z. B.
LMP R16,Z ; auslesen.
Der Zeiger Z wurde in diesem Beispiel nur um eins erhöht und zeigt somit
zwischen die Word-Grenzen.