汇编代码分享1:PUSH和POP

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

 

参考资料:

https://www.cnblogs.com/k5210202/p/13368280.html

请登录后发表评论

    没有回复内容