2012-01-01 90 views

回答

2

你的堆栈段寄存器最好有一个有效的值,当你调用一个软件中断(或进行任何呼叫),因为int(或call)指令需要在其中存储有效栈代码的返回地址。另外,被调用的子程序通常期望有一个有效的堆栈,它可以在某些寄存器中执行其工作。实际上,您的堆栈段寄存器在任何时候都有更好的有效值,否则一旦发生第一个周期性中断,一切都会崩溃并烧毁。

+0

谢谢〜我理解初始化堆栈段的重要性。什么是'第一次定期中断'? – sam 2012-01-01 09:50:20

+0

如果我没有初始堆栈段,我可以使用多大堆栈?我可以为堆叠段设置多大? – sam 2012-01-01 09:52:02

+1

IBM PC有一个周期性中断控制器芯片,它定期产生硬件中断。 (每秒约50次)发生其中一个中断时,必须有一个有效的堆栈,否则会发生崩溃。这就是为什么我们在处理堆栈段寄存器或堆栈指针寄存器之前始终禁止中断('cli'),并在之后重新启用它们('sti')的原因。 – 2012-01-01 09:55:22