1 概述
MBR(Master Boot Record),硬盘的主引导扇区,位于硬盘的cylinder 0, head 0, sector 1 (Sector是从1开始的)。MBR可以通过FDISK创建,通过INT 13h的fun 2来读取。 MBR的功能包括:
l 检查分区表
l 搜索可引导分区
l 加载活动分区的第一扇区(DOS Boot Record)
2 读取MBR
入口参数:AH=2 (指定功能号)
AL=要读取的扇区数
DL=磁盘号(0、1-软盘;80、81-硬盘)
DH=磁头号
CL高2位+CH=柱面号
CL低6位=扇区号
CS:BX=存放读取数据的内存缓冲地址
出口参数:CS:BX=读取数据存放地址
错误信息:如果出错CF=1 AH=错误代码
debug32
MOV AX,0201 (用功能号2读1个扇区)
MOV BX,1000 (把读出的数据放入缓冲区的地址为CS:1000)
MOV CX,0001 (读0柱面,1扇区)
MOV DX,0080 (指定第一物理盘的0磁头)
INT 13
3 读出的MBR数据
4 MBR内容解析
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 |
5 分区表格式
存贮字节位 | 内容及含义 |
第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字节 | 本分区之前已用了的扇区数。 |