• 引导扇区(Boot Sector)
• 位于第一个扇区,在软盘上就是0柱面(磁道)0磁头1扇区。
• 文件分配表(FAT)
• 紧接着引导扇区的是两个完全相同的FAT表,每个FAT表占用9个扇区
• 根目录区
• FAT表之后是根目录区,根目录区长度不固定
• 数据区
• 根目录后面就是数据区
格式如下:
名称 | 偏移 | 长度 | 内容 | 软盘参考值 |
BS_jmpBoot | 0 | 3 | jmp LABEL_START nop | |
BS_OEMName | 3 | 8 | 厂商名 | 'ForrestY' |
BPB_BytsPerSec | 11 | 2 | 每扇区字节数 | 0x200(即十进制512) |
BPB_SecPerClus | 13 | 1 | 每簇扇区数 | 0x01 |
BPB_RsvdSecCnt | 14 | 2 | Boot记录占用多少扇区 | 0x01 |
展开表格
它包含有两份文件分配表,这是出于系统冗余考虑,尽管它很少使用,即使是磁盘修复工具也很少使用它。它是分区信息的映射表,指示簇是如何存储的。
每个FAT项占12bit,这也所被成为FAT12的原因,FAT项的值代表的是文件下一个簇号,但如果值大于等于0xFF8,则表示当前簇已经是本文件的最后一个簇。如果值是0xFF7,表示它是一个坏簇。
一个FAT项可能跨越两个扇区,编码实现的过程要考虑在内。
根目录区位于第二个FAT表之后,开始扇区号为19,它由若干个目录条目(Directory Entry)组成,条目最多有BPB_RootEntCnt个。每个条目占用32个字节,它的格式如下:
名称 | 偏移 | 长度 | 描述 |
DIR_Name | 0 | 0xB | 文件名8字节,扩展名3字节 |
DIR_Attr | 0xB | 1 | 文件属性 |
保留 | 0xC | 10 | |
DIR_WrtTime | 0x16 | 2 | 最后修改时间 |
DIR_WrtDate | 0x18 | 2 | 最后修改日期 |
展开表格
数据区在根目录区后,数据区开始扇区号为根目录区起始扇区号+根目录区大小,即19+BPB_RootEntCnt * 32 / BPB_BytsPerSec。
Copyright 2023 fuwu029.com赣ICP备2022008914号-4