; ------------------------------------------
; 程序名称:计算加减法 ;
; 作者: 小问题 ;
; 版本: V1.0 ;
; ;
;---------------------------------------- ;
data segment
data ends
code segment
; myadd1 - 函数名
; proc - 表示这是一个函数定义
; C - 表示使用C语言调用约定 - 外平栈
; uses - 表示要使用的参数
; n1:word - 第一个参数,类型为word(16位)
; n2:word - 第二个参数,类型为word(16位)
myadd1 proc C uses bx cx n1:word,n2:word
;该函数会默认分配栈空间 mov bp,sp mov sub sp,4和弹出栈
mov bx,n1
mov cx,n2
add bx,cx
;默认会弹出栈 pop bx pop cx pop bp
ret ;必须要加
myadd1 endp
;stdcall - 标识使用C++语言的调用约定 - 内平栈
myadd2 proc stdcall uses bx cx n1:word,n2:word
;声明局部变量
local @n3:word
mov bx,n1
mov cx,n2
mov @n3,4
add ax,bx;默认会弹出栈 pop bx pop cx pop bp
add ax,@n3
ret ;会自动恢复栈空间 ret 4
myadd2 endp
start:
; 定义数据段
assume ds:data
mov ax,data
mov ds,ax
;把函数参数变量压入栈
mov ax,1
push ax
mov ax,2
push ax
call myadd1 ;调用函数,并使用栈中的参数
add sp,4 ;外平栈,恢复栈空间
mov ax,3
mov ax,4
call myadd2 ;不需要加add sp,4 因为是内平栈,在函数内部会自动释放栈空间
code ends
end start