[AVR8] feste ROM-Adressen und lpm mit dem GNU Assembler

Gast #393916
Lesenswert?
• ▲
▼
Hallo zusammen,

es gelingt mir gerade nicht, Z mit einer Flash-ROM-Adresse zu laden.
Nachdem meine bisherigen Versuche, Google zu fragen und das
AVR-GLIBC-Manual zu lesen, nicht weiter halfen, hoffe ich nun, dass
hier jemand damit Erfahrung hat. Im Prinzip ist es eine einfache
Syntaxfrage, oder gibt es beim GNU Assembler hierfür keine Lösung der
Art

Sprungmarke: .db 0x01, 0x02, 0x03

[...]

ldi ZL, low(Sprungmarke/Adresse)
ldi ZH, high(Sprungmarke/Adresse)
lpm

(Beim AVR ASM v2 von Atmel lief das wunderbar)

Ich habe die beiden Makros entsprechend durch (A & 0x00ff) bzw. (A >>
8) ersetzt und erhalte beim Versuch es zu assemblieren die
Fehlermeldung

"invalid sections for operation on `Sprungmarke' and `LO<nicht
druckbares Zeichen>'

wobei mir das LO vorkommt als die an der Adresse stehende Bytefolge
bzw. seiner Abbildung in den bei der Ausgabe verwendeten Zeichensatz.
Ich rate bzw. vermute, dass der Assembler nicht versteht, was ich von
ihm will...

Was mache ich falsch- oder: Wie lade ich ein Register mit einem aus der
Adresse einer Sprungmarke abgeleiteten Wert, sodass es der GNU AVR
Assembler versteht?

Hintergrund des Ganzen: Habe bisher nur mit dem AVR Assembler v2
gearbeitet und wollte meinen Code langsam mal in Libraryform bringen,
sodass man ihn elegant von C aus nutzen kann.


Ich bin dankbar für alle Hinweise...

Gruß

Tristan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren