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
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)
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
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
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.
So wars eigendlich nicht gedacht. Schon eher, dass Du uns jetzt auf eins einlädtst ... Prost, Stefan
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?
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
Sag mal, nach 10 (!!!) Jahren einen alten Thread ausgraben und dann mit einem völlig neuen Thema weiterführen? Was soll denn das?
Sinus Tangentus schrieb: > Was soll denn das? Vielleicht wartet Stefan immer noch auf sein Bier... Hab ich auch übersehen. Georg
...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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.