我知道 BIOS 按照其配置的順序(可以在 BIOS 設定中更改)通過連接的存盤設備(軟盤、CD、硬碟驅動器等),尋找神奇的 16 位值( 0xAA55) 在每個扇區的第一個扇區的末尾,并在找到一個時加載(剛剛變成的)引導扇區并呼叫它。
讓我們將包含加載的引導扇區的設備命名為 X。我的問題是:您是否可以識別 X 并使用 BIOS 的磁盤中斷功能讀取它,而不必測驗每個連接的設備,而不是遍歷所有設備?例如,BIOS 是否將 X 的 ID 存盤在某處?
謝謝。
PS我正在使用BOCHS模擬IA-32機器,我總是從軟盤#1加載,所以我可以硬編碼從中讀取,但為了撰寫干凈的代碼和學習我問。我承認測驗所有設備絕對實用。
uj5u.com熱心網友回復:
當 BIOS 將控制權傳遞給引導加載程式時,它會將“BIOS 設備 ID”存盤在DL暫存器中,因此引導加載程式可以只使用它被告知用于所有后續 BIOS 功能的設備 ID。
主要問題是“BIOS設備ID”在早期啟動后(作業系統開始使用自己的磁盤驅動程式并停止使用BIOS功能后)相對無用;因為沒有簡單的方法來確定哪個設備碰巧獲得了哪個“BIOS 設備 ID”;特別是對于像“RAID 1 鏡像”這樣的情況,您可能有 2 個幾乎相同的硬碟驅動器,其中的內容幾乎相同。
我承認測驗所有設備絕對實用。
呵呵,沒有。在 2 個不同的硬碟驅動器上安裝 2 個獨立的作業系統副本(這樣您就有 2 個引導加載程式,每個作業系統副本一個),并且“測驗所有設備”無法區分您啟動的作業系統之間的差異和你沒有啟動的作業系統。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392650.html
上一篇:Z80除法演算法運行不正常
