Forum: Mikrocontroller und Digitale Elektronik Assembler Variablenadresse hochzählen


von Assembleranfänger (Gast)


Lesenswert?

Hallo,
ich bin noch Anfänger und programmiere in Assembler. Nun stehe ich vor 
folgendem Problem:

Ich habe eine Variable Daten (Daten:      DS        6)
In dieser Variablen sind Werte abgespeichert, die ich nun Byteweise 
(nach jedem Aufruf einer Call-Routine) einer anderen Variablen übergeben 
möchte.

Wie kann ich das machen? (Wie kann ich die Adresse der Variablen Daten 
hochzählen???)

Vielen Dank

von Karl H. (kbuchegg)


Lesenswert?

zb. indem du dir die Startadresse deiner Daten in ein
Register (Registerpärchen) holst, und dort dann immer
1 dazuzählst.

Es hängt jetzt allerdings wirklich vom Code und was du konkret
erreichen willst ab, wie das zu lösen ist.

von Assembleranfänger (Gast)


Lesenswert?

OK, wie kann ich mir dann konkret die Startadresse in ein Register 
holen? @ oder # oder???

von Nailpainter (Gast)


Lesenswert?

Welcher ASM, welcher Prozessor ?

von Assembleranfänger (Gast)


Lesenswert?

Keil Assembler und 8051 Prozessor

von Michael W. (wiebel42)


Lesenswert?

Wenn die Daten im Programmspeicher liegen sollte dir die Variable Z 
weiterhelfen. Ist zumindest bei AVR so. Ansonsten X und Y. -wiebel

von Johannes M. (johnny-m)


Lesenswert?

Michael Waiblinger wrote:
> Wenn die Daten im Programmspeicher liegen sollte dir die Variable Z
> weiterhelfen. Ist zumindest bei AVR so. Ansonsten X und Y. -wiebel
Gibt es AFAIR so beim 8051er nicht.

@Assembleranfänger:
Schau Dir mal die ganzen indirekten Adressier-Methoden des 
MOV[...]-Befehls und seiner Verwandten an (da gabs unterschiedliche, 
weiß jetzt nicht mehr, welcher für indirekte Adressierung zuständig 
ist). Da findest Du voraussichtlich das was Du brauchst.

EDIT:
Wenn ich mich zurückerinnere (ist ne Weile her, dass ich mit 8051ern 
gearbeitet hab), besitzt die 8051er Architektur einen Data Pointer 
(Special Function Register), den man direkt inkrementieren kann.

von Pieter (Gast)


Lesenswert?

moin moin,

Buffer:  DS  6
.
.
.

        mov   R0, #Buffer  ;R0 auf Bufferanfang
        mov   A, @R0       ;Byt vom Buffer lesen
        inc   R0           ;next Buffer



mfg
Pieter

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.