如何从堆栈读取而不弹出? 我试过这个:
mov dx, [ss:sp]
并收到错误消息: “错误:无效的有效地址”
我正在使用NASM,而我的程序对于DOS来说是16位。
答案 0 :(得分:2)
16位寻址不支持[sp]
您只能使用bx
,bp
,si
,di
的有限组合来解决问题流离失所。这意味着您必须将sp
移至上述寄存器之一,通常的bp
即使ss
段与默认值相关联。功能序言通常会设置它,因此您可以轻松访问参数和本地人:
push bp
mov bp, sp
...
mov dx, [bp + displacement]