编号
指令名称
指令助记符
8051系列单片机汇编语言指令速查表
指令说明
字节
周期
将立即数#data送累加器A
将立即数#data送片内RAM direct地址单元内
将立即数#data送寄存器Rn
寄存器Ri内为RAM地址,将立即数#data送该地址单元内
2
3
2
2
3
2
2
2
2
1
1
2
2
1
1
3
1
1
2
1
1
1
1
1
1
1
1
2
2
1
2
1
2
1
2
1
2
1
2
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
2
1
2
2
3
1
2
1
2
2
3
1
2
1
2
2
3
1
1
1
1
1
1
2
2
3
1
2
2
3
3
3
3
2
3
2
2
3
3
3
2
3
1
1
1
2
2
1
2
1
2
2
2
2
2
1
2
1
2
1
1
2
2
2
2
2
1
1
1
1
1
1
2
1
1
1
1
1
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
4
4
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
1
1
1
1
1
1
1
2
2
2
2
1
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
一般传送
目的地址传送
字节交换
与外部RAM传
送
与ROM传送
栈操作
加法指令
带进位加法
带借位减法
加1指令
减1指令
乘法
除法
二-十进制调整
逻辑与
逻辑或
逻辑异或
按位取反
累加器清零
逻辑右移
逻辑左移
带进位右移
带进位左移
无条件转移
条件转移
循环转移
布尔条件转移
调用指令
返回指令
空操作
布尔传送
位清0
位清0
位置1
位与
位或
位取反
MOV A, #data
MOV direct, #data
Mov Rn, #data
Mov @Ri, #data
Mov direct2, direct1 将direct1地址单元的数据送 direct2地址单元内
Mov direct, rn
Mov Rn, direct
Mov direct, @Ri
Mov @Ri, direct
Mov A, Rn
Mov Rn, A
Mov A, direct
Mov direct, A
Mov A, @Ri
Mov @Ri , A
Mov DPTR, #data16
SWAP A
XCH A, Rn
XCH A, direct
XCH A, @Ri
XCHD A, @Ri
MOVX @DPTR, A
MOVX A , @DPTR
MOVX A, @Ri
MOVX @Ri, A
MOVC A, @A+DPTR
MOVC A, @A+PC
PUSH direct
POP direct
ADD A, Rn
ADD A, direct
ADD A, @Ri
ADD A, #data
ADDC A, Rn
ADDC A, direct
ADDC A, @Ri
ADDC A, #data
SUBB A, Rn
SUBB A, direct
SUBB A, @Ri
SUBB A, #data
INC A
INC Rn
INC direct
INC @Ri
INC DPTR
DEC A
DEC Rn
DEC direct
DEC @Ri
MUL AB
DIV AB
DA A
ANL A, Rn
ANL A, direct
ANL A, @Ri
ANL A, #data
ANL direct, A
ANL direct, #data
ORL A, Rn
ORL A, direct
ORL A, @Ri
ORL A, #data
ORL direct, A
ORL direct, #data
XRL A, Rn
XRL A, direct
XRL A, @Ri
XRL A, #data
XRL direct, A
XRL direct, #data
CPL A
CLR A
RR A
RL A
RRC A
RLC A
SJMP rel
AJMP addr11(a10- a0)
LJMP addr16
JMP @A+DPTR
JZ rel
JNZ rel
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
DJNZ Rn, rel
DJNZ direct, rel
JC rel
JNC rel
JB bit, rel
JNB bit, rel
JBC bit, rel
ACALL addr11
LCALL addr16
RET
RETI
NOP
MOV C, bit
MOV bit, C
CLR C
CLR bit
SETB C
SETB bit
ANL C, bit
ANL C, /bit
ORL C, bit
ORL C, /bit
CPL C
CPL bit
将Rn的数据送 direct地址单元内
将direct地址单元内的数据送Rn寄存器
寄存器Ri内为RAM地址,将该地址单元内的数据送direct地址单元内
寄存器Ri内为RAM地址,将direct地址单元内的数据送该地址单元内
将寄存器Rn内的数据送累加器A
将累加器A内的数据送寄存器Rn
将direct地址单元内的数据送累加器A
将累加器A内的数据送direct地址单元内
寄存器Ri内为RAM地址,将该地址单元内的数据送累加器A
寄存器Ri内为RAM地址,将累加器A的数据送该地址单元内
将16位立即数送数据指针DPTR寄存器
累加器A高低4位数据交换
将累加器A数据和寄存器Rn内的数据交换
将累加器A数据和direct地址单元内的数据交换
寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据交换
寄存器Ri内为RAM地址,将该地址单元内的数据低4位与的低4位交换
将累加器A的数据送数据指针DPTR寄存器所指外部RAM地址单元内
将DPTR寄存器所指外部RAM地址单元内的数据送累加器A
寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
A+DPTR构成ROM地址,将该地址内的数据送累加器A内
A+PC构成ROM地址,将该地址内的数据送累加器A内
堆栈指针SP自加1后,将direct地址单元的数据压进堆栈,
堆栈的数据送direct地址单元中,后堆栈指针减1,
将寄存器Rn与累加器A的数据相加后,结果保存到累加器A
将direct地址单元内的数据与累加器A的数据相加后结果保存到累加器A
寄存器Ri内位地址,将该地址单元内的数据与累加器A的数据相加后结果保存到累加器A
将立即数与累加器A的数据相加后结果保存到累加器A
将寄存器Rn与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
将direct地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
将立即数与累加器A的数据相加,再加上进位标志内的值后结果保存到累加器A
将累加器A的数据减去寄存器Rn的数据,再减去进位标志内的值,结果保存到累加器A
将累加器A的数据减去direct地址单元内的数据,再减去进位标志内的值,结果保存到累加器A
寄存器Ri内为RAM地址,将累加器A的数据减去该地址单元内的数据,再减去进位标志内的值后,结果保存到累加器A
将累加器A的数据减去立即数,再减去进位标志内的值后,结果保存到累加器A
累加器A的值自加1
寄存器Rn的值自加1
direct地址单元内值自加1
寄存器Ri内为RAM地址,该地址单元内的值自加1
数据指针寄存器DPTR内的值自加1
累加器A的值自减1
寄存器Rn的值自减1
direct地址单元内的值自减1
寄存器Ri内为RAM地址,该地址单元内的值自减1
累加器A与寄存器B内的值相乘,乘积的高8位保存在B寄存器,低8位保存在累加器A中
累加器A的值除以寄存器B的值,商保存在累加器A中,余数保存在B寄存器
对累加器A的结果进行十进制调整
将累加器A的值和寄存器Rn的值进行与操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行与操作,结果保存到累加器A中
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行与操作,结果保存到累加器A中
将累加器A的值和立即数进行与操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行与操作,结果保存到direct地址单元内
将立即数和direct地址单元内的值进行与操作,结果保存到direct地址单元内
将累加器A的值和寄存器Rn的值进行或操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行或操作,结果保存到累加器A中
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行或操作,结果保存到累加器A中
将累加器A的值和立即数进行或操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行或操作,结果保存到direct地址单元内
将立即数和direct地址单元内的值进行或操作,结果保存到direct地址单元内
将累加器A的值和寄存器Rn的值进行异或操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行异或操作,结果保存到累加器A中
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行异或操作,结果保存到累加器A中
将累加器A的值和立即数进行异或操作,结果保存到累加器A中
将累加器A的值和direct地址单元内的值进行异或操作,结果保存到direct地址单元内
将立即数和direct地址单元内的值进行异或操作,结果保存到direct地址单元内
累加器A的值按位取反
累加器A清0
累加器A的值循环右移1位
累加器A的值循环左移1位
累加器A的值带进位循环右移1位
累加器A的值带进位循环左移1位
rel为地址偏移量,PC加2后的地址加上rel作为目标地址,程序跳到目标地址继续运行
addr11为11位地址,PC加2后的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
将addr16的16位地址送程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序
目标地址的基地址放在DPTR中,目标地址对基地址的偏移量放在累加器A中,它们相加构成目标地址
If(累加器A=0)则PC加2再加上rel作为目标地址
If(累加器A!=0)则PC加2再加上rel作为目标地址
If(累加器A!= direct地址单元的值)则PC加3再加上rel作为目标地址
If(累加器A!= 立即数)则PC加3再加上rel作为目标地址
If(寄存器Rn的值!= 立即数)则PC加3再加上rel作为目标地址
寄存器Ri内为RAM地址,If(该地址单元的值!= 立即数)则PC加3再加上rel作为目标地址
寄存器Rn的值减1后,If(寄存器Rn的值!=0)则PC加2再加上rel作为目标地址
Direct地址单元的值减1后,If(该值!=0)则PC加3再加上rel作为目标地址
If(CY=1)则PC加2再加上rel作为目标地址
If(CY=0)则PC加2再加上rel作为目标地址
If(bit位=1)则PC加3再加上rel作为目标地址
If(bit位=0)则PC加3再加上rel作为目标地址
If(bit位=1)则PC加3再加上rel作为目标地址,且bit位清0
addr11为11位地址,PC加2后的地址PUSH进堆栈,再将PC的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
PC加3后的地址PUSH进堆栈,再将16位地址送PC作为目标地址,程序跳到目标地址继续运行
子程序返回指令,把堆栈中的地址恢复到PC中使程序回到调用处
中断程序返回指令,把堆栈中的地址恢复到PC中使程序回到调用处
空操作
将bit位地址中的值送PSW中的进位标志位CY
将PSW中的进位标志位CY的值送bit位地址中
将进位标志位CY清0
将bit位地址内清0
将进位标志位CY置1
将bit位地址内置1
将Cy和bit位地址中的值进行与操作后,结果送Cy
bit位地址中的值取反后再与Cy进行与操作,结构送Cy
将Cy和bit位地址中的值进行或操作后,结果送Cy
bit位地址中的值取反后再与Cy进行或操作,结构送Cy
将Cy取反
将bit位地址的值取反
Ri, Rn指当前工作寄存器,i=0,1;n = 0 – 7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1, RS0决定