1.一个尺寸足够小的u盘(尺寸100MB左右为宜)。
2.采用DiskGenius操作u盘
2.1.清空u盘所有扇区。
2.2.转换启动模式--转换为usb-fdd。文件系统选择fat-12。
这样就得到一个启动模式为usb-fdd,文件系统为fat-12的u盘。
对u盘这样无扇区,磁头,磁道的存储介质。BIOS提供如下方法来提供访问方法。
INT 13h, AH=42h
1.DL=磁盘驱动器号
2.DS:SI指向硬盘地址包结构
硬盘地址包可分16B,24B。16B中,缓存区地址32位;24B中,如偏移04h处为FFFFh:FFFFh,则缓存区地址采用64位;
偏移 尺寸 描述
00h 1B 结构尺寸
01h 1B 保留
02h 2B 传输扇区数
04h 4B 缓存区地址(段:偏移)
08h 8B LBA型起始扇区编号(从0开始)
10h 8B 64位缓存区地址
用DiskGenius查看u盘首个扇区二进制数据,按表格进行解析即可。
偏移 | 尺寸 | 内容 | 简写 | |
0 | 3 | 跳转指令 | BS_jmpBoot | |
3 | 8 | 生产商 | BS_OEMName | |
11 | 2 | 每扇区字节数 | BPB_BytesPerSec | |
13 | 1 | 每簇扇区数 | BPB_SecPerClus | |
14 | 2 | 保留扇区数 | BPB_RsvdSecCnt | |
16 | 1 | FAT表数 | BPB_NumFATs | |
17 | 2 | 根目录支持项数 | BPB_RootEntCnt | |
19 | 2 | 扇区总数 | BPB_TotSec16 | |
21 | 1 | 介质 | BPB_Media | |
22 | 2 | 每FAT扇区数 | BPB_FATSz16 | |
24 | 2 | 每磁道扇区数 | BPB_SecPerTrk | |
26 | 2 | 磁头数 | BPB_NumHeads | |
28 | 4 | 隐藏扇区数 | BPB_HiddSec | |
32 | 4 | 扇区总数 | BPB_TotSec32 | |
36 | 1 | 驱动器号 | BS_DrvNum | |
37 | 1 | 保留 | BS_Reserved1 | |
38 | 1 | 扩展引导标记 | BS_BootSig | |
39 | 4 | 卷序列号 | BS_VolID | |
43 | 11 | 卷标 | BS_VolLab | |
54 | 8 | 文件系统类型 | BS_FileSysType | |
62 | 448 | 自由使用 | Free | |
510 | 2 | 结束标志 |
进一步说明:
因为我们前面对u盘执行了扇区清理,格式化为FAT12文件系统,设置为USB-FDD启动。所以,u盘首个扇区的数据组织及其含义就必须按上述规范来。
上述规范是文件系统,引导扇区综合作用的结果。
文件系统关注的是在指定偏移,精确定义文件系统起作用所依赖的各项参数。
引导扇区关注的是,扇区将被BIOS自动加载到物理地址0x7c00处,并从扇区起始位置取指令,执行指令。扇区尺寸是512字节。扇区结尾两个字节必须是0xAA55。