[计算机]汇编 第6章 子程序结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(SP)→ (IP)
(SP)→
(IP) (CS)
3. 保存与恢复寄存器
subt proc far push ax push bx push cx push dx …… …… pop dx pop cx pop bx pop ax
ret subt endp
4. 子程序的参数传送
(1) 通过寄存器传送参数 (2) 通过存储器传送参数 (3) 通过地址表传送参数地址 (4) 通过堆栈传送参数或参数地址 (5) 多个模块之间的参数传送
5. 子程序的嵌套与递归调用
子程序的嵌套:
主程序
…… call proc_A ……
子程序A
子程序B
proc_A …… call proc_B …… Call proc_A ret
proc_B …… ret
(段间调用)
code segment
main main
proc …… call …… ret endp
far subr1
subr1 proc …… ret
subr1 endp
near
code ends
segx
subt
subt call
segx
segment
proc far …… ret endp …… subt ……
第6章 子程序结构
• 过程定义伪操作 • 子程序的调用与返回 • 保存与恢复寄存器 • 子程序的参数传送 • 子程序的嵌套与递归
1. 过程定义伪操作
过程名 PROC
. . .
过程名 ENDP
NEAR ( FAR )
源自文库
(1)NEAR属性:调用程序和子程序在同一代码段中
(段内调用)
(2)FAR属性:调用程序和子程序不在同一代码段中
ends
segy
call
segy
segment
…… far ptr subt ……
ends
2. 子程序的调用与返回
子程序调用:隐含使用堆栈保存返回地址
call near ptr subp
(1) 保存返回地址 (2) 转子程序
call far ptr subp
(1) 保存返回地址 (2) 转子程序
子程序返回:ret