第四章单片机程序设计基础介绍.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 汇编语言程序的基本结构 参数传递方法 汇编语言子程序结构中,参数的传递要靠程序设计者自己安排数据的存放和工作单元的选择问题 汇编语言子程序参数的传递一般可采用下面的方法 传递数据: 将数据通过工作寄存器R0~R7或者累加器A来传送。其具体过程: 在调用子程序前把数据送入寄存器中,子程序中就对这些寄存器中的数据进行操作 子程序执行后,结果仍由寄存器送回 传递地址: 数据存放在数据存储器中,参数传递时只通过R0、R1、DPTR传递数据所存放的地址。调用结束时,结果也可存放在数据存储器中,传送回的也是存在寄存器中的地址。 第四章 汇编语言程序的基本结构 通过堆栈传递参数 在调用之前,先把要传送的参数压入堆栈,进入子程序后,再将堆栈中的参数弹出到工作寄存器或其他内部RAM单元。在弹出参数时,应注意栈顶的两个字节数据是断点地址,不应误为传递的参数,也不应抛弃。在子程序返回之前,应保证该两字节数据仍处在栈顶位置,以便正确返回主程序。 通过堆栈传递参数时,应注意 不能在子程序的开头通过压入堆栈来保护现场,而应在主程序中先保护现场,然后压入要传递的参数 在子程序返回后,应使堆栈恢复到原来的深度,保持堆栈与调用前深度一致,这样才能保证后续堆栈操作的正确,并且不会因为每调用一次子程序,堆栈深度就会加深,而使堆栈发生溢出 第四章 汇编语言程序的基本结构 现场保护 进入子程序后,除了要处理的参数数据和要传递回主程序的参数之外,现场保护 有关的内部RAM单元的内容 工作寄存器的内容 各标志的状态 现场保护方法 进入子程序时,将使用的或被改变的单元内容压堆栈 在返回前,把堆栈中数据弹出到原对应的工作单元 对所使用的工作寄存器的保护可用改变工作寄存器组的方法 第四章 汇编语言程序的基本结构 子程序接口说明 子程序接口说明对于程序结构没有实质的影响,它是一些说明子程序功能的注释文字,便于程序的使用及调试和修改。 专业的编程规范应包含必要的子程序接口说明。 子程序接口的说明主要包括 子程序名称 子程序功能:简单描述完成的工作 入口参数及格式:详细说明各入口参数的意义,若传递的地址或通过堆栈传数据,还应说明在内部RAM或堆栈中的参数的格式、顺序、用途 出口参数及格式 子程序中所使用的寄存器和工作单元 调用:本子程序调用的其他子程序名称 第四章 汇编语言程序的基本结构 例:通过调用子程序实现延时100ms ;子程序名称:DELAY ;功 能:延时1~256ms,fOSC=12MHz,t=1us ;入口参数 :R3=延时的ms数(二进制表示) ;出口参数 :无 ;使用寄存器:R2、R3 ;调用 :无 DELAY:MOV R2, #0FAH ;==250 LOOP: NOP ;1t NOP ;1t DJNZ R2, LOOP ;2t,内循环250x4us DJNZ R3, DELAY ;2t RET ;主程序 : PUSH PSW ;保护程序状态字 MOV PSW, #08H ;选择工作寄存器1 MOV R3, #64H ;入口参数100 ACALL DELAY ;调用延时 POP PSW ;恢复程序状态字 : 第四章 汇编语言程序设计举例 汇编语言程序设计举例 一、查表程序 第四章 汇编语言程序设计举例 二、数制转换程序 例:双字节取补:将R5、R4中的双字节二进制数取补,结果仍放在R5、R4中(LO?R5,HI?R4) DBCPL: MOV A, R5 ;取低字节 CPL A ;取反 ADD A, #1 ;加一 MOV R5, A ;存结果 MOV A, R4 ;取高字节 CPL A ;取反 ADDC A, #0 ;加进位 MOV R4, A ;存结果 第四章 汇编语言程序设计举例 三、算术运算程序 例:多字节二进制数减法:设被减数首地址存于R0,减数首地址存于R1,两个数的字节长度存于R2,相减结果存于被减数所在单元,多字节二进制数按低字节在前的顺序存放。 MSUB: CLR C ;清进位位 MSUB1: MOV A, @R0 ;被减数最低字节 SUBB A, @R1 ;减 MOV @R0, A ;存 INC R0 ;指向高一个字节 INC R1 DJNZ R2, MSUB1 ;循环 CY位保存减法结果的借位状态 第四章 汇编语言程序设计举例 例:多字节BCD数减法: 设被减数存于30H开始单元,减数存于40H开始单元,字节长度存于2FH,相减结果存于30H开始

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档