- 2
- 0
- 约6.48千字
- 约 26页
- 2018-12-09 发布于河南
- 举报
汇编6章
* * 第6章 子程序结构 ? 过程定义伪操作 ? 子程序的调用与返回 ? 现场保护与恢复 ? 子程序的参数传送 ? 子程序的嵌套与递归 一. 过程定义伪操作 过程名 PROC NEAR ( FAR ) 过程名 ENDP (1)NEAR属性:调用程序和子程序在同一代码段中 (段内调用) (2)FAR属性:调用程序和子程序不在同一代码段中 (段间调用) . . . code segment main proc far …… call subr1 …… ret main endp subr1 proc near …… ret subr1 endp code ends segx segment subt proc far …… ret subt endp …… call subt …… segx ends segy segment …… call far ptr subt …… segy ends 1.子程序调用:隐含使用堆栈保存返回地址 call near ptr subp (1) 保存返回地址 (2) 转子程序 call far ptr subp (1) 保存返回地址 (2) 转子程序 2.子程序返回:ret 二. 子程序的调用与返回 (SP)→ (IP) (IP) (CS) (SP)→ 子程序调用和返回指令: code1 segment main proc far …… call far ptr subp …… ret main endp code1 ends code2 segment subp proc far …… ret subp endp code2 ends 段间调用和返回 code segment main proc far …… call subp …… ret main endp subp proc near …… ret subp endp code ends 段内调用和返回 例:带立即数返回 (SP)? 堆栈段 code segment main proc far …… push ax push bx push cx call sub …… ret main endp sub proc near …… ret 6 sub endp code ends (IP) (cx) (bx) (ax) (SP)? (SP)? 下面程序段是判断寄存器AH和AL中D3位是否相同,如相同,AH置0,否则AH置全1.试把空白处填上适当指令。 AND AH,08H MOV AH,0FFH JMP NEXT ZERO:MOV AH,0 NEXT:……… 三. 现场保护与恢复 subt proc far push ax push bx push cx push dx …… …… pop dx pop cx pop bx pop ax ret subt endp 子程序的参数传送 原则: 寄 存 器:参数少 堆 栈:参数较多 存储单元:参数多 (1) 通过寄存器传送参数 (2) 通过存储器传送参数 (3) 通过地址表传送参数地址 (4) 通过堆栈传送参数
原创力文档

文档评论(0)