第6章 子程序结构---段内定义和使用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 子程序结构---段内定义和使用

第6章 子程序结构 6.1 子程序的概念 6.2 子程序结构定义与调用 6.3 子程序的参数传送 6.4 子程序的嵌套与递归 习题6 6.1 子程序的概念 6.1.1 子程序概念 把可以多次调用、能够完成特定操作功能的程序段/指令集编写成独立的程序模块,该程序模块称为子程序,又称为过程。调用这些子程序的程序称为主程序。在主程序中,如果调用到子程序,就需要把控制转移到子程序,这个过程称为转子。子程序执行完了,要把控制再返回到主程序,这个过程称为返主。主程序与子程序之间的关系如图6.1所示。 子程序具有如下4个特性: (1) 重复性。 一个子程序只占用一段存储区域,但可以多次被调用,避免了编程人员的重复劳动,又节省程序的存储空间。由于增加了调用、返回等指令,因此程序执行时间会长些。如果一个程序段只用到一次,就没有必要编写成子程序形式。 (2) 通用性。 只能完成特定功能的子程序用处不大,例如,只能实现5个字节加法运算的多字节加法子程序和只能在定长字符串上查找某一固定字符的子程序都没有通用性,因而用处也就不大。要能够得到广泛应用的通用的多字节加法子程序,字节数应该是任意的,字符查找子程序、字符串的长度和查找的字符都应是任意的。 (3) 可浮动性。 所谓可浮动性,就是说子程序可以存放在存储区的任何地址处。假如子程序只能存放在固定的地址处,则在编写主程序时要特别注意存储单元的分配,不要使主程序占用了子程序的存储单元而破坏掉子程序,这样就会给编程人员带来很大麻烦,而且在装配主程序和子程序时往往造成存储空间的冲突或浪费。 (4) 可递归和可重入性。如果子程序能够调用其本身,则称其可递归调用。 如果子程序可被中断,在中断处理中又被中断服务程序调用,并且能为中断服务程序和已中断的子程序两者都提供正确的结果,那么称该子程序是可重入的。 为使子程序具有可递归和可重入性,应当利用堆栈和寄存器作为中间结果的暂存器,而不能用固定的存储单元作暂存器。 6.1.2 子程序分类 按子程序的定义和调用分为: 一、子程序段内调用 二、子程序段间调用 6.2 子程序段内调用结构定义与操作 6.2.1子程序定义 该伪操作用在子程序的前后,使整个子程序形成清晰的、具有特定功能的代码块。其格式为: 子程序名 proc ATTRIBUTE(NEAR、FAR) ? ……. ret 子程序名 endp 其中,子程序名为标识符,它又是子程序入口的符号地址。它的写法与标号的写法相同。属性(Attribute)是指子程序的类型属性,可以是NEAR或FAR。 如果所定义的子程序是NEAR属性的,那么对它的调用和返回也一定是NEAR属性的。这样,用户只需在定义子程序时考虑它的属性,而CALL和RET的属性可以由汇编程序来确定。子程序属性的确定原则很简单,即: ① 如调用程序和子程序在同一个代码段中,则使用NEAR属性; ② 如调用程序和子程序不在同一个代码段中,则使用FAR属性。 【例6-1】 调用程序和子程序在同一代码段中。 Code segment ;主程序 CALL SUBR1? SUBR1 PROC NEAR ;子程序(NEAR可省略) ? RET SUBR1 ENDP Code ends 由于调用程序MAIN和子程序SUBR1在同一代码段中,所以SUBR1定义为NEAR属性。这样,MAIN中对SUBR1的调用和SUBR1中的RET就都是NEAR属性的。 【例6-2】 调用程序和子程序不在同一个代码段内。 SEGX SEGMENT (详见段间调用) S

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档