硬盘自举引导是由硬盘ROM BIOS、硬盘主引导记录、DOS引导记录和系统文件完成的。ROM BIOS,共8K字节,提供自检、自举能力及建立硬盘I/O等一系列操作,所含的硬盘自举引导模块是中断例行程序INT19H;硬盘主引导记录位于0柱0头1扇区(物理扇区),排在逻辑0扇区之前,包括硬盘自举引导程序和分区信息表,扇区的最后两个字节为“55A”,是隐含扇区,用DEBUG命令或DOS功能调用INT 21H均无法读写,通常用ROM BIOS提供的硬盘中断服务程序INT13H进行绝对读写,DOS分区引导记录位于硬盘0柱0头2扇区(物理扇区,整个硬盘划归DOS分区时),也即逻辑0扇区,结束标志也是“55AA”。
系统加电时,电脑的执行流程如下:
CPU进入复位状态井强置CS:IP=FFF:0000H,即由该地址取得第一条指令(跳转指令)。 系统转移到ROM BIOS程序区,执行自检程序,若自检成功,则发指令INT19H进行系统引导,否则揭示错误信息并进入死循环。 INT19H首先试图复位软盘系统,若成功,则读软盘第1扇的DOS引导记录到起始地址为0000:7C00H的内存单元执行,继而进入DOS,否则复位硬盘系统。 成功则读硬盘主引导记录到起始地址为0000:7C00H的内存单元,并执行主引导程序,若复位失败,读主引导记录时出错或硬盘物理第1扇最后两个字节不是“55AA”,均显示: “BASIC…OK”转入ROM BASIC。 硬盘主引导程序的主要功能是找出当前的活动分区,即查看分区信息表中4个分区引导标志,当DOS分区的引导标志为80H,而其他分区为00H,就将DOS引导记录读到内存0000:7C00H处。 若4个分区均没有引导标志(80H),则发INT18指令,进入ROM BASIC; 若引导标志(80H)多于1个或某分区为引导标志既非80H,又非00H,则显示“Invalid partition table”并进入死循环。 找到活动分区后,主引导记录程序试图将DOS引导记录读到内存0000:7C00H处,若读失败,则显示:“Error LoadongSystem”并进入死循环。 读成功则检查DOS引导扇区最后两个字节是否为“55AA”,正确则跳转0000:7C00H执行刚读入的DOS引导程序,若否,则显示: “Missing operating system”并进入死循环。 引导程序以AH=OINT13H指令复位磁盘系统,若失败,则显示: “Non—system disk or disk error” “Replace and strike any key when ready” 等待键盘输入,以转向INT19H进行重新引导。 若成功,则计算文件目录区以及文件数据区的起始位扇区号,并读根目录第1扇到0050:007H处,若读失败,则显示上一错误信息。 若正确则读“IBMBIO.COM”文件到内存。若读错误,则显示:
“Disk boot failure”陷入死循环。
若读成功,则由IBMBIO.COM,IBMDOS.COM和COMMAND.COM三个系统文件继续进行DOS的安装,在这期间若找不到COMMAND.COM或该文件已损坏,则显示“Bod or missing command interpreter”。 否则正常引导,直到出现系统提示符,等待用户键入DOS命令。 至此,系统进入DOS工作状态。
2.硬盘自举失败的修复
若硬盘设备正常,硬盘自举失败与硬盘主引导模块、DOS引导模块和系统文件密切相关。譬如开机进入ROM BASIC很可能是硬盘主引导记录损坏;而引导失败揭示错误信息时,则与分区信息表、DOS引导记录和系统文件的损坏或丢失有关。对于不同的错误信息,应该找出其症结所在,继而采取与之相应的修复手法,现分述如下: (1)修复硬盘的主引导记录 采用硬盘主引导模块的通用性,由另一台正常且硬盘分区情况相同的微机上获取该模块,然后将之写回发生故障的硬盘,此法简单快捷,即使对主引导块结构了解甚浅,操作起来也不感到困难,步骤如下: ①启动正常的微机,并在驱动器A置一已格式化的空盘,键入以下语句序列: C>DEBUG —A 100
????:0100 MOV AX,0201;读1个扇区 ????:0103 MOV BX,1000;置缓冲区CS:1000
????:0106 MOV CX,0001;读0柱第1扇 ????:0109 MOV DX,0080;硬盘0号磁头 ????:010C INT 13;硬盘I/O中断
????:010E INT 20;程序终结。 ????:0110
—G=100
—W 1000 0 50 1
至此,已得到完好的硬盘主引导块并写在软盘逻辑50H扇区。 ②以DOS软盘启动出现故障的微机,进入DEBUG后在驱动器A置入上述软盘,在DEBUG状态键入语句序列:
—L 1000 0 501
—A 100
????:0100 MOV AX,0301:写1个扇区 ????:0103 MOV BX,1000
????:0106 MOV DX,0001
????:0109 MOV DX,0080
????:010C INT 13
????:010E INT 20
????:0110
—G=100
至此,硬盘主引导记录修复完毕。
|