MBR功能   MBR

 


文章详见:https://www.bytekits.com/diskpart/disk-partintro.html

MBR是主引导记录,它存在于整个磁盘的最开始的那个扇区,地址为0号扇区,此扇区一般为512字节大小。
MBR扇区的内容是:

内容说明
前446字节引导程序及参数
中间64字节分区表
最后2字节0x55,0xaa

我们可以使用工具winhex软件打开一个磁盘,查看MBR内容。https://www.bytekits.com/diskpart/disk-partmbr-asm.html

在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进行下一步启动工作

分区表内容

分区表总共64字节,分为四个区,每个区用16个字节描述,详情如下:
每一个分区表项占用0x10个字节,其相关的含义如下:

偏移量0:这个字节表示活动标志,若为0x00h则表示该分区为非活动分区,若为0x08h则表示该分区为活动分区
偏移量1~3: 这3个字节表示该分区的起始磁头号(1字节)、扇区号(2字节低6位)、柱面号(2字节高2位+3字节)号
偏移量4:这个字节表示分区文件系统标志,0x05h,0x0Fh 表示扩展分区;0x06h表示FAT16分区;0x0Bh表示FAT32分区;0x07h表示NTFS 分区(当然有其他的标识)
偏移量5~7:这3个字节表示该分区的结束磁头号、扇区号、柱面号
偏移量8~11:这4个字节表示逻辑起始扇区号(小端)
偏移量12~15:这4个字节表示分区占用的扇区数目(小端)

从这里可以看出,即有CHS的寻址方式,也有LBA的寻址方式所需要的参数。


CPU加电启动过程

在CPU上电之后,若由硬盘启动,则BIOS将硬盘的主引导记录(位于0柱面、0磁道、1扇区)读入7C00处
然后将控制权交给主引导代码。主引导代码的任务包括:

  1. 扫描分区表,找到一个激活(可引导)分区;
  2. 找到激活分区的起始扇区;
  3. 将激活分区的引导扇区装载到内存7C00处;
  4. 将控制权交给引导扇区代码;

如果主引导代码无法完成上述任务,它将显示以下错误信息之一:

  • 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处继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

站长漫谈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值