www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik register-indirekte adressierung (assembler)


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten abend,

hab morgen einen test in mikroprozessortechnik und versteh das nicht
mit dieser register indirekten adressierung. Ich schreib mal was ich
hier in meinen Mitschriften als Bsp. stehen hab:

mov r1,# 7bh   (konst.7bh in register 1 schreiben)
mov a, @ r1
nächstes bsp.

mov 10h, #9bh
mov r1, #10h
mov a,@ r1

ergebnis in a steht 9bh

bitte helft mir ich verzweifle hier. danke

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist gar nicht so schwer, und ist bei manchen Sachen eine verdammt
effektive Art, auf Daten zuzugreifen.
Im Prinzip ist es das gleiche Verfahren wie beim DPTR.
Du gibst im Befehl nicht die physikalische Adresse des Zieloperanden,
sondern sagst nur, wo die Adresse steht, auf die du zugreifen
möchtest.

mov r1, #10h
mov a,@ r1

Das sind die wichtigen Teile. Im ersten Befehl lädst du die Konstante
0x10 in Register 1, im zweiten Befehl greifst du lesend (mov a,xxx) auf
die Speicherstelle zu, die durch r1 addressiert wird. In dem Fall lädst
du also A mit dem Inhalt der Speicherzelle 0x10 (weil 0x10 in r1 steht,
welches als Adresszeiger benutzt wird)

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mov 10h, #9bh
In die Speicherstelle mit der Adressse 10h
wird der konstante Wert (# bedeutet konstant) 9Bhex geschrieben.

mov r1, #10h
In das Register R1 wird der konstante wert 10hex geschrieben.

mov a,@ r1
In A wird der Wert, auf den R1 zeigt, geladen (@ bedeutet: Register
wird als Adresse aufgefasst). R1 hat aus dem letzten Befehl den Wert
10hex, @R1 zeigt also auf die Speicherstelle mit der Adresse 10hex. Und
in der steht seit dem vorletzten Befehl 9Bhex.

Alles klar?

Stefan

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sers,

wo liegt denn genau das Problem? So wie ich das sehe, da wird in das
Register r1 7bh reingeschrieben. Dann wird in a der Inhalt
reingeschoben, der in der Speicherzelle mit der Adresse 7bh steht. Es
wird also nicht direkt in a der Wert geschoben.
Wenn das also indirekt ist, bekommst nu nen Zettel vom Chef wo der
Lagerplatz draufsteht und du das Teil von da holen sollst. Bei direkt
da gibt er dir gleich das Teil.

seb

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kewl gleich 3 mal. War wohl doch zu langsam. :-)

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank für eure schnelle und ausführliche antworten, wenn man es
verstanden hat ist es echt einfach.ist echt ein geiles forum hier.
jetzt kann ich ruhigen gewissens noch ein bierchen trinken.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So wars eigendlich nicht gedacht.
Schon eher, dass Du uns jetzt auf eins einlädtst ...

Prost, Stefan

Autor: Malte Löffler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute, kann ich Irgendwie eine 16Bit Adresse Incrementieren oder 
Decrementieren? Ich weiß das man R0 und R1 zusammen benutzen kann. Kann 
mir da wer helfen?

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Malte Löffler schrieb:
> Incrementieren oder
> Decrementieren? Ich weiß das man R0 und R1 zusammen benutzen kann.

Da müsste man allerdings wissen, welcher Prozessor - es könnte Inc und 
Dec Befehle geben, die direkt auf das Paar R1/R2 wirken.

Wenn nicht, musst du halt erst das Low Byte incrementieren, bei einem 
Übertrag (Carry) anschliessend das High Byte. Also etwa

   inc R1
   jnc Fertig   ; Jump if no Carry
   inc R2
Fertig:

Georg

Autor: Sinus Tangentus (micha_micha)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal, nach 10 (!!!) Jahren einen alten Thread ausgraben und dann mit 
einem völlig neuen Thema weiterführen? Was soll denn das?

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sinus Tangentus schrieb:
> Was soll denn das?

Vielleicht wartet Stefan immer noch auf sein Bier...

Hab ich auch übersehen.

Georg

Autor: Rainer V. (rudi994)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...oder Stefan hat seinem Urenkel Malte erzählt, es habe früher in 
Web-Foren oft Freibier gegeben, und Malte will jetzt mit einem Umweg 
über ein Registerpaar an diese Tradition anknüpfen.

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.