欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    51单片机指令系统和汇编语言程序设计.ppt

    • 资源ID:2816256       资源大小:744.50KB        全文页数:86页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51单片机指令系统和汇编语言程序设计.ppt

    第3章 51单片机汇编指令系统和汇编语言程序设计,指令、汇编语言、寻址等概念51单片机指令集数据传送指令算术运算逻辑运算控制转移位运算汇编语言程序模块设计顺序、条件分支、循环程序、子程序,3.1 汇编指令和汇编语言,机器指令:微型计算机和单片机真正能够执行的指令都是二进制数的机器指令。每一种或者每一系列的单片机(MCU Family)都有自己专有的机器指令集(Instruction Set),且各不相同,不具有可移植性。汇编指令(Assembly Instruction):采用英文单词助记符和机器指令一一对应起来,即是汇编指令。例如ADD A,B INC A汇编指令是人们相对容易掌握的最底层指令。每种汇编指令集都是专适用于某种CPU的。,汇编指令和汇编语言最大的问题是不具有跨CPU的可移植性,更换了不同的CPU系列就必须全部更换程序代码,代价大周期长。但是汇编语言也具有速度最快,效率最高,保密性最好的有点,在大企业、高技术设备的开发上还广泛应用。单片机C语言开发:是指在基础ANSI C语言基础上添加了适用于单片机内存管理和特殊功能寄存器等的定义。利用C语言开发的单片机程序具有易于理解,容易移植,容易实现复杂的运算和控制功能,因此目前大多数单片机都有对应的C语言开发环境。但是首先学习并理解汇编语言程序思路仍然是进行C语言开发前的必备基础。,MCS-51指令系统的特点,1、执行速度快,存储效率高,MCS-51指令系统共有111条指令,按字节分,单字节指令49条,双字节指令45条,三字节指令17条,按周期分,单周期指令64条,双周期指令45条,四周期指令2条,设时钟频率为12MHz,则指令执行的时间分别为:,1s 58,2s 40,4s 2,占居空间,占居时间,51单片机寻址方式(7种),立即寻址,直接寻址,寄存器寻址,寄存器间接寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,3.2 寻址方式,寻址方式:汇编指令中提供(寻找)操作数的方式称为寻址方式。,(1)立即寻址举例:ADD A,#28H其中#28H就一个立即数,表示28H是一个常数,存在程序存储器里。,(2)直接寻址举例:MOV A,30H MOV A,SBUF指在汇编指令中直接给出被访问单元的地址。直接寻址的范围只能是片内00H7FH内存单元和特殊功能寄存器区。特殊功能寄存器的名字本质上就是直接内存地址。,(3)寄存器寻址举例:MOV A,R3 R0,R1,R2.R7指被访问的单元是通用寄存器R0R7。,(4)寄存器间接寻址举例:MOV A,R0 此时R0是一个内存地址指针变量,被访问的单元是R0所指向的地址单元。例如R0=30H,则上例实际上访问的是片内RAM的30H单元。而R0本身是指针变量,可以指向一片连续的地址单元,可用于连续循环赋值等。,(5)基址寄存器加变址寄存器寻址举例:MOVC A,A+DPTR 此时DPTR是一个地址指针,指向一个程序存储器中常数数组的首地址,称为基址(Base address),A中存储的是该数组中对应元素的下标(变址),A+DPTR则表示把该下标对应的数组元素读取出来。,(6)相对寻址举例:SJMP MAIN此时MAIN是一个语句标号,代表的是一条指令所在地址,该指令地址和SJMP MAIN这条语句的地址范围差值在-128+127之内,即一个字节有符号数范围。用于程序跳转中的短跳转语句。,(7)位寻址举例:MOV C,20H位指令具有鲜明的特征,其操作单元都是位单元。最典型的例子是一个操作数是CY位,此时20H指的就是片内20H2FH内的位寻址区20H位了。这个叫做位寻址。,数据传送(29条),算术运算(24条),逻辑运算(24条),控制转移(17条),布尔处理(17条),51单片机的汇编指令集,介绍描述指令符号的意义,当前选中寄存器区的8个工作寄存器(R0R7),Rn,Ri,direct,-8位内部RAM单元地址 00H7FH,专用特殊功能寄存器SFR的地址80HFFH,立即数(8位),#data,#data16,立即数(16位),n=07,i=0、1,addr16,16位目的地址,用于LCALL、LJMP指令 地址范围64KB ROM空间,addr11,11位目的地址,用于ACALL、AJMP指令 地址范围2KB ROM空间,rel,DPTR,数据地址指针,可做16位间址寄存器,bit,内RAM或SFR中的直接位寻址,A,累加器,B,专用寄存器,用于MUL和DIV指令,C,位累加器(PSW.7),进位/借位标志,间址或基址寄存器前缀如 Ri,A+DPTR,/,位操作的前缀,表示对该位操作数取反,(X),X中的内容,((X)),由X寻址的单元中的内容,箭头左边的内容被箭头右边的内容所代替,DPTR,A+PC,寻址方式与相应的寻址空间,利用的变量,使用的空间,方 式,一、数据传送类(29条),用到的指令助记符有5种:,片内传送 MOV(MOV指令只能访问片内RAM),片外传送 MOVX(MOVX指令只能访问片外RAM),查表传送 MOVC(MOVC只能访问程序存储器),累加器交换 XCH、XCHD、SWAP堆栈操作 PUSH、POP这两类指令只能操作片内RAM,1、MOV类传送指令,格式:MOV 目的字节,源字节,功能:把源字节内容送目的字节,源字节内容不变,以累加器A为目的字节的传送:,立即数送累加器,MOV A,#data,;立即数#data送累加器A,寄存器内容送累加器,MOV A,Rn(n=07),内RAM或SFR内容送累加器,MOV A,direct,;Rn的内容送累加器A,;以direct为地址的单元的内容送累加器A,内RAM内容送累加器,MOV A,Ri(i=0、1),;以Ri内容为地址单元中的数送累加器A,立即数送寄存器,MOV Rn,#data(n=07),;立即数#data送累加器 Rn,*16位立即数传送指令,MOV DPTR,#data16,;16位立即数送DPTR中,设置地址指针。,MOV指令不一一详述,请参见指令集表自行理解,MOV类传送指令小结,MOV 片内传送指令,MOV类传送指令小结,MOV 片内传送指令,2、MOVX类传送指令,累加器A与外部RAM传送数据用 MOVX,外部RAM送累加器A,MOVX A,Ri(i=0、1),单字节指令,机器码相应为E2H、E3H,;以Ri内容为外部RAM地址的单元中的数送A,累加器内容送外RAM,MOVX Ri,A(i=0、1),;累加器内容送以Ri内容为地址的外部RAM单元,单字节指令,外部RAM送累加器A,MOVX A,DPTR,单字节指令,机器码相应为E0H,;以DPTR内容为地址的外部RAM单元中的数送A,累加器内容送外RAM,MOVX DPTR,A,;累加器内容送以DPTR内容为地址的外部RAM单元,单字节指令,机器码相应为F0H,MOVX类传送指令小结,MOVX 片外传送指令,MOVX只能对片外扩展的数据存储器RAM进行读写操作,且指令只有以上4条,切忌不要创造“指令”,准确把握何为“片内”,何为“片外”。,例:将片外RAM 120H单元的内容传送到片外RAM 地址为78H的单元。,MOV DPTR,#0120H,MOVX A,DPTR,MOV R0,#78H,MOVX R0,A,;外部RAM送累加器A,;累加器内容送外RAM,3、MOVC类传送指令,MOVC类传送指令,均为基址加变址寄存器寻址:,MOVC A,A+DPTR,以DPTR作基址加变址寻址,长查表指令,16位,例:在外部ROM中存放09的平方值。根据累加器 A中的数(09),查找对应的平方值。,用DPTR作基址寄存器指向表格的首地址用A作变址寄存器实际上A中的值是表格中的第几项,4、XCH、XCHD、SWAP类传送指令,寄存器内容与累加器内容交换,XCH A,Rn(n=07),内RAM或SFR内容与累加器内容交换,XCH A,direct(n=07),内RAM内容与累加器内容交换,XCH A,Ri(i=0,1),内RAM内容低4位与累加器低4位内容交换,XCHD A,Ri(i=0,1),累加器A高4位与低4位交换,SWAP A,交换类传送指令小结,5、堆栈操作指令,进栈指令,PUSH direct,;direct地址单元的内容压入SP指向的单元,双字节指令,出栈指令,POP direct,;SP指向的单元内容弹出到以direct为地址的单元,双字节指令,例:堆栈操作 设(A)=55H,(B)=3FH,建立堆栈,压入操作,弹出操作,55H,3FH,MOV SP,#60H,PUSH A,PUSH B,POP PSW,结果:PSW的内容3FH,SP的内容为61H,PSW,3FH,关于数据传送类指令的总结和注意,MOVX指令是唯一的对片外RAM和I/O接口芯片的读写访问指令。MOVC指令是对程序存储器ROM的读访问,按地址读,没有片内外的概念。其余全部传送类指令都是对片内RAM和SFR区的访问,务必搞清楚,不要出错。除了MOV DPTR,#XXXXH一条指令外,其余任何赋值指令的赋值都不能超过1字节容量,即范围只能是00HFFH。有赋值错误者(此为低级错误)会加重扣分 数据传送类指令大量应用,务必熟练运用,二、算术运算类(24条),用到的指令助记符有8种:,加法指令 ADD、ADDC、INC、DA,减法指令 SUBB,DEC,乘除指令 MUL,DIV,算术运算类指令执行结果影响标志位:CY、AC、OV,1、不带进位加ADD,累加器内容加立即数,ADD A,#data,双字节指令,累加器内容加寄存器内容,ADD A,Rn(n=07),单字节指令,累加器内容加内RAM内容,ADD A,Ri(i=0,1),单字节指令,累加器内容加内RAM内容或SFR,ADD A,direct,双字节指令,ADD类指令小结,2、带进位加ADDC,累加器内容加立即数 加进位位,ADDC A,#data,双字节指令,累加器内容加寄存器内容加进位位,ADDC A,Rn(n=07),单字节指令,累加器内容加内RAM内容加进位位,ADDC A,Ri(i=0,1),单字节指令,累加器内容加内RAM内容或SFR加进位位,ADDC A,direct,双字节指令,ADDC类指令小结,两个单字节数相加,只需用到ADD指令,此时进位保存在CY位里。若要完成多字节数相加,则从第2个字节开始,必须要使用ADDC指令,因为此时必须要考虑进低位对高字节的进位情况了。例如 8635H+13DCH,3、增量INC,累加器内容加“1”,INC A,寄存器内容加“1”,INC Rn,内RAM或SFR内容加“1”,INC direct,内RAM内容加“1”,INC Ri,数据指针DPTR内容加“1”,INC DPTR,4、十进制调整指令,DA A,;对累加器A,作BCD码加法后进行“过9补6”调整,注意:DA 指令不能对BCD码减法的结果进行调整,单字节指令,ABCDEF,0123456789,BCD,合法,例 设(A)=37H;(R3)=36H,执行下面的程序:,0 0 1 1 0 1 1 1(37H),0 0 1 1 0 1 1 0(36H),(6DH),0 1 1 0 1 1 0 1,过“9”,0 0 0 0 0 1 1 0,0 1 1 1 0 0 1 1,补“6”,(73H),;(A)=6DH,;(A)=73H,CY,1 1 0 1,ADD A,R3,DA A,DA A 只能跟在加法指令之后,5、减法指令SUBB,累加器减立即数和借位标志,SUBB A,#data,双字节指令,累加器减寄存器内容和借位标志,SUBB A,Rn(n=07),单字节指令,累加器减RAM内容和借位标志,SUBB A,Ri(i=0,1),单字节指令,累加器内容减内RAM内容或SFR和借位标志,SUBB A,direct,双字节指令,SUBB类指令小结,6、减量 DEC,累加器内容减“1”,DEC A,寄存器内容减“1,DEC Rn,内RAM或SFR内容减“1”,DEC direct,内RAM内容减“1,DEC Ri,DEC 类指令小结,7、MUL,MUL A B,DIV A B,8、DIV,CY=0,三、逻辑运算类(24条),用到的指令助记符有9种:,包括与、或、异或、清除、求反、移位等操作,ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC,1、逻辑与ANL(6条),累加器内容逻辑与立即数,ANL A,#data,累加器内容逻辑与寄存器内容,ANL A,Rn(n=07),累加器内容逻辑与内RAM内容,ANL A,Ri(i=0,1),累加器内容逻辑与内RAM内容或SFR,ANL A,direct,累加器内容逻辑与内RAM或SFR,ANL direct,A,立即数逻辑与RAM或SFR,ANL direct,#data,2、逻辑或 ORL(6条),累加器内容逻辑或立即数,ORL A,#data,累加器内容逻辑或寄存器内容,ORL A,Rn(n=07),累加器内容逻辑或内RAM内容,ORL A,Ri(i=0,1),累加器内容逻辑或内RAM内容或SFR,ORL A,direct,累加器内容逻辑或内RAM或SFR,ORL direct,A,立即数逻辑或RAM或SFR,ORL direct,#data,ORL 类传送指令小结,3、逻辑异或XRL(6条),累加器内容逻辑异或立即数,XRL A,#data,累加器内容逻辑异或寄存器内容,XRL A,Rn(n=07),累加器内容逻辑异或内RAM内容,XRL A,Ri(i=0,1),累加器内容逻辑异或内RAM内容或SFR,XRL A,direct,累加器内容逻辑异或内RAM或SFR,XRL direct,A,立即数逻辑异或RAM或SFR,XRL direct,#data,XRL类传送指令小结,4 累加器清除与求反指令(2条),累加器A清零,CLR A,累加器A按位取反,CPL A,4 移位指令(4条),累加器内容循环左移一位,RL A,累加器内容连同进位标志循环左移一位,RLC A,CY,例:A=00000001 RL A A=00000010,例:A=00000001,CY=1 RLC A A=00000011,CY=0,累加器内容循环右移一位,RR A,累加器内容连同进位标志循环右移一位,RRC A,CY,例:A=00000010 RR A A=00000001,例:A=00000010,CY=1 RRC A A=10000001,CY=0,移位指令小结,累加器清除与求反指令小结,四、控制转移指令(17条),控制转移指令共有17条:,无条件转移指令,条件转移指令,子程序的调用返回等,*非常重要*,1、无条件转移指令,长转移,LJMP addr16,绝对转移,AJMP addr11,转移范围 2KB,转移范围 64KB,例:LOOP:RL A INC R0 LJMP LOOP,*编程中 addr16通常都是用语句标号给出*,例:LOOP:RL A INC R0 AJMP LOOP,短转移,SJMP rel,指令 SJMP$,原地踏步,程序挂起,例:LOOP:RL A INC R0 SJMP LOOP,SJMP 的跳转范围不能超出-128+127字节范围。如果超出范围汇编会报错。,2、条件转移指令,累加器为零则转移到rel处,否则顺序向下执行,JZ rel,JNZ rel,累加器不为零则转移到rel处,否则顺序向下执行,累加器与立即数比较不相等则转移到rel,如果相等则顺序向下执行。,CJNE A,#data,rel,寄存器与立即数不等则转移(同上),CJNE Rn,#data,rel,累加器与内RAM或SFR不等则转移,CJNE A,direct,rel,三字节指令,内RAM与立即数不等则转移,CJNE Ri,#data,rel,三字节指令,顺序,转移,转移,顺序,寄存器减“1”不等零则转移注:Rn值先减1后判断是否=0,如果不为零则转移到rel,若=0,则顺序向下执行。,DJNZ Rn,rel(n=07),DJNZ direct,rel,内RAM或SFR减“1”不为零则转移,条件转移类指令小结,3、子程序调用及返回指令,长调用,LCALL addr16,;在调用子程序之前,保护断点地址,注释:addr16通常以语句标号给出。指令执行过程是PC先+3,指向下一条指令地址,然后把下一条指令的16位地址压入堆栈(保护断点地址),然后把addr16的地址赋给PC,即跳转到addr16开始执行。,绝对调用,ACALL addr11,;在调用子程序之前,保护断点地址,执行过程基本同上,子程序返回,RET,中断返回,RETI,注释:RET是用户子程序的返回指令,执行过程就是把堆栈中保存的原断点地址重新赋给PC,转回到原断点地址执行程序。,注释:RETI是中断服务子程序专门的返回指令,不可与RET混淆。执行过程除了把程序断点地址返回外,还要把中断系统内部相应的标志位和触发器清零,4、空操作,NOP,注释:NOP指令占用一个字节空间,消耗1个机器周期的执行时间,不执行任何实际操作。其作用在于“浪费”时间,广泛用于软件延时子程序。所有的CPU都提供这条指令,可见其重要性和实用性。,子程序调用及返回指令小结,五、位处理(布尔)类指令(17条),位传送指令位置位、清零、取反指令位逻辑运算指令位判断条件转移指令,位处理指令是51单片机一大特色,具有相当的实用性,是许多其他单片机所不具有的特点。,1、布尔传送类,直接寻址位送进位标志,MOV C,bit,进位标志送直接寻址位,MOV bit,C,2、布尔状态控制指令,清进位标志,CLR C,清直接寻址位,CLR bit,置进位标志,SETB C,置直接寻址位,SETB bit,进位标志求反,CPL C,直接寻址位求反,CPL bit,3、布尔逻辑运算指令,进位标志逻辑与直接寻址位,ANL C,bit,双字节指令,进位标志逻辑与直接寻址位的反码,ANL C,/bit,双字节指令,进位标志逻辑或直接寻址位,ORL C,bit,双字节指令,进位标志逻辑或直接寻址位的反码,ORL C,/bit,双字节指令,4、布尔条件转移指令,进位标志为“1”则转移,JC rel,双字节指令,JNC rel,双字节指令,进位标志为“0”则转移,直接寻址位为“1”则转移,JB bit,rel,三字节指令,直接寻址位为“0”则转移,JNB bit,rel,三字节指令,直接寻址位为“1”则转移并将该位复位,JBC bit,rel,三字节指令,布尔处理指令小结,布尔处理指令小结,;(R0)=200,;P1.7变反(1 s),;P1.7为低电平,;(1 s),;(1 s),;(R0)0 则转(2s),1s,1s,1s,2s,10s,例:分析下面程序,P1.7,100个脉冲,

    注意事项

    本文(51单片机指令系统和汇编语言程序设计.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开