| |
8051
instruction set summary arithmetic operations
logical operations
data transfer
Boolean variable manipulation
program branching

arithmetic operations
|
mnemonic |
discription |
byte |
cycle |
ADD A, Rn |
add register to
acc. |
1 |
12 |
ADD A, direct |
add direct byte to
acc. |
2 |
12 |
ADD A, @Ri |
add indirect RAM to
acc. |
1 |
12 |
ADD A, #data |
add immediate data
to acc. |
2 |
12 |
ADDC A, Rn |
add register to
acc. w/carry |
1 |
12 |
ADDC A, direct |
add direct byte to
acc. w/carry |
2 |
12 |
ADDC A, @Ri |
add indirect RAM to
acc. w/carry |
1 |
12 |
ADDC A, #data |
add immediate data
to acc. w/carry |
2 |
12 |
SUBB A, Rn |
subtract register
from acc. w/borrow |
1 |
12 |
SUBB A, direct |
subtract direct
byte from acc. w/borrow |
2 |
12 |
SUBB A, @Ri |
subtract indirect
RAM from acc. w/borrow |
1 |
12 |
SUBB A, #data |
subtract immediate
data from acc. w/borrow |
2 |
12 |
INC A |
increment acc. |
1 |
12 |
INC Rn |
increment register |
1 |
12 |
INC direct |
increment direct
byte |
2 |
12 |
INC @Ri |
increment direct
RAM |
1 |
12 |
DEC A |
decrement acc. |
1 |
12 |
DEC Rn |
decrement register |
1 |
12 |
DEC direct |
decrement direct
byte |
2 |
12 |
DEC @Ri |
decrement direct
RAM |
1 |
12 |
INC DPTR |
increment Data
Pointer |
1 |
24 |
MUL AB |
multiply A & B |
1 |
48 |
DIV AB |
divide A by B |
1 |
48 |
DA A |
decimal adjust acc. |
1 |
12 |
logical operations |
mnemonic |
description |
byte |
cycle |
ANL A, Rn |
AND register to
acc. |
1 |
12 |
ANL A, direct |
AND direct byte to
acc. |
2 |
12 |
ANL A, @Ri |
AND indirect RAM to
acc. |
1 |
12 |
ANL A, #data |
AND immediate data
to acc. |
2 |
12 |
ANL direct, A |
AND acc. to direct
byte |
2 |
12 |
ANL direct, #data |
AND immediate data
to direct byte |
3 |
24 |
ORL A, Rn |
OR register to acc. |
1 |
12 |
ORL A, direct |
OR direct byte to
acc. |
2 |
12 |
ORL A, @Ri |
OR indirect RAM to
acc. |
1 |
12 |
ORL A, #data |
OR immediate data
to acc. |
2 |
12 |
ORL direct, A |
OR acc. to direct
byte |
2 |
12 |
ORL direct, #data |
OR immediate data
to direct byte |
3 |
24 |
XRL A, Rn |
exclusive-OR
register to acc. |
1 |
12 |
XRL A, direct |
exclusive-OR direct
byte to acc. |
2 |
12 |
XRL A, @Ri |
exclusive-OR
indirect RAM to acc. |
1 |
12 |
XRL A, #data |
exclusive-OR
immediate data to acc. |
2 |
12 |
XRL direct, A |
exclusive-OR acc.
to direct byte |
2 |
12 |
XRL direct, #data |
exclusive-OR
immediate data to direct byte |
3 |
24 |
RL A |
rotate acc. left |
1 |
12 |
RLC A |
rotate acc. left
through the carry |
1 |
12 |
RR A |
rotate acc. right |
1 |
12 |
RRC A |
rotate acc. right
through the carry |
1 |
12 |
SWAP A |
swap nibbles within
the acc. |
1 |
12 |
data
transfer |
mnemonic |
description |
byte |
cycle |
MOV A, Rn |
move register to
acc. |
1 |
12 |
MOV A, direct |
move direct byte to
acc. |
2 |
12 |
MOV A, @Ri |
move indirect RAM
to acc. |
1 |
12 |
MOV A, #data |
move immediate data
to acc. |
2 |
12 |
MOV Rn, A |
move acc. to
register |
1 |
12 |
MOV Rn, direct |
move direct byte to
register |
2 |
24 |
MOV Rn, #data |
move immediate data
to register |
2 |
12 |
MOV direct, A |
move acc. to direct
byte |
2 |
12 |
MOV direct, Rn |
move register to
direct byte |
2 |
24 |
MOV direct, direct |
move direct byte to
direct byte |
3 |
24 |
MOV direct, @Ri |
move indirect RAM
to direct byte |
2 |
24 |
MOV direct, #data |
move immediate data
to direct byte |
3 |
24 |
MOV @Ri, A |
move acc. to
indirect RAM |
1 |
12 |
MOV @Ri, direct |
move direct byte to
indirect RAM |
2 |
24 |
MOV @Ri, #data |
move immediate data
to indirect RAM |
2 |
12 |
MOV DPTR, #data16 |
load Data Pointer
with a 16-bit constant |
3 |
24 |
MOVC A, @A+DPTR |
move code byte
relative to DPTR to acc. |
1 |
24 |
MOVC A, @A+PC |
move code byte
relative to PC to acc. |
1 |
24 |
MOVX A, @Ri |
move external RAM
(8-bit address) to acc. |
1 |
24 |
MOVX A, @DPTR |
move external RAM
(16-bit address) to acc. |
1 |
24 |
MOVX @Ri, A |
move acc. to
external RAM (8-bit address) |
1 |
24 |
MOVX @DPTR, A |
move acc. to
external RAM (16-bit address) |
1 |
24 |
PUSH direct |
push direct byte
onto stack |
2 |
24 |
POP direct |
pop direct byte
from stack |
2 |
24 |
XCH A, Rn |
exchange register
with acc. |
1 |
12 |
XCH A, @Ri |
exchange indirect
RAM with acc. |
1 |
12 |
XCHD A, @Ri |
exchange low-order
digit indirect RAM with acc. |
1 |
12 |
Boolean variable
manipulation |
mnemonic |
description |
byte |
cycle |
CLR C |
clear carry |
1 |
12 |
CLR bit |
clear direct bit |
2 |
12 |
SETB C |
set carry |
1 |
12 |
SETB bit |
set direct bit |
2 |
12 |
CPL C |
complement carry |
1 |
12 |
CPL bit |
complement direct
bit |
2 |
12 |
ANL C, bit |
AND direct bit to
carry |
2 |
24 |
ANL C, /bit |
AND complement of
direct bit to carry |
2 |
24 |
ORL C, bit |
OR direct bit to
carry |
2 |
24 |
ORL C, /bit |
OR complement of
direct bit to carry |
2 |
24 |
MOV C, bit |
move direct bit to
carry |
2 |
12 |
MOV bit, C |
move carry to
direct bit |
2 |
24 |
JC rel |
jump if carry is
set |
2 |
24 |
JNC rel |
jump if carry is
not set |
2 |
24 |
JB bit, rel |
jump if direct bit
is set |
3 |
24 |
JNB bit, rel |
jump if direct bit
is not set |
3 |
24 |
JBC bit, rel |
jump if direct bit
is set & clear bit |
3 |
24 |
program
branching |
mnemonic |
description |
byte |
cycle |
ACALL addr11 |
absolute subroutine
call |
2 |
24 |
LCALL addr16 |
long subroutine
call |
3 |
24 |
RET |
return from
subroutine |
1 |
24 |
RETI |
return from
interrupt |
1 |
24 |
AJMP addr11 |
absolute jump |
2 |
24 |
LJMP addr16 |
long jump |
3 |
24 |
SJMP |
short jump
(relative addr) |
2 |
24 |
JMP @A+DPTR |
jump indirect
relative to DPTR |
1 |
24 |
JZ rel |
jump if acc. is
zero |
2 |
24 |
JNZ rel |
jump if acc. in not
zero |
2 |
24 |
CJNE A, direct, rel |
compare direct byte
to acc. and jump if not equal |
3 |
24 |
CJNE A, #data, rel |
compare immediate
data to acc. and jump if not equal |
3 |
24 |
CJNE Rn, #data, rel |
compare immediate
data to register and jump if not equal |
3 |
24 |
CJNE @Ri, #data, rel |
compare immediate
data to indirect and jump if not equal |
3 |
24 |
DJNZ Rn, rel |
decrement register
and jump if not zero |
3 |
24 |
DJNZ direct, rel |
decrement direct
byte and jump if not zero |
3 |
24 |
NOP |
no operation |
1 |
12 |
|