您好,欢迎访问三七文档
第六讲单片机的指令系统及汇编语言程序设计基础第六讲单片机的指令系统及汇编语言程序设计基础§3-1MCS-51单片机的指令格式与寻址方式一、汇编语言程序设计的意义什么是程序?完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。程序设计语言:机器语言、汇编语言、高级语言、汇编语言程序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。指令=操作码+操作数操作码——表示了该指令所能执行的操作功能。操作数——表示参加操作的数的本身或操作数所在的地址。MCS-51指令格式:[标号:]操作码助记符[第一操作数][,第二操作数][;注释]二、MCS-51系列单片机的指令系统111条指令,共分五大类:数据传送类;(29条)、算术运算类;(24条)、逻辑运算类;(24条)、控制转移类;(17条)、位操作类。(17条)指令中操作数的描述符号:Rn——工作寄存器R0~R7、Ri——间接寻址寄存器R0、R1、Direct——直接地址,包括内部128BRAM单元地址、26个SFR地址。#data——8位常数#data16——16位常数addr16——16位目的地址、addr11——11位目的地址、rel——8位带符号的偏移地址、DPTR——16位外部数据指针寄存器bit——可直接位寻址的位A——累加器B——寄存器BC——进、借位标志位,或位累加器@——间接寄存器或基址寄存器的前缀/——指定位求反(x)——x中的内容((x))——x中的地址中的内容$——当前指令存放的地址三、寻址方式寻找操作数存放单元的地址的方式,共6种方式。1、立即数寻址所要找的操作数是一二进制数或十进制数,出现在指令中,用“#”作前缀MOVA,#20H2、寄存器寻址操作数存放在工作寄存器R0~R7中,或寄存器B中。MOVA,R23、直接寻址指令中直接给出操作数的地址。MOVA,30HMOV30H,DPH4、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,指令中间接寻址寄存器前用“@”表示前缀。举“两个抽屉,两把钥匙”的例子。MOVR0,#30HMOVA,@R0MOVA,#20HMOVR1,#40HMOV@R1,A5、变址寻址操作数地址=变地址+基地址基地址寄存器DPTR或PC变址寄存器@A该寻址方式常用于访问程序存储器,查表。MOVA,@A+DPTR6、相对寻址把指令中给定的地址偏移量与本指令所在单元地址(PC内容)相加得到真正有效的操作数所存放的地址。举“李同学20岁,张同学比李同学大3岁”的例子。JC60H;设(PC)=2000H,则当C=1时,转移的目的地址=(PC)+2+60H巩固新课:1、汇编语言有何种特点?指令格式?2、MCS—51系列机共有多少条指令?分几类?3、MCS—51系列汇编语言指令有几种寻址方式?字号:大大中中小小51单片机指令(转载)MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALLaddr11ADDA,RnADDA,directADDA,@RiADDA,#dataADDCA,RnADDCA,directADDCA,@RiADDCA,#dataAJMPaddr11ANLA,RnANLA,directANLA,@RiANLA,#dataANLdirect,AANLdirect,#dataANLC,bitANLC,/bit1、ACALLaddr11指令名称:绝对调用指令指令代码:A10A9A910001A7A6A5A4A3A2A1A0指令功能:构造目的地址,进行子程序调用。其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数:2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。2、ADDA,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn),n=0~7字节数:1机器周期;1影响标志位:C,AC,OV3、ADDA,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数:2机器周期:1影响标志位:C,AC,OV4、ADDA,@Ri’指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV5、ADDA,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数:2机器周期:1影响标志位:C,AC,OV6、ADDCA,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV7、ADDCA,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数:2机器周期:1影响标志位:C,AC,OV8、ADDCA,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV9、ADDCA,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C)字节数:2机器周期:1影响标志位:C,AC,OV10、AJMPaddr11指令名称:绝对转移指令指令代码:A10A9A810001A7A6A5A4A3A2A1A0指令功能:构造目的地址,实现程序转移。其方法是以指令提供的11位地址,取代PC的低11位,.而PC的高5位保持不变。操作内容:PC←(PC)+2PCl0~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB。11、ANLA,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112、ANLA,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A)∧(diret)字节数:2机器周期:113、ANLA,@Ri指令名称:间接寻址逻辑与指令指令代码:56H~57H指令功能:累加器内容逻辑与内部RAM低128单元内容操作内容:A←(A)∧((Ri))i=0,1字节数:1机器周期:114、ANLA,#data指令名称:立即数逻辑与指令指令代码:54H指令功能:累加器内容逻辑与立即数操作内容:A←(A)∧data字节数:2机器周期:115、ANLdirect,A指令名称:累加器逻辑与指令指令代码:52H指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容操作内容:direct←(A)∧(direct)字节数:2机器周期:116、ANLdirect,#data指令名称:逻辑与指令指令代码:53H指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数操作内容:direct←(direct)∧data字节数:3机器周期:217、ANLC,bit指令名称:位逻辑与指令指令代码:82H指令功能:进位标志逻辑与直接寻址位操作内容:C←(C)∧(bit)字节数:2机器周期:218、ANLC,/bit指令名称:位逻辑与指令指令代码:B0H指令功能:进位标志逻辑与直接寻址位的反操作内容:C←(C)∧(bit)字节数:2机器周期:2MCS-51系列单片机指令以C开头的指令有10条,分别为:CJNEA,dircet,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,relCLRACLRCCLRbitCPLACPLCCPLbit1、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机器周期:22、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机器周期:23、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机器周期:24、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机器周期:25、CLRA指令名称:累加器清0指令指令代码:E4H指令功能:累加器清0操作内容:A←0字节数:1机器周期:16、CLRC指令名称:进位标志清0指令指令代码:C3H指令功能:进位位清0操作内容:C←0字节数:1机器周期:17、CLRbit指令名称:直接寻址位清0指令指令代码:C2H指令功能:直接寻址位清0操作内容:bit←0字节数:2机器周期:18、CPLA指令名称:累加器取反指令指令代码:F4H指令功能:累加器取反操作内容:A←(A)字节数:1机器周期:19、CPLC指令名称:进位标志取反指令指令代码:B3H指令功能:进位标志位状态取反操作内容:C←(c取反)字节数:1机器周期:110、CPLbit指令名称:直接寻址位取反指令指令代码:B2H指令功能:直接寻址位取反操作内容:bit←(bit取反)字节数:2机器周期:1MCS-51系列单片机指令以D开头的指令有8条,分别为:DAADECADECRnDECdirectDEC@RiDIVABDJNZRn,relDJNZdirect,rel1、DAA指令名称:十进制调整指令指令代码:D4H指令功能:对BCD码加法运算的结果进行有条件的修正操作内容:若(A)3~0>9∨(AC)=1,则A3~0←(A)3~0+6若(A)7~4>9∨(C)=1,则A7~4←(A)7~4+6若(A)7~4=9∧(A)3~0>9,则A7~4←(A)7~4+6字节数:1机器周期:1使用说明:DA指令不影响溢出标志2、DECA指令名称:累加器减1指令指令代码:14H指令功能:累加器内容减1操作内容:A←(A)-1字节数:1机器周期:13、DECRn指令名称:寄存器减1指令指令代码:18H~1FH指令功能:寄存器内容减1操作内容:Rn←(Rn)-1,n=0~7字节数:1机器周期:14、DECdirect指令名称:直接寻
本文标题:mcs-51
链接地址:https://www.777doc.com/doc-4005990 .html