2012-01-01 89 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