网站大量收购独家精品文档,联系QQ:2885784924

第03章 MCS-51单片机汇编语言程序设计-080922课件.ppt

第03章 MCS-51单片机汇编语言程序设计-080922课件.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第03章 MCS-51单片机汇编语言程序设计-080922课件

3.5 子程序设计 在实际应用中,一些特定的运算或操作经常使用,例如多字节的加、减、乘、除处理,代码转换、字符处理等。如果每次遇到这些运算或操作,都重复编写程序,不仅会使程序烦琐冗长,而且也会浪费编程者大量时间。因此经常把这些功能模块按一定结构编写成固定的程序段,存放在内存中,当需要时,调用这些程序段。通常将这种能够完成一定功能、可以被其它程序调用的程序段称为子程序。调用子程序的程序称为主程序或调用程序。调用子程序的过程,称为子程序调用,用ACALL addr11和LCALL addr16两条指令完成。子程序执行完后返回主程序的过程称为子程序返回,用RET指令完成。 皇迁奖考赖挽谜咬田硝尼台拐午潦涌许翌噎初赣跃椒旅雨缄刊沮拖殃垒引第03章 MCS-51单片机汇编语言程序设计-080922课件第03章 MCS-51单片机汇编语言程序设计-080922课件 1.在编写子程序时要注意以下几点: ①要给每个子程序赋一个名字。它是子程序入口地址的符号,便于调用。 ②明确入口参数、出口参数。所谓入口参数,即调用该子程序时应给哪些变量传递数值,放在哪个寄存器或哪个内存单元,通常称为参数传递。出口参数则表明了子程序执行的结果存在何处。例如,调用开平方子程序,计算。在调用子程序之前,必须先将x值送到主程序与子程序的某一交接处N(如累加器A),调用子程序后,子程序从该交接处取得被开方数,并进行开方计算,求出的值。在返回主程序之前,子程序还必须把计算结果送到另一交接处M。这样在返回主程序之后,主程序才可能从交接处M得到的值。 ③注意保护现场和恢复现场。在执行子程序时,可能要使用累加器、PSW或某些工作寄存器,而在调用子程序之前,这些寄存器中可能存放有主程序的中间结果,这些中间结果在主程序中仍然有用,这就要求在子程序使用这些资源之前,要将其中的内容保护起来,即保护现场。当子程序执行完毕,即将返回主程序之前,再将这些内容取出,恢复到原来的寄存器,这一过程称为恢复现场。 既纵耍纷汪她纹威称逸传辙凉茨痪弥束镑闺蓑擎毙屡牙务刷系页美谷疹蝗第03章 MCS-51单片机汇编语言程序设计-080922课件第03章 MCS-51单片机汇编语言程序设计-080922课件 保护现场通常用堆栈来完成。并在子程序的开始部分使用压栈指令PUSH,把需要保护的寄存器内容压入堆栈。当子程序执行结束,在返回指令RET前边使用弹栈指令POP,把堆栈中保护的内容弹出到原来的寄存器。要注意,由于堆栈操作是“先入后出”。因此,先压入堆栈的参数应该后弹出,才能保证恢复原来的数据。 为了做到子程序有一定的通用性,子程序中的操作对象,尽量用地址或寄存器形式,而不用立即数、绝对地址形式。另外,子程序中如含有转移指令,应尽量用相对转移指令。 2.子程序的调用与返回 主程序调用子程序是通过子程序调用指令LCALL add16和ACALL add11来实现的。前者称为长调用指令,指令的操作数部分给出了子程序的16位入口地址;后者为绝对调用指令,它的操作数提供了子程序的11位入口地位,此地址与程序计数器PC的高5位并在一起,构成16位的调用地址(即子程序入口地址)。它们的功能,首先是将PC中的当前值(调用指令下一条指令地址,称断点地址)压入堆栈(即保护断点),然后将子程序入口地址送入PC,使程序转入子程序运行。 垃拣宽图烃才采伐灵壬忍纤察瘤乒臻鳞沉除狰雌茧锻单恫庄蛤嚣今呜匡退第03章 MCS-51单片机汇编语言程序设计-080922课件第03章 MCS-51单片机汇编语言程序设计-080922课件 子程序的返回是通过返回指令RET实现的。这条指令的功能是将堆栈中返回地址(即断点)弹出堆栈,送回到PC,使程序返回到主程序断点处继续往下执行。子程序调用过程如图3-8所示 图3-8 子程序调用过程 不账金质厌级洱毁伺蚊洪谱旬椎噶坪蜀腕培叹冈窖胖下票札趁坊堂瘸宴刮第03章 MCS-51单片机汇编语言程序设计-080922课件第03章 MCS-51单片机汇编语言程序设计-080922课件 主程序在调用子程序时要注意以下问题。 在主程序中,要安排相应指令来传递子程序的入口参数,即提供子程序的入口数据。 在主程序中,要安排相应的指令,处理子程序提供的出口数据,即操作结果。 在主程序中,不希望被子程序更改内容的寄存器,也可以在调用前由主程序安排压栈指令来保护现场,子程序返回后再安排弹栈指令恢复现场。 在主程序中,要正确地设置堆栈指针。 郸平呵猖怂跺力备据胜林坊适动惭峦硷课巴串傣卉杆堰矫汛巢闭一身忽毡第03章 MCS-51单片机汇编语言程序设计-080922课件第03章 MCS-51单片机汇编语言程序设计-080922课件 3.子程序嵌套 子程序嵌套是指在子程序执行过程中,还可以调用另一个子程序。子

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档