简介 :
主要理解函数调用的时候参数的传递问题 , 以及返回值如何保存
代码 :
assume cs:code,ds:data,ss:stack
; 利用栈机制实现简单的函数调用
data segment
data ends
stack segment
db 32 dup(0)
stack ends
code segment
start:
; 初始化数据段
mov ax, data
mov ds, ax
; 初始化栈段
mov ax, stack
mov ss, ax
mov sp, 32
; 参数压栈
push word ptr 6 ; 参数 short int y = 6 压栈
push word ptr 8 ; 参数 short int x = 8 压栈
; 调用函数
call func_add
; 程序结束
jmp finish
; 函数功能 : 实现两个整型数字相加
; 参数 : (short int x, short int y)
; 返回 : ax
func_add:
push bp
mov bp, sp
mov ax, ss:[bp + 4]
add ax, ss:[bp + 6]
pop bp
ret 4 ; 相当于 : pop ip, add sp, n ; 由于两个参数 x , y 占 4 字节 , 因此 ret 4
finish:
mov ax,4CH
int 21H
code ends
end start