汇编语言参数传递课件.ppt

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

第6章 子程序设计;; 用户对过程属性的确定原则: (1)若调用程序和过程在同一个代码段中,则使用 NEAR属性; (2)若调用程序和过程不在同一个代码段中,则使用FAR属性。 二、子程序的调用和返回 为方便用户的工作,80x86的汇编程序用PROC伪操作的类型 属性来确定CALL和RET指令的属性,即CALL和RET的属性由汇 编程序确定,用户只需正确选择PROC的属性就可以了。 子程序的调用采用指令CALL,其格式为: CALL 过程名 ⑴ 段内调用 ;CSEG SEGMENT MAIN PROC FAR CALL SUBT RET MAIN ENDP SUBT PROC NEAR RET SUBT ENDP CSEG ENDS; (3) 子程序的返回 由RET指令实现过程的返回功能,由于CALL时,已使返回地址如栈,所以RET时应使返回地址出栈。因此,在执行RET前,SP应指向进入子程序时的返回地址,这样,才能使返回地址出栈,正确返回到主程序。;三、保存与恢复寄存器(现场保护与恢复) 通常主程序和过程的设计是分开的,因而他们所使用的寄存器往往会发生冲突。为解决这一冲突,一般地,应该在子程序入口处将子程序中用到的寄存器内容压入堆栈保存,而在返回到调用程序之前再恢复这些寄存器。如: SUB1 PROC NEAR PUSH AX ;进入后,压栈保护现场 PUSH BX ┋ ;处理部分 POP BX ;反序弹出,恢复现场 POP AX RET SUB1 ENDP 但是,如果是用来向主程序回送结果的寄存器,则不应该保存其内容,否则会因为保存和恢复寄存器而破坏了应该向主程序传送的信息。;四、主、子程序间的参数传递方法 主程序 子程序 子程序 主程序; 1、通过寄存器传递参数 2、通过变量传递参数 3、通过地址表传递参数 4、通过堆栈传递参数;例6.1:从键盘输入一个十进制数并将其以十六进制形式在屏幕上显示出来。 十进制 二进制数 十六进制数 decibin子程序 binihex子程序 功能:从键盘取得十进制数 把BX中的二进制数转换成十六进制数 转换,结果放BX 并显示 入口参数:键盘取得的十进 要转换的二进制数在BX中 制数放AL 出口参数: 转换结果放入BX 转换结果放入AL(以备显示) ; 键盘输入的十进制数 二进制数的转换算法:从最高位起,每个数位先将ASCII字符转换为数字,然后乘以该位的权,累加后就成为所要求的二进制数。例:从键盘输入数12345的计算步骤为: 步骤 成绩 5X1 = 5 4X10 = 40 3X100 = 300 2X1000 = 2000 1X10000 = 10000 求和 = 12345 ; 键盘输入的十进

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档