FAT16檔案系統的DBR由5部分組成,跳轉指令,OEM,BPB,引導程式,結束标志
1:跳轉指令
跳轉指令本身占用2位元組,它将程式執行流程跳轉到引導程式處。例如,目前DBR中的“EB 3C”,就是代表彙編語言中的“JMP 3C”。需要注意該指令本身占用2個位元組,計算跳轉目标位址時該指令的下一個位元組為基準,是以實際上執行的下一條指令應該位于3E。緊接着跳轉是一條空的指令NOP(90H)
2:OEM代号
占用8個位元組,這個說明了微軟不同的作業系統版本。修改這個值不影響檔案系統的使用。
3:BPB(BIOSParameter Block,BIOS參數塊)
BPB從DBR的第12個位元組開始,占用51個位元組,記錄了有關該檔案系統的重要資訊,其中各個參數的含義見下表
位元組偏移 | 字段長度 | 字段名與定義 |
0X0B | 2 | 每扇區位元組數 |
0X0D | 1 | 每簇扇區數 |
0X0E | 2 | DBR及保留扇區數 |
0X10 | 1 | FAT個數 |
0X11 | 2 | 根目錄最大所能容納的目錄項數 |
0X13 | 2 | 扇區總數 |
0X15 | 1 | 媒體描述符 |
0X16 | 2 | 每FAT表包含的扇區數 |
0X18 | 2 | 每磁道扇區數 |
0X1a | 2 | 磁頭數 |
0X1C | 4 | 隐藏扇區數 |
0X20 | 4 | 扇區總數,大于32M的分區扇區總數記錄在這裡 |
0X24 | 1 | BIOS驅動器号 |
0X25 | 1 | 未使用 |
0X26 | 1 | 擴充引導标記 |
0X27 | 4 | 卷序列号 |
0X2B | 11 | 卷标 |
0X36 | 8 | 檔案系統類型 |
下面對這些參數做詳細的分析
(1) 每扇區位元組數
每扇區位元組數記錄每個邏輯扇區的大小,其常見的值為512,但是并不是固定的值。該值可以由程式定義,合法值包括512,1024,2048,4096。
(2) 每簇扇區數
每簇扇區數記錄着檔案系統的簇大小,即由多少個扇區組成一個簇。
簇是FAT12,FAT16及FAT32檔案系統下資料的最小存儲單元,一個簇由一組連續的扇區組成,簇所含的扇區數必須是2的整數次幂,如1,2,4,8,16,32,64,128.
在Windows 2000以前族最大值為64扇區,之後最大值為128.
在FAT檔案系統中,所有的族是從2開始編号,每個簇都有一個自己的位址編号,但是所有的族都位于資料區,在資料區之前沒有族。
(3) DBR及保留扇區數
DBR及保留扇區數是DBR到FAT1表之間的扇區數,或者說是FAT1的開始扇區号
(4) FAT個數
一般為2.
(5) 根目錄項數
根目錄項數是指FAT16的FDT中最大所能容納的目錄項數,這個數值一般都是512,也就是說FDT中隻能存放512個目錄項,而每一個目錄項的大小為32位元組。
(6) 分區總扇區數
小于32M的分區記錄在這裡,因為這個位置隻有2個位元組,也就是16位,是以能管理的最大分區為216 * 512 = 32M。對于大于32M的分區,用32位記錄在20H-23H偏移處。
(7) 媒體描述符
媒體描述符是描述磁盤媒體的參數,根據磁盤性質的不同,取不同的值
如F8 硬碟
F9 雙面5.25英寸軟碟(15扇區高密度),雙面3.5英寸軟碟
。。。。。。。。。。。。。。。。不一一列舉了。
(8) 每FAT扇區數
略
(9) 每磁道扇區數
其值一般為63.
(10)磁頭數
其值一般為255.
(11)隐藏扇區數
是MBR到DBR之間的扇區數,對于擴充分區中邏輯驅動順來說,是其EBR到DBR之間的扇區數。
(12)分區總扇區數
(13)BIOS驅動器号
這是BIOS的INT 13H所描述的裝置号碼,一般把硬碟定義為8xh.
(14)擴充引導标記
用來确認後面的三個參數是否有效,一般值為29H
(15)卷序列号
(16)卷标
不在這裡進行記錄,放到目錄項中來管理
(17)檔案系統類型
使用ASCII碼記錄目前分區的檔案系統類型
4:引導程式
Fat16的DBR引導程式占用448個位元組,在98 之前的系統之下,這段代碼負責完成DOS三個系統檔案的裝入; 2000之後的系統中,其負責完成将系統檔案NTLDR裝入。對于一個沒有作業系統的分區來講,這段代碼是沒有作用的。
5:結束标志
為固定值“55 AA”