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





|
|