【发布时间】:2011-07-08 06:22:39
【问题描述】:
我目前正在学习汇编程序并在实模式下编写一些程序。我在堆栈理解方面遇到了一些麻烦。如果 SS 不为零且 SP = 0,是否可以将值推入堆栈。(如果可能,那么 cpu 在推入后如何更改寄存器的值)
【问题讨论】:
标签: stack push assembly cpu-registers
我目前正在学习汇编程序并在实模式下编写一些程序。我在堆栈理解方面遇到了一些麻烦。如果 SS 不为零且 SP = 0,是否可以将值推入堆栈。(如果可能,那么 cpu 在推入后如何更改寄存器的值)
【问题讨论】:
标签: stack push assembly cpu-registers
是的,这是可能的,但您通常不希望这样做。如果你这样做,SP 将从 0 环绕到 65536,像往常一样与 SS 组合,然后你将写入任何可行的地址。在典型情况下,它会覆盖堆栈底部的某些内容,并且当您返回依赖于先前内容的代码时,行为将是不可预测的(快速崩溃是您所希望的最好的结果那个点)。
【讨论】: