将数字移动到堆栈变量不起作用

时间:2017-11-25 06:46:41

标签: assembly x86 x86-64 att

我在堆栈上工作时遇到了问题。

比方说,我在堆栈中,我已经使用了movl%esp,%ebp

如果我制作2个本地字大小的变量(subl $ 4,esp),每当我转到movw $ 1,-2(%ebp)时它会触发分段错误。为什么会这样?是否允许立即值直接传递给堆栈变量?

我的代码是:

    movw $12, %ax 
    pushw %ax 
    call _function 
exit: 
    movl $1, %eax
    movl $0, %ebx
    int $0x80

_function: 
    movl %esp, %ebp 
    subl $4, %esp 
    movw $2, -2(%ebp) 
    addl $4, %esp 
    ret $2

我组装,链接和运行:

as myfile.s -o myfile.o
ld myfile.o 
./a.out

我在使用64位系统。

0 个答案:

没有答案