FAT12文件系统磁盘的头

; ----------------------------------------------------------------------

; FAT12 磁盘的头,启动盘使用FAT12文件系统,FAT12比较简单,且可以为后边的文件系统学习打下基础

; ----------------------------------------------------------------------

BS_OEMName  DB 'ChenuSto'   ; OEM String, 必须 8 个字节

 

BPB_BytsPerSec  DW 512      ; 每扇区字节数

BPB_SecPerClus  DB 1        ; 每簇多少扇区

BPB_RsvdSecCnt  DW 1        ; Boot 记录占用多少扇区

BPB_NumFATs DB 2            ; 共有多少 FAT 表

BPB_RootEntCnt  DW 224      ; 根目录文件数最大值

BPB_TotSec16    DW 2880     ; 逻辑扇区总数

BPB_Media   DB 0xF0         ; 媒体描述符

BPB_FATSz16 DW 9            ; 每FAT扇区数

BPB_SecPerTrk   DW 18       ; 每磁道扇区数

BPB_NumHeads    DW 2        ; 磁头数(面数)

BPB_HiddSec DD 0            ; 隐藏扇区数

BPB_TotSec32    DD 0        ; 如果 wTotalSectorCount 是 0 由这个值记录扇区数

 

BS_DrvNum   DB 0            ; 中断 13 的驱动器号

BS_Reserved1    DB 0        ; 未使用

BS_BootSig  DB 29h          ; 扩展引导标记 (29h)

BS_VolID    DD 0            ; 卷序列号

BS_VolLab   DB 'FlyanxOS'   ; 卷标, 必须 11 个字节

BS_FileSysType  DB 'FAT12   '   ; 文件系统类型, 必须 8个字节  

;------------------------------------------------------------------------

## 定义一些常量

; -------------------------------------------------------------------------

; 基于 FAT12 头的一些常量定义,如果头信息改变,下面的常量可能也要做相应改变

; -------------------------------------------------------------------------

; BPB_FATSz16

FATSz equ 9

; 根目录占用空间:

; RootDirSectors = ((BPB_RootEntCnt*32)+(BPB_BytsPerSec–1))/BPB_BytsPerSec

; 但如果按照此公式代码过长,故定义此宏

RootDirSectors      equ 14

 

; Root Directory 的第一个扇区号    = BPB_RsvdSecCnt + (BPB_NumFATs; FATSz)

SectorNoOfRootDirectory equ 19

 

; FAT1 的第一个扇区号  = BPB_RsvdSecCnt

SectorNoOfFAT1      equ 1

 

; DeltaSectorNo = BPB_RsvdSecCnt + (BPB_NumFATs; FATSz) - 2

; 文件的开始Sector号 = DirEntry中的开始Sector号 + 根目录占用Sector数目

;                      + DeltaSectorNo

DeltaSectorNo       equ 17

标签: none

添加新评论