www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler Variablenadresse hochzählen


Autor: Assembleranfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Assembleranfänger (Gast)
Datum:

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

Autor: Nailpainter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher ASM, welcher Prozessor ?

Autor: Assembleranfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keil Assembler und 8051 Prozessor

Autor: Michael Waiblinger (wiebel42)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.