Direkte und indirekte Adressierung

Adressierungsarten

unter der Adressierungsart versteht man in der Assemblersprache den Weg, den ein Assemblerbefehl benutzt, um an einen Speicherzelleninhalt zu kommen.
Die Adressierungsarten werden an dem Befehl mov (move - bewege nach) erläutert.

mov Ziel,Quelle

hinter dem Befehlswort mov wird erst die Zielspeicherzelle genannt, in die das hineingeschrieben werden soll, wovon im Quelloperanden die Rede ist.
Diese Abfolge der Operanden gilt auch für alle anderen Maschinenbefehle der 8051 Assemblermnemonik.

 

Unmittelbare Adressierung

Beispiel: mov A,#20h

Die Zahl 20h wird unmittelbar in den Akku geschrieben.
Sie ist Teil des Maschinenbefehls und befindet sich zusammen mit ihm im Programmspeicher.
Sie wird zur Laufzeit in den Akku geladen.

 

Direkte Adressierung

Beispiel: mov A,21h

Hier wird der Inhalt von SZ 21h direkt in den Akku geladen.
Zur Laufzeit wird die Adresse direkt auf den Adressbus ausgegeben und der Inhalt der SZ 21h direkt in den Akku geladen.

Eine Umkehrung des Befehls wäre z.B:

mov 21h,A

Hier wird der Inhalt des Akku in die SZ 21h geschrieben.

 

Indirekte Adressierung

Die indirekte Adressierung wird z.B. für die obere Hälfte des Datenspeichers (80h bis FFh) angewendet.
Dieser Speicherbereich kann nur indirekt über die Register R0 oder R1 adressiert werden.

Beispiel:

mov R0,#80        ;stellt den Zeiger auf 80

mov @R0,A         ;schreibt den Inhalt des Akku indirekt über R0 in Speicherzelle 80

 

Hier einige Beispiele zur direkten- und indirekten Adressierung:

direkte und indirekte Adressierung

 

Die indirekte Adressierung wird z.B. auch für ein externes RAM verwendet.
Endweder über das Register R0, R1 oder über den DatenPointer DPTR.

Der Datenpointer (Datenzeiger) ist ein 16 Bit-Register, das sich aus den beiden 8 Bit-Registern DPH und DPL des SFR-Speichers zusammensetzt.

 

Beispiele:

indirekte Adressierung über Register