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

汇编语言第6章子程序设计.pptVIP

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1 子程序的调用与返回指令 6.1.1 子程序的调用指令CALL 6.1.2 返回指令RET 6.1.1 子程序的调用指令CALL 指令格式: CALL OPD 注:过程名或子程序名就是子程序入口处的符号地址。执行CALL指令时,首先要保留断点地址于堆栈中,然后程序转移到指定的子程序入口地址处去执行子程序。 由于子程序与调用它的程序可能在同一个段中,也可以不在同一个段中, CALL指令在转移到子程序入口地址时有两种寻址方式:直接寻址方式和间接寻址方式或者称为直接调用和间接调用。 前面提到,指令指针寄存器IP总是指向下一条将要执行的指令。在执行指令CALL时,堆栈中保存的就是原程序的断点地址(CALL指令后面1条指令的地址称为断点地址,也即返回地址)。 1.段内直接调用 在调用指令的目的操作数中直接给出过程名或子程序名。如CALL PROC1 执行的操作:(SP)←(SP)-2 ((SP)+1,(SP))←(IP) (IP)←(IP)+16位的位移量 指令中的过程名或子程序名为NEAR属性,给出了转向地址(即子程序的入口地址,亦子程序的第一条指令的地址)。 【例6.1】CALL DISPLAY1 ┆ DISPLAY1 PROC NEAR ┆ RET 2.段内的间接调用 子程序的入口地址存放在一个16位通用寄存器或字存储单元中。在调用指令的目的操作数是除立即数寻址的某种寻址方式确定的有效地址EA。 执行的操作是:(SP)←(SP)-2 ((SP)+1,(SP))←(IP) (IP)←(EA) 【例6.2】CALL BX ; CALL WORD PTR [BX] 3.段间直接调用 调用指令的目的操作数中直接给出过程名或子程序名。如:CALL PROC2 注:在不同的逻辑段中进行调用,直接调用的属性为FAR类型。 执行的操作:(SP)←(SP)-2 ((SP)+1,(SP))←(CS) (IP)←(EA) (SP)←(SP)-2 ((SP)+1,(SP))←(IP) (IP)←偏移地址 (CS)←子程序的段基址 【例6.3】CALL DISPLAY2 ┆ DISPLAY2 PROC FAR ┆ RET 4.段内间接调用 子程序的入口地址存放在一个双字存储单元中,低地址的字单元存放入口地址的偏移量,高地址的字单元存放入口地址的段基址。 执行的操作:(SP)←(SP)-2 ((SP)+1,(SP))←(CS) (IP)←(EA) (SP)←(SP)-2 ((SP)+1,(SP))←(IP) (IP)←(EA) (CS)←(EA+2) 【例6.4】CALL DWORD PTR [BX] 6.1.2 返回指令RET RET指令放在子程序的末尾,它使子程序的功能完成后返回到调用程序继续执行,而返回地址是调用指令时存入堆栈中的,回此RET指令的操作就是返回IP寄存器和CS寄存器的值。 语句格式:RET 执行段内RET指令时,从堆栈顶部弹出一个字(返回地址)送IP。执行段间RET指令时,从堆栈顶部弹出两个字(返回地址),分别送入IP和CS中。 语句格式:RET n(n为偶数) 指令中参数N 应为偶数,如:2,4,6等。此指令先从堆顶弹出返回地址送IP或者IP和CS中,然后用参数N修改堆栈指针SP的值。SP=(SP)+N 根据调用的不同,返回指令也分为: 6.2 子程序的设计方法 6.2.1 子程序的定义 6.2.2 子程序的调用与返回 6.2.3 信息的保存与恢复 6.2.1 子程序的定义 子程序的定义是由过程定义伪指令PROC和ENDP来完成的。其格式如下: 过程名 PROC [NEAR/

文档评论(0)

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

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

1亿VIP精品文档

相关文档