Forum: Mikrocontroller und Digitale Elektronik avr assembler label adresse Speichern


von M. S. (sadmarvin)


Lesenswert?

Hallo,

ich möchte gerne label adressen Speichern, und später wieder abrufen und 
in den Z-Pointer laden

also im SRAM Platz reservieren:

.DSEG
label_addr: .BYTE 2

unter verschiedenen Labels sind daten abgelegt:

label1:
.db 00011101, 10101010
.db 11101010, 10001001

label2:
.db 11010100, 11100111
.db 01010011, 11111111

ect.

jetzt möchte ich abhöngig vom Inhalt eines registers eine best. Label 
Adresse im SRAM speichern

in einer ISR soll dann der Z-Pointer mit der Adresse die im SRAM unter 
label_addr gespeichert ist geladen werden


Wie speichere ich jetzt z.B. die Adresse von label2 in label_addr ?
und wie kann ich dann den Z-Pointer damit laden

Grüße
Michael

von Klaus 2. (klaus2m5)


Lesenswert?

;label2 von Wortadresse in Byteadresse wandeln
;und im RAM speichern
ldi   r16,low(label2<<1)
sts   label_addr,r16
ldi   r16,high(label2<<1)
sts   label_addr+1,r16

;z aus Memory laden
lds   zl,label_addr
lds   zh,label_addr+1

von Michael U. (amiga)


Lesenswert?

Hallo,

der Zeiger zeigt ins Ram, nicht in den Flash.
Es sind also alles Byte-Adressen.

ldi   r16,low(label2)
sts   label_addr,r16
ldi   r16,high(label2)
sts   label_addr+1,r16

dürfte also eher passen.

Gruß aus Berlin
Michael

von M. S. (sadmarvin)


Lesenswert?

Ok, danke Euch.
:-)

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.