 |
|
alle Befehle
alle Befehle der 8051-Mikrocontroller-Familie
|
Mnemonik |
Funktion / Beschreibung |
Bytes |
Zyklen |
Op.code (hex.) |
ADD A,Rr |
Addiere Register r zum Akkumulator |
1 |
1 |
28 .. 2F |
ADD A,direct |
Addiere direktes Byte zum Akkumulator |
2 |
1 |
25 |
ADD A,@Ri |
Addiere indirekt aus RAM zum Akkumulator |
1 |
1 |
26, 27 |
ADD A,#data |
Addiere unmittelbare Daten zum Akkumulator |
2 |
1 |
24 |
ADDC A,Rr |
Addiere Register r und Übertrag zum Akkumulator |
1 |
1 |
38 .. 3F |
ADDC A,direct |
Addiere direktes Byte und Übertrag zum Akkumulator |
2 |
1 |
35 |
ADDC A,@Ri |
Addiere indirekt aus RAM sowie Übertrag zum Akkumulator |
1 |
1 |
36, 37 |
ADDC A,#data |
Addiere unmittelbare Daten und Übertrag zum Akkumulator |
2 |
1 |
34 |
SUBB A,Rr |
Subtrahiere Register r und Übertrag vom Akkumulator |
1 |
1 |
98 .. 9F |
SUBB A,direct |
Subtrahiere direktes Byte und Übertrag vom Akkumulator |
2 |
1 |
95 |
SUBB A,@Ri |
Subtrahiere indirekt aus RAM sowie Übertrag vom Akkumulator |
1 |
1 |
96, 97 |
SUBB A,#data |
Subtrahiere unmittelbare Daten und Übertrag vom Akkumulator |
2 |
1 |
94 |
INC A |
Inkrementiere Akkumulator (A = A +1) |
1 |
1 |
04 |
INC Rr |
Inkrementiere Register r (erhöhe um 1) |
1 |
1 |
08 .. 0F |
INC direct |
Inkrementiere direktes Byte |
2 |
1 |
05 |
INC @Ri |
Inkrementiere indirekt RAM-Byte |
1 |
1 |
06, 07 |
INC DPTR |
Inkrementiere Datenzeiger (DPTR = DPTR +1) |
1 |
2 |
A3 |
DEC A |
Dekrementiere Akkumulator (A = A -1) |
1 |
1 |
14 |
DEC Rr |
Dekrementiere Register r (verringere um 1) |
1 |
1 |
18 .. 1F |
DEC direct |
Dekrementiere direktes Byte |
2 |
1 |
15 |
DEC @Ri |
Dekrementiere indirekt RAM-Byte |
1 |
1 |
16, 17 |
MUL AB |
Multipliziere Akkumulator mit Register B |
1 |
4 |
A4 |
DIV AB |
Dividiere Akkumulator durch Register B |
1 |
4 |
84 |
DA A |
Dezimalkorrektur des Akkumulators bei Addition |
1 |
1 |
D4 |
|
Mnemonik |
Funktion / Beschreibung |
Bytes |
Zyklen |
Op.code (hex.) |
ANL A,Rr |
Verknüpfe Register r durch logisches UND zum Akkumulator |
1 |
1 |
58 .. 5F |
ANL A,direct |
Verknüpfe direktes Byte durch logisches UND zum Akkumulator |
2 |
1 |
55 |
ANL A,@Ri |
Verknüpfe indirekt aus RAM durch logisches UND zum Akkumulator |
1 |
1 |
56, 57 |
ANL A,#data |
Verknüpfe unmittelbare Daten durch logisches UND zum Akkumulator |
2 |
1 |
54 |
ANL direct,A |
Verknüpfe Akkumulator durch logisches UND zu direktem Byte |
2 |
1 |
52 |
ANL direct,#data |
Verknüpfe unmittelbare Daten durch logisches UND zu direktem Byte |
3 |
2 |
53 |
ANL C,bit |
Verknüpfe direktes Bit durch logisches UND zum Übertragsbit (CY) |
2 |
2 |
82 |
ANL C,/bit |
Verknüpfe Komplement des direkten Bits durch logisches UND zum Übertragsbit |
2 |
2 |
0B |
ORL A,Rr |
Verknüpfe Register r durch logisches ODER zum Akkumulator |
1 |
1 |
48 .. 4F |
ORL A,direct |
Verknüpfe direktes Byte durch logisches ODER zum Akkumulator |
2 |
1 |
45 |
ORL A,@Ri |
Verknüpfe indirekt aus RAM durch logisches ODER zum Akkumulator |
1 |
1 |
46, 47 |
ORL A,#data |
Verknüpfe unmittelbare Daten durch logisches ODER zum Akkumulator |
2 |
1 |
44 |
ORL direct,A |
Verknüpfe Akkumulator durch logisches ODER zu direktem Byte |
2 |
1 |
42 |
ORL direct,#data |
Verknüpfe unmittelbare Daten durch logisches ODER zu direktem Byte |
3 |
2 |
43 |
ORL C,bit |
Verknüpfe direktes Bit durch logisches ODER zum Übertragsbit (CY) |
2 |
2 |
72 |
ORL C,/bit |
Verknüpfe Komplement des direkten Bits durch logisches ODER zum Übertragsbit |
2 |
2 |
A0 |
XRL A,Rr |
Verknüpfe Register r durch logisches Exklusiv-ODER zum Akkumulator |
1 |
1 |
68 .. 6F |
XRL A,direct |
Verknüpfe direktes Byte durch logisches Exklusiv-ODER zum Akkumulator |
2 |
1 |
65 |
XRL A,@Ri |
Verknüpfe indirekt aus RAM durch logisches Exklusiv-ODER zum Akkumulator |
1 |
1 |
66, 67 |
XRL A,#data |
Verknüpfe unmittelbare Daten durch logisches Exklusiv-ODER zum Akkumulator |
2 |
1 |
64 |
XRL direct,A |
Verknüpfe Akkumulator durch logisches Exklusiv-ODER zu direktem Byte |
2 |
1 |
62 |
XRL direct,#data |
Verknüpfe unmittelbare Daten durch logisches Exklusiv-ODER zu direktem Byte |
3 |
2 |
63 |
CLR A |
Lösche Akkumulator (= 00H setzen) |
1 |
1 |
E4 |
CPL A |
Komplementiere Akkumulator (einzelne Bits umdrehen) |
1 |
1 |
F4 |
RL A |
Schiebe Akkumulator nach links rund |
1 |
1 |
23 |
RLC A |
Schiebe Akkumulator nach links durch Übertragsbit (CY) rund |
1 |
1 |
33 |
RR A |
Schiebe Akkumulator nach rechts rund |
1 |
1 |
03 |
RRC A |
Schiebe Akkumulator nach rechts durch Übertragsbit rund |
1 |
1 |
13 |
SWAP A |
Vertausche Halbbytes (Nibbles) im Akkumulator |
1 |
1 |
C4 |
|
|
Mnemonik |
Funktion / Beschreibung |
Bytes |
Zyklen |
Op.code (hex.) |
i
n
t
R
A
M
|
MOV A,Rr |
Kopiere Register r zum Akkumulator (transportiere, schreibe den Wert) |
1 |
1 |
E8 .. EF |
MOV A,direct |
Kopiere direktes Byte zum Akkumulator |
2 |
1 |
E5 |
MOV A,@Ri |
Kopiere indirekt aus RAM zum Akkumulator |
1 |
1 |
E6, E7 |
MOV A,#data |
Lade den Akkumulator mit unmittelbaren Daten |
2 |
1 |
74 |
MOV Rr,A |
Kopiere Akkumulator zum Register r |
1 |
1 |
F8 .. FF |
MOV Rr,direct |
Kopiere direktes Byte zum Register r |
2 |
2 |
A8 .. AF |
MOV Rr,#data |
Lade unmittelbare Daten in das Register r |
2 |
1 |
78 .. 7F |
MOV direct,A |
Kopiere Akkumulator zu direktem Byte |
2 |
1 |
F5 |
MOV direct,Rr |
Kopiere Register r zu direktem Byte |
2 |
2 |
88 .. 8F |
MOV direct,direct |
Kopiere direktes Byte zu direktem Byte |
3 |
2 |
85 |
MOV direct,@Ri |
Kopiere indirekt aus RAM zu direktem Byte |
2 |
2 |
86, 87 |
MOV direct,#data |
Kopiere unmittelbare Daten zu direktem Byte |
3 |
2 |
75 |
MOV @Ri,A |
Kopiere Akkumulator indirekt zum RAM |
1 |
1 |
F6, F7 |
MOV @Ri,direct |
Kopiere direktes Byte indirekt zum RAM |
2 |
2 |
A6, A7 |
MOV @Ri,#data |
Kopiere unmittelbare Daten indirekt zum RAM |
2 |
1 |
76, 77 |
MOV C,bit |
Kopiere direktes Bit zum Übertragsbit (CY) |
2 |
1 |
A2 |
MOV bit,C |
Kopiere Übertragsbit zum direkten Bit |
2 |
2 |
92 |
MOV DPTR,#data16 |
Lade den Datenzeiger mit einem 16bit-Wert |
3 |
2 |
90 |
e
x
t
R
A
M
|
MOVX A,@Ri |
Kopiere indirekt vom externen RAM (8bit-Adresse) zum Akkumulator |
1 |
2 |
E2, E3 |
MOVX A,@DPTR |
Kopiere indirekt vom externen RAM (16bit-Adresse) zum Akkumulator |
1 |
2 |
E0 |
MOVX @Ri,A |
Kopiere Akkumulator indirekt zu externem RAM (8bit-Adresse) |
1 |
2 |
F2, F3 |
MOVX @DPTR,A |
Kopiere Akkumulator indirekt zu externem RAM (16bit-Adresse) |
1 |
2 |
F0 |
i
n
t
R
A
M
|
SWAP A |
Vertausche die Bytehälften des Akkumumators |
1 |
2 |
C4 |
PUSH direct |
Bringe direktes Byte in den Stack |
2 |
2 |
C0 |
POP direct |
Hole vom Stack und bringe in direktes Byte |
2 |
2 |
D0 |
XCH A,Rr |
Vertausche Register r mit Akkumulator |
1 |
1 |
C8 .. CF |
XCH A,direct |
Vertausche direktes Byte mit Akkumulator |
2 |
1 |
C5 |
XCH A,@Ri |
Vertausche indirekt aus RAM mit Akkumulator |
1 |
1 |
C6, C7 |
XCHD A,@Ri |
Vertausche unteres Halbbyte (Nibble) indirekt aus RAM mit unterem Halbbyte des Akkumulators |
1 |
1 |
D6, D7 |
R
O
M
|
MOVC A,@A+DPTR |
Kopiere Programmbyte relativ zum Datenzeiger (DPTR) zum Akkumulator |
1 |
2 |
93 |
MOVC A,@A+PC |
Kopiere Programmbyte relativ zum Programmzähler (PC) zum Akkumulator |
1 |
2 |
83 |
|
Mnemonik |
Funktion / Beschreibung |
Bytes |
Zyklen |
Op.code (hex.) |
CLR C |
Lösche Übertragsbit (CY = 0) |
1 |
1 |
C3 |
CLR bit |
Lösche direktes Bit |
2 |
1 |
C2 |
SETB C |
Setze Übertragsbit (CY = 1) |
1 |
1 |
D3 |
SETB bit |
Setze direktes Bit |
2 |
1 |
D2 |
CPL C |
Komplementiere Übertragsbit (aus 0 wird 1, aus 1 wird 0) |
1 |
1 |
B3 |
CPL bit |
Komplementiere direktes Bit |
2 |
1 |
B2 |
ANL C,bit |
Verknüpfe direktes Bit durch logisches UND zum Übertragsbit (CY) |
2 |
2 |
82 |
ANL C,/bit |
Verknüpfe Komplement des direkten Bits durch logisches UND zum Übertragsbit |
2 |
2 |
B0 |
ORL C,bit |
Verknüpfe direktes Bit durch logisches ODER zum Übertragsbit |
2 |
2 |
72 |
ORL C,/bit |
Verknüpfe Komplement des direkten Bits durch logisches ODER zum Übertragsbit |
2 |
2 |
A0 |
MOV C,bit |
Kopiere den Wert des direkten Bits in das Übertragsbit (CY) |
2 |
1 |
A2 |
MOV bit,C |
Kopiere den Wert des Übertragsbits in das direkte Bit |
2 |
2 |
92 |
JC rel |
Springe, wenn Übertragsbit gesetzt ist (CY = 1) |
2 |
2 |
40 |
JNC rel |
Springe, wenn Übertragsbit nicht gesetzt ist (CY = 0) |
2 |
2 |
50 |
JB bit,rel |
Springe, wenn direktes Bit gesetzt ist (=1) |
3 |
2 |
20 |
JNB bit,rel |
Springe, wenn direktes Bit nicht gesetzt ist (=0) |
3 |
2 |
30 |
JBC bit,rel |
Springe, wenn direktes Bit gesetzt ist (=1) und lösche das Bit |
3 |
2 |
10 |
|
Mnemonik |
Funktion / Beschreibung |
Bytes |
Zyklen |
Op.code (hex.) |
ACALL addr11 |
Unbedingter Aufruf einer Subroutine innerhalb 2 kBytes im Programmspeicher |
2 |
2 |
11, 31, 51,
71, 91, B1,
D1, F1 |
LCALL addr16 |
Unbedingter Aufruf einer Subroutine innerhalb des 64kByte-Programmspeicher |
3 |
2 |
12 |
RET |
Rücksprung von der Subroutine |
1 |
2 |
22 |
RETI |
Rücksprung von Interrupt |
1 |
2 |
32 |
AJMP addr11 |
Unbedingter Sprung innerhalb 2 kBytes im Programmspeicher |
2 |
2 |
01, 21, 41,
61, 81, A1,
C1, E1 |
LJMP addr16 |
Unbedingter Sprung innerhalb des 64kByte-Programmspeicher |
3 |
2 |
02 |
SJMP rel |
Unbedingter Sprung innerhalb -128 .. +128 im Programmspeicher |
2 |
2 |
80 |
JMP @A+DPTR |
Springe indirekt relativ zu DPTR |
1 |
2 |
73 |
JB bit,rel |
Springe, wenn direktes Bit gesetzt ist (=1) |
3 |
2 |
20 |
JNB bit,rel |
Springe, wenn direktes Bit nicht gesetzt ist (=0) |
3 |
2 |
30 |
JBC bit,rel |
Springe, wenn direktes Bit gesetzt ist (=1) und lösche das Bit |
3 |
2 |
10 |
JC rel |
Springe, wenn Übertragsbit gesetzt ist (CY = 1) |
2 |
2 |
40 |
JNC rel |
Springe, wenn Übertragsbit nicht gesetzt ist (CY = 0) |
2 |
2 |
50 |
JZ rel |
Springe, wenn Akkumulator Null ist (A = 0) |
2 |
2 |
60 |
JNZ rel |
Springe, Wenn Akkumulator nicht Null ist (A = 1) |
2 |
2 |
70 |
CJNE A,direct, rel |
Vergleiche direktes Byte mit Akkumulator und springe, wenn sie ungleich sind |
3 |
2 |
B5 |
CJNE A,#data,rel |
Vergleiche unmittelbare Daten mit Akkumulator und springe, wenn sie ungleich sind |
3 |
2 |
B4 |
CJNE Rr,#data,rel |
Vergleiche unmittelbare Daten mit Register r und springe, wenn sie ungleich sind |
3 |
2 |
B8 .. BF |
CJNE @Ri,#data,rel |
Vergleiche unmittelbare mit indirekten Daten und springe, wenn sie ungleich sind |
3 |
2 |
B6, B7 |
DJNZ Rr,rel |
Dekrementiere (verringere um 1) Register r und springe, wenn es dann ungleich Null ist |
3 |
2 |
D8 .. DF |
DJNZ direct,rel |
Dekrementiere direktes Byte und springe, wenn es dann ungleich Null ist |
3 |
2 |
D5 |
NOP |
keine Operation - mache nichts |
1 |
1 |
00 |
|
|
|
ACALL <addr11> Funktion: Unbedingter Aufruf einer Subroutine innerhalb 2kBytes im Programmspeicher |
|
|
ADD A,<Operand> Funktion: Addieren (ohne Berücksichtigung des Übertragsbit (CY)) |
|
|
ADDC A,<Operand> Funktion: Addieren mit Berücksichtigung des Übertragsbit (CY) |
|
|
AJMP <addr11> Funktion: Unbedingter Sprung innerhalb 2kBytes im Programmspeicher |
|
|
ANL <Zielbyte>,<Quellenbyte> Funktion: Logische UND-Verknüpfung zweier Byte-Variablen |
|
|
ANL C,<Quellenbit> Funktion: Logische UND-Verknüpfung eines Bits mit Übertragsbit (CY) |
|
|
CJNE <Operand1>,<Operand2>,<rel> Funktion: Vergleiche und springe, wenn ungleich |
|
|
CLR <bit> Funktion: Lösche Bit |
|
|
CLR A Funktion: Lösche Akkumulator (A = 0) |
|
|
CPL <bit> Funktion: Komplementiere direktes Bit |
|
|
CPL A Funktion: Komplementiere Akkumulator (A) |
|
|
DA A Funktion: Dezimalkorrektur des Akkumulators (A) nach der Addition zweier gepackter BCD-Ziffern |
|
|
DEC <byte> Funktion: Dekrementieren (um 1 verringern) |
|
|
DIV AB Funktion: Dividiere Akkumulator (A) durch Register B |
|
|
DJNZ <byte>,<rel> Funktion: Dekrementiere und springe, wenn ungleich Null |
|
|
INC <byte> Funktion: Inkrementieren (um 1 erhöhen) |
|
|
INC DPTR Funktion: Inkrementiere Datenzeiger (DPTR = DPTR +1) |
|
|
JB <bit>,<rel> Funktion: Springe, wenn direktes Bit gesetzt ist |
|
|
JBC <bit>,<rel> Funktion: Springe, wenn direktes Bit gesetzt ist und lösche das Bit |
|
|
JC <rel> Funktion: Springe, wenn das Übertragsbit gesetzt ist (CY=1) |
|
|
JMP @A+DPTR Funktion: Springe indirekt relativ zum Datenzeiger (DPTR) |
|
|
JNB <bit>,<rel> Funktion: Springe, wenn direktes Bit nicht gesetzt ist |
|
|
JNC <rel> Funktion: Springe, wenn das Übertragsbit nicht gesetzt ist (CY=0) |
|
|
JNZ <rel> Funktion: Springe, wenn der Akkumulator nicht Null ist (A !=0) |
|
|
JZ <rel> Funktion: Springe, wenn der Akkumulator Null ist (A=0) |
|
|
LCALL <addr16> Funktion: Unbedingter Aufruf einer Subroutine innerhalb des 64kByte-Programmspeichers |
|
|
LJMP <addr16> Funktion: Unbedingter Sprung innerhalb des 64kByte-Programmspeichers |
|
|
MOV <Zielbyte>,<Quellenbyte> Funktion: Kopiere Byte-Variablen |
|
|
MOV <Zielbit>,<Quellenbit> Funktion: Kopiere direktes Bit zum Übertragsbit (CY) oder umgekehrt |
|
|
MOV DPTR,#data16 Funktion: Lade Datenzeiger mit 16bit-Konstante |
|
|
MOVC A,@A+<Basisregister> Funktion: Kopiere Programmbyte in den Akkumulator (A) |
|
|
MOVX <Zielbyte>,<Quellenbyte> Funktion: Transportiere vom oder zum externen RAM |
|
|
MUL AB Funktion: Multipliziere Akkumulator (A) mit Register B |
|
|
NOP Funktion: Keine Operation - mache nichts |
|
|
ORL <Zielbyte>,<Quellenbyte>
Funktion: Logische ODER-Verknüpfung zweier Byte-Variablen |
|
|
ORL C,<Quellenbit> Funktion: Logische ODER-Verknüpfung eines Bits mit Übertragsbit (CY) |
|
|
POP <byte> Funktion: Hole vom Stack und bringe in direktes Byte |
|
|
PUSH <byte> Funktion: Bringe direktes Byte in den Stack |
|
|
RET Funktion: Rücksprung von Subroutine |
|
|
RETI Funktion: Rücksprung vom Interrupt |
|
|
RL A Funktion: Schiebe Akkumulator (A) nach links rund |
|
|
RLC A Funktion: Schiebe Akkumulator (A) nach links durch das Übertragsbit (CY) rund |
|
|
RR A Funktion: Schiebe Akkumulator (A) nach rechts rund |
|
|
RRC A Funktion: Schiebe Akkumulator (A) nach rechts durch das Übertragsbit (CY) rund |
|
|
SETB <bit> Funktion: Setze Bit |
|
|
SJMP <rel> Funktion: Unbedingter Sprung innerhalb -128 .. +127 Bytes im Programmspeicher |
|
|
SUBB A,<Operand> Funktion: Subtrahiere (mit Berücksichtigung des Übertragsbit (CY)) |
|
|
SWAP A Funktion: Vertausche Halbbytes (Nibbles) im Akkumulator (A) |
|
|
XCH A,<Byte> Funktion: Vertausche variables Byte mit Akkumulator (A) |
|
|
XCHD A,@Ri Funktion: Vertausche unterres Halbbyte indirekt aus RAM mit unterem Halbbyte des Akkumulators (A) |
|
|
XRL <Zielbyte>,<Quellenbyte> Funktion: Logische Exklusiv-ODER-Verknüpfung zweier Byte-Variablen |
|
|
|





|
|
|
|
|
|
|