硬盤自舉引導(dǎo)是由硬盤ROM BIOS、硬盤主引導(dǎo)記錄、DOS引導(dǎo)記錄和系統(tǒng)文件完成的。ROM BIOS,共8K字節(jié),提供自檢、自舉能力及建立硬盤I/O等一系列操作,所含的硬盤自舉引導(dǎo)模塊是中斷例行程序INT19H;硬盤主引導(dǎo)記錄位于0柱0頭1扇區(qū)(物理扇區(qū)),排在邏輯0扇區(qū)之前,包括硬盤自舉引導(dǎo)程序和分區(qū)信息表,扇區(qū)的最后兩個字節(jié)為“55A”,是隱含扇區(qū),用DEBUG命令或DOS功能調(diào)用INT 21H均無法讀寫,通常用ROM BIOS提供的硬盤中斷服務(wù)程序INT13H進(jìn)行絕對讀寫,DOS分區(qū)引導(dǎo)記錄位于硬盤0柱0頭2扇區(qū)(物理扇區(qū),整個硬盤劃歸DOS分區(qū)時),也即邏輯0扇區(qū),結(jié)束標(biāo)志也是“55AA”。
系統(tǒng)加電時,電腦的執(zhí)行流程如下:
CPU進(jìn)入復(fù)位狀態(tài)井強(qiáng)置CS:IP=FFF:0000H,即由該地址取得第一條指令(跳轉(zhuǎn)指令)。 系統(tǒng)轉(zhuǎn)移到ROM BIOS程序區(qū),執(zhí)行自檢程序,若自檢成功,則發(fā)指令I(lǐng)NT19H進(jìn)行系統(tǒng)引導(dǎo),否則揭示錯誤信息并進(jìn)入死循環(huán)。 INT19H首先試圖復(fù)位軟盤系統(tǒng),若成功,則讀軟盤第1扇的DOS引導(dǎo)記錄到起始地址為0000:7C00H的內(nèi)存單元執(zhí)行,繼而進(jìn)入DOS,否則復(fù)位硬盤系統(tǒng)。 成功則讀硬盤主引導(dǎo)記錄到起始地址為0000:7C00H的內(nèi)存單元,并執(zhí)行主引導(dǎo)程序,若復(fù)位失敗,讀主引導(dǎo)記錄時出錯或硬盤物理第1扇最后兩個字節(jié)不是“55AA”,均顯示: “BASIC…OK”轉(zhuǎn)入ROM BASIC。 硬盤主引導(dǎo)程序的主要功能是找出當(dāng)前的活動分區(qū),即查看分區(qū)信息表中4個分區(qū)引導(dǎo)標(biāo)志,當(dāng)DOS分區(qū)的引導(dǎo)標(biāo)志為80H,而其他分區(qū)為00H,就將DOS引導(dǎo)記錄讀到內(nèi)存0000:7C00H處。 若4個分區(qū)均沒有引導(dǎo)標(biāo)志(80H),則發(fā)INT18指令,進(jìn)入ROM BASIC; 若引導(dǎo)標(biāo)志(80H)多于1個或某分區(qū)為引導(dǎo)標(biāo)志既非80H,又非00H,則顯示“Invalid partition table”并進(jìn)入死循環(huán)。 找到活動分區(qū)后,主引導(dǎo)記錄程序試圖將DOS引導(dǎo)記錄讀到內(nèi)存0000:7C00H處,若讀失敗,則顯示:“Error LoadongSystem”并進(jìn)入死循環(huán)。 讀成功則檢查DOS引導(dǎo)扇區(qū)最后兩個字節(jié)是否為“55AA”,正確則跳轉(zhuǎn)0000:7C00H執(zhí)行剛讀入的DOS引導(dǎo)程序,若否,則顯示: “Missing operating system”并進(jìn)入死循環(huán)。 引導(dǎo)程序以AH=OINT13H指令復(fù)位磁盤系統(tǒng),若失敗,則顯示: “Non—system disk or disk error” “Replace and strike any key when ready” 等待鍵盤輸入,以轉(zhuǎn)向INT19H進(jìn)行重新引導(dǎo)。 若成功,則計算文件目錄區(qū)以及文件數(shù)據(jù)區(qū)的起始位扇區(qū)號,并讀根目錄第1扇到0050:007H處,若讀失敗,則顯示上一錯誤信息。 若正確則讀“IBMBIO.COM”文件到內(nèi)存。若讀錯誤,則顯示:
“Disk boot failure”陷入死循環(huán)。
若讀成功,則由IBMBIO.COM,IBMDOS.COM和COMMAND.COM三個系統(tǒng)文件繼續(xù)進(jìn)行DOS的安裝,在這期間若找不到COMMAND.COM或該文件已損壞,則顯示“Bod or missing command interpreter”。 否則正常引導(dǎo),直到出現(xiàn)系統(tǒng)提示符,等待用戶鍵入DOS命令。 至此,系統(tǒng)進(jìn)入DOS工作狀態(tài)。
2.硬盤自舉失敗的修復(fù)
若硬盤設(shè)備正常,硬盤自舉失敗與硬盤主引導(dǎo)模塊、DOS引導(dǎo)模塊和系統(tǒng)文件密切相關(guān)。譬如開機(jī)進(jìn)入ROM BASIC很可能是硬盤主引導(dǎo)記錄損壞;而引導(dǎo)失敗揭示錯誤信息時,則與分區(qū)信息表、DOS引導(dǎo)記錄和系統(tǒng)文件的損壞或丟失有關(guān)。對于不同的錯誤信息,應(yīng)該找出其癥結(jié)所在,繼而采取與之相應(yīng)的修復(fù)手法,現(xiàn)分述如下: ?。?)修復(fù)硬盤的主引導(dǎo)記錄 采用硬盤主引導(dǎo)模塊的通用性,由另一臺正常且硬盤分區(qū)情況相同的微機(jī)上獲取該模塊,然后將之寫回發(fā)生故障的硬盤,此法簡單快捷,即使對主引導(dǎo)塊結(jié)構(gòu)了解甚淺,操作起來也不感到困難,步驟如下: ①啟動正常的微機(jī),并在驅(qū)動器A置一已格式化的空盤,鍵入以下語句序列: C>DEBUG —A 100
????:0100 MOV AX,0201;讀1個扇區(qū) ????:0103 MOV BX,1000;置緩沖區(qū)CS:1000
????:0106 MOV CX,0001;讀0柱第1扇 ????:0109 MOV DX,0080;硬盤0號磁頭 ????:010C INT 13;硬盤I/O中斷
????:010E INT 20;程序終結(jié)。 ????:0110
—G=100
—W 1000 0 50 1
至此,已得到完好的硬盤主引導(dǎo)塊并寫在軟盤邏輯50H扇區(qū)。 ②以DOS軟盤啟動出現(xiàn)故障的微機(jī),進(jìn)入DEBUG后在驅(qū)動器A置入上述軟盤,在DEBUG狀態(tài)鍵入語句序列:
—L 1000 0 501
—A 100
????:0100 MOV AX,0301:寫1個扇區(qū) ????:0103 MOV BX,1000
????:0106 MOV DX,0001
????:0109 MOV DX,0080
????:010C INT 13
????:010E INT 20
????:0110
—G=100
至此,硬盤主引導(dǎo)記錄修復(fù)完畢。
|