欢迎来到天天文库
浏览记录
ID:50067236
大小:2.33 MB
页数:224页
时间:2020-03-08
《单片机系统设计与应用实例 教学课件 作者 韩志军 主编 第三章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第3章单片机指令系统§3.1指令系统简介§3.2MCS-51单片机寻址方式§3.3MCS-51单片机指令系统§3.4汇编语言程序设计内容提要:第三章第一节 指令系统简介第二节 MCS-51单片机的寻址方式第三节 MCS-51单片机的指令系统第四节 汇编语言程序设计指令是供用户使用的单片机的软件资源。指令系统是一台计算机所能执行的指令集合。汇编语言是用助记符表示的指令汇编语言程序指令系统无通用性。指令机器指令10100011B(二进制数表示)A3H(十六进制数表示)汇编指令INCDPTR3.1指令系统简介3.1.1MCS-51单片机指令格式指令的表示形式称指令格式。编
2、写程序时必须严格按指令格式书写。MCS-51指令由操作码和操作数组成。指令应具有以下功能:(1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。(2)操作数指明操作的数本身或者是操作数所在的地址。(3)指定操作结果存放的地址。汇编语言指令格式如下:[标号:]操作码助记符[第一操作数][,第二操作数][;注释]3.2MCS-51单片机寻址方式1.一字节指令(49条)操作码与操作数信息同在一字节中。如:INCDPTR(10100011)MOVA,Rn(11101rrr)2.二字节指令(45条)第一字节为操作码,第二字节为操作数。如:MOVA,#data
3、(01110100立即数)#data表示一个8位的二进制操作数,占一个字节,称为立即数。3.三字节指令(17条)第一字节为操作码,第二、三字节为操作数(数据或地址)。如:ANLdirect,#data(01010011直接地址立即数)direct为单元地址,#data为8位立即数。3.1.2寻址方式寄存器寻址直接寻址寄存器间接寻址立即寻址变址寻址位寻址相对寻址指令中,操作数可能是具体的数据,也可能是具体的存放数据的地址或符号,无论何种情况,都可由操作数取得参与指令运行的二进制数据。这个过程叫作寻址。寄存器寻址以寄存器的内容作为操作数的寻址方式。包括A、B、DPTR寄
4、存器以及通用寄存器R0~R7。例如:CLRA;A←0INCDPTR;DPTR←(DPTR)+1ADDR5,#20H;R5←#20H+(R5)直接寻址指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM(因为是8位地址)。例如:MOVPSW,#20H;PSW←#20HPSW为直接寻址寄存器的符号地址。MOVA,30H;A←内部RAM30H单元中的内容30H为直接给出的内部RAM的地址。注意:这是访问大部分SFR寄存器的唯一方法,可写成单元地址形式,也可写成寄存器符号形式。直接寻址方式示意图思考问题:我们知道,工作寄存器就是内存单元
5、的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOVA,00H和MOVA,R0不就没什么区别了吗?的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H00H),而第二条则只要一个字节(E8H)就可以了。寄存器间接寻址以寄存器中的内容作为操作数的地址,通过该地址获得操作数的寻址方式。可间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,DP
6、TR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作(POP和PUSH)。为区别于寄存器寻址,使用时寄存器前面加“@”标志例如:MOV@R0,A;内部RAM(R0)←(A)其指令操作过程示意图如图3-1所示。又如:MOVXA,@R1;A←外部RAM((R1))其指令操作过程示意图如图3-2所示。再如:MOVX@DPTR,A;外部RAM(DPTR)←(A)其指令操作过程示意图如图3-3所示。片内RAM30HR034HA30H34H图3-1MOV@R0,A间接寻址示意图片外RAM45HA10H45H10HR1片外RAM2000HDPTR30HA20
7、00H30H图3-2MOVXA,@R1间接寻址示意图图3-3MOVX@DPTR,A间接寻址示意图例:(R1)=80H、(80H)=33H,则执行指令MOVA,@Ri后,累加器A的内容为33H而不是80H寄存器间接寻址方式示意图立即寻址指令中直接给出操作数的寻址方式。立即数用前面加有#号的8位或16位数来表示,立即数只能是源操作数,不能作为目的操作数。。例如:MOVA,#60H;A←#60HMOVDPTR,#3400H;DPTR←#3400HMOV30H,#40H;30H单元←#40H上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为34
此文档下载收益归作者所有