访问堆栈而不弹出

时间:2012-11-26 10:21:08

标签: assembly x86 dos

如何从堆栈读取而不弹出? 我试过这个:

mov dx, [ss:sp]

并收到错误消息: “错误:无效的有效地址”

我正在使用NASM,而我的程序对于DOS来说是16位。

1 个答案:

答案 0 :(得分:2)

16位寻址不支持[sp]您只能使用bxbpsidi的有限组合来解决问题流离失所。这意味着您必须将sp移至上述寄存器之一,通常的bp即使ss段与默认值相关联。功能序言通常会设置它,因此您可以轻松访问参数和本地人:

push bp
mov bp, sp
...
mov dx, [bp + displacement]