header.self8051
Suche   ||   HOME   ||   Eigenschaften   ||   Befehlsreferenz   ||   Derivate   ||  
 Eigenschaften
 Befehlsreferenz
     Einführung
    > alle Befehle
        ACALL
        ADD
        ADDC
        AJMP
        ANL
        ANL  C
        CJNE
        CLR
        CLR  A
        CPL
        CPL  A
        DA  A
        DEC
        DIV  AB
        DJNZ
        INC
        INC  DPTR
        JB
        JBC
        JC
        JMP
        JNB
        JNC
        JNZ
        JZ
        LCALL
        LJMP
        MOV
        MOV  C
        MOV  DPTR
       > MOVC
        MOVX
        MUL  AB
        NOP
        ORL
        ORL  C
        POP
        PUSH
        RET
        RETI
        RL  A
        RLC  A
        RR  A
        RRC  A
        SETB
        SJMP
        SUBB
        SWAP  A
        XCH
        XCHD
        XRL
 Derivate
 interessante Links
Sie sind hier: SELF8051 || Befehlsreferenz || alle Befehle || MOVC

MOVC     A,@A+<Basisregister>


Funktion


Kopiere Programmbyte in den Akkumulator (A).

 

MOVC     A,@A+DPTR           DPTR = Datenzeiger
MOVC     A,@A+PC   PC = Programmzeiger

 

Beschreibung


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.

 

Beispiel


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

 1   0   0   1   0   0   1   1 

 

 

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

 1   0   0   0   0   0   1   1 


Fehler auf dieser Seite melden



 

Seite drucken

Send a Friend

 
 zum Seitenanfang   © Autor Dipl. Ing. Sven Pohl || Impressum || Datenschutz


Tipp: rechtssichere Patientenverfügung einfach online erstellen für nur 14,90 €

  

 

Wertschätzen Sie den Aufwand und den Inhalt mit einer kleinen Spende. Danke.

Sie bestimmen die Höhe, jeder noch so kleine Betrag hilft.

 

   
HASM - Skyscrapper 2