Forum: Compiler & IDEs Z Pointer unter AVR GCC setzen


von Jörn (Gast)


Lesenswert?

Hi,

Ich habe eine fertige Assemblerdatei und bin dabei sie in AVR GCC
einzubinden um die funktionen nutzen zu können. Doch beim setzen des
Z-Pointers auf meine "ASCIITABELLE" erhalte ich folgende fehler:

Zeile 131:  ldi  ZL,ASCIITAB<<1    ;set pointer to Ascii table
Zeile 132:  ldi  ZH,ASCIITAB>>7

LCD.S:131: Warning: expression possibly out of 8-bit range
LCD.S:132: Warning: expression possibly out of 8-bit range
LCD.S:131: Error: invalid section for operation
LCD.S:132: Error: invalid section for operation

Hat jemand eine idee wo hier der fehler liegt?

Danke schonmal im vorraus!

MFG Jörn

von Joerg Wunsch (Gast)


Lesenswert?

Du willst wahrscheinlich die Operatoren pm_lo8() und pm_hi8()
benutzen.

Wofür soll die Bitschieberei um 7 bzw. 1 Bit gut sein?  Die wird
höchstwahrscheinlich flasch sein, sowohl das Z-Register als auch
der Assembler zählen beide in Bytes (auch für den ROM -- daß Du
Dich auf ROM beziehst, hättest Du übrigens ruhig dazuschreiben
können).

von Jörn (Gast)


Angehängte Dateien:

Lesenswert?

Hm ich glaub das hat keiner so richtig verstanden deshalb hänge ich
jetzt mal den kompletten Quelltext an, vielleicht weis ja dann jemand
einen rat?!!

von Joerg Wunsch (Gast)


Lesenswert?

Ziemlich genau das, was Du da hast, habe ich mir drunter vorgestellt.
Nix mit nicht verstanden, außer daß Du vermutlich nicht verstanden
hast. ;-)  Also lies Dir nochmal durch, was ich geschrieben habe und
versuche es mal zu verstehen.

Btw., ich würde es in C schreiben, da nimmt einem der Compiler
bestimmte Dinge (wie eben z. B. die Initialisierung von Z beim
Lesen des ROMs) ab.  Zumindest kannst Du dann nachgucken, wie er
die pm_lo8() und pm_hi8() Operatoren benutzt.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Was machen diese Operatoren (?) denn anders als hi8() und lo8()?

von Joerg Wunsch (Gast)


Lesenswert?

Naja, sie beheben das urpsrüngliche Problem von Jörn, bei dem sich
der Assembler beklagt, daß der Zugriff auf den falschen
Speicherbereich versucht wird.

Dokumentiert sind all die AVR-spezifischen gas pseudo-ops leider
nur in Dateien, die auf ».c« (oder ».h«) enden. :-/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.