8051单片机汇编指令速查表DOC.docx
《8051单片机汇编指令速查表DOC.docx》由会员分享,可在线阅读,更多相关《8051单片机汇编指令速查表DOC.docx(21页珍藏版)》请在冰豆网上搜索。
8051单片机汇编指令速查表DOC
8051系列单片机汇编语言指令速查表
编号
指令名称
指令助记符
指令说明
数据传送类指令
1
一般传送
MOVA,#data
将立即数#data送累加器A
2
MOVdirect,#data
将立即数#data送片内RAMdirect地址单元内
3
MovRn,#data
将立即数#data送寄存器Rn
4
Mov@Ri,#data
寄存器Ri内为RAM地址,将立即数#data送该地址单元内
5
Movdirect2,direct1
将direct1地址单元的数据送direct2地址单元内
6
Movdirect,rn
将Rn的数据送direct地址单元内
7
MovRn,direct
将direct地址单元内的数据送Rn寄存器
8
Movdirect,@Ri
寄存器Ri内为RAM地址,将该地址单元内的数据送direct地址单元内
9
Mov@Ri,direct
寄存器Ri内为RAM地址,将direct地址单元内的数据送该地址单元内
10
MovA,Rn
将寄存器Rn内的数据送累加器A
11
MovRn,A
将累加器A内的数据送寄存器Rn
12
MovA,direct
将direct地址单元内的数据送累加器A
13
Movdirect,A
将累加器A内的数据送direct地址单元内
14
MovA,@Ri
寄存器Ri内为RAM地址,将该地址单元内的数据送累加器A
15
Mov@Ri,A
寄存器Ri内为RAM地址,将累加器A的数据送该地址单元内
16
目的地址传送
MovDPTR,#data16
将16位立即数送数据指针DPTR寄存器
17
字节交换
SWAPA
累加器A高低4位数据交换
18
XCHA,Rn
将累加器A数据和寄存器Rn内的数据交换
19
XCHA,direct
将累加器A数据和direct地址单元内的数据交换
20
XCHA,@Ri
寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据交换
21
XCHDA,@Ri
寄存器Ri内为RAM地址,将该地址单元内的数据低4位与的低4位交换
22
与外部RAM传送
MOVX@DPTR,A
将累加器A的数据送数据指针DPTR寄存器所指外部RAM地址单元内
23
MOVXA,@DPTR
将DPTR寄存器所指外部RAM地址单元内的数据送累加器A
24
MOVXA,@Ri
寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
25
MOVX@Ri,A
寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
26
与ROM传送
MOVCA,@A+DPTR
A+DPTR构成ROM地址,将该地址内的数据送累加器A内
27
MOVCA,@A+PC
A+PC构成ROM地址,将该地址内的数据送累加器A内
28
栈操作
PUSHdirect
堆栈指针SP自加1后,将direct地址单元的数据压进堆栈,
29
POPdirect
堆栈的数据送direct地址单元中,后堆栈指针减1,
算术运算指令
30
加法指令
ADDA,Rn
将寄存器Rn与累加器A的数据相加后,结果保存到累加器A
31
ADDA,direct
将direct地址单元内的数据与累加器A的数据相加后结果保存到累加器A
32
ADDA,@Ri
寄存器Ri内位地址,将该地址单元内的数据与累加器A的数据相加后结果保存到累加器A
33
ADDA,#data
将立即数与累加器A的数据相加后结果保存到累加器A
34
带进位加法
ADDCA,Rn
将寄存器Rn与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
35
ADDCA,direct
将direct地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
36
ADDCA,@Ri
寄存器Ri内为RAM地址,将该地址单元内的数据与累加器A的数据相加,再加上进位标志内的值后,结果保存到累加器A
37
ADDCA,#data
将立即数与累加器A的数据相加,再加上进位标志内的值后结果保存到累加器A
38
带借位减法
SUBBA,Rn
将与累加器A的数据减去寄存器Rn的数据,再减去进位标志内的值,结果保存到累加器A
39
SUBBA,direct
将与累加器A的数据减去direct地址单元内的数据,再减去进位标志内的值,结果保存到累加器A
40
SUBBA,@Ri
寄存器Ri内为RAM地址,将累加器A的数据减去该地址单元内的数据,再减去进位标志内的值后,结果保存到累加器A
41
SUBBA,#data
将累加器A的数据减去立即数,再减去进位标志内的值后,结果保存到累加器A
42
加1指令
INCA
累加器A的值自加1
43
INCRn
寄存器Rn的值自加1
44
INCdirect
direct地址单元内值自加1
45
INC@Ri
寄存器Ri内为RAM地址,该地址单元内的值自加1
46
INCDPTR
数据指针寄存器DPTR内的值自加1
47
减1指令
DECA
累加器A的值自减1
48
DECRn
寄存器Rn的值自减1
49
DECdirect
direct地址单元内的值自减1
50
DEC@Ri
寄存器Ri内为RAM地址,该地址单元内的值自减1
51
乘法
MULAB
累加器A与寄存器B内的值相乘,乘积的高8位保存在B寄存器,低8位保存在累加器A中
52
除法
DIVAB
累加器A的值除以寄存器B的值,商保存在累加器A中,余数保存在B寄存器
53
二-十进制调整
DAA
对累加器A的结果进行十进制调整
逻辑运算指令
54
逻辑与
ANLA,Rn
将累加器A的值和寄存器Rn的值进行与操作,结果保存到累加器A中
55
ANLA,direct
将累加器A的值和direct地址单元内的值进行与操作,结果保存到累加器A中
56
ANLA,@Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行与操作,结果保存到累加器A中
57
ANLA,#data
将累加器A的值和立即数进行与操作,结果保存到累加器A中
58
ANLdirect,A
将累加器A的值和direct地址单元内的值进行与操作,结果保存到direct地址单元内
59
ANLdirect,#data
将立即数和direct地址单元内的值进行与操作,结果保存到direct地址单元内
60
逻辑或
ORLA,Rn
将累加器A的值和寄存器Rn的值进行或操作,结果保存到累加器A中
61
ORLA,direct
将累加器A的值和direct地址单元内的值进行或操作,结果保存到累加器A中
62
ORLA,@Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行或操作,结果保存到累加器A中
63
ORLA,#data
将累加器A的值和立即数进行或操作,结果保存到累加器A中
64
ORLdirect,A
将累加器A的值和direct地址单元内的值进行或操作,结果保存到direct地址单元内
65
ORLdirect,#data
将立即数和direct地址单元内的值进行或操作,结果保存到direct地址单元内
66
逻辑异或
XRLA,Rn
将累加器A的值和寄存器Rn的值进行异或操作,结果保存到累加器A中
67
XRLA,direct
将累加器A的值和direct地址单元内的值进行异或操作,结果保存到累加器A中
68
XRLA,@Ri
寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行异或操作,结果保存到累加器A中
69
XRLA,#data
将累加器A的值和立即数进行异或操作,结果保存到累加器A中
70
XRLdirect,A
将累加器A的值和direct地址单元内的值进行异或操作,结果保存到direct地址单元内
71
XRLdirect,#data
将立即数和direct地址单元内的值进行异或操作,结果保存到direct地址单元内
72
按位取反
CPLA
累加器A的值按位取反
73
累加器清零
CLRA
累加器A清0
74
逻辑右移
RRA
累加器A的值循环右移1位
75
逻辑左移
RLA
累加器A的值循环左移1位
76
带进位右移
RRCA
累加器A的值带进位循环右移1位
77
带进位左移
RLCA
累加器A的值带进位循环左移1位
控制转移指令
78
无条件转移
SJMPrel
rel为地址偏移量,PC加2后的地址加上rel作为目标地址,程序跳到目标地址继续运行
79
AJMPaddr11(a10-a0)
addr11为11位地址,PC加2后的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
80
LJMPaddr16
将addr16的16位地址送程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序
81
JMP@A+DPTR
目标地址的基地址放在DPTR中,目标地址对基地址的偏移量放在累加器A中,它们相加构成目标地址
82
条件转移
JZrel
If(累加器A=0)则PC加2再加上rel作为目标地址
83
JNZrel
If(累加器A!
=0)则PC加2再加上rel作为目标地址
84
CJNEA,direct,rel
If(累加器A!
=direct地址单元的值)则PC加2再加上rel作为目标地址
85
CJNEA,#data,rel
If(累加器A!
=立即数)则PC加2再加上rel作为目标地址
86
CJNERn,#data,rel
If(寄存器Rn的值!
=立即数)则PC加2再加上rel作为目标地址
87
CJNE@Ri,#data,rel
寄存器Ri内为RAM地址,If(该地址单元的值!
=立即数)则PC加2再加上rel作为目标地址
88
循环转移
DJNZRn,rel
寄存器Rn的值减1后,If(寄存器Rn的值!
=0)则PC加2再加上rel作为目标地址
89
DJNZdirect,rel
Direct地址单元的值减1后,If(该值!
=0)则PC加3再加上rel作为目标地址
90
布尔条件转移
JCrel
If(CY=1)则PC加2再加上rel作为目标地址
91
JNCrel
If(CY=0)则PC加2再加上rel作为目标地址
92
JBbit,rel
If(bit位=1)则PC加3再加上rel作为目标地址
93
JNBbit,rel
If(bit位=0)则PC加3再加上rel作为目标地址
94
JBCbit,rel
If(bit位=1)则PC加3再加上rel作为目标地址,且bit位清0
95
调用指令
ACALLaddr11
addr11为11位地址,PC加2后的地址PUSH进堆栈,再将PC的地址高5位与指令中的低11位地址构成目标地址,程序跳到目标地址继续运行
96
LCALLaddr16
PC加3后的地址PUSH进堆栈,再将16位地址送PC作为目标地址,程序跳到目标地址继续运行
97
返回指令
RET
子程序返回指令,把堆栈中的地址恢复到PC中使程序回到调用处
98
RETI
中断程序返回指令,把堆栈中的地址恢复到PC中使程序回到调用处
99
空操作
NOP
空操作
位操作指令
100
布尔传送
MOVC,bit
将bit位地址中的值送PSW中的进位标志位CY
101
MOVbit,C
将PSW中的进位标志位CY的值送bit位地址中
102
位清0
CLRC
将进位标志位CY清0
103
位清0
CLRbit
将bit位地址内清0
104
位置1
SETBC
将进位标志位CY置1
105
SETBbit
将bit位地址内置1
106
位与
ANLC,bit
将Cy和bit位地址中的值进行与操作后,结果送Cy
107
ANLC,/bit
bit位地址中的值取反后再与Cy进行与操作,结构送Cy
108
位或
ORLC,bit
将Cy和bit位地址中的值进行或操作后,结果送Cy
109
ORLC,/bit
bit位地址中的值取反后再与Cy进行或操作,结构送Cy
110
位取反
CPLC
将Cy取反
111
CPLbit
将bit位地址的值取反
说明:
1)Ri,Rn指当前工作寄存器,i,n=0–7,当前工作寄存器由程序状态字寄存器PSW的2个位RS1,RS0决定
PLC汇编语言指令集
一、数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
1.通用数据传送指令
MOV传送字或字节.
MOVSX先符号扩展,再传送.
MOVZX先零扩展,再传送.
PUSH把字压入堆栈.
POP把字弹出堆栈.
PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP交换32位寄存器里字节的顺序
XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)
XADD先交换再累加.(结果在第一个操作数里)
XLAT字节查表转换.
──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即 0-FFH);返回AL为查表结果.([BX+AL]->AL)
2.输入输出端口传送指令.
INI/O端口输入.(语法:
IN累加器,{端口号│DX})
OUTI/O端口输出.(语法:
OUT{端口号│DX},累加器)
输入输出端口由立即方式指定时,其范围是0-255;由寄存器DX指定时, 其范围是0-65535.
3.目的地址传送指令.
LEA装入有效地址. 例:
LEADX,string;把偏移地址存到DX.
LDS传送目标指针,把指针内容装入DS. 例:
LDSSI,string;把段地址:
偏移地址存到DS:
SI.
LES传送目标指针,把指针内容装入ES. 例:
LESDI,string;把段地址:
偏移地址存到ES:
DI.
LFS传送目标指针,把指针内容装入FS. 例:
LFSDI,string;把段地址:
偏移地址存到FS:
DI.
LGS传送目标指针,把指针内容装入GS. 例:
LGSDI,string;把段地址:
偏移地址存到GS:
DI.
LSS传送目标指针,把指针内容装入SS. 例:
LSSDI,string;把段地址:
偏移地址存到SS:
DI.
4.标志传送指令.
LAHF标志寄存器传送,把标志装入AH.
SAHF标志寄存器传送,把AH内容装入标志寄存器.
PUSHF标志入栈.
POPF标志出栈.
PUSHD32位标志入栈.
POPD32位标志出栈.
逻算术运算指令
二、算术运算指令
ADD加法.
ADC带进位加法.
INC加1.
AAA加法的ASCII码调整.
DAA加法的十进制调整.
SUB减法.
SBB带借位减法.
DEC减1.
NEC求反(以0减之).
CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS减法的ASCII码调整.
DAS减法的十进制调整.
MUL无符号乘法.
IMUL整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
AAM乘法的ASCII码调整.
DIV无符号除法.
IDIV整数除法.
以上两条,结果回送:
商回送AL,余数回送AH,(字节运算);
或商回送AX,余数回送DX,(字运算).
AAD除法的ASCII码调整.
CBW字节转换为字.(把AL中字节的符号扩展到AH中去)
CWD字转换为双字.(把AX中的字的符号扩展到DX中去)
CWDE字转换为双字.(把AX中的字符号扩展到EAX中去)
CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)
逻辑运算指令
三、逻辑运算指令
AND与运算.
OR或运算.
XOR异或运算.
NOT取反.
TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).
SHL逻辑左移.
SAL算术左移.(=SHL)
SHR逻辑右移.
SAR算术右移.(=SHR)
ROL循环左移.
ROR循环右移.
RCL通过进位的循环左移.
RCR通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.
移位一次时,可直接用操作码.如SHLAX,1.
移位>1次时,则由寄存器CL给出移位次数.
如MOVCL,04
SHLAX,CL
串指令
四、串指令
DS:
SI源串段寄存器:
源串变址.
ES:
DI目标串段寄存器:
目标串变址.
CX重复次数计数器.
AL/AX扫描值.
D标志0表示重复操作中SI和DI应自动增量;1表示应自动减量.
Z标志用来控制扫描或比较操作的结束.
MOVS串传送.
(MOVSB传送字符.MOVSW传送字.MOVSD传送双字.)
CMPS串比较.
(CMPSB比较字符.CMPSW比较字.)
SCAS串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.
LODS装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
(LODSB传送字符.LODSW传送字.LODSD传送双字.)
STOS保存串.
是LODS的逆过程.
REP当CX/ECX<>0时重复.
REPE/REPZ当ZF=1或比较结果相等,且CX/ECX<>0时重复.
REPNE/REPNZ当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
REPC当CF=1且CX/ECX<>0时重复.
REPNC当CF=0且CX/ECX<>0时重复.
五、程序转移指令
1>无条件转移指令(长转移)
JMP无条件转移指令
CALL过程调用
RET/RETF过程返回.
2>条件转移指令(短转移,-128到+127的距离内)
(当且仅当(SFXOROF)=1时,OP1 JA/JNBE不小于或不等于时转移.
JAE/JNB大于或等于转移.
JB/JNAE小于转移.
JBE/JNA小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
JG/JNLE大于转移.
JGE/JNL大于或等于转移.
JL/JNGE小于转移.
JLE/JNG小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
JE/JZ等于转移.
JNE/JNZ不等于时转移.
JC有进位时转移.
JNC无进位时转移.
JNO不溢出时转移.
JNP/JPO奇偶性为奇数时转移.
JNS符号位为"0"时转移.
JO溢出转移.
JP/JPE奇偶性为偶数时转移.
JS符号位为"1"时转移.
3>循环控制指令(短转移)
LOOPCX不为零时循环.
LOOPE/LOOPZCX不为零且标志Z=1时循环.
LOOPNE/LOOPNZCX不为零且标志Z=0时循环.
JCXZCX为零时转移.
JECXZECX为零时转移.
4>中断指令
INT中断指令
INTO溢出中断
IRET中断返回
5>处理器控制指令
HLT处理器暂停,直到出现中断或复位信号才继续.
WAIT当芯片引线TEST为高电平时使CPU进入等待状态.
ESC转换到外处理器.
LOCK封锁总线.
NOP空操作.
STC置进位标志位.
CLC清进位标志位.
CMC进位标志取反.
STD置方向标志位.
CLD清方向标志位.
STI置中断允许位.
CLI清中断允许位.
六、伪指令
DW定义字(2字节).
PROC定义过程.
ENDP过程结束.
SEGMENT定义段.
ASSUME建立段寄存器寻址.
ENDS段结束.
END程序结束.
七、处理机控制指令:
标志处理指令CLC(进位位置0指令)
CMC(进位位求反指令)
STC(进位位置为1指令)
CLD(方向标志置1指令)
STD(方向标志位置1指令)
CLI(中断标志置0指令)
STI(中断标志置1指令)
NOP(无操作)
HLT(停机)
WAIT(等待)
ESC(换码)
LOCK(封锁)