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 || CJNE

CJNE     <Operand1>,<Operand2>,<rel>


Funktion


Vergleiche und springe, wenn ungleich.

 

CJNE     A,direct,rel                     direct = Adresse im unteren RAM oder SFR
CJNE     A,#data,rel   #data = unmittelbare 8 Bit Konstante
CJNE     Rr,#data,rel   Rr = Inhalt eines der Register R0 bis R7
CJNE     @Ri,#data,rel   @Ri = 8 Bit Adresse in R0 oder R1

 

Beschreibung


CJNE vergleicht die Werte <Operand1> und <Operand2> und führt eine Programmverzweigung durch, wenn die Werte ungleich sind.

Relatives Sprungziel rel
Der Programmzähler wird zunächst auf den nächsten Befehl gesetzt (PC=PC+3). Sind die beiden Operanden ungleich, wird der Sprungwert rel  zum Programmzähler hinzuaddiert (PC=PC+rel), welches den relativen Sprung zur Folge hat.
Der Sprungwert rel  wird dabei als vorzeichenbehaftete Zahl interpretiert. So sind Sprünge von -128 Bytes (zurück) bzw. 127 Bytes (vor) möglich.

CY = 1
Das Übertragsbit wird gesetzt, wenn der vorzeichenlose, ganzzahlige <Operand1> kleiner ist als der vorzeichenlose, ganzzahlige <Operand2>. Andernfalls wird es gelöscht (CY=0).

Keiner der beiden Operanden wird verändert.

 

Beispiel


Der Akkumulator (A) enthalte 34H und Register R7   56H. Der erste Befehl

                     CJNE     R7,#60H,MARKE1      ;Sprung, wenn R7 != 60H
                     ...                                                    ;R7 = 60H
MARKE1     JC          MARKE2                        ;Sprung, wenn R7 < 60H
                     ...                                                    ;R7 > 60H

bewirkt einen Sprung zu MARKE1, da Register R7 ungleich 60H ist. Gleichzeitig wird das Übertragsbit gesetzt (CY=1), da R7 kleiner als 60H ist. Somit bewirkt der Befehl JC einen Sprung zu MARKE2 (springe, wenn CY gleich Eins ist).

Wenn der an Port 1 liegende Wert ebenfalls 34H beträgt, löscht der Befehl

WAIT:         CJNE      A,P1,WAIT

das Übertragsbit (CY=0) und fährt mit dem nächsten Befehl fort, da der Akkumulatorinhalt gleich dem aus Port 1 gelesene Wert ist. Wenn irgendein anderer Wert an Port 1 liegt, geht das Programm an diesem Punkt in eine Warteschleife, bis der Wert 34H an Port 1 auftritt.

 

 

 

CJNE     A,direct,rel

Springe, wenn der Akkumulator (A) und der Inhalt der Adresse (direct) ungleich sind.
direct = Adresse im unteren RAM oder SFR

Bytes:      3
Zyklen:    2

Befehlscodierung

 1   0   1   1   0   1   0   1 
    
  direkte Adresse  
   
  relative Adresse  

 

 

CJNE     A,#data,rel

Springe, wenn Akkumulator (A) ungleich #data ist.
#data = unmittelbare 8 Bit Konstante

Bytes:      3
Zyklen:    2

Befehlscodierung

 1   0   1   1   0   1   0   0 
    
  unmittelbare Daten  
   
  relative Adresse  

 

 

CJNE     Rr,#data,rel

Springe, wenn Register  r  ungleich #data ist.
Rr = R0 .. R7 der gewählten Registerbank
#data = unmittelbare 8 Bit Konstante

Bytes:      3
Zyklen:    2

Befehlscodierung

 1   0   1   1   1   r    r    r 
    
  unmittelbare Daten  
   
  relative Adresse  

 

 

CJNE     @Ri,#data,rel

Springe, wenn der Wert der Adresse, welche durch den Wert in  Ri  definiert ist, ungleich #data ist.
@Ri = 8 Bit Adresse in R0 oder R1
#data = unmittelbare 8 Bit Konstante

Bytes:      3
Zyklen:    2

Befehlscodierung

 1   0   1   1   0   1   1   i 
    
  unmittelbare Daten  
   
  relative Adresse  


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