主引导记录MBR
2021-07-01
112
0
磁盘分区
MBR是主引导记录,它存在于整个磁盘的最开始的那个扇区,地址为0号扇区,此扇区一般为512字节大小。
MBR扇区的内容是:
内容 | 说明 |
---|---|
前446字节 | 引导程序及参数 |
中间64字节 | 分区表 |
最后2字节 | 0x55,0xaa |
我们可以使用工具winhex软件打开一个磁盘,查看MBR内容。
在MBR中存储的引导程序,为的是从BISO中接过系统的控件权,即处理器使用权。MBR对应的这512字节在当BISO即将释放处理器的使用权前,将此512字节复制到物理内存的0x7c00位置处,然后跳转到此位置执行,这样BIOS引导完成,进行MBR引导。
MBR程序主流程
程序流程:
1 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)
2 搜索可引导分区,即80H标志
成功:goto 3
失败:跳入ROM BASIC
无效分区表:goto 5
3 读引导扇区到7C00
失败:goto 5
成功:goto 4
4 验证引导扇区最后是否为55AAH
失败:goto 5
成功:goto 6
5 打印错误进入无穷循环
6 跳到0:7C00H进行下一步启动工作
CPU加电启动过程
在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入7C00处
然后将控制权交给主引导代码。主引导代码的任务包括:
- 扫描分区表,找到一个激活(可引导)分区;
- 找到激活分区的起始扇区;
- 将激活分区的引导扇区装载到内存7C00处;
- 将控制权交给引导扇区代码;
如果主引导代码无法完成上述任务,它将显示以下错误信息之一:
- No active partition.
- Invalid partition table.
- Error loading operating system.
- Missing operating system.
机器加电或按reset键后都要进行系统复位,复位后CS=FFFFH,IP=0000H,那么自然就从FFFF:0000H
处开始执行指令,这个地方只有一条JMP指令跳转到系统自检程序处,系统自检完成后把软盘的第一
个扇区(如果由软盘启动)或者硬盘的第一个扇区,即MBR扇区(如果由硬盘启动)读入到0:7C00H处
然后把控制权交出,从0:7C00H处继续执行。