完整word51单片机汇编指令集推荐文档.docx
《完整word51单片机汇编指令集推荐文档.docx》由会员分享,可在线阅读,更多相关《完整word51单片机汇编指令集推荐文档.docx(29页珍藏版)》请在冰豆网上搜索。
完整word51单片机汇编指令集推荐文档
1)数据传送类指令(7种助记符)
MOV(英文为Move):
对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;
MOVC(MoveCode)读取程序存储器数据表格的数据传送;
MOVX (MoveExternalRAM) 对外部RAM的数据传送;
XCH (Exchange) 字节交换;
XCHD (Exchangelow-orderDigit) 低半字节交换;
PUSH (PushontoStack) 入栈;
POP (PopfromStack) 出栈;
(2)算术运算类指令(8种助记符)
ADD(Addition)加法;
ADDC(AddwithCarry)带进位加法;
SUBB(SubtractwithBorrow)带借位减法;
DA(DecimalAdjust)十进制调整;
INC(Increment)加1;
DEC(Decrement)减1;
MUL(Multiplication、Multiply)乘法;
DIV(Division、Divide)除法;
(3)逻辑运算类指令(10种助记符)
ANL(ANDLogic)逻辑与;
ORL(ORLogic)逻辑或;
XRL(Exclusive-ORLogic)逻辑异或;
CLR(Clear)清零;
CPL(Complement)取反;
RL(Rotateleft)循环左移;
RLC(RotateLeftthroughttheCarryflag)带进位循环左移;
RR(RotateRight)循环右移;
RRC (RotateRightthroughttheCarryflag)带进位循环右移;
SWAP(Swap) 低4位与高4位交换;
(4)控制转移类指令(17种助记符)
ACALL(AbsolutesubroutineCall)子程序绝对调用;
LCALL(LongsubroutineCall)子程序长调用;
RET(Returnfromsubroutine)子程序返回;
RETI(ReturnfromInterruption)中断返回;
SJMP(ShortJump)短转移;
AJMP(AbsoluteJump)绝对转移;
LJMP(LongJump)长转移;
CJNE(CompareJumpifNotEqual)比较不相等则转移;
DJNZ(DecrementJumpifNotZero)减1后不为0则转移;
JZ(JumpifZero)结果为0则转移;
JNZ(JumpifNotZero)结果不为0则转移;
JC(JumpiftheCarryflagisset)有进位则转移;
JNC(JumpifNotCarry)无进位则转移;
JB(JumpiftheBitisset)位为1则转移;
JNB(JumpiftheBitisNotset)位为0则转移;
JBC(JumpiftheBitissetandClearthebit)位为1则转移,并清除该位;
NOP(NoOperation) 空操作;
(5)位操作指令(1种助记符)
SETB(SetBit) 位置1。
MCS-51系列单片机指令以A开头的指令有18条,分别为:
ACALLaddr11ADDA,RnADDA,directADDA,@RiADDA,#dataADDCA,Rn
ADDCA,directADDCA,@RiADDCA,#dataAJMPaddr11ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#dataANLC,bitANLC,/bit
1、ACALLaddr11
指令名称:
绝对调用指令
指令代码:
A10A9A910001A7A6A5A4A3A2A1A0
指令功能:
构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),
取代PC的低11位,PC的高5位不变。
操作内容:
PC←(PC)+2
SP←(SP)+1
(SP)←(PC)7~0
SP←(SP)+1
(SP)←(PC)15~8
PC10~0←addrl0~0
字节数:
2
机器周期:
2
使用说明:
由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2、ADDA,Rn
指令名称:
寄存器加法指令
指令代码:
28H~2FH
指令功能:
累加器内容与寄存器内容相加
操作内容:
A←(A)+(Rn),n=0~7
字节数:
1
机器周期;1
影响标志位:
C,AC,OV
3、ADDA,direct
指令名称:
直接寻址加法指令
指令代码:
25H
指令功能:
累加器内容与内部RAM单元或专用寄存器内容相加
操作内容:
A←(A)+(direct)
字节数:
2
机器周期:
1
影响标志位:
C,AC,OV
4、ADDA,@Ri’
指令名称:
间接寻址加法指令
指令代码:
26H~27H
指令功能:
累加器内容与内部RAM低128单元内容相加
操作内容:
A←(A)+((Ri)),i=0,1
字节数:
1
机器周期:
1
影响标志位:
C,AC,OV
5、ADDA,#data
指令名称:
立即数加法指令
指令代码:
24H
指令功能:
累加器内容与立即数相加
操作内容:
A←(A)+data
字节数:
2
机器周期:
1
影响标志位:
C,AC,OV
6、ADDCA,Rn
指令名称:
寄存器带进位加法指令
指令代码:
38H~3FH
指令功能:
累加器内容、寄存器内容和进位位相加
操作内容:
A←(A)+(Rn)+(C),n=0~7
字节数:
1
机器周期:
1
影响标志位:
C,AC,OV
7、ADDCA,direct
指令名称:
直接寻址带进位加法指令
指令代码:
35H
指令功能:
累加器内容、内部RAM低128单元或专用寄存器内容与进位位加
操作内容:
A←(A)+(direct)+(C)
字节数:
2
机器周期:
1
影响标志位:
C,AC,OV
8、ADDCA,@Ri
指令名称:
间接寻址带进位加法指令
指令代码:
36H~37H
指令功能:
累加器内容、内部RAM低128单元内容及进位位相加
操作内容:
A←(A)+((Ri))+(C),i=0,1
字节数:
1
机器周期:
1
影响标志位:
C,AC,OV
9、ADDCA,#data
指令名称:
立即数带进位加法指令
指令代码:
34H
指令功能:
累加器内容、立即数及进位位相加
操作内容:
A←(A)+data+(C)
字节数:
2
机器周期:
1
影响标志位:
C,AC,OV
10、AJMPaddr11
指令名称:
绝对转移指令
指令代码:
A10A9A810001A7A6A5A4A3A2A1A0
指令功能:
构造目的地址,实现程序转移。
其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。
操作内容:
PC←(PC)+2
PCl0~0←addrll
字节数:
2
机器周期:
2
使用说明:
由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。
11、ANLA,Rn
指令名称:
寄存器逻辑与指令
指令代码:
58H~5FH
指令功能:
累加器内容逻辑与寄存器内容
操作内容:
A←(A)∧(Rn),n=0~7
字节数:
1
机器周期:
1
12、ANLA,direct
指令名称:
直接寻址逻辑与指令
指令代码:
55H
指令功能:
累加器内容逻辑与内部RAM低128单元或专用寄存器内容
操作内容:
A←(A)∧(diret)
字节数:
2
机器周期:
1
13、ANLA,@Ri
指令名称:
间接寻址逻辑与指令
指令代码:
56H~57H
指令功能:
累加器内容逻辑与内部RAM低128单元内容
操作内容:
A←(A)∧((Ri))i=0,1
字节数:
1
机器周期:
1
14、ANLA,#data
指令名称:
立即数逻辑与指令
指令代码:
54H
指令功能:
累加器内容逻辑与立即数
操作内容:
A←(A)∧data
字节数:
2
机器周期:
1
15、ANLdirect,A
指令名称:
累加器逻辑与指令
指令代码:
52H
指令功能:
内部RAM低128单元或专用寄存器内容逻辑与累加器内容
操作内容:
direct←(A)∧(direct)
字节数:
2
机器周期:
1
16、ANLdirect,#data
指令名称:
逻辑与指令
指令代码:
53H
指令功能:
内部RAM低128单元或专用寄存器内容逻辑与立即数
操作内容:
direct←(direct)∧data
字节数:
3
机器周期:
2
17、ANLC,bit
指令名称:
位逻辑与指令
指令代码:
82H
指令功能:
进位标志逻辑与直接寻址位
操作内容:
C←(C)∧(bit)
字节数:
2
机器周期:
2
18、ANLC,/bit
指令名称:
位逻辑与指令
指令代码:
B0H
指令功能:
进位标志逻辑与直接寻址位的反
操作内容:
C←(C)∧(bit)
字节数:
2
机器周期:
2
MCS-51系列单片机指令以C开头的指令有10条,分别为:
CJNEA,dircet,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,relCLRACLRCCLRbitCPLACPLCCPLbit
1、CJNEA,dircet,rel
指令名称:
数值比较转移指令
指令代码:
B5H
指令功能:
累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。
操作内容:
若(A)=(direct),则PC←(PC)+3,C←0
若(A)>(direct),则PC←(PC)+3+rel,C←0
若(A)<(direct),则PC←(PC)+3+rel,C←1
字节数:
3
机器周期:
2
2、CJNEA,#data,rel
指令名称:
数值比较转移指令
指令代码:
B4H
指令功能:
累加器内容与立即数比较,不等则转移。
操作内容:
若(A)=data,则PC←(PC)+3,C←0
若(A)>data,则PC←(PC)+3+rel,C←0
若(A)<data,则PC←(PC)+3+rel,C←1
字节数:
3
机器周期:
2
3、CJNERn,#data,rel
指令名称:
数值比较转移指令
指令代码:
B8H~BFH
指令功能:
寄存器内容与立即数比较,不等则转移。
操作内容:
若(Rn)=data,则PC←(PC)+3,C←0
若(Rn)>data,则PC←(PC)+3+rel,C←0
若(Rn)<data,则PC←(PC)+3+rel,C←1
字节数:
3
机器周期:
2
4、CJNE@Ri,#data,rel
指令名称:
数值比较转移指令
指令代码:
B6H~B7H
指令功能:
内部RAM低128单元内容与立即数比较,不等则转移。
操作内容:
若((Ri))=data,则PC←(PC)+3,C←0
若((Ri))>data,则PC←(PC)+3+rel,C←0
若((Ri))<data,则PC←(PC)+3+rel,C←1
字节数:
3
机器