FAT12引導軟盤格式:
名稱 | 偏移 | 長度(字節) | 內容 | NASM僞指令 |
BS_jmpBoot | 0 | 3 | 一個短跳轉指令 | DB EB, 4E, 90(三個數前面要加0x) |
BS_OEMName | 3 | 8 | 廠商名 | DB "HARIBOTE" |
BPB_BytsPerSec | 11 | 2 | 每扇區(sector)字節數(必須是512) | DW 512 |
BPB_SecPerClus | 13 | 1 | 每簇扇區數(必須是1) | DB 1 |
BPB_RsvdSecCnt | 14 | 2 | Boot記錄佔用多少扇區(一般是1) | DW 1 |
BPB_NumFATs | 16 | 1 | 共有多少FAT表(必須是2) | DB 2 |
BPB_RootEntCnt | 17 | 2 | 根目錄文件數(條目數)最大值(一般是224) | DW 224 |
BPB_TotSec16 | 19 | 2 | 扇區總數(必須是2280) | DW 2880 |
BPB_Media | 21 | 1 | 介質描述符(必須是0xF0) | DB 0xF0 |
BPB_FATSz16 | 22 | 2 | 每FAT扇區數(必須是9) | DW 9 |
BPB_SecPerTrk | 24 | 2 | 每磁道扇區數(必須是18) | DW 18 |
BPB_NumHeads | 26 | 2 | 磁頭數(面數,必須是2) | DW 2 |
BPB_HiddSec | 28 | 4 | 隱藏扇區數(必須是0) | DD 0 |
BPB_TotSec32 | 32 | 4 | 如果BPB_TotSec16是0,由這個值記錄扇區數 | DD 2880 |
BS_DrvNum | 36 | 1 | 中斷13的驅動器號 | DB 0 |
BS_Reservedl | 37 | 1 | 未使用 | DB 0 |
BS_BootSig | 38 | 1 | 擴展引導標記(必須是0x29) | DB 0x29 |
BS_VolID | 39 | 4 | 卷序列號 | DD 0xFFFFFFFF |
BS_VolLab | 43 | 11 | 卷標 | DB "HARIBOTEOS " |
BS_FileSysType | 54 | 8 | 文件系統類型 | DB "FAT12 " |
填充18個0 | 62 | 18 | 填充18個0 | RESB 18 |
引導代碼及其他 | 80 | ? | 引導代碼、數據 | |
填充0 | $ | 510-$ | 填充0 | RESB 0x1FE-$ |
Boot結束標誌 | 510 | 2 | Boot結束標誌(魔數,必須是0xAA55) | DB 0x55, 0xAA |
固定寫法 | 512 | 8 | 固定寫法 | DB 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00 |
填充0 | 520 | 4600 | 填充0 | RESB 4600 |
固定寫法 | 5120 | 8 | 固定寫法 | DB 0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00 |
填充0 | 5128 | 1469432 | 填充0(直到寫滿1474560B也就是1.44MB軟盤) | RESB 1469432 |
根目錄區中的條目格式:
名稱 | 偏移 | 長度 | 描述 |
DIR_Name | 0 | 0xB | 文件名8字節,擴展名3字節 |
DIR_Attr | 0xB | 1 | 文件屬性 |
保留位 | 0xC | 10 | 保留位 |
DIR_WrtTime | 0x16 | 2 | 最後一次寫入時間 |
DIR_WrtDate | 0x18 | 2 | 最後一次寫入日期 |
DIR_FstClus | 0x1A | 2 | 此條目對應的開始簇號 |
DIR_FileSize | 0x1C | 4 | 文件大小 |