首页 > 解决方案 > 无法从其他方法访问堆栈元素 - 程序集

问题描述

我最近在搞汇编(NASM),我想出了下面的程序,它有两个文件。每个文件的名称和代码是:

主程序.asm:

%include "hello.asm"

section .data
    message db 'Hello World!', 10, 0

section .text
global _main
_main:
    push message
    call print_message
    ret

你好.asm

extern _printf
section .text
global print_message
print_message:
    call _printf
    add esp, 4
    ret

现在,如果我运行这个程序,我会得到一个分段错误。我的问题是:当我们从另一个文件调用方法/例程时,程序有不同的堆栈吗?因为这是我唯一能得出的结论。我试图通过谷歌找到一个推理,但我找不到任何相关的东西。如果有人可以帮助我,那就太好了。

标签: debuggingassemblyx86nasmsasm

解决方案


推荐阅读