- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
; 键盘输入的十进
您可能关注的文档
最近下载
- 五四制初中一年级中华优秀传统文化教学设计.pptx VIP
- 《微生物与健康》课件科学六年级上册.pptx
- 七年级上册生物学《生物体的结构层次》单元作业设计.docx
- 电子信息工程职业规划 (第二版).pptx VIP
- 党的二十届三中全会精神测试题300道(单选、多选、判断、填空).docx VIP
- 部编教材年级识字课教学.ppt VIP
- 贵州省贵阳市2024-2025学年高一上学期10月联合考试(一) 数学 PDF版含解析.pdf
- 基于Android的个人生活行为记录及习惯养成平台的设计与实现-毕业设计.doc
- 中国传媒大学-节目主持艺术基础(第二版)-课件.pptx
- 纤维增强复合材料在建筑工程结构加固中的应用(经济论文资料).doc
文档评论(0)