 |
|
|
MOVC A,@A+<Basisregister>
Kopiere Programmbyte in den Akkumulator (A).
|
| MOVC A,@A+DPTR |
|
DPTR = Datenzeiger |
| MOVC A,@A+PC |
|
PC = Programmzeiger |
|
Der MOVC Befehl läd den Akkumulator (A) mit einer Konstante (Programmbyte) aus dem Programmspeicher. Die Adresse des geholten Bytes ist die Summe des ursprünglichen, vorzeichenlosen 8bit-Akkumulatorinhaltes und des Inhaltes des 16bit-Basisregisters, das entweder der Datenzeiger (DPTR) oder der Programmzähler (PC) sein kann.
Wird der Programmzähler (@A+PC) verwendet, so wird dieser zunächst auf den nächsten Befehl gesetzt (1x inkrementiert ) bevor sein Inhalt zum Akkumulator addiert wird.
Bei der 16bit-Addition kann sich ein Übertrag aus den acht niederwertigen Bits durch die höherwertigen Bits fortpflanzen.
DPTR wird nicht verändert. Kennzeichnungsbits werden nicht beeinflusst.
|
Der Akkumulator enthalte einen Wert zwischen 0 und 3. Die folgenden Befehle verwandeln den Wert im Akkumulator in einen der vier Werte, die durch DB (Definition eines Bytes) vorgegeben sind:
Speicher-
adresse |
Befehl |
Kommentare |
| |
|
;A = 01H |
| 0100H RELPC |
INC A |
;A = 02H |
| 0101H |
MOVC A,@A+PC |
;A+PC = 02H + 02H (wegen 0102H)
; = 04H, 0104H = 77H = A |
| 0102H |
RET |
;Rücksprung aus Subroutine |
| 0103H |
DB 66H |
;Beginn der Datentabelle |
| 0104H |
DB 77H |
|
| 0105H |
DB 88H |
|
| 0106H |
DB 99H |
|
Falls die Subroutine aufgerufen wurde, als der Akkumulator 01H enthielt, wird die Subroutine mit 77H im Akkumulator verlassen. Der Befehl INC A vor MOVC ist erforderlich, um an dem Befehl RET oberhalb der Datentabelle "vorbeizukommen".
Würden sich mehrere Codierungsbytes zwischen dem MOVC-Befehl und der Tabelle befinden, so müßte anstelle der Inkrementierung eine Addition der entsprechenden Zahl zum Akkumulator stattfinden. |
MOVC A,@A+DPTR
Läd den Akkumulator (A) mit dem Wert des Speicherplatzes, welcher durch die Addition des Akkumulators und dem Datenzeiger definiert ist.
Bytes: 1
Zyklen: 2
Befehlscodierung
|
MOVC A,@A+PC
Läd den Akkumulator (A) mit dem Wert des Speicherplatzes, welcher durch die Addition des Akkumulators und dem Progammzeiger definiert ist.
Bytes: 1
Zyklen: 2
Befehlscodierung
|
|





|
|
|
|
|
| |
Wertschätzen Sie den Aufwand und den Inhalt mit einer kleinen Spende. Danke.
Sie bestimmen die Höhe, jeder noch so kleine Betrag hilft. |
|
|
|