第07章-1子设计与多模块编程导论.ppt

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章子程序设计与多模块编程 7.1 子程序的引出 7.2 子程序(过程)定义伪指令 7.3 调用和返回指令 7.4 子程序设计方法 7.5 子程序嵌套 7.6 递归子程序 7.7 可重入子程序 7.8 程序的连接 7.1 子程序的引出 在我们编写解决实际问题的程序时,往往会遇到多处使用相同功能的程序段, 使用该程序段的唯一差别是对程序变量赋不同的值,例如计算:  S=√2X+√3Y+√150   计算上述函数需要多次使用开方运算,如果每次用到开方运算就编写一段开方程序,那末开方程序在程序中会多次出现,不仅书写麻烦,容易出错,编辑、汇编它时,也会花费较多时间。同时,由于冗长,占用内存也较多。如果把多次使用的功能程序编制为一个独立的程序段,每当用到这种功能时,就将控制转向它,完成功能后再返回到原来 的程序,这就会大大减少编程工作量。 7.1 子程序的引出 7.1 子程序的引出 7.2 子程序(过程)定义伪指令 子程序定义伪指令所定义的子程序的一般格式:  PN PROC[NEAR]/[FAR] ;说明过程开始 : ;过程体 : RET PN ENDP ;说明过程结束 7.3 调用和返回指令 1.调用分类 (1)段内调用与段间调用 段内调用:转返地址只用IP实现; 段间调用:转返地址由CS和IP实现。 (2)直接调用与间接调用 直接调用:调用指令使用过程名调用过程,过程的指令入口地址偏移量直接送入IP来实现。 间接调用:调用指令通过某寄存器或某存储器单元指出被调用程序的入口地址。 2.调用指令 指令汇编格式:CALL PROCNAME/REGNAME/MEMLABEL 操作:(1)段内调用: SP←SP-2 (SP+1,SP)←IP IP←OFFSET PROCNAME或REGNAME或(MEMLABEL) (2)段间调用: SP←SP-2 (SP+1,SP)←CS CS←SEG PROCNAME或(MEMLABEL+2,MEMLABEL+3) SP←SP-2 (SP+1,SP)←IP IP←OFFSET PROCNAME或(MEMLABEL,MEMLABEL+1) 受影响的寄存器:没有 3.返回指令 指令汇编格式:RET [VAL] 操作:(1) 段内返回:      IP←(SP+1,SP)      SP←SP+2      SP←SP+VAL(如果选用了VAL)    (2) 段间返回:        IP←(SP+1,SP)        SP←SP+2        CS←(SP+1,SP)        SP←SP+2        SP←SP+VAL(如果选用了VAL) 受影响的寄存器:没有 7.4子程序设计方法 7.4.1 现场的保护和恢复 7.4.2 子程序说明文件 7.4.3 主程序与子程序之间的参数传递 7.4.1 现场的保护和恢复 子程序中需要使用的寄存器,有可能在主程序中正被用来保存某种中间结果,这些寄存器的值在从子程序返回主程序后还要继续使用, 这些寄存器的值或所需的标志位的值等信息称之为现场。显然,子程序执行前需要保护现场,返回时要恢复现场。 保存现场与恢复现场的工作既可在调用程序中完成,也可在子程序中完成,程序设计时根据情况安排。如果子程序已经设计好了,而其中未保护主程序现场,那么调用程序在使用子程序之前应保护现场,从子程序返回后再恢复现场。 通常在主程序中保护现场,则一定在主程序中恢复;在子程序中保护现场,则一定在子程序中恢复。这样可以增强主程序和子程序之间的相对独立性,减少相互依赖,使程序结构清楚,减少错误。 7.4.1 现场的保护和恢复 保护现场和恢复现场的方法: (1) 利用压栈和出栈指令,将寄存器内容或状态标志位内容保存在堆栈中,恢复时再从堆栈中取出。 例子:  SQROOT1 PROC NEAR    PUSH AX ;保存现场 PUSH BX PUSH CX ... ;子程序正常工作 POP CX

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档