我有三個主要問題僅適用於x86架構,因爲我是intel 80386芯片的用戶。「BIOS中斷調用」是什麼意思
這些是我所知道的基礎知識:中斷表從地址0x0000開始,因此int 0x01指令將搜索地址0x0001。處理器然後將看到地址0x0001中包含的地址,並期望0x0001所指向的地址處的中斷處理程序0x01的開始。
所以我的第一個問題是,中斷處理程序如何指示它自己的結束,並告訴CPU返回進行中斷的進程。指標只是NULL,還是有一個特殊的值來表示處理程序已完成?
第二個問題:在MS-DOS中,硬件中斷0x19用於重新啓動計算機。我想知道這個中斷的處理程序在哪裏。它在BIOS ROM中,這就是爲什麼它被稱爲「BIOS中斷呼叫」?請向我解釋這個詞。此外,由於MS-DOS中斷0x21包含MS-DOS功能(如獲取和打印字符),它在RAM中而不是BIOS,對嗎?這是否意味着它不是BIOS中斷?我想知道如果我加載一箇中斷表與十六進制99中斷,這意味着0x99是最後一個,如果用戶做0x9A(這是一個多於0x99)會發生什麼?
請回答我的這三個問題,因爲我對現在的系統編程有很多瞭解。我很抱歉,如果這是漫長而複雜的。 thanx提前!
很好的解釋。然而,中斷處理程序0x01的指針在0x0:0x0001開始,並在0x0:0x0004結束?如果是這樣,你是說如果用戶使用int 0x02,CPU將搜索地址0x0:0x0005(直到0x0:0x0008)作爲指向中斷處理程序的指針嗎?實際上,我想知道,因爲地址是x86中的雙字值,所以我們將通過什麼地址引用位於0x0開始的雙字值:0x0005?請解釋。 – user3724492 2014-09-05 07:35:18
不,中斷處理程序1的入口長度是4個字節,第一個字節是地址0000:0004,第二個是0000:0005,第三個是0000:0006,最後是0000:0007, 。 '0000:0000' - '0000:0003'的字節組成中斷處理程序0的入口。中斷處理程序2的入口在'0000:0x0008 - 0000:0x000B'。在表中輸入的四個字節是一個雙字值,它是處理程序的地址。 – 2014-09-05 16:03:38
非常感謝。我得到了整個事情(最後)。順便說一句,我正在寫我的虛擬機! – user3724492 2014-09-08 05:40:27