Forum: Mikrocontroller und Digitale Elektronik Register und Variablen nutzen


von Thomas Oly (Gast)


Lesenswert?

Hallo,

ich habe mal ne Frage zu den Registern und zwar benötige ich um das
Prog leicht verständlich zu machen mehr Variablen zu definieren.
Normalerweise geht das ja so:
.def Zahl1= r16

Aber mir reichen die Register nicht aus da ich einige durch die Pointer
draufgehen usw. Gibt es ne Möglichkeit einen Variablennamen einer
bestimmten 8bit Speicherstelle(SRAM) zuzuordnen?

Oder lassen sich die Register im Programm mehrmals umdefinieren, was
aber die schlechtere Lösung für mich wäre.

Also vielen Dank im Vorraus

von Christof Krüger (Gast)


Lesenswert?

Klar kannst du SRAM-Inhalt mit einem Namen versehen, schau dir im
Assembler die Direktiven .dseg und .byte an. Natürlich musst du dann
auch die Werte erst aus dem SRAM holen, ehe du damit arbeiten kannst.

von Chris (Gast)


Lesenswert?

Hallo,

Du kannst Registern mehrere Variablennamen zuweisen.Außerdem kannst Du
einer Variablen im SRAM einen Namen (=Label) für Ihre Adresse zuweisen.
Darauf zugreifen kannst Du jedoch wiederum nur über die Pointer.

Beispiel aus der Hilfe:
.DSEG
var1:   .Byte 1      ; ein einziges Byte reservieren für var1

.CSEG
ldi r30,low(var1)
ldi r31,high(var1)
ld r1,Z              ; lesender Zugriff

Gruß

von Thomas Oly (Gast)


Lesenswert?

Hallo,

habe jetzt auch was gefunden, womit man direkt aufs sram zugreifen kann
aber leoder nur unter nutzung einer direkten speicheradresse.

lds r2,$FF00 ; Load r2 with the contents of data space location $FF00
add r2,r1        ; add r1 to r2
sts $FF00,r2 ; Write back

Anscheinend geht es damit, dann kann ich doch die Speicherstelle $60
mit ErgebnissAD ansprechen.
.equ  ErgebnissAD  =$60

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.