c167 assembler,pointer

Gast #2246561
Lesenswert?

Hallo, hab da ein verständnisproblem mit pointer

mov R0, [R1]        ;RAM ->REG
Dies bedeutet doch
Ram-Inhalt von R1 via Pointer nach R0
oder?
Wenn ich nun den Inhalt von R1 ändere ändert sich dann auch der inhalt 
von R0?

zudem ist mir auch folgender ausdruck unklar!

mov [R2], [R3]  ;RAM->RAM


gruß Joe.M
Gast #2246632
Lesenswert?

Ich kenne zwar diesen Assembler nicht, aber die []-Notation für die 
Benutzung von Registern als Zeiger kenne ich noch vom 8086.

joe.M schrieb:
> RAM-Inhalt von R1 via Pointer nach R0
Vielleicht etwas ungeschickt ausgedrückt, da ein Register in gewisser 
Weise auch als RAM bezeichnet werden kann, und der "RAM-Inhalt von R1" 
etwas anderes wäre, als Du hier meinst. Anders ausgedrückt:
"Der Inhalt des RAMs, auf den R1 als Zeiger ausgewertet zeigt, nach R0."

joe.M schrieb:
> Wenn ich nun den Inhalt von R1 ändere ändert sich dann auch der Inhalt
> von R0?

Nein. In dem Register wird eine Kopie des Wertes aus dem RAM abgelegt. 
Wenn danach die Original-Speicherstelle verändert wird, wirkt sich das 
nicht mehr auf die Kopie aus.

joe.M schrieb:
> zudem ist mir auch folgender Ausdruck unklar:
>
> mov [R2], [R3]  ;RAM->RAM

Was ist daran unklar? Der Kommentar beschreibt es doch. Ich glaube, Du 
denkst hier zu kompliziert. Hier werden keine Speicherbereiche in 
Register gemappt oder Zugriffe auf Speicher in Register umgeleitet o.Ä.
Was mir nur dazu einfällt, ist dass Kopiern von Speicher nach Speicher 
mit einem einzelnen MOV beim 8086 nicht ging. :-D
Gast #2247455
Lesenswert?

> mov R0, [R1]        ;RAM ->REG
> Dies bedeutet doch
> Ram-Inhalt von R1 via Pointer nach R0
> oder?
Wert von R1 ist die Adresse der Speicherzelle (word), deren Inhalt 
(Wert) nach R0 kopiert wird.

> Wenn ich nun den Inhalt von R1 ändere ändert sich dann auch der inhalt
> von R0?
???

> mov [R2], [R3]  ;RAM->RAM
Kopiert Speicher auf Speicher, dass muss nicht unbedingt RAM sein. In 
den Registern stehen die Adressen der Speicherstellen.
Gast #2250433
Lesenswert?

Hallo,
also ich hole den Thread nochmal hoch weil ich dass mit den Pointer in 
Assembler(C167) auch nicht verstehe,

verwende ich also einen point6er wenn ich nicht auf das Register sondern 
auf den Speicher zugreife will?
Oder wann verwende ich pointer?

Gruß Marks
Gast #2250489
Lesenswert?

Hallo

>Hier geht es nicht um pointer, sondern um
>Adressierungsarten des mov Befehls.

MCUA schrieb:
> Rx  bezeichnet den Wert in Rx
> [Rx] bezeichnet den Wert der Zelle, auf die Rx zeigt

Sommit wäre es doch ein pointer!
Habe jetzt den überblick verloren
Für ein Beispiel mit Register und Inhalt..wäre ich dankbar

Gruß Marks
(Firma: privat) #6271279
Lesenswert?

Hallo Zusammen,

dieser Beitrag ist zwar schon etwas älter aber ich greife diesen wieder 
auf da es hier aus meiner Sicht am ehesten herpasst ohne eine neue 
Diskussion zu starten zu dem alten C167.

Bin kein Assembler experte aber beschäftige mich mit leiderschaft damit 
.....

leider stehe ich, mit meinem Verständnis, bei folgendem Befehl an .....

mov r1,  #C946h   ;soweit klar, denke ich
mov r13, #0       ;auch klar, denke ich
xor r13, [r1+]    ;excl. or = klar ; [r1+] leider unklar .....

Wäre euch da sehr dankbar über eure Hilfe (für Beginner).

Sorry wenn es für erfahrene Assembler eine Beginner Frage ist  ...... 
bin noch am Anfang vom Assembler lernen .....

VG aus Österreich
Florian

P.S.:
Die Beschreibung hab ich gelesen - aber ohne Beispiel verstehe ich es 
leider nicht.
"Bitwise XOR indirect word memory with direct GPR and post-increment 
source pointer by 2"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren