code segment
start:
; 演示函数调用和堆栈使用
call func1 ; 调用函数func1
; 退出程序
mov ah,4ch
int 21h
func1 proc
; 把寄存器压入堆栈
push ax
push bx
; 函数体 - 演示堆栈操作
mov ax,1234h
mov bx,5678h
; 分配局部变量空间
sub sp,4 ; 在栈上分配4字节空间 -4
mov bp,sp ; 使用bp寄存器作为基址寄存器访问栈
mov [bp],ax ; 将ax值存入局部变量
mov [bp+2],bx ; 将bx值存入局部变量
; 使用局部变量
mov cx,[bp] ; 读取第一个局部变量
mov dx,[bp+2] ; 读取第二个局部变量
; 释放局部变量空间
add sp,4 ; 恢复栈指针
; 恢复寄存器现场
pop bx
pop ax
ret ; 返回调用点
func1 endp
code ends
end start
没有回复内容