8051 Mikrocontroller
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:
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: