MCS-51单片机的指令系统.ppt_第1页
MCS-51单片机的指令系统.ppt_第2页
MCS-51单片机的指令系统.ppt_第3页
MCS-51单片机的指令系统.ppt_第4页
MCS-51单片机的指令系统.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本章内容,SingleChipMicrocomputer,寻址方式,算术操作类指令,逻辑运算指令,数据传送类指令,控制转移类指令,第3章MCS-51单片机的指令系统,位操作指令,指令系统单片机所能执行的命令(指令)的集合,就是他的指令系统。汇编语言以助记符(用英文名称或缩写表示的指令)、符号地址、标号等书写程序的语言,称为汇编语言。MCS-51指令系统共111条基本指令;单字节指令49条;双字节45条;三字节17条。指令执行时间1个机器周期的指令64条;2个机器周期的指令45条;4个机器周期2条(乘、除)。,3.1指令系统概述,3.2指令格式,不同字节长度指令的表示形式:,指令的表示方法,指令的格式:,例如:MOVA,R0,例如:MOVA,30H,例如:MOVDPTR,#2010H,操作码用来规定指令进行什么操作。操作数是指令操作的对象。,寄存器寻址,直接寻址,立即寻址方式,寄存器间接寻址,变址寻址,相对寻址,位寻址,寻址方式就是在指令中说明操作数所在地址的方法。MCS-51单片机指令系统有7种寻址方式:,3.3指令系统的寻址方式,目的地,1、寄存器寻址,寄存器,操作数,XXH,MOVA,Rn;(Rn)A,n=07,R0-R7ABDPTR,操作数在寄存器中,指定了寄存器就能得到操作数。寻址范围32个工作寄存器,A、B累加器,数据指针寄存器DPTR。,目的地,2、直接寻址,内部RAM或SFR区,操作数,XXH,MOVA,20H;(20H)A,20H,注:寻址是寻操作数的“地址”!,指令中操作数在所给单元地址中,即该单元地址中的内容为操作数。寻址范围内部低128个RAM单元;特殊功能寄存器SFR。注:对端口的寻址,两种表示方法MOVA,80H或MOVA,P0,3、寄存器间接寻址,MOVA,Ri;(Ri)A,i=0,1,目的地,寄存器,操作数,3AH,内部RAM,3AH,65H,3AH,R0R1DPTR,寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。,寻址范围片内低128RAM单元,其通用形式为RiMOVA,Ri片外64kRAM,用DPTR作间址寄存器,即DPTRMOVXA,DPTR片外低256B的RAMMOVXA,DPTRMOVXA,Ri,目的地,#XXH,操作数,MOVA,#40H;40HA,#40H,4、立即数寻址,操作数在指令中直接给出,出现在指令中的操作数称为立即数。,MOVCA,A+DPTRMOVCA,A+PCJMPA+DPTR,目的地,寄存器,操作数,基址寄存器0012H,变址寄存器34H,程序存储器,0046H,65H,A,DPTRPC,0046H,5、基址寄存器加变址寄存器间接寻址,以DPTR或PC作基址寄存器,以A作变址寄存器,以两者内容相加形成的16位地址作操作数的地址来进行寻址的(多用于访问数据表格)。注:这种寻址方式只用于读出程序存储器中的数据到A;三条指令均为单字节指令。寻址范围:64KB,6、位寻址方式,1,00000000,想一想:如果想使27H单元的D5位置1,该怎么办呢?,内部RAM,位寻址地址表,例:SETB3DH,3D,3C,3B,3F,3E,3A,39,38,27H,SETB3DH,0000000,1,0,内部RAM的位寻址的表示方法:位地址,如3DH;单元地址加上位,如(27H).5,特殊功能寄存器位寻址的表示方法:位地址,如0D5H(为PSW的位5的位地址);位名称,如F0(PSW位5是F0标志位,可直接使用);单元地址加位数,如0D0H(PSW寄存器)的位5,表示为(0D0H).5;特殊功能寄存器符号加位数,如PSW.5位寻址范围:128个内部RAM位地址,83个特殊功能寄存器位地址。,7、相对寻址,用于程序转移操作而设置的寻址方式。相对转移指令多为2字节,个别为3字节。指令中,给出的操作数是地址偏移量rel,因而目的地址为:目的地址=转移指令所在的地址+转移指令的字节数+rel注:rel是带符号的8位二进制数补码数,表示范围为-128+127,目的地,XXH,操作数,SJMP54H,PC+2,+,54H,PC,2000H,2000H+2=2056H,PC,2056H,寻址比较,MOVA,R0,MOVA,R0,MOVA,20H,MOVA,#20H,MOVA,R0,寻址比较,MOVA,R0,MOVA,R0,MOVA,20H,MOVA,#20H,MOVA,R0,寻址比较,MOVA,R0,MOVA,R0,MOVA,20H,MOVA,#20H,MOVA,20H,寻址比较,MOVA,R0,MOVA,R0,MOVA,20H,MOVA,#20H,MOVA,#20H,3.4MCS-51指令系统分类介绍,指令描述约定,MCS-51的指令,1数据传送指令(29条)2算术运算指令(24条)3逻辑运算指令(24条)4控制转移指令(17条)5位操作指令(17条),目的地址源地址,数据,MOV,MOVA,#20H;20HA,,,MOV,20H,A,3.4.1数据传送指令(29条)8位数据传送指令(15条)(1,2,3,4),例MOVA,R6;(R6)AMOVA,R0;(R0)AMOVA,20H;(20H)AMOV20H,A;(A)20H,16位数据传送指令(1条)(5),MOVDPTR,#data16,外部数据传送指令(4条)(7),MOVX,,,MOVX,交换和查表类指令(9条)(6,8,9,10,),,,A,XCH,1)字节交换指令(3条),2)低半字节交换指令(1条),XCHDA,Ri,(A)(Rn),n=07,(A)(direct),(A)(Ri),i=0,1,(A)03(Rn)03,n=07,3)查表指令(2条,单字节),MOVCA,A+PC;(A)+PC+1)A,MOVCA,A+DPTR;(A)+(DPTR)A,4)堆栈操作指令(2条),PUSHdirect;(SP)+1SP,(direct)SPPUSHA;(SP)+1SP,(A)SP(direct可以是直接地址,也可以是SFR),POPdirect;(SP)direct,(SP)-1SPPOPA;(SP)A,(SP)-1SP,direct,3.4.2算术操作类指令(24条)1、加法指令(4条),A,,Rn,Ri,#data,ADD,(A)+(Rn)A,n=07,(A)+(direct)A,(A)+(Ri)A,i=0,1,(A)+#dataA,PSW,加法指令A结果对标志位的影响:位7有进位,置1Cy,否则清0Cy;位3有进位,置1Ac,否则清0Ac;位6有进位,位7无进位,或,位7有进位,位6无进位,则OV置1,否则清0OV。,A,direct,A,,Rn,Ri,#data,ADDC,2、带进位加法指令(4条),(A)+(Rn)+CA,n=07,(A)+(direct)+CA,(A)+(Ri)+CA,i=0,1,(A)+#data+CA,PSW,加法指令A结果对标志位的影响:位7有进位,置1Cy,否则清0Cy;位3有进位,置1Ac,否则清0Ac;位6有进位,位7无进位,或,位7有进位,位6无进位,则OV置1,否则清0OV。,A,3、加1减1指令(3,6),4、十进制(BCD码)调整指令(1条),DAA,注意:DAA指令只能跟在ADD或ADDC加法指令后,不适用于减法指令。,用于对BCD码十进制数加法运算结果的内容修正。,5、带借位的减法指令(4条),direct,A,,Rn,Ri,#data,SUBB,(A)-(Rn)-CyA,n=07,(A)-(direct)-CyA,(A)-(Ri)-CyA,i=0,1,(A)-#data-CyA,PSW,加法指令A结果对标志位的影响:位7有借位,置1Cy,否则清0Cy;位3有借位,置1Ac,否则清0Ac;位6有借位,位7无借位,或,位7有借位,位6无借位,则OV置1,否则清0OV。,7、乘法指令(1条),MULAB;ABBA,8、除法指令(1条),DIVAB;A/BA(商),余数B,乘法指令中,乘积BA对标志位OV的影响:积大于255,置1溢出标志位OV,否则清0OV位;进位标志位Cy总是清0。,除法指令中,商、除数对标志位OV的影响:B的内容(除数)不为0,计算后,清0Cy和溢出标志位OV;如除数(B的内容)为0,则存放结果的A、B的内容不定,并置1溢出标志位OV。,1、累加器A清0和取反指令,3.4.3逻辑运算指令,A.0,A.7,A.0,A.7,A.0,A.7,A.0,A.7,CY,CY,RLA;左环移RRA;右环移RLCA;带进位左环移RRCA;带进位右环移,注意:执行带进位的循环移位指令之前,必须给CY置位或清零。,2、循环移位指令(2、3、4、5),3、累加器半字节交换指令,SWAPA;(Acc.7Acc.4)(Acc.3Acc.0),A,4、逻辑与指令(6条),5、逻辑或指令(6条),6、逻辑异或指令(6条),PC高5位(保持不变),PC低11位,操作码(第一字节),操作数(第二字节),11位转移地址的形成示意图,程序计数器PC,AJMPaddr11;PC+2PC,addr11PC.10PC.0,3.4.4控制转移类指令1、无条件转移指令,PC,2002H,2003H,0000H,0001H,2004H,2005H,2006H,PC,PC,PC,2006H,2003H,PC,0002H,PC,2、相对转移指令,SJMPrel;rel为相对偏移量,在128-127之间例:SJMP03H,03H就是当前PC值与目的PC值相对差,PC,注:在编写程序时,只需在相对转移指令中直接写上要转向的目标地址标号即可。,例:LOOP:MOVA,R6SJMPLOOP,3、长跳转指令LJMPaddr16;AAAAHPC,PC=0000H,PC=AAAAH,假设执行该指令前,PC的值为0000H。,注意:该指令可以转移到64KB程序存储器中的任意位置。,4、间接跳转指令,JMPA+DPTR;DPTR内容为基址,A内容为变址。,注:本指令不改变A和DPTR的内容,不影响标志位。,5、条件转移指令,6、比较不相等转移指令(4条),7、减1非零转移指令(2条),条件转移类指令范例方案一,还有什么方法实现循环的终止?,将00H0FH这16个数顺序地置入片内RAM20H2FH单元中。MOVR0,#20HMOVR7,#0FHCLRALOOP:MOVR0,AINCAINCR0DJNZR7,LOOPSJMP$,条件转移类指令范例方案二,MOVR0,#20HMOVR7,#0FHCLRALOOP:MOVR0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$,条件转移类指令范例方案三,MOVR0,#20HMOVA,#0FHMOV30H,#00HLOOP:MOVR0,30HINC30HINCR0DECAJNZLOOPSJMP$,条件转移类指令范例方案四,MOVR0,#20HMOVA,#0FHMOV30H,#00HLOOP:MOVR0,30HINC30HINCR0SUBBA,#01HJNCLOOPSJMP$,8、调用子程序指令1)短调用指令,2)长调用指令,9、子程序的返回和中断返回指令(9、10),10、空操作(11),3.4.5位操作指令,RAM位寻址区位地址表,1.数据位传送指令,注:指令中一个操作数必须是进位标志位,另一个可以是任何直接寻址位。,2.位置位和位清零指令,3.位变量逻辑与指令,4.位变量逻辑或指令,5.条件转移类位操作指令,练习1,设内部RAM中33H单元中内容为44H,34H单元中内容为0AFH,R0中内容为33H,R1中内容为00H,给出以下每一条指令执行后A中的值和PSW中P的值。MOVA,#34HMOVA,34HMOVA,R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论