收藏 分销(赏)

MCS-51单片机应用教程2.3.1.ppt

上传人:xrp****65 文档编号:13343372 上传时间:2026-03-04 格式:PPT 页数:21 大小:368KB 下载积分:10 金币
下载 相关
MCS-51单片机应用教程2.3.1.ppt_第1页
第1页 / 共21页
MCS-51单片机应用教程2.3.1.ppt_第2页
第2页 / 共21页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2.3,指令功能介绍,数据传送类指令,算术运算类指令,逻辑运算和移位类指令,位操作指令,控制转移类指令,主要内容:,在分类介绍指令之前,先把指令中使用的一些,符号意义作简单的说明。,符号,含,义,Rn,当前寄存器组的,8,个通用寄存器,R0,R7,,,n=0,7,Ri,用作间接寻址的寄存器,只能是,R0,、,R1,两个寄存器,,i=0,,,1,direct,内部,RAM,的,8,位地址。既可以是内部,RAM,的低,128,个单元地址,也可以是专用寄存器的单元地址或符号,在指令中,direct,表示直接寻址方式,#data,8,位立即数,#data16,16,位立即数,addr16,16,位目的地址,只限于在,LCALL,和,LJMP,指令中使用,addr11,11,位目的地址,只限于在,ACALL,和,AJMP,指令中使用,rel,相对转移指令中的偏移量,为,8,位带符号补码数,DPTR,16,位数据指针,bit,内部,RAM,(包括专用寄存器)中的直接寻址位,A,累加器(直接寻址方式的累加器表示为,ACC,),B,B,寄存器,C,进位标志位,是布尔处理机的累加器,也称之为累加位,间址寄存器的前缀标志,/,加在位地址的前面,表示对该位状态取反,(,),某寄存器或某单元的内容,(,(,),),某,间接寻址的单元中的内容,箭头左边的内容被箭头右边的内容所取代,2.3.1,数据传送类指令,按操作方式又分为,数据传送、数据交换和栈操作,指令,。,一、数据传送指令,数据传送类指令一般的操作是把源操作数传送到,目的操作数。,指令执行后,源操作数的内容不变,目,的操作数的内容修改为源操作数的内容。,单片机芯片内部是数据传送最为频繁的部分,有,关的传送指令也最多,包括寄存器、累加器、,RAM,单元以及专用寄存器之间的相互数据传送。,1,、内部,RAM,数据传送指令组,格式:,MOV,(,1,),立即数传送指令,8,位立即数传送指令共有四条:,MOV A,,,#data,;,Adata,MOV direct,,,#data,;,directdata,MOV,Rn,,,#data,;,Rndata,MOV ,Ri,,,#data,;,(,Ri)data,这四条指令的功能都是实现,8,位立即数的传送,,把立即数传送到不同寻址方式的内部,RAM,单元中。,此外还有,16,位立即数传送指令一条:,MOV DPTR,,,#data16,;,DPTRdata16,这条指令的功能是将立即数的高,8,位送,DPH,,立即,数的低,8,位送,DPL,。,注意:,立即数在指令中只能作为源操作数。,(,2,)内部,RAM,各单元与,A,累加器的数据传送指令,MOV A,,,Rn,;,A(Rn,),MOV,Rn,,,A,;,Rn(A,),MOV A,,,direct,;,A(direct,),MOV direct,,,A,;,direct(A,),MOV A,,,Ri,;,A(Ri,),MOV ,Ri,,,A,;,(,Ri)(A,),用于实现累加器与不同寻址方式的内部,RAM,单元之间的数据传送。,(,3,)内部,RAM,各单元之间的数据传送指令,内部,RAM,单元之间的数据传送指令共有五条:,MOV direct,,,Rn,;,direct(Rn,),MOV,Rn,,,direct,;,Rn(direct,),MOV direct,,,Ri,;,direct(Ri,),MOV ,Ri,,,direct,;,(,Ri)(direct,),MOV direct2,,,direct1,;,direct2(direct1),例如:,MOV R5,,,70H,MOV P2,,,R2,MOV A0H,,,R2,MOV D0H,,,R1,;,D0H,是,PSW,的单元地址。,寄存器的内容送,P2,口,例,1,:,设内部,RAM,中(,30H,),=40H,,,(40H)=10H,,,P1,口作输,入口,,(P1)=0CAH,,根据以下程序判断各寄存器和内,部,RAM,各单元的内容。,MOV R0,#30H,MOV A,R0,MOV R1,A,MOV B,R1,MOV,R1,P1,MOV P2,P1,执行结果,:(,R0,),=30H,(R1)=40H,(A)=40H,(B)=10H,(P1)=0CAH,(40H)=0CAH,(P2)=0CAH,2,、外部,RAM,(或,I/O,)的读写指令,MOVX,对外部,RAM,单元只能使用,间接寻址,方法,但可以,分别使用,DPTR,和,Ri,作间址寄存器,因此相应地就有,两组指令:,(,1,)使用,DPTR,进行间接寻址,MOVX A,,,DPTR,;,A(DPTR),MOVX DPTR,,,A,;,(DPTR)(A),由于,DPTR,是,16,位地址指针,因此指令的寻址范围为,64KB,。,(,2,)使用,Ri,进行间接寻址,MOVX A,,,Ri,;,A(Ri,),MOVX ,Ri,,,A,;,(,Ri)(A,),i=(0,,,1),,由于,R0,和,R1,是,8,位地址指针,因此指令的寻址范围只限于外部,RAM,的低,256,个单元。,说明:,Ri,为,8,位寄存器,当外部扩展,RAM,小于等于,256,个单元时,可用,Ri,间接寻址。,若外部扩展较大的,RAM,区域(大于,256B,),可用,Ri,表示低,8,位地址,高,8,位地址由,P2,口锁存器提供。,例,2,:,在外部,RAM,中,(,2000H,),=14H,(20FFH)=30H,(2100H)=15H,则分别执行下列程序段后,A,累加器的内,容各为多少。,程序,1,:,MOV DPTR,#20FFH,INC DPTR,MOVX A,DPTR,程序,2,:,MOV P2,#20H,MOV R0,#0FFH,INC R0,MOVX A,R0,答案:,程序,1,:,(A)=15H,程序,2,:,(A)=14H,例,3,:,把外部,RAM,的,70H,单元中的一个数送到外部,RAM,的,1010H,单元,编程实现。,答案:,方法,1,MOV DPTR,#0070H,MOVX A,DPTR ;,先把,70H,单元的内容存入,A,MOV DPTR,#1010H,MOVX,DPTR,A,方法,2,MOV P2,#00H,MOV R0,#70H,MOVX A,R0 ;,把,70H,单元的内容存入,A,MOV DPTR,#1010H,MOVX,DPTR,A,用两种方法实现,3,、程序存储器读指令,MOVC,这里所说的程序存储器既包括内部程序存储器,,也包括外部程序存储器。,由于,80C51,单片机对程序存储器只能读而不能,写,因此其数据传送都是单向的,即从程序存储器读,出数据,并且只能向累加器,A,传送。这类指令共两条:,MOVC A,,,A+DPTR,;,A(A)+(DPTR),MOVC A,,,A+PC,;,A(A)+(PC),这两条指令都为基址,+,变址寻址方式,其寻址范,为,64KB,。,这两条指令通常用于查表操作,因此可以看成是查,表专用指令。,这两条指令在查表程序中是有区别的,下一章介绍。,二、数据交换指令,数据交换主要是在内部,RAM,单元与累加器,A,之间,进行,有整字节和半字节两种交换。,1.,整字节交换指令,地址单元与累加器,A,进行,8,位数据交换,共有如下三条指令:,XCH A,,,Rn,;,(,A)(Rn,),XCH A,,,direct,;,(,A)(direct,),XCH A,,,Ri,;,(,A)(Ri,),举例:,(R0)=20H,(A)=3FH,(20H)=75H,执行指令,XCH A,R0,结果,(A)=75H,(20H)=3FH,(R0)=20H,2.,低半字节交换指令,地址单元与累加器,A,进行低,4,位的半字节数据交换。只有一条指令:,XCHD A,,,Ri,;,(A)3,0(Ri)3,0,3.,累加器高低半字节交换指令,SWAP A,;,(A)3,0(A)7,4,由于十六进制数或,BCD,码都是以四位二进制数,表示,因此,XCHD,和,SWAP,指令主要用于实现十六,进制数或,BCD,码的数位交换。,例,3,:,外部,RAM2020H,单元中有一个数,X,内部,RAM20H,单元有一个数,Y,,编程使,X,Y,交换存储地址。,答案:,MOV DPTR,#2020H,MOVX A,DPTR,XCH A,20H,MOVX,DPTR,A,三、,堆栈操作指令,堆栈操作有进栈和出栈两种,因此相应有两条指令:,压栈指令:,PUSH direct,;,SP(SP)+1,,,(,SP)(direct,),其功能为内部,RAM,低,128,单元或专用寄存器内容送,栈顶单元。,出栈指令:,POP direct,;,direct(SP,),,,SP(SP)-1,其功能为栈顶单元内容送内部,RAM,低,128,单元或专用,寄存器。,堆栈操作实际上是通过堆栈指示器,SP,进行的读,写操作,是以,SP,为间址寄存器的间接寻址方式。但,因为,SP,是唯一的,所以在指令中把通过,SP,的间接寻,址的操作数项隐含了,只表示出直接寻址的操作数,项。,例,4,:,内部,RAM(30H)=X,(40H)=Y,用堆栈实现这两个单,元的数据交换。,答案:,MOV SP,#50H,PUSH 40H,PUSH 30H,POP 40H,POP 30H,编程实现把外部,RAM,单元,2011H,的内容与外部,RAM,单元,3011H,内容互换。,作业:,本节小结,数据传送指令,数据交换指令,堆栈操作指令,内部,RAM,数据传送指令,外部,RAM,数据传送指令,程序存储器数据传送指令,整字节交换指令,低半字节交换指令,A,累加器高低半字节交换指令,压栈指令,出栈指令,与立即数,与,A,累加器,各单元之间,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服