啟動扇區: 1、 offset 00: EB 58 90 JMP指令,字節數 3。灰線。 2、 offset 03: 4D 53 44 $2 53 35 2E 30 MSDOS5.0 廠商版本號。 字節數 8 灰色方框。 以下部分是BIOS block. 3、 offset 0B: 00 02 每扇區字節數:512個 字節數 2. 紅色線。 4、 offset 0D: 08 每族占用的扇區數8個。字節數 1. 綠色方框。 5、offset 0E: 26 00 保留扇區中的保留扇區數 38個。字節數 2. 藍色線。則FAT1的開始地址:38*512=19456=$200. 6、 offset 10: FAT表的個數。一般都為2。 一個作備份用。字節數1. 紅色方框線。 7、 offset 11-20 為一些我們不需要操作的信息。所以沒有寫出來。

以下是FAT32 參數塊。 8、 offset 24 E5 0E FAT表占用的扇區數:3813個。 則FAT表占用的字節數就是 3813*512=1952256byte=1DCA00。一共兩個FAT共占用 1952256*2=3904512個。

根據啟動區、FAT1、FAT2、根目錄、數據區的次序,可以依次計算出它們的首地址: 啟動區:00 FAT1: 38*512=19456=$200. FAT2: 19456+3813(FAT 表占用的扇區數)*512=1971712=1E1600 根目錄區: 1971712+ 3813(FAT 表占用的扇區數)*512=3923968=3BE000. 數據區: 
下面分析根目錄區: $2$2$2$2$2$2$2 
這里使用的是FAT32短文件目錄項,每32個字節表示一個文件(文件夾也是),32個字節的表示定義分別如下 1、0ffset: 00,紅色部分 表示卷標即SD卡名稱,是你在格式化時取的一個名子。8個字節。 2、offset: 20 字節數:8個。 表示文件名稱。全部是以大寫方式表示。文件名:csh302ab. 3、offset:28 字節數:3個。 文件擴展名。 以ASSII碼表示。 4、offset 2B 字節數:1個。 文件屬性。綠色框。 5、offset $2 reserved. 6、offset 2D,2E,$2 文件建立時間。訪問日期。

7、offset 34,35, $2,3B 該文件的開始簇號 高位字節,低位字節。00 00 00 03,根據這個就可以找到文件下一個簇號在FAT1中的位置了。$200+3*4=$2$2.下一個簇開始地址。 8、黑色線。文件長度。$2=148316字節。因為文件是按照整簇來存放的,不夠一個簇的大小,也要給一個簇的空間。 下面分析文件的存放空間: 從BOSI 參數塊中可以知道其每簇占用8個扇區。每個扇區512字節,那么一個簇的空間是8*512=4096個字節,文件長度為148316個字節,則占用了148316 / 4096=36.2=37個簇。

上面已經從根目錄區得到文件第一個開始簇為03 則開始簇開始地址為:3BE000(根目錄區首地址)+(03-02)*(8*512)=3BF000.文件存放位置的起始地址: 則文件存放第一個簇開始地址為:3BF000. 文件存放第二個簇開始地址為:3BE000+(4-2) *4096=$20000. 文件存放第三個簇開始地址為:3BE000+(5-2) *4096=$21000. . . 文件存放第37個簇開始地址為:3BE000+(39-2) *4096=3E3000. 內容為0x$2 FF FF FF,文件放置結束,沒有了。
|