单片机指令表(最全)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51共有111条指令,可分为5类:
[1].数据传送类指令(共29条)
[2].算数运算类指令(共24条)
[3].逻辑运算及移位类指令(共24条)
[4].控制转移类指令(共17条)
[5].布尔变量操作类指令(共17条)
一些特殊符号的意义
在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)
direct—内部数据存储单元的8位地址。包含0—127(255)内部存储单元地址和特殊功能寄存地址。
#data—指令中的8位常数。
#data16—指令中的16位常数。
addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
#addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。
rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128——+127范围内。
@—间接寄存器寻址或基址寄存器的前缀。
/—为操作的前缀,声明对该位操作书取反。
DPTR—数据指针。
bit—内部RAM和特殊功能寄存器的直接寻址位。
A—累加器。
B—累加器B。用于乘法和除法指令中。
C—进位标志位。
(x)—某地址单元中的内容。
((x))—由X寻址单元中的内容。
(一)MCS-51的寻址方式
寻址的“地址”即为操作数所在单元的地址,绝大部分指令执行时都需要用到操作数,那么到哪里去取得操作数呢?最易想到的就是告诉CPU操作数所在的地址单元,从那里可取得响应的操作数,这便是“寻址”之意。MCS-51的寻址方式很多,使用起来也相当方便,功能也很强大,灵活性强。这便是MCS-51指令系统“好用”的原因之一。下面我们分别讨论几种寻址方式的原理。
[1].直接寻址
指令中操作数直接以单元地址形式出现,例如:
MOV A,68H
这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM进
行寻址。低128位单元在指令中直接以单元地址的形式给出。
对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问,而无其它方法。
单片机指令以A开头的指令有18条,分别为:
1、ACALL addr11
指令名称:绝对调用指令
指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的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、ADD A,Rn
指令名称:寄存器加法指令
指令代码:28H~2FH
指令功能:累加器内容与寄存器内容相加
操作内容:A←(A)+(Rn),n=0~7
字节数:1
机器周期;1
影响标志位:C,AC,OV
3、ADD A,direct
指令名称:直接寻址加法指令
指令代码:25H
指令功能:累加器内容与内部RAM单元或专用寄存器内容相加
操作内容:A←(A)+(direct)
字节数:2
机器周期:1
影响标志位:C,AC,OV
4、ADD A,@Ri ’
指令名称:间接寻址加法指令
指令代码:26H~27H
指令功能:累加器内容与内部RAM低128单元内容相加
操作内容:A←(A)+((Ri)),i=0,1
字节数:1
机器周期:1
影响标志位:C,AC,OV
5、ADD A,#data
指令名称:立即数加法指令
指令代码:24H
指令功能:累加器内容与立即数相加
操作内容:A←(A)+data
字节数: 2
机器周期:1
影响标志位:C,AC,OV
6、ADDC A,Rn
指令名称:寄存器带进位加法指令
指令代码:38H~3FH
指令功能:累加器内容、寄存器内容和进位位相加
操作内容:A←(A)+(Rn)+(C),n=0~7
字节数: 1
机器周期:1
影响标志位:C,AC,OV
7、ADDC A,direct
指令名称:直接寻址带进位加法指令
指令代码:35H
指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加
操作内容:A←(A)+(direct)+(C)
字节数: 2
机器周期:1
影响标志位:C,AC,OV
8、ADDC A,@Ri
指令名称:间接寻址带进位加法指令
指令代码:36H~37H
指令功能:累加器内容、内部RAM低128单元内容及进位位相加
操作内容:A←(A)+((Ri))+(C),i=0,1
字节数: 1
机器周期:1
影响标志位:C,AC,OV
9、ADDC A,#data
指令名称:立即数带进位加法指令
指令代码:34H
指令功能:累加器内容、立即数及进位位相加
操作内容:A←(A)+data+(C)
字节数: 2
机器周期:1
影响标志位:C,AC,OV
10、AJMP addr11
指令名称:绝对转移指令
指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0
指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。操作内容:PC←(PC)+2
PCl0~0←addrll
字节数:2
机器周期:2
使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。
11、ANL A,Rn
指令名称:寄存器逻辑与指令
指令代码:58H~5FH
指令功能:累加器内容逻辑与寄存器内容
操作内容:A←(A)∧(Rn),n=0~7
字节数:1
机器周期:1
12、ANL A,direct
指令名称:直接寻址逻辑与指令
指令代码:55H
指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容
操作内容:A←(A)∧(diret)
字节数:2
机器周期:1
13、ANL A,@Ri
指令名称:间接寻址逻辑与指令
指令代码:56H~57H
指令功能:累加器内容逻辑与内部RAM低128单元内容
操作内容:A←(A)∧((Ri)) i=0,1
字节数:1
机器周期:1
14、ANL A,#data
指令名称:立即数逻辑与指令
指令代码:54H
指令功能:累加器内容逻辑与立即数
操作内容:A←(A)∧data
字节数:2
机器周期:1
15、ANL direct,A
指令名称:累加器逻辑与指令
指令代码:52H
指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容
操作内容:direct←(A)∧(direct)
字节数:2
机器周期:1
16、ANL direct,#data
指令名称:逻辑与指令
指令代码:53H
指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数