0

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

mov dx, [ss:sp]

并得到一个错误:“错误:无效的有效地址”

我正在使用 NASM,我的程序是 16 位的 DOS。

4

1 回答 1

2

16 位寻址不支持[sp]您只能使用 、 、 和位移的有限bx组合bp进行si寻址di。这意味着您必须移动sp到上述寄存器之一,通常的寄存器bp甚至具有ss默认关联的段。函数序言通常会设置它,因此您可以轻松访问参数和局部变量:

push bp
mov bp, sp
...
mov dx, [bp + displacement]
于 2012-11-26T12:29:06.650 回答