硬盘的0柱面、0磁头、1扇区称为主引导扇区,FDISK程序写到该扇区的内容称为主引导记录(MBR)。该记录占用512个字节,它用于硬盘启动时将系统控制权交给用户指定的,并在分区表中登记了的某个操作系统区。
1.MBR的读取
硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。
用INT13H的读磁盘扇区功能的调用参数如下:
入口参数:AH=2 (指定功能号)
AL=要读取的扇区数
DL=磁盘号(0、1-软盘;80、81-硬盘)
DH=磁头号
CL高2位+CH=柱面号
CL低6位=扇区号
CS:BX=存放读取数据的内存缓冲地址
出口参数:CS:BX=读取数据存放地址
错误信息:如果出错CF=1 AH=错误代码
用DEBUG读取位于硬盘0柱面、0磁头、1扇区的操作如下:
A>DEBUG
-A 100
XXXX:XXXX MOV AX,0201 (用功能号2读1个扇区)
XXXX:XXXX MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)
XXXX:XXXX MOV CX,0001 (读0柱面,1扇区)
XXXX:XXXX MOV DX,0080 (指定第一物理盘的0磁头)
XXXX:XXXX INT 13
XXXX:XXXX INT 3
XXXX:XXXX (按回车键)
-G=100 (执行以上程序段)
-D 1000 11FF (显示512字节的MBR内容)
2.MBR的组成
一个扇区的硬盘主引导记录MBR由4个部分组成。
主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序。
出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。
0000-0088
|
Master Boot Record
主引导程序
|
主引导
程序
|
0089-01BD
|
出错信息数据区
|
数据区
|
01BE-01CD
|
分区项1(16字节)
|
分区表
|
01CE-01DD
|
分区项2(16字节)
|
01DE-01ED
|
分区项3(16字节)
|
01EE-01FD
|
分区项4(16字节)
|
01FE
|
55
|
结束标志
|
01FF
|
AA
|
3.MBR中的分区信息结构
占用512个字节的MBR中,偏移地址01BEH--01FDH的64个字节,为4个分区项内容(分区信息表)。它是由磁盘介质类型及用户在使用 FDISK定义分区时确定的。在实际应用中,FDISK对一个磁盘划分的主分区可少于4个,但最多不超过4个。每个分区表的项目是16个字节,其内容含义如下表所示。
存贮字节位
|
内容及含义
|
第1字节
|
引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。
|
第2、3、4字节
|
本分区的起始磁头号、扇区号、柱面号。其中:
磁头号——第2字节;
扇区号——第3字节的低6位;
柱面号——为第3字节高2位+第4字节8位。
|
第5字节
|
分区类型符。
00H——表示该分区未用(即没有指定);
06H——FAT16基本分区;
0BH——FAT32基本分区;
05H——扩展分区;
07H——NTFS分区;
0FH——(LBA模式)扩展分区(83H为Linux分区等)。
|
第6、7、8字节
|
本分区的结束磁头号、扇区号、柱面号。其中:
磁头号——第6字节;
扇区号——第7字节的低6位;
柱面号——第7字节的高2位+第8字节。
|
第9、10、11、12字节
|
本分区已用的扇区数。 |
第13、14、15、16字节
|
本分区的总扇区数。 |
4.MBR的主要功能及工作流程
在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处继续执行。
下面就是硬盘的MBR代码分析:
其中的引导扇区是指硬盘相应分区的第一个扇区,是和操作系统有关的。操作系统的引导是由它来完成的,而MBR并不负责,MBR和操作系统无关。引导扇区的任务是把控制权转交给操作系统的引导程序。
程序流程:
1 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)
2 搜索可引导分区,即80H标志
成功:goto 3
失败:跳入ROM BASIC
无效分区表:goto 5
3 读引导扇区
失败:goto 5
成功:goto 4
4 验证引导扇区最后是否为55AAH
失败:goto 5
成功:goto 6
5 打印错误进入无穷循环
6 跳到0:7C00H进行下一步启动工作
5、硬盘逻辑驱动器的分区表链结构
硬盘是由很多个512字节的扇区组成,而这些扇区会被组织成一个个的“分区”。
硬盘的分区规则是:一个分区的所有扇区必须连续,硬盘可以有最多4个物理上的分区,这4个物理分区可以时个主分区或者3个主分区加一个扩展分区。在DOS/Windows管理下的扩展分区里,可以而且必须再继续划分逻辑分区(逻辑盘)。
扩展分区的信息位于硬盘分区表(DPT)中, 而逻辑驱动器的信息则位于扩展分区的起始扇区, 即该分区的起始地址(面/扇区/磁道)所对应的扇区, 该扇区中的信息与硬盘主引导扇区的区别是不包含MBR, 而16字节的分区信息则表示的是逻辑驱动器的起始和结束地址等。
MBR( Master Boot Record )主引导记录包含两部分的内容,前446字节为启动代码及数据,而从446(0x1BE)开始则是分区表,分区表由四个分区项组成,每个分区项数据为16字节,记录了启动时需要的分区参数。
分享到:
相关推荐
硬盘相关\硬盘相关知识与操作\硬盘主引导记录(MBR)及其结构详解.doc
主引导扇区:硬盘的0柱面、0磁头、1扇区(也叫主引导记录MBR),大小为512Byte。 分区表(DPT):位于主引导分区,从偏移01BEH开始到偏移01FDH结束的64字节。 NTFS和fat32格式的16进制文件格式截图。
硬盘知识 硬盘逻辑结构 硬盘MBR详解 pdf 文档格式,很清晰的版本。
硬盘知识,硬盘逻辑结构,硬盘MBR详解 硬盘知识,硬盘逻辑结构,硬盘MBR详解
硬盘的引导记录(MBR)是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它
可以用来修复硬盘mbr,当主引导区被病毒破坏或清除linux下的grub都可以。使用时最好关闭杀毒软件,一般的杀软会报时病毒的,本人用他清除linux的grub,非常好用。
硬盘引导区解析器,读取硬盘主引导记录MBR的数据并进行简单的分析。 包含分区表、主分区、拓展分区,以下不看垃圾CSDN越改越垃圾,需要免费找我
通过BIOSDISK对硬盘主引扇区进行备份
资源中提供了硬盘主引导扇区、分区表和分区引导扇区(MBR、DPT、DBR、BPB)详解
主引导记录(MBR)的反汇编分析,自己用DEBUG跟踪,把一些汇编代码做了注释
WIN98SE硬盘主引导记录代码反汇编分析硬盘引导记录MBR(Master Boot Record)是指硬盘之0面0道1扇区之内容,PC及其兼容机之ROM BIOS约定在上电及POST自检成功后,将其从硬盘读出,放置在内存0:7C00处,然后转去该...
Linux系统修复之mbr主引导记录丢失
硬盘分区表知识详解硬盘MBR
自己翻译的维基百科词条“主引导记录(MBR)”。学习系统引导时,看看大有裨益。
Master Boot LoaDer是支持引导各种不同分区的多功能引导记录装载器。可以引导多个磁盘分区上的多个系统,同时将另一系统盘隐藏,... 占用MBR第一个扇区,支持多个分区引导(无论主逻辑分区) 安装时,不是真写 MBR ,
本文件收集网上资料! 更多资料可参照文件内地址进行查看!
很多朋友对于硬盘的主引导扇区里的MBR(Main Boot Record)和DPT (Disk Partition Table)的区别有些分不太清。于是我想把它写个简短的 介绍,希望能对这些朋友有点帮助。
详细讲解了硬盘的基础知识和结构 这是个不错的资料 很有帮助
解析XP系统及WIN7系统安装后的MBR构成,U盘和光盘的MBR比较特殊,U盘MBR损坏后同样可以使用其它U盘的MBR进行修复(代码段)
这是DOS下的grldr.mbr写入工具,使用很方便。