Ch 33 µwºÐ (2) FAT

¦b«e¤@³¹¡A¤p¤ì°¸¤¶²Ð¤F¹êÅéµwºÐªº¬ÛÃöª¾ÃÑ¡A´£¨ì¤F¤À³Î°Ï¡B¤À³Îªí¡BÂX¥R¤À³Îªí¡BÅÞ¿èµwºÐ¡B¹êÅéµwºÐµ¥¥DÃD¡C¦b³o¤@³¹ùØ¡A¤p¤ì°¸±N­n¤¶²Ð¹êÅéµwºÐ¤À³Î¦¨ÅÞ¿èµwºÐ«á¡ADOS/Windows 9.x/Me ³o¨Ç§@·~¨t²Î¬O¦p¦ó¥h¨Ï¥Î¡B¤À°t¡BºÞ²zÅÞ¿èµwºÐ¡A¦³Ãö³o­Ó¥DÃD¥»¨Ó¦³³\¦h¥i½Í¡A¨Ò¦p¥ú¥ú¬OÀɮרt²Î¡A´N¦³ DOS ªº FAT16¡BWindows 95 ªº VFAT¡BWindows 98/98SE/Me ªº FAT32¡AWindows NT/2k/XP ªº NTFS¡BOS/2 ªº HPFS ¥H¤Î Linux ªº Ext2/3 µ¥µ¥¡C¦ý¬O¤p¤ì°¸°£¤F FAT16¡BFAT32 ©M VFAT ¤ñ¸û¼ô±x¤§¥~¡A¹ï©ó¨ä¥LªºÀɮרt²Î¬O¬J­¯¥Í¤SµL¸ê®Æ°Ñ¦Ò¡A¥u¯à±æµwºÐ¿³¹Ä¡C¦Ó FAT16 Àɮרt²Î¦b²Ä 18 ³¹¤w¸g´£¹L¡A¦]¦¹¥»³¹¥D­n¹ï VFAT ¥H¤Î FAT32 °µ¤@µf±´°Q¡A¨Ã¾ã²z FAT16 »P FAT32 ¤§®t²§¡C


FAT16 »P FAT32 ªºµ²ºc

FAT16 ©M FAT32 ¤À³Î°Ïªºµ²ºcÃþ¦ü¡C¨C­Ó FAT16 ¤À³Î°Ï¨Ì§Ç¥i¤À¬°¥|³¡¥÷¡G«O¯d°Ï°ì ( reserved region )¡BFAT °Ï°ì ( FAT region )¡B®Ú¥Ø¿ý°Ï°ì ( root directory region )¥H¤Î¸ê®Æ°Ï°ì ( file and directory data region )¥|³¡¥÷¡F¹ï FAT32 ¤À³Î°Ï¦Ó¨¥¡A¨S¦³®Ú¥Ø¿ý°Ï°ì¡A¨ä¾l§¡¬Û¦P¡AFAT32 ¤À³Î°Ï§â®Ú¥Ø¿ýµø¬°¤@­Ó¥Ø¿ý¡A¥]§t¦b¸ê®Æ°Ï°ì¤º¡C©³¤U´N¥ý±´°Q±Ò°Ê°Ï°ì¡C


«O¯d°Ï°ì

FAT16 ¤À³Îªº«O¯d°Ï°ì¶È¶È§t¤@­ÓºÏ°Ï¡A´N¬O±Ò°ÊºÏ°Ï ( boot sector )¡FFAT32 ¤À³Îªº«O¯dºÏ°Ï¤¤°£¤F²Ä¤@­ÓºÏ°Ï¬O±Ò°ÊºÏ°Ï¥~¡AÁÙ¥]§t¤FÀɮרt²Î¸ê°TºÏ°Ï©M±Ò°ÊºÏ°Ïªº³Æ¥÷¡C

±Ò°ÊºÏ°Ï¥H¤Î±Ò°ÊºÏ°Ï¤ºªº BPB ( BIOS parameter block )

FAT16 ©M FAT32 ªº±Ò°ÊºÏ°Ï ( ±Ò°ÊºÏ°Ï¦b¹êÅéµwºÐªº¦ì¸m¡A½Ð°Ñ¾\«e¤@³¹¡A¹ïÅÞ¿èºÏºÐ¦Ó¨¥¡A±Ò°ÊºÏ°Ï¬O½s¸¹ 0 ªºÅÞ¿èºÏ°Ï ) ùس£¦³ BPB ¸ê®Æ¡ABPB ùØ­±¦s¦³³o­Ó¤À³Îùتº­«­n¸ê°T¡A¦Ó FAT16 ¤À³Îªº BPB ¤º®e»P FAT32 ¤À³Î¤j¦P¤p²§¡A¤ñ¸û¦p¤Uªí¡G( ¥ç¥i°Ñ¾\²Ä 18 ³¹ )

¦WºÙ ¦ì§}½d³ò ¤j¤p
¦ì¤¸²Õ
©Ò¥Nªí·N¸q
FAT16 FAT32 FAT16 FAT32
BS_jmpBoot 00-02 3 ¸õÅD«ü¥O ¦P¥ª
BS_OEMName 03-0A 8 ¼t°Ó³nÅé¦W
BPB_BytsPerSec 0B-0C 2 ¨C¤@ºÏ°Ïªº¦ì¤¸²Õ¼Æ ¦P¥ª
BPB_SecPerClu 0D 1 ¨C¤@ºÏÂO©Ò¦ûºÏ°Ï¼Æ
BPB_RsvdSecCnt 0E-0F 2 «O¯dºÏ°Ï¼Æ
BPB_NumFATs 101 FAT ¥÷¼Æ
BPB_RootEntCnt 11-12 2 ®Ú¥Ø¿ý©Ò§t FDB ¼Æ FAT32 ¤£¨Ï¥Î¦¹Äæ
BPB_TotSec16 13-14 2 ÅÞ¿èºÏ°ÏÁ`¼Æ¡A­Y¬°¹sªí¥Ü¦¹µwºÐ¤j©ó 32MB¡A¦Ó¦b¦ì§} 20-23 °O¿ý¯u¥¿ªºÅÞ¿èºÏ°ÏÁ`¼Æ
BPB_Media 151 ºÏºÐºØÃþ ¦P¥ª
BPB_FATSz16 16-17 2 ¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ FAT32 ¤£¨Ï¥Î¦¹Äæ¦ì¬G¦¹Ä欰¹s¡A¦Ó¦b¦ì§} 24-27 ªí¥Ü¨C¥÷ FAT ºÏ°Ï¼Æ
BPB_SecPerTrk 18-19 2 ¨C¤@ºÏ­y¤§ºÏ°Ï¼Æ ¦P¥ª
BPB_NumHeads 1A-1B2 ºÏÀY¼Æ
BPB_HiddSec 1C-1F4 ÁôÂúϰϼÆ
BPB_TotSec32 20-23 4 ÅÞ¿èºÏ°ÏÁ`¼Æ
BPB_FATSz32 FAT16 ¨S¦³³o¨ÇÄæ¦ì24-27 4 FAT16 ¨S¦³³o¨ÇÄæ¦ì ¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ
BPB_ExtFlags 28-29 2 ©µ¦ùºX¼Ð
BPB_FSVer 2A-2B 2 Àɮרt²Îª©¥»
BPB_RootClus 2C-2F 4 ®Ú¥Ø¿ýªº²Ä¤@­ÓºÏÂO½s¸¹
BPB_FSInfo 30-31 2 Àɮרt²Î¸ê°TºÏ°Ï
BPB_BkBootSec 32-33 2 ³Æ¥÷±Ò°ÊºÏ°ÏºÏ°Ï
BPB_Reserved 34-3F 12 «O¯d
BS_DrvNum24 401 ºÏºÐ¾÷½s¸¹ ¦P¥ª
BS_Reserved1 2541 1 «O¯d
BS_BootSig 2642 1 ¯S¼x½X
BS_VolID 27-2A43-46 4 ºÏºÐ§Ç¸¹
BS_VolLab 2B-3547-51 11 ºÏºÐ¼ÐÅÒ ( ºÏºÐ¨÷¦W )
BS_FilSysType36-3D52-59 8 ¦r¦ê¡yFAT16   ¡z ¦r¦ê¡yFAT32   ¡z
¡@ 3E-1FD 5A-1FD ¡@ ±Ò°Êµ{¦¡½X ¦P¥ª
1FE-1FF 2 0AA55H¡A±Ò°ÊºÏ°Ïªºµ²§ôÃѧO½X

¤Wªí¤¤¡A¦ì§}½d³ò¬O¥H¤Q¤»¶i¦ì¨îªí¥Ü¡A¦UÄæ¦ì¤j¤p¬O¥H¤Q¶i¦ìªí¥Ü¡A¦Ó¨ä¤¤ªºÄæ¦ì¥HÂŦ⬰©³¦âªº¬O BPB¡C±q¤Wªí¤j¬ù¥i¬Ý¥X¡AFAT16 ¤À³Î»P FAT32 ¤À³Îªº BPB ¤j­P¤@¼Ë¡A¦ý¬O¦]¬° FAT32 »Ý­nºÞ²z¸û¤jªºÅÞ¿èµwºÐ®e¶q¡A©Ò¥H¼W¥[¤F¤@¨ÇÄæ¦ì¡CFAT16 ªº BPB ¬O¦b±Ò°ÊºÏ°Ïªº 0BH¡ã23H¡A¦@ 25 ( §Y¤Q¤»¶i¦ìªº 19H ) ­Ó¦ì¤¸²Õ¡A¦b³o½d³ò¥H¥~¤]´£¨Ñ¤F¤@¨Ç¸ê°T¡A¦ý¨Ã¤£¯u¥¿ÄÝ©ó BPB¡C

¦P¼Ëªº¡AFAT32 ªº BPB ¬O¦b±Ò°ÊºÏ°Ïªº 0BH¡ã3FH¡A¦@ 53 ( §Y 35H ) ­Ó¦ì¤¸²Õ¡A¦b¦¹½d³ò¤§¥~¡A¤]¦³¤@¨Ç¸ê°T¡A¦ý¤]¤£¬OÄÝ©ó BPB¡C©³¤U¬O±Ò°ÊºÏ°Ïªº»¡©ú¡G

BS_jmpBoot¡G 0H¡ã2H¡A¦@ 3 ­Ó¦ì¤¸²Õªº¸õÅD«ü¥O¡A¨Ïµ{¦¡¸õ¨ì±Ò°Êµ{¦¡³B°õ¦æ¡C¸õÅD«ü¥O¦³¤TºØ¡Gµuµ{¸õÅD ( ¸õÅD½d³ò¦b 128 ­Ó¦ì¤¸²Õ¥H¤º¡A¾÷±ñ½X¬O 0EBH )¡Bªñµ{¸õÅD ( ¸õÅD½d³ò¦b¤@­Ó°Ï¬q¤º¡A§Y 64K ¤º¡A¾÷±ñ½X¬O 0E9H )¡B»·µ{¸õÅD ( °Ï¬q¤§¶¡ªº¸õÅD¡A¾÷±ñ½X¬O 0EAH )¡C¤@¯ë¦Ó¨¥¡A±Ò°ÊºÏ°Ïªº¸õÅD«ü¥O¤£¶W¹L 128 ­Ó¦ì¤¸²Õ¡A¬G§¡¬° 0EBH¡A¨ä«á±µ¸õÅD¥Øªº¦aÂ÷¸õÅD«ü¥Oªº¦ì§}®t¡A¦¹®t­È¶È¤@­Ó¦ì¤¸²Õ¡A¤£¹L¦¹Äæ¦ì¦@¦³¤T­Ó¦ì¤¸²Õ¡A¬G³Ì«á¦A±µ¤W¤@­Ó¤£°µ¥ô¦ó¨Æªº CPU «ü¥O¡ANOP¡A¨ä¾÷±ñ½X¬O 90H¡C
BS_OEMName¡G ¦b¦ì§} 03H¡ã0AH¡A¦@ 8 ­Ó¦ì¤¸²Õ¡A³o¬O®æ¦¡¤Æ¦¹¤À³Î°Ïªº§@·~¨t²Î©Ò¶ñ¤Jªº¼t°Ó¦WºÙ¡C¨Ò¦p¦pªG¥Î Win 95 ®æ¦¡¤Æ¤À³Î°Ï¡A¦¹Äæ¶ñ¤J¡yMSWIN4.0¡z¦r¦ê¡F¦pªG¥Î Win 95 OSR2 ©Î¥Î Win 98 ©Î Win 98SE ®æ¦¡¤Æ¡A¦¹Äæ¶ñ¤J¡yMSWIN4.1¡z¡F¦pªG¥Î Win 2000 ®æ¦¡¤Æ¡A¦¹Äæ¶ñ¤J¡yMSDOS 5.0¡z¡C
BPB_BytsPerSec¡G ¦ì§} 0BH¡ã0CH ùئs©ñ¨CºÏ°Ï©Ò§t¦ì¤¸²Õ¼Æ¡A¤@¯ë¬° 512 ­Ó¦ì¤¸²Õ¡A¦ý¤]¥i¥H¬O 1024, 2048 ©Î 4096 ¼Æ­È¡A¤£¹L·L³n¤£«Øij¨Ï¥Î°£¤F 512 ¥H¥~ªº¼Æ¡A¤p¤ì°¸¤]¨S¨£¹L¡A©Ò¥H§Ú­Ì¥i¥H¤jÁx°²³] BPB_BytsPerSec ´Nµ¥©ó 512¡C
BPB_SecPerClu¡G ¦ì§} 0DH ³o­Ó¦ì¤¸²Õªí¥Ü¨C¤@ºÏÂO©Ò¦ûºÏ°Ï¼Æ¡A¦ý¬O­nª`·N¤£¯à¨Ï¨CºÏÂO©Ò§t¦ì¤¸²Õ¼Æ¤j©ó 65536¡A¥ç§Y BPB_SecPerClu ­¼¥H BPB_BytsPerSec ¤£¯à¤j©ó 65536¡C¦]¦¹¡A·í BPB_BytsPerSec µ¥©ó 512 ®É¡ABPB_SecPerClu ¥i¥H¬O 1¡B2¡B4¡B8¡B16¡B32¡B64¡B128 µ¥¼Æ­È¡C
BPB_RsvdSecCnt¡G ¦ì§} 0EH¡ã0FH ³o­Ó¦r²Õªí¥Ü«O¯d°Ï°ìªººÏ°Ï¼Æ¡A¹ï FAT12 ©Î FAT16 ¤À³Î¦Ó¨¥¡A«O¯d°Ï°ìªººÏ°Ï¼Æ¥²¬°¤@¡A¦]¬°¨ä«O¯d°Ï°ì¥u¦³¶È¶È§t¤@­Ó±Ò°ÊºÏ°Ï¦Ó¤w¡C¦ý¹ï FAT32 ¤À³Î¦Ó¨¥¡A°£¤F±Ò°ÊºÏ°Ï¥~¡AÁÙ¦³Àɮרt²Î¸ê°TºÏ°Ï©M³Æ¥÷±Ò°ÊºÏ°Ï¡A¬G³q±`¤£¬O 1¡A¦Ó¬O 20H¡C
BPB_NumFATs¡G ¦ì§} 10H ³o­Ó¦ì¤¸²Õªí¥Ü FAT ¥÷¼Æ¡C¤£ºÞ¬O FAT12¡BFAT16¡BFAT32 ³£¦³¨â¥÷ÀÉ®×°t¸mªí ( FAT )¡C
BPB_RootEntCnt¡G ¦ì§} 11H¡ã12H ¦r²Õªí¥Ü®Ú¥Ø¿ý©Ò§t FDB ¶µ¼Æ¡A§Y®Ú¥Ø¿ýùØ¥i¥H¦s©ñªºÀɮצWºÙ¤Î¤l¥Ø¿ý¦WºÙ¤§Á`©M¡AFAT12/16 ¤£¯à¶W¹L BPB_RootEntCnt¡F¦ý¬O¹ï FAt32 ¦Ó¨¥¡A¦¹Äæ¦ì¤£¥Î¡A¶ñ¤W 0¡C
BPB_TotSec16¡G 13H¡ã14H ³o­Ó¦r²Õªí¥ÜÅÞ¿èºÏ°ÏÁ`¼Æ¡A¦ý³Ì¦h¥u¯àªí¥Ü 0FFFFH¡A©Ò¥H­Y¤@­ÓºÏºÐªºÅÞ¿èºÏ°Ï¤j©ó 0FFFFH ( ©Î¬O»¡ºÏºÐ®e¶q¤j©ó 32MB¡A32MB ¬O 10000H*512D ¨Óªº )¡A«h¦¹Äæ¦ì¬° 0¡AÅÞ¿èºÏ°ÏÁ`¼Æ°O¿ý¦b 20H ³B¶}©lªºÂù¦r²Õ¡C¦]¬° FAT32 ¤À³Î¥²©w¤j©ó 32MB¡A¬G¦¹Äæ¦ì¤£¨Ï¥Î¡A§¡¶ñ¤J 0¡C
BPB_Media¡G ¦ì§} 15H ³o­Ó¦ì¤¸²Õªí¥ÜºÏºÐºØÃþ¡C¦¹Äæ¦ì©M FAT ªº²Ä¤@­Ó¦ì¤¸²Õ¤@¼Ë¡A¨ä·N¸q¦p¤Uªí¡G
0F0H¡G1.44MB ¤T¦T¥b³nºÐ0F8H¡GµwºÐ
0F9H¡G1.2M 5.25 ¦T³nºÐ0FDH¡G360K 5.25 ¦T³nºÐ
0FEH¡G160K 5.25 ¦T³nºÐ0FFH¡G320K 5.25 ¦T³nºÐ
BPB_FATSz16¡G ¦ì§} 16H¡ã17H ³o­Ó¦r²Õªí¥Ü¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ¡F¦ý¹ï FAT32 ¦Ó¨¥¡A¦¹Äæ¦ì¤£¥Î¡A¶ñ¤W 0¡A¦Ó¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ°O¸ü©ó¦ì§} 24H¡ã27H ³BªºÂù¦r²Õ¡C
BPB_SecPerTrk¡G ¦ì§} 18H¡ã19H ³o­Ó¦r²Õ¥Nªí¨C¤@ºÏ­y¤§ºÏ°Ï¼Æ¡C
BPB_NumHeads¡G ¦ì§} 1AH¡ã1BH ³o­Ó¦r²Õ¥NªíºÏÀY¼Æ¡C
BPB_HiddSec¡G ¦ì§} 1CH¡ã1FH ³o­ÓÂù¦r²Õ ( ¦@ 4 ­Ó¦ì¤¸²Õ ) ªí¥ÜÁôÂúϰϼơA»P¤À³Îªí©ÎÂX¥R¤À³Îªí¤¤ªº¤À³Î°Ï¬Û¹ï¦ì¸mªº¼Æ­È¤@¼Ë¡C
BPB_TotSec32¡G ¦ì§} 20H¡ã23H ³o­ÓÂù¦r²Õ¥NªíÅÞ¿èºÏ°ÏÁ`¼Æ¡C¦pªG 16H¡ã17H Ä欰 0¡A«h¦¹Ä椣¥i¬°¹s¡C

¦b±Ò°ÊºÏ°Ï°¾²¾¦ì§} 24H¡ã3DH ªº½d³ò¡AFAT 12/16 ªºÄæ¦ì©M FAT32 ®t²§«Ü¤j¡A¦]¦¹¤À¶}»¡©ú¡A©³¤U¥ý¬Ý¬Ý FAT 12/16 ªºÄæ¦ì¡A³o¨Ç¨Ã¤£¬O¯u¥¿ªº BPB ¤º®e¡A¦­´Áªº§@·~¨t²Î©Î®æ¦¡¤Æµ{¦¡¨Ã¤£¤ä´©©³¤UªºÄæ¦ì¡A©Ò¥H¨Ï¥Î®É±o¤p¤ß³o¨Ç­­¨î¡C

¨Æ¹ê¤W FAT32 ¤]¦³³o¨ÇÄæ¦ì¡A·N¸q¤]¬Û¦P¡C¥u¬O FAT32 ªº BPB ¸ûªø¡A¦Ó³o¨ÇÄæ¦ì ( ¥]§tºÏºÐ¾÷½s¸¹¡B«O¯d¡B¯S¼x½Xµ¥¤»­ÓÄæ¦ì ) ¤£ÄÝ©ó BPB¡A©Ò¥H FAT32 ¬O©ñ¦b FAT32 ªº BPB ¤§«á¡A¤]´N¬O 40H ¤§«á¡C

BS_DrvNum¡G ³o­Ó¦ì¤¸²Õ¥NªíºÏºÐ¾÷½s¸¹¡AFAT12/16 ¬O¦b¦ì§} 24H¡A¦Ó FAT32 ¬O¦b¦ì§} 40H ¡C­Y¬°µwºÐ¡ABS_DrvNum ¬° 80H¡F­Y¬°³nºÐ¡ABS_DrvNum ¬° 0¡C
BS_Reserved1¡G ¦¹¦ì¤¸²Õ«O¯d¡A»Ý¶ñ¤J 0¡C¹ï FAT12/16 ¦Ó¨¥¡A¦b¦ì§}25H¡F¹ï FAT32 ¦Ó¨¥¦b¦ì§} 41H¡C
BS_BootSig¡G ¦¹¦ì¤¸²Õªí¥Ü¯S¼x½X¡A©M¨t²Î¦³Ãö¡A¦pªG¬O¥Î·L³nªº§@·~¨t²Î¡A¦¹Äæ¦ì¬O 29H¡A¦¹¥~³o­Ó¯S¼x½X¤]ªí¥Ü¤U­±¤T­ÓÄæ¦ì¦³·N¸q¡C¹ï FAT12/16 ¦Ó¨¥ BS_BootSig ¦b¦ì§} 26H¡F¹ï FAT32 ¦Ó¨¥¦b 42H¡C
BS_VolID¡G ºÏºÐ§Ç¸¹¡A¦@¦û¥Î 4 ­Ó¦ì¤¸²Õ¡A¤£ºÞ¬O FAT16 ©Î FAT32 ©Òªí¥Ü·N¸q¤@¼Ë¡A³£¬O¦b MS-DOS ¼Ò¦¡¥Î dir «ü¥O®ÉÅã¥Üªº¡yVolume Serial Number¡z¦p¤U¹Ï¡C¦ý FAT12/16 ¦s©ó¦ì§} 27H¡ã2AH¡FFAT32 «h¦s©ó 43H¡ã46H¡C

¹Ï¤@
BS_VolLab¡G ºÏºÐ¼ÐÅÒ ( ºÏºÐ¨÷¦W )¡A¦@¦û¥Î 11 ­Ó¦ì¤¸²Õ¡A¤£ºÞ¬O FAT16 ©Î FAT32 ©Òªí¥Ü·N¸q¤@¼Ë¡A³£¬O¦b MS-DOS ¼Ò¦¡¥Î dir «ü¥O®ÉÅã¥Üªº¡yVolume¡z¡A¦p¤W¹Ï¤@¡A©Î¬OÅã¥Ü¦b§Úªº¹q¸£ùتººÏºÐ¾÷¦WºÙ¡C¦ý FAT12/16 ¦s©ó¦ì§} 2BH¡ã35H¡FFAT32 «h¦s©ó 47H¡ã51H¡C
BS_FilSysType¡G ¦r¦ê¡yFAT     ¡z¡B¡yFAT12   ¡z¡B¡yFAT16   ¡z©Î¡yFAT32   ¡z¨ä¤¤¤§¤@¡C¦ý¬O¤@¯ë¤£¥H¦¹Äæ¦ì§PÂ_¬O¨º¤@­ÓÀɮרt²Î¡A¦]¬°¦­´Áªº§@·~¨t²Î®æ¦¡¤Æ®É¡ABPB ¨Ã¨S¦³³o¤@Äæ¡Aµy«á¦A»¡©ú¦p¦ó§PÂ_Àɮרt²Î¡CFAT12/16 ¦s©ó 36H¡ã3DH¡FFAT32 «h¦s©ó 52H¡ã59H¡C

©³¤U¦ì§} 24H¡ã3FH ¬O FAT32 ªºÂX¥R BPB¡A¨äÄæ¦ì·N¸q»P FAT16 ªº·N¸q¤£¦P¡A©Ò¥H¦b¦P®É¤ä´© FAT32 ¤Î FAT16 ªº§@·~¨t²Î¡A¦p Win 95 OSR2/Win98/Me/2K/XP µ¥¡A±o¥ý§PÂ_ÅÞ¿èµwºÐÄݩ󨺤@ºØÀɮרt²Î¡A¬O FAT16 §í©Î FAT32¡C

BPB_FATSz32¡G ¦ì§} 24H¡ã27H ¤ºªºÂù¦r²Õªí¥Ü¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ¡A¦]¬° FAT32 ®e¶q¤j¡AºÏÂO¤]¦h¡A©Ò¥H¥Î 4 ­Ó¦ì¤¸²Õªí¥Ü¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ¡C
BPB_ExtFlags¡G ¦ì§} 28H¡ã29H ¤ºªº¦r²Õªí¥Ü©µ¦ùºX¼Ð¡C
BPB_FSVer¡G ¦ì§} 2AH¡ã2BH ¤ºªº¦r²Õªí¥ÜÀɮרt²Îª©¥»¡A2BH ªí¥Ü¥D­nª©¥»¡A2AH ªí¥Ü¦¸­nª©¥»¡C
BPB_RootClus¡G ¦ì§} 2CH¡ã2FH ¤ºªºÂù¦r²Õªí¥Ü®Ú¥Ø¿ýªº²Ä¤@­ÓºÏÂO½s¸¹¡C
BPB_FSInfo¡G ¦ì§} 30H¡ã31H ùتº¦r²Õ¦s©ñµÛÀɮרt²Î¸ê°TºÏ°Ï¶ZÂ÷±Ò°ÊºÏ°Ï¦³¦h¤ÖºÏ°Ï¡A³q±`¬O 1 ­ÓºÏ°Ï¡A¤]´N¬O±Ò°ÊºÏ°Ï¤§«áºò±µµÛ®×¨t²Î¸ê°TºÏ°Ï¡C´«¨¥¤§¡A®×¨t²Î¸ê°TºÏ°Ï¬O½s¸¹ 1 ªºÅÞ¿èºÏ°Ï¡C
BPB_BkBootSec¡G ¦ì§} 32H¡ã33H ¤ºªº¦r²Õ¦s©ñµÛ³Æ¥÷±Ò°ÊºÏ°Ï¶ZÂ÷±Ò°ÊºÏ°Ï¦³¦h¤ÖºÏ°Ï¡A³q±`¬O 6¡A·L³n«Øij³Ì¦n¤£­n¬O 6 ¥H¥~ªº¼Æ¡C´«¨¥¤§¡A±Ò°ÊºÏ°Ï¬O¥ÑÅÞ¿èºÏ°Ï 6 ¶}©l¡C
BPB_Reserved¡G ¦ì§} 34H¡ã3FH ¦@ 12 ­Ó¦ì¤¸²Õ«O¯d¤£¨Ï¥Î¡A§@¬°«áÄòÂX¥R¤§¥Î¡A§¡¶ñ¤J 0¡C

Àɮרt²Î¸ê°TºÏ°Ï»P³Æ¥÷±Ò°ÊºÏ°Ï

FAT32 ªº«O¯d°Ï°ì°£¤F±Ò°ÊºÏ°Ï¥~¡AÁÙ¦³Àɮרt²Î¸ê°TºÏ°Ï¤Î³Æ¥÷±Ò°ÊºÏ°Ï¡A©³¤U¨Ó¬Ý¬Ý³o¨â­ÓºÏ°Ï¡CÀɮרt²Î¸ê°T¬O¬°¤F¯à§Ö³t­pºâ³Ñ¾lºÏºÐªÅ¶¡¥Îªº¡C¦b FAT12/16 µ¥ºÏºÐ®e¶q¤£¤jªº®É¥N¡A­n­pºâ³Ñ¾lºÏºÐ®e¶q¤@¯ë¬OŪ¨ú FAT¡A¨Ã­pºâÁÙ¦³¨º¨Ç FAT ¥i¥Î ( µù¤@ )¡A¦ý¨ì¤F FAT32 ®É¥N¡AFAT Åܱo«Ü¤j¡A©Ò¥H±o¥tÅP±¶®|¤~¦æ¡C

¦WºÙ ¦ì§}½d³ò ¤j¤p
¦ì¤¸²Õ
©Ò¥Nªí·N¸q
FSI_LeadSig 0H¡ã3H 4 ¤Þ¾É°O¸¹¡A¬°¤@Âù¦r²Õ¼Æ­È¡Aµ¥©ó 16 ¶i¦ìªº 41615252H¡Aªí¥Ü¦¹ºÏ°Ï¬°Àɮרt²Î¸ê°T¡C
FSI_Reserved1 4H¡ã1E3H 1E0H «O¯d¤£¥Î¡A§¡¬° 0
FSI_StrucSig 1E4H¡ã1E7H 4 ¥t¤@­ÓÂù¦r²Õªº¼Æ­È¡A61417272H¡Aªí¥Ü¤U¤@Âù¦r²Õ¬°¥i¥ÎªººÏÂO¼Æ¡C
FSI_Free_Count 1E8H¡ã1EBH 4 ªí¥Ü¦¹ÅÞ¿èºÏºÐ¤W¥i¥ÎªººÏÂO¼Æ¡A¥ç§Y¦b MS-DOS ¼Ò¦¡¤¤¥Î DIR «ü¥O®ÉÅã¥Üªº¡ybytes free¡z¡A¦p¤W¹Ï¤@¤¤¦ýÂŦâ®Ø®Ø®Ø°_¨Óªº¡A¥i¥Î¦ì¤¸²Õ¼ÆÀ³µ¥©ó BPB_BytsPerSec*BPB_SecPerClu*FSI_StrucSig¡C¦pªG FSI_Free_Count ¬° 0FFFFFFFFH¡Aªí¥Ü¨t²Î©|¥¼­pºâ¥X¥i¥ÎºÏÂO¼Æ¡C
FSI_Nxt_Free 1ECH¡ã1EFH 4 ²Ä¤@­Ó¥¼¨Ï¥Îªº FAT ½s¸¹¡C¦pªG FSI_Nxt_Free ¬° 0FFFFFFFFH¡Aªí¥Ü¨t²Î©|¥¼­pºâ¥X²Ä¤@­Ó¥¼¨Ï¥Îªº FAT ½s¸¹¡C
FSI_Reserved2 1F0H¡ã1FBH 12 «O¯d¡A§¡¶ñ¤J 0¡C
FSI_TrailSig 1FCH¡ã1FFH 4 Àɮרt²Î¸ê°TºÏ°Ïµ²§ôªº°O¸¹¡A¬°¤@Âù¦r²Õ¡A0AA550000H¡C

¦bÀɮרt²Î¸ê°TºÏ°Ï¤§«á¡A¦³¼Æ­Ó¤£ª¾°µ¬°¦ó¥ÎªººÏ°Ï¡A¤p¤ì°¸¤âÃä¤]¨S¦³¸ê®Æ¡A©Ò¥H¤]¤£ª¾¨ä©Ò¥Nªíªº·N¸q¡C¦ý¦b²Ä 6 ­ÓÅÞ¿èºÏ°Ï¡A´N¬O±Ò°Ê³Æ¥÷ºÏ°Ï¡A¥¦¬O±Ò°ÊºÏ°Ï¡BÀɮרt²Î¸ê°TºÏ°Ï¥H¤Î«á­± 4 ­Ó¤£ª¾¦ó¥ÎªººÏ°Ïªº«þ¨©¡A¤º®e¸ò³o¤»­ÓºÏ°Ï¤@¼Ë¡A©Ò¥H¤]±o¦û¥Î 6 ­ÓºÏ°Ï¡C±µ¤U¨Óªº«O¯d°Ï°ì¡AÁÙ¦³¼Æ­ÓºÏ°Ï¡A¦ýÆ[¨ä¤º®e§¡¬° 0¡A¤]¨S¦³¸ê®Æ¥i¬d¡C

¦p¦ó§PÂ_ FAT12¡BFAT16¡AÁÙ¬O FAT32¡H

¦pªG±z¼g¤@­Óµ{¦¡­n§C¶¥ªºÅª¨úÀɮפº®e ( ¥ç§Y¤£¾a DOS ¤¤Â_ªA°È©Î Windows API )¡A¨º»ò±z±o¥ý§PÂ_¦¹ÅÞ¿è¤À³ÎÄݩ󨺭ÓÀɮרt²Î¡H¬O FAT12¡BFAT16 ÁÙ¬O FAT32¡H

­n§PÂ_Àɮרt²Î¡A¤@¯ëªº¤èªk¡A¤]¬O·L³n«Øijªº¤èªk¬OÀˬdºÏÂOÁ`¼Æ¡A²Ä 18 ³¹´£¨ì·íºÏÂO¼Æ¤p©ó 4085 ®É¬° FAT12¡F¤j©ó©Îµ¥©ó 4085 ¥B¤p©ó 65525 ®É¬° FAT16¡F¤j©ó©Îµ¥©ó 65525 ¬° FAT32¡C¦ÓºÏÂOÁ`¼Æ«hµ¥©ó¸ê®Æ°Ï°ìªººÏ°ÏÁ`¼Æ°£¥H¨C­ÓºÏÂO©Ò§tºÏ°Ï¼Æ¡A¦Ó¸ê®Æ°Ï°ìªººÏ°Ï¼Æ¬OÅÞ¿è¤À³ÎÁ`ºÏ°Ï¼Æ´î¥h«O¯d°Ï°ì¡BFAT °Ï°ì¡B®Ú¥Ø¿ý°Ï°ìªººÏ°Ï¼Æ¡C¥i¼g¦¨¤U­±¼Æ¾Çºâ¦¡¡G

 TotSec = ÅÞ¿èºÏ°ÏÁ`¼Æ
  FATSz = ¨C¥÷ FAT ªººÏ°Ï¼Æ
DataSec = ¸ê®Æ°Ï°ìªººÏ°ÏÁ`¼Æ
        = TotSec - BPB_ResvdSecCnt - ( BPB_NumFATs * FATSz )
          - RootDirSectors ...... (1)
ºÏÂOÁ`¼Æ = CountofClusters = DataSec / BPB_SecPerClus ...... (2)

ÅÞ¿èºÏ°ÏÁ`¼Æ ( TotSec ) ¥i¥Ñ BPB ùتº BPB_TotSec16 ©Î BPB_TotSec32 ¨ú±o¡C¨Ì¾Ú BPB ªº¸ê®Æ¡A­Y BPB_TotSec16 ¬°¹s¡A«hÅÞ¿èºÏ°ÏÁ`¼Æ¦s©ó BPB_TotSec32 ùØ¡A§_«h¦s©ó BPB_TotSec16 ¤º¡C

FAT °Ï°ìªººÏ°Ï¼Æ¬O¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ»P FAT ¥÷¼Æ¤§­¼¿n¡A¦ý¬O«e­±´¿¸g´£¨ì¡AFAT12/FAT16 »P FAT32 ¦s©ñ¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æªº¦ì¸m¤£¦P¡A¦]¦¹±o¥ý¬Ý¬Ý BPB_FATSz16 ¬O§_¬°¹s¡A­Y¬°¹s«h¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ¦s©ñ BPB_FATSz32 ³B¡A­Y¤£¬°¹s«h¨C¥÷ FAT ©Ò¦ûºÏ°Ï¼Æ¦s©ñ©ó BPB_FATSz16 ³B¡C

¨ì¦¹¡A©Ò»Ý¸ê®Æ¬Ò¤w¨ã³Æ¡A¶È³Ñ¤U®Ú¥Ø¿ý°Ï°ìªººÏ°Ï¼Æ ( RootDirSectors ) ¤F¡A¦b¾ã­Ó BPB ùØ¡A©M®Ú¥Ø¿ý¦³Ãöªº¬O BPB_RootEntCnt¡A¦¹¦r²Õ°O¿ýµÛ®Ú¥Ø¿ýùتºÀÉ®×´y­z°Ï¶ô ( FDB ) Á`¼Æ¡C¦Ó¨C­Ó FDB ¦û¦³ 32 ­Ó¦ì¤¸²Õ¡A¦]¦¹®Ú¥Ø¿ý©Ò¦û¦ì¤¸²Õ¤j¤p¬° BPB_RootEntCnt*32¡A¦A°£¥H¨CºÏ°Ï©Ò¦û¦ì¤¸²Õ¼Æ ( BPB_BytsPerSec ) §Y±o®Ú¥Ø¿ý°Ï°ìªººÏ°Ï¼Æ¡G

RootDirSectors = 
( BPB_RootEntCnt * 32 + BPB_BytsPerSec - 1 )/BPB_BytsPerSec ...... (3)

¹ï FAT32 ¦Ó¨¥¡ABPB_RootEntCnt ¬°¹s¡A¬G¦¡ (3) ©Ò±oµ²ªG¬°¹s¡A²Å¦X FAT32 ¨S¦³®Ú¥Ø¿ý°Ï°ì¡F¦ý¹ï FAT16 ©Î FAT12 ¦Ó¨¥¡A¦]¬° BPB_RootEntCnt ¤£¬°¹s¡A©Ò¥Hµ²ªG¤]¤£·|¬O¹s¡C¦Ü©ó¥[¤W BPB_BytsPerSec - 1 ªº¥Øªº¬O¬°¨Ï³Q°£¼Æ¤£¬°¹s¡A¦ý¥[©Î¤£¥[µL©Ò¿×¡C¨Ì¾Ú¤W­zµ²½×¡A§Ú­Ì¥i¥H¼g¦¨¤U¦C²Õ¦X»y¨¥µ{¦¡¡G

        .386
;***********************************************************
data    segment
drv_bpb         bpb     <?>
data    ends
;***********************************************************
code    segment public  'code'  use16
        assume  cs:code,ds:data
;-----------------------------------------------------------
fat_type        proc    near
;¥Ñ bpb_drv §PÂ_¦¹¤À³Î¬° FAT12¡BFAT16 ÁÙ¬O FAT32
;¿é¥X¡GCL=12H ªí¥Ü FAT12
;      CL=16H ªí¥Ü FAT16
;      CL=32H ªí¥Ü FAT32
fat_type        proc    near
        sub     edx,edx
        sub     eax,eax
        mov     ecx,edx
        mov     ax,drv_bpb.BPB_FATSz16
        or      ax,ax
        jnz     fat_ok
        mov     eax,drv_bpb.BPB_FATSz32
fat_ok: mov     cl,drv_bpb.BPB_NumFATs
        mul     ecx
        mov     total_FAT_sector,eax    ;EAX=©Ò¦³ FAT ©Ò¦ûºÏ°Ï¼Æ
        mov     ax,drv_bpb.BPB_RootEntCnt
        mov     cx,drv_bpb.BPB_BytsPerSec
        shl     eax,5
        add     eax,ecx
        sub     edx,edx
        dec     eax
        div     ecx             ;EAX=®Ú¥Ø¿ý©Ò¦ûºÏ°Ï¼Æ
        mov     dx,drv_bpb.BPB_TotSec16
        or      dx,dx
        jnz     total_sector_in_edx
        mov     edx,drv_bpb.BPB_TotSec32
        mov     total_sector,edx
total_sector_in_edx:            ;EDX=ÅÞ¿èºÏ°ÏÁ`¼Æ
        sub     edx,eax
        sub     edx,total_FAT_sector
        mov     ax,drv_bpb.BPB_RsvdSecCnt
        cwd                     ;EAX=«O¯dºÏ°Ï¼Æ
        sub     edx,eax         ;EDX=¸ê®Æ°Ï°ìªººÏ°Ï¼Æ
        sub     eax,eax
        xchg    eax,edx
        mov     cl,drv_bpb.BPB_SecPerClu
        mov     ch,0
        div     ecx             ;EAX=ºÏÂOÁ`¼Æ
        mov     cl,32h
        cmp     eax,65525
        jae     got_it
        mov     cl,16h
        cmp     eax,4085
        jae     got_it
        mov     cl,12h
got_it: ret
fat_type        endp
;-----------------------------------------------------------

¸ê®Æ°Ï°ìªº²Ä¹s­ÓÅÞ¿èºÏ°Ï½s¸¹

¸ê®Æ°Ï°ì¬O¦b«O¯d°Ï°ì¡BFAT °Ï°ì¤Î®Ú¥Ø¿ý°Ï°ì¤§«á¡A¦]¦¹¸ê®Æ°Ï°ìªº²Ä¹s­ÓÅÞ¿èºÏ°Ï½s¸¹ ( FirstDataSector ) ¤]´N¬O³o¨Ç°Ï°ìºÏ°Ï¼Æ¤§©M¡G

FirstDataSector = BPB_RsvdSecCnt + BPB_NumFATs*FATSz + RootDirSectors ... (4)

FAT °Ï°ì

¦b«O¯d°Ï°ì¤§«á¡A´N¬OºÙ¬°ÀÉ®×°t¸mªí ( File Allocation Table ) ªº°Ï°ì¡C³o¶ô°Ï°ì°O¸üµÛ¨C­ÓÀɮצû¾Ú¤F¨º¨ÇºÏÂO ( cluster )¡AºÏÂO¬O¥Ñ¼Æ­Ó³sÄòªºÅÞ¿èºÏ°Ï²Õ¦¨¡A¨ä¤j¤p¬OÀHµÛºÏºÐ®e¶q¥H¤Î DOS ª©¥»¤£¦P¦ÓÅÜ¡C¨C·í§@·~¨t²Î¼g¤J¸ê®Æ¨ìºÏºÐ¤W®É¡A¬O¥HºÏÂO¬°³æ¦ì¡A¬°ÀÉ®×°t¸m¦û¥ÎªººÏÂO¡A´«¥y¸Ü»¡¡A¨C­ÓÀɮ׳£¦û¦³¾ã¼Æ­ÓºÏÂO¡C

¨º»ò FAT «ç¼Ë°O¿ýÀɮצû¥Î¤F¨º¨ÇºÏÂO©O¡H¦b²Ä 18 ³¹¤¤´¿¹ï FAT12 ¦³¹L¸Ô²Óªº¤¶²Ð¡AFAT16 ©Î FAT32 °O¿ýÀɮצû¦³¨º¨ÇºÏÂOªº­ì²z»P FAT12 ¬Û¦P¡C¹ï FAT12¡BFAT16¡BFAT32 ³o´XºØÀɮרt²Î¦Ó¨¥¡A¨C­ÓºÏÂO³£¥H¤@­Ó½s¸¹ªí¥Ü¡A³o¨Ç½s¸¹¬O¥Ñ°O¿ý¦b FAT °Ï°ìùتº¦ì¸m¨M©w¡A¦Ó¦UºØÀɮרt²ÎªººÏÂO½s¸¹©Ò¦û¦ì¤¸ªø«×¤£¦P¡A±z¥i¥H¥Ñ¥¦­Ìªº¦WºÙ«Ü®e©ö´N±oª¾¡AFAT12 ªººÏÂO½s¸¹¬O 12 ­Ó¦ì¤¸ ( §Y 1.5 ­Ó¦ì¤¸²Õ )¡AFAT16 ªººÏÂO½s¸¹¬O 16 ­Ó¦ì¤¸ ( §Y 2 ­Ó¦ì¤¸²Õ )¡AFAT32 ªººÏÂO½s¸¹¬O 32 ­Ó¦ì¤¸ ( §Y 4 ­Ó¦ì¤¸²Õ )¡C

¦b²Ä 18 ³¹¤w¬Ý¹L FAT12 ªº FAT °Ï°ì¡A©³¤U¨Ó´N¨Ó¬Ý¬Ý¥t¤@­Ó¤£¦Pªº¨Ò¤l¡A¤@­Ó FAT32 ªº FAT °Ï°ì¡A¦¹ÅÞ¿èµwºÐ¬O¤p¤ì°¸ Windows 98 SE ªº±Ò°ÊµwºÐ¡C¤p¤ì°¸±NÂǵ۳o­Ó¨Ò¤l¨Ó»¡©ú FAT32 ¤¤¡AFAT ¤ºÄæ¦ì»PÅÞ¿èºÏ°ÏªºÃö«Y¥H¤Î FAT ¦UÄæ¦ìªº·N¸q¡C

²Ä N ­Ó FAT Äæ¦ì»P¨ä¹ïÀ³ªºÅÞ¿èºÏ°Ï

­º¥ý¥ý¦b MS-DOS ¼Ò¦¡©³¤U¿é¤J DEBUG¡A( ·Ó©¹¨Ò¡A¶À¦âªº¬O¤p¤ì°¸¿é¤Jªº«ü¥O¡A[Enter] ªí¥Ü«ö¤U Enter Áä¡A¨ä¾l³£¬O¹q¸£ªº¦^À³ ) ±µµÛ¸ü¤J C: ÅÞ¿èµwºÐªº±Ò°ÊºÏ°Ï¡G

C:\WINDOWS>DEBUG [Enter]
-L 100 2 0 1 [Enter]

DEBUG ªº L «ü¥O¥i¸ü¤JºÏ°Ï¡A¡y100¡zªí¥Ü¸ü¤J«áªººÏ°Ï¸ê®Æ©ñ¦b¦ì§} 100H ³B¡A¡y2¡zªí¥Ü¡yC:¡zºÏºÐ¡A¡y0¡zªí¥Ü¸ü¤J²Ä¹sºÏ°Ï ( ÅÞ¿èºÏ°Ï¬Ò¥Ñ 0 ¶}©l )¡A¡y1¡zªí¥Ü¸ü¤JºÏ°Ï¼Æ¡C¸ü¤J«á­n´M§ä FAT °Ï°ì¡A·Ó«e­±©Ò»¡¡AFAT °Ï°ì¦b«O¯d°Ï°ì¤§«á¡A¦]¦¹ª¾¹D«O¯d°Ï°ì¦h¤j´Nª¾¹D FAT °Ï°ì¥Ñ¨º­ÓºÏ°Ï¶}©l¡C¦]¦¹¥Ñ¿Ã¹õ¦L¥X BPB¡G


-D 100 13F [Enter]
136C:0100  EB 58 90 4D 53 57 49 4E-34 2E 31 00 02 08 20 00   .X.MSWIN4.1... .
136C:0110  02 00 00 00 00 F8 00 00-3F 00 FF 00 80 60 1F 00   ........?....`..
136C:0120  7E 04 7D 00 32 1F 00 00-00 00 00 00 02 00 00 00   ~.}.2...........
136C:0130  01 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-L 300 2 20 1 [Enter]

«O¯dºÏ°Ï¤j¤p¬O¦b BPB_RsvdSecCnt ³B¡A¥ç§Y 010E °_ªº¤@­Ó¦r²Õ ( ¦]¬°¦s©ñ±Ò°ÊºÏ°Ïªº¸ê®Æ°_©l©ó¦ì§} 0100H ³B¡A¬G BPB_RsvdSecCnt ¦b 010E ³B¡A§Y¤W­±¤ÑÂŦâ³B )¡AµM«á¸ü¤J FAT °Ï°ìªº²Ä¤@­ÓºÏ°Ï¡A¦p¤W¡yL 300 2 20 1¡z¡A³oùتº 20 ´N¬O«O¯dºÏ°Ï¤j¤p¡CµM«á¿é¤J¡yD 300¡zÆ[¹î FAT¡G

¹ï FAT32 ¨Ó»¡¡A¨C­Ó FAT Äæ¦ì¦û¤F 32 ¦ì¤¸¡A¥ç§Y¤@­ÓÂù¦r²Õ¡A¨C­ÓÄæ¦ì¥H¤@­Ó½s¸¹ªí¥Ü¡C¦ì§} 0300¡ã0303H ªºÂù¦r²Õ¬O FAT ªº²Ä 0 ­ÓÄæ¦ì¡A§Y½s¸¹ 0¡F0304¡ã0307H ¬O²Ä 1 ­ÓÄæ¦ì¡A§Y½s¸¹ 1¡F0308¡ã030BH ¬O²Ä 2 ­ÓÄæ¦ì¡A§Y½s¸¹ 2¡F¡K¡K¨Ì¦¹Ãþ±À¡C²Ä¹s­ÓÄæ¦ìªº³Ì§C¦ì¤¸²Õ¬O 0F8H¡A»P BPB_Media ¬Û¦P¡A¨ä¾l¦ì¤¸§¡³]¬°¤@¡C²Ä¤@­ÓÄæ¦ìªº¦ì¤¸§¡³]¬°¤@¡A³o¨â­Ó FAT Äæ¦ì§¡¬°¨t²Î¨Ï¥Î¡C

±q²Ä 2 ­Ó FAT Äæ¦ì¤~¶}©l°µ¬°Àx¦s¸ê®Æ¡A©Ò¥H¸ê®Æ°Ï°ìªººÏÂO½s¸¹¤]¬O 2 ¶}©l¡A¨º»ò½s¸¹¬°¤GªººÏÂO¬O¥Ñ¨º¤@­ÓÅÞ¿èºÏ°Ï¶}©l©O¡H©ÎªÌ¥i°Ý²Ä 2 ­Ó FAT ¥Nªí¨º¨ÇÅÞ¿èºÏ°Ï©O¡H

¥ý¬Ý¬Ý©³¤Uªº¹Ï¡A¥i¯à¤ñ¸û¦nÁA¸Ñ¡G

FAT »PÅÞ¿èºÏ°ÏªºÃö«Y
¥Ñ¤W¹Ï¥i¥Hª¾¹D¡A­ì¨Ó½s¸¹¤GªººÏÂO°_©lºÏ°Ï´N¬O¸ê®Æ°Ï°ìªº²Ä¹s­ÓÅÞ¿èºÏ°Ï¡A¦Ó¨C­ÓºÏÂO©Ò§tºÏ°Ï¼Æ¦s©ó BPB_SecPerClu ¤º¡C¦]¦¹¥i¥HÂǥѤU­±ºâ¦¡¨D¥X½s¸¹ N ªº FAT Äæ¦ì¤§°_©lºÏ°Ï¡G

FirstSectorofCluster = ( N - 2 ) * BPB_SecPerClu + FirstDataSector .... (5)

¦b³o­Ó¨Ò¤lùØ¡A®Ú¥Ø¿ý°Ï°ì©Ò¦ûºÏ°Ï¼Æ¬°¹s¡A«O¯d°Ï°ì©Ò¦ûºÏ°Ï¼Æ¬° 20H¡A¨â¥÷ FAT °Ï°ì¦@¦û¦³ 1F23H*2¡A§Y 3E64H¡A¦]¦¹³o¤T­Ó°Ï°ì¦@¦û 3E84H¡A¬G¸ê®ÆºÏ°Ïªº²Ä¹s­ÓÅÞ¿èºÏ°Ï½s¸¹¬° 3E84H¡A¦Ó³s¦¹ºÏ°Ï¥H¤Î¨ä«áªººÏ°Ï¡A¦@ 8 ­ÓºÏ°Ï¬O½s¸¹ 2 ºÏÂO©Ò§t¦³ªººÏ°Ï¡F¦A±µµÛªº 8 ­ÓºÏ°Ï«h¬O½s¸¹ 3 ºÏÂOªººÏ°Ï¡K¡K¡C

FAT Äæ¦ì¤º®e¤§·N¸q

«e­±¤w¸ÑÄÀ¹L FAT ²Ä 0¡B1 Äæ¦ì¤º¤§¼Æ­È·N¸q¡A¥¦­Ì¬O¨Ñ¨t²Î¨Ï¥Î¡C¦Ó¨ä¥L FAT Äæ¦ì¤ºªº¼Æ­È¬O¥Nªí¤°»ò·N¸q©O¡H½Ð¬Ý¤Uªí¡G

FAT12 FAT16FAT32 ·N¡@¡@¸q
0000000 0000000¦¹ FAT Äæ¦ì¹ïÀ³ªººÏÂO¨Ã¥¼¨Ï¥Î
3¡ãFF63¡ãFFF63¡ãFFFFFF6 ªí¥Ü¦¹Àɮתº¤U¤@­ÓºÏÂO½s¸¹
FF7FFF7FFFFFF7 ¦¹ FAT Äæ¦ì©Ò¹ïÀ³ªººÏÂO¤w·lÃa¡A¤£¥i¨Ï¥Î
¤j©ó©Îµ¥©ó FF8¤j©ó©Îµ¥©ó FFF8 ¤j©ó©Îµ¥©ó FFFFFF8¦¹ FAT Äæ¦ì©Ò¹ïÀ³ªººÏÂO¬°Àɮתº³Ì«á¤@­ÓºÏÂO

§Ú·QÁÙ¬O©µÄò¤W­±ªº¨Ò¤l»¡©ú¦n¤F¡C­è´£¹L¡A¤p¤ì°¸ªº Windows 98 SE ªº±Ò°ÊµwºÐ¤¤¡A²Ä¤@­Ó¸ê®ÆºÏ°Ï¬O 3E84¡A¸ü¤J¨ì°O¾ÐÅéÆ[¹î¬Ý¬Ý¡G

-L 500 2 3E84 1 [Enter]
-D 500 [Enter]
136C:0500  53 55 48 44 4C 4F 47 20-44 41 54 03 00 00 00 00   SUHDLOG DAT.....
136C:0510  00 00 43 33 00 00 4C 6C-6F 30 03 00 4E 14 00 00   ..C3..Llo0..N...
136C:0520  42 4F 4F 54 4C 4F 47 20-54 58 54 22 00 00 00 00   BOOTLOG TXT"....
136C:0530  00 00 43 33 00 00 93 6D-6F 30 05 00 6E B5 00 00   ..C3...mo0..n...
136C:0540  46 52 55 4E 4C 4F 47 20-54 58 54 20 00 95 7A 6C   FRUNLOG TXT ..zl
136C:0550  6F 30 43 33 00 00 92 6C-6F 30 11 00 ED 03 00 00   o0C3...lo0......
136C:0560  57 49 4E 39 38 53 45 20-20 20 20 28 00 00 00 00   WIN98SE    (....
136C:0570  00 00 6F 30 00 00 58 6B-6F 30 00 00 00 00 00 00   ..o0..Xko0......

¬Ý°_¨Ó¦ü¥G¬O¤@¨ÇÀɮצWºÙ¤Î¬Y¨Ç¸ê®Æ¡Aªº½T¡A³o´N¬O®Ú¥Ø¿ýºÏ°Ï¡C¥Ñ BPB_RootClus ±oª¾ ( ¨£¤W­± BPB ¥Õ¦â³B )¡A®Ú¥Ø¿ý¬O¦b½s¸¹ 2 ªººÏÂO³B¡A¥N¤J¦¡ (5)¡A«K¥i±o®Ú¥Ø¿ýºÏ°Ï¦û¾Ú½s¸¹ 3E48 ªºÅÞ¿èºÏ°Ï°_¡A¦@ 8 ­ÓºÏ°Ï¡C®Ú¥Ø¿ý¬O¤£¬O¥u¦û¾Ú¤F³o 8 ­ÓºÏ°Ï©O¡H¥i¥H¥Ñ FAT °Ï°ìªº²Ä 2 ­ÓÄæ¦ì±oª¾¡A¸ÓÄæ¦ì¬O 0FFFFFFF ( ¨£¤W­±¶À½u®Ø°_¨Ó³B )¡A´Nª¾¹D®Ú¥Ø¿ýµ²§ô©ó¦¹¡C

¦AÁ|¥t¤@¨Ò»¡©ú¡C¨£®Ú¥Ø¿ý SUHDLOG.TXT ³o­ÓÀɮתººÏÂO«ü¦ì¾¹«üªº¬O 3 ( ¤W­±¬õ¦â¦r )¡Aªí¥Ü¦¹Àɥѽs¸¹ 3 ªººÏÂO¶}©l¦s©ñ¡A¥ç¥i¥N¤J¦¡ (5) ¨D±oÅÞ¿èºÏ°Ï¡A¦Ó FAT °Ï°ìªº²Ä 3 ­ÓÄæ¦ì¤ºªº¼Æ­È¬O 4¡Aªí¥Ü¦¹Àɤ£¥u¦û¾Ú¤@­ÓºÏÂO¡AÁÙ¦û¾Ú½s¸¹ 4 ªººÏÂO¡A¦A¬Ý FAT °Ï°ìªº²Ä 4 ­ÓÄæ¦ì¬Oµ²§ô°O¸¹¡Aªí¥Ü¦¹ÀÉ´N¦û¦³³o¨â­Ó³sÄòªººÏÂO¡C¦]¦¹±z¥i¥H§â¤@­ÓÀɮשҧtªº FAT Äæ¦ìµø¬°¤@³s¦êªºÃì¡A¦¹Ã쪺¶}ºÝ¬O¦b FDB¡A¦Ó¤¤¶¡¬O¾a FAT ùتºÄæ¦ì¤º®e³s±µ¡A§ÀºÝ¬O¥H FFFFFF8 µ²§À ( ¹ï FAT32 ¦Ó¨¥ )¡C

¨ú±o½s¸¹ N ªº FAT Äæ¦ì¤º®e

¥Ñ¤W­±ªº»¡©ú¡AÀ³·í©ú¥Õ¡A¨ú±o FAT Ä欰ùتº¤º®e¬O«Ü­«­nªº¡A¦]¬° FAT Äæ¦ìùتº¤º®e¬O¤U¤@­ÓÀɮ׺ÏÂO©Ò¦b¡A©Î¬Oµ²§ô°O¸¹¡A¯à¨ú±o FAT Äæ¦ì¤º®e¡A¤~¯à¦s¨ú¾ã­ÓÀɮסC©³¤U¨Ó¬Ý¬Ý«ç»ò¼Ë¨ú±o½s¸¹¬° N ªº FAT Äæ¦ì¤º®e¡C¥Ñ¤U­±ªº FAT °Ï°ì³¡¥÷¤º®e

¥iª¾¡G§Ú­Ì±o¥ý­pºâ²Ä N ­Ó½s¸¹ªº FAT Äæ¦ì¶ZÂ÷ FAT °Ï°ì°_©l¦³¦h¤Ö­Ó¦ì¤¸²Õ¡A³o­Ó¶ZÂ÷ÅãµM©M FAT «¬ºA¦³Ãö¡C¤]´N¬O»¡¡A¦pªG¬O FAT32¡A³o¶ZÂ÷¬° 4*N ( ¦]¬° FAT32¡A¨C­Ó FAT Äæ¦ì¦û¥Î 4 ­Ó¦ì¤¸²Õ¡A¥ç§Y 32 ¦ì¤¸ )¡F¦pªG¬O FAT16¡A«h¬° 2*N¡F¦pªG¬O FAT12¡A«h¬° 1.5*N¡C©Ò¥H¥i¥H¼g¦¨¦p¤Uªº²Õ¦X»y¨¥µ{¦¡¡G

        mov     eax,N   ;²Ä N ­Ó FAT Äæ¦ì
.if fat_type==12h
        mov     ecx,eax
        shr     ecx,1   ;ECX = EAX/2
        add     eax,ecx ;EAX = EAX + EAX/2¡A§Y 1.5*N
.elseif fat_type==16h
        shl     eax,1
.elseif fat_type==32h
        shl     eax,2
.endif                  ;°õ¦æ§¹«á¡AEAX ¬°²Ä N ­Ó½s¸¹ªº FAT Äæ
                        ;¦ì¶ZÂ÷ FAT °Ï°ì°_©l¦³¦h¤Ö­Ó¦ì¤¸²Õ

¦Ó¨C 512 ­Ó¦ì¤¸²Õ²Õ¦¨¤@ºÏ°Ï¡A¦]¦¹°õ¦æ§¹¤W­±µ{¦¡ªº EAX ¦A°£¥H 512¡A´N¥i¨D±o FAT °Ï°ìªº²Ä´X­ÓºÏ°Ï¡A¦Ó¾l¼Æ©Ò«üªº¦ì§}¤§¼Æ­È´N¬O²Ä N ­Ó FAT Äæ¦ìªº¤º®e¡C¦¹¼Æ­Èªºªø«×»P FAT «¬ºA¦³Ãö¡A­Y¬° FAT32 «h¥²¶·¨ú±o 32 ¦ì¤¸ªø¡A­Y¬° FAT16 «h¥²¶·¨ú±o 16 ¦ì¤¸ªø¡A­Y¬° FAT12 «h¥²¶·¨ú±o 12 ¦ì¤¸ªø¡C¹ï FAT32/16 ¦Ó¨¥¡A¥u­n¨ú±o¹ê»Úªø«×§Y¥i¡A¦ý¬O FAT12 ªºÄæ¦ì¦³ 1.5 ¦ì¤¸²Õªø¡A¤ñ¸û³Â·Ð¡A¤@¯ë¬O¨Ì·Ó¤U­±¤½¦¡­pºâ¡G

        movzx   eax,word ptr fs:[bx]    ;BX = EAX °£¥H 512 «áªº¾l¼Æ
.if fat_type==12h
        test    N,1
        jz      even_n
        shr     eax,4
even_n: and     ax,0fffh
.elseif fat_type==16h
.elseif fat_type==32h
        mov     eax,dword ptr fs:[bx]
        and     eax,0fffffffh
.endif

°õ¦æ§¹«á¡AEAX ´N¬O²Ä N ­ÓºÏÂO½s¸¹¤§¤º®e¡C


®Ú¥Ø¿ý°Ï°ì

¹ï FAT12/16 Àɮרt²Î¦Ó¨¥¡AFAT °Ï°ì¤§«á¬O®Ú¥Ø¿ý°Ï°ì¡A®Ú¥Ø¿ý¬O³Ì¤W¼hªº¥Ø¿ý¡A©Ò¦³ªº¤l¥Ø¿ý©ÎÀɮ׳£¬O¥H³o­Ó¥Ø¿ý¬°°ò·ÇÂI¦s©ñªº¡C®Ú¥Ø¿ýùØ°O¸üµÛ³\¦hÀɮתº¸ê®Æ¡A¨Ò¦pÀɦW¡B«Ø¥ß¤é´Á®É¶¡¡B°_©lºÏÂOµ¥µ¥¡A¨C­ÓÀɮ׳£¥H 32 ­Ó¦ì¤¸²Õ°O¿ý³o¨Ç¸ê®Æ¡AºÙ¬°ÀÉ®×´y­z°Ï¶ô ( FDB )¡C

®Ú¥Ø¿ý¬O¦bºÏºÐ®æ¦¡¤Æªº®É­Ô´N¤w«Ø¥ßªº¥Ø¿ý¡A¨ä©Ò¦û¦³ªººÏ°Ï¼ÆµLªk§ïÅÜ¡A©Ò¥H¦s©ñ¦b®Ú¥Ø¿ýùتºÀɮשΤl¥Ø¿ýÁ`¼Æ¬O¦³­­¨îªº¡A³o­ÓÁ`¼Æ¦s©ñ©ó BPB ùتº BPB_RootEntCnt Äæ¦ìùØ¡C¦]¬°³o¼Ë¡A©Ò¥H¦pªG¦b¤@­Ó«Ü¤jªººÏºÐ¾÷ùØ¡A¦pªG¤£«Ø¥ß¤l¥Ø¿ýªº¸Ü¡A·í®Ú¥Ø¿ýªº FDB ¯ÓºÉ¡A§Y¨Ï¸ê®Æ°Ï°ìÁÙ¦³ªÅ¶¡¡A¤]µLªk¦s¤J¸ê®Æ¡C

¤£¹L¸g¥Ñ«Ø¥ß¤l¥Ø¿ý¥i¥H°jÁ׳o­Ó­­¨î¡A¦¹¥~¤]¥i¥H¨ÏÀɮפÀªù§OÃþ¦s©ñ¡A¥i»¡¦n³B¦h¦h¡C¤l¥Ø¿ý»P®Ú¥Ø¿ý¬Û¦P³£¬O¥Ñ³\¦h FDB ²Õ¦¨¡A¤£¹L¦³¨âÂI¤£¦P¡G

  1. ¤l¥Ø¿ýªº«e¨â­Ó FDB ÀɦW¥²©w¬O¡y.¡z©M¡y..¡z¡A¤À§O¥Nªí³o­Ó¤l¥Ø¿ý¥H¤Î¤W¤@¼h¥Ø¿ý¡C
  2. ¤l¥Ø¿ý¬OÄÝ©ó¸ê®Æ°Ï°ì¡A¨äªø«×¥i¥H§ïÅÜ¡C

·í·s«Ø¥ß¤@­Ó¤l¥Ø¿ý®É¡A¨t²Î·|¤À°t¤@­ÓºÏÂO°O¿ý³o­Ó¤l¥Ø¿ýªº©Ò¦³ FDB ¸ê®Æ¡A¦Ó¥B·|¦b³o­Ó¤l¥Ø¿ýªº¤W¼h¥Ø¿ý¤¤¡A¥H¤@­Ó FDB °O¿ý³o­Ó¤l¥Ø¿ýªº¸ê®Æ¡A¥]§t°_©lºÏÂOµ¥µ¥¡A¦Ó°_©lºÏÂO¦b FAT Äæ¦ì·|¥ý°O¿ý¦¨ µ²§ô°O¸¹¡C·í³o­Ó¤l¥Ø¿ýªºÀɮ׺¥¦h¡A¥H­P¨Ï±o¤@­ÓºÏÂO¤£°÷¥Î®É¡A¨t²Î¥i¥H¦A¤À°t¥t¤@ºÏÂOµ¹³o­Ó¤l¥Ø¿ý¡A¦P®É­×§ï°_©lºÏÂOªº FAT Äæ¦ì¡A¨Ï¨ä«ü¦V³Q·s¤À°t¨ìªººÏÂO¡C¨t²Î¥H¤W­z¤èªk¨Ï¤l¥Ø¿ýùتºÀɮ׼ƥu¨üºÏºÐ®e¶qªº­­¨î¡C

¹ï FAT32 Àɮרt²Î¦Ó¨¥¡A¨Ã¨S¦³©Ò¿×ªº®Ú¥Ø¿ý°Ï°ì¡A¦Ó¬O§â®Ú¥Ø¿ý¬Ý¦¨¬O¸ê®Æ°Ï°ìªº¤@³¡¥÷¡A®Ú¥Ø¿ý´N¹³¬O¤@­Ó¤ñ¸û¯S§Oªº¤l¥Ø¿ý¤@¼Ë¡CFAT32 Àɮרt²Î«Ø¥ß®Ú¥Ø¿ý®É¶È¤À°t¤@­ÓºÏÂOµ¹®Ú¥Ø¿ý¡A¦Ó³o­ÓºÏÂO·|¦s¤J BPB ªº BPB_RootClus Äæ¦ì¡A·í®Ú¥Ø¿ý FDB ¤£°÷®É¡A¨t²Î·|¤ñ·Ó¤l¥Ø¿ýªº¤è¦¡¦A¤À°t¤@­ÓºÏÂOµ¹®Ú¥Ø¿ý¡A¦]¦¹®Ú¥Ø¿ýÀɮפ£·|¦³­­¨î¡C


8.3 ÀɦW®æ¦¡»P VFAT

¦b DOS 6.x ¤Î¨ä¤§«eªº DOS ª©¥»¡A¥i¯à¬°¤FºÏºÐ®e¶q©Î¨ä¥L²z¥Ñ¡AÀɮצWºÙ¦³³\¦h³W«h¡A©Î³\±z¤]¥i¥H»¡¬O­­¨î¡C³o¨Ç³W«h¬O¡G

  1. ÀɦW³q±`¥i¥H¤À¬°¥DÀɦW¥H¤Î°ÆÀɦW¡A¤¤¶¡¥H¡y.¡z¤À¹j¡C°ÆÀɦW¥i¦³¥iµL¡A¦ý°ÆÀɦW±`¥Nªí³o­ÓÀɮתº¥Î³~¡B©Ê½èµ¥µ¥¡A¨Ò¦p¥i°õ¦æÀɬO¥H .EXE ªí¥Ü¡C
  2. ¥DÀɦW³Ì¦h¥u¯à¦³¤K­Ó ASCII ¦r¤¸²Õ¦¨¡A°ÆÀɦW³Ì¦h¥u¯à¦³ 3 ­Ó ASCII ¦r¤¸²Õ¦¨¡A¨Ã¥B¨âªÌ¬Ò¤£¯à¥Î¯S®í²Å¸¹¨Ò¦p¡y\¡z¡B¡y|¡zµ¥ ( ³o¨Ç³Q·í°µ DOS ªº¯S®í¦r¤¸¡A¦p­«·s¾É¦V¡BºÞ½uµ¥ )¡A¤]¤£¯à¥Î ASCII ¦r¤¸¤p©ó 32 ¥H¤Uªº¼Æ­È¡A¨Ò¦p Carrier Return¡BEscape µ¥¦r¤¸¡C

¥Ñ©ó¥DÀɦW¡B°ÆÀɦW³Ì¦h¬° 8¡B3 ­Ó ASCII ¦r¤¸¡A¬GºÙ¬°¡y8.3 ÀɦW®æ¦¡¡z©ÎªÌºÙ¬°µuÀɦW¡C·íµM¡A³o¨Ç­­¨î¦¡«Ü¤£¦X²zªº¡A©Ò©¯¨ì¤F Windows 95 ¤W¥«®É¡A±À¥X¤F VFAT¡CÁöµM¦³ÂI¨à±ß¡A¦ý¬OÁ`¤ñ¨S¦³¨Ó±o¦n¡C

VFAT °£¤F¥i¨Ï¥ÎªøÀɦW ( LFN¡ALong File Name¡A³Ì¦h¥i¹F 255 ¦ì¤¸²Õ ) ¥~¡AÁÙ¦³´X¶µ­«¤jªº©Ê½è¡A¤@¬OÀɦW¨Ï¥Î¸U°ê½X ( UniCode¡A½Ð°Ñ¾\ªþ¿ý¤Q ) ½s½X¦Ó¤£¦A¥Î ASCII ½X ( ³o¨Ï±oÀɦW¥i¥H¥Î¤¤¤å¡Bªü©Ô§B¤åµ¥¥@¬É¤W¤j¦hªº¤å¦r§@¬°ÀɦW )¡F¤G¬O¬Û®e©ó­ì¦³ªº FAT12/16/32 Àɮרt²Î¡A¤]´N¬O»¡¦b Windows 9x/Me ¨t²Î¤U¡A­ì¨Ó¥Î DOS ®æ¦¡¤ÆªºÅÞ¿èºÏºÐ¤]¥i¥H¥Î VFAT¡C­n¹F¨ì³o¨Ç¥Øªº¡A·L³n¬O«ç»ò°µ¨ìªº©O¡H

­ì¨Ó·L³n­×§ï¤F FDB¡AÅܦ¨¨âºØ§Î¦¡¡A¤@ºØ§YµuÀɦW§Î¦¡¡A»P­ì¨Óªº¬Û¦P¡F¥t¤@ºØ¬OªøÀɦW§Î¦¡¡A±Mªù¥Î¨ÓÀx¦sªøÀɦWªº¡C°²¦p¬Y­ÓÀɮתºÀɦW²Å¦X¡y8.3 ÀɦW®æ¦¡¡z¡A¨º»ò³o­ÓÀÉ®×´N¥u¦³¤@­ÓµuÀɦW§Î¦¡ªº FDB¡A¦Ó¨S¦³ªøÀɦW§Î¦¡ªº FDB¡F¦pªG¬Y­ÓÀɮתºÀɦW¤£²Å¦X¡y8.3 ÀɦW®æ¦¡¡z¡A¨º»ò³o­ÓÀÉ®×´N¦³¤@­ÓµuÀɦW§Î¦¡ªº FDB »P¤@­Ó©Î¼Æ­ÓªøÀɦW§Î¦¡ªº FDB ¨âºØ FDB¡AªøÀɦW§Î¦¡ªº FDB ¥uÀx¦sªøÀɦW¡A¦ÓÀɮתº«Ø¥ß¤é´Á¡Bªø«×¡B°_©lºÏÂOµ¥¤´Àx¦s©óµuÀɦW§Î¦¡ªº FDB ùØ¡A¦Ó¥BªøÀɦW§Î¦¡ªº FDB ¤§«á¡Aºò±µµÛÀÉÀɦW§Î¦¡ªº FDB¡A©³¤U¥ý¤¶²ÐªøÀɦW§Î¦¡ªº FDB¡C¨C­ÓªøÀɦW§Î¦¡ªº FDB ¤]¾Ö¦³ 32 ­Ó¦ì¤¸²Õ¡G

¦ì§} ªø«×
(¦ì¤¸²Õ)
·N¡@¡@¸q
0 1 ªøÀɦW§Î¦¡ªº FDB ¶¶§Ç¡A¤@­Ó¨ã¦³ªøÀɦWªºÀɮ׫ܥi¯à¾Ö¦³¼Æ­ÓªøÀɦW§Î¦¡ªº FDB¡A³o¨Ç FDB ¥ÑµuÀɦW§Î¦¡ªº FDB ¶}©l¦V§C¦ì§}±Æ¦C¡A¦Ó³o­Ó¦ì¤¸²Õ´Nªí¥Ü¨ä¶¶§Ç¡A¥Ñ 1 ¶}©l¡A³Ì¦h¨ì 20¡A¦ý¬O¦pªG¬O³Ì«á¤@­Ó FDB¡A«h¶·¥[¤W 40H¡C
1¡ã0AH 0AH ªøÀɦW¡A¦¹³¡¥÷¥i¥H¦s 5 ­Ó¸U°ê½X¦r¤¸
0BH 1 ªøÀɦW§Î¦¡ FDB ÄÝ©Ê¡A¥²¬° 0FH¡AÀˬd¦¹¦ì¤¸²Õ¡A­Y¬° 0FH¡Aªí¥Ü¦¹ FDB ¬°ªøÀɦW§Î¦¡ªº FDB
0CH 1 «O¯d¡A¥²¬° 00H
0DH 1 ¬d®Ö½X
0EH¡ã19H 0CH ªøÀɦW¡A¦¹³¡¥÷¥i¥H¦s 6 ­Ó¸U°ê½X¦r¤¸
1AH¡ã1BH 2 «O¯d¡A¥²¬° 00H
1CH¡ã1FH 4 ªøÀɦW¡A¦¹³¡¥÷¥i¥H¦s 2 ­Ó¸U°ê½X¦r¤¸

¥Ñ¤Wªí±oª¾¡A¨C­ÓªøÀɦW§Î¦¡ªº FDB¡AÁöµM¦û¦³ 32 ­Ó¦ì¤¸²Õ¡A¦ý¬O¶¶§Ç½X¡B¬d®Ö½X¡BÄÝ©Ê¡B«O¯dµ¥¦ì¤¸²Õ¡A¹ê»Ú¤W¯à°÷Àx¦sÀɦW¥u¦³ 26 ­Ó¦ì¤¸²Õ¡A¦ý¬O¨C­Ó¸U°ê½X»Ý¦û¥Î 2 ­Ó¦ì¤¸²Õ¡A¦]¦¹¹ê»Ú¤W¨C­ÓªøÀɦW§Î¦¡ªº FDB ¥u¯à¦s¦³ 13 ­Ó¦r¡C¦Ó³o 13 ­Ó¦r¬O¥H¸U°ê½X½s½X¦Ó¦¨¡A¨Ã¥B´²¸¨©ó FDB ªº¤T­Ó³¡¥÷¡C

©³¤U¨Ó¬Ý¬Ý¤@­Ó¨Ò¤l¡A³o¬O¤p¤ì°¸µwºÐ¤¤ªº¡yI learn assembly.txt ¡zÀɮסA¤p¤ì°¸¥Î DEBUG.EXE ¸ü¤J¥¦©Ò¦bªº¥Ø¿ýºÏ°Ï¡AµM«á¶É¦Lªºµ²ªG¡G

128B:0000  42 62 00 6C 00 79 00 2E-00 74 00 0F 00 D4 78 00   Bb.l.y...t....x.
128B:0010  74 00 00 00 FF FF FF FF-FF FF 00 00 FF FF FF FF   t...............
128B:0020  01 49 00 20 00 6C 00 65-00 61 00 0F 00 D4 72 00   .I. .l.e.a....r.
128B:0030  6E 00 20 00 61 00 73 00-73 00 00 00 65 00 6D 00   n. .a.s.s...e.m.
128B:0040  49 4C 45 41 52 4E 7E 31-54 58 54 20 00 5C 76 30   ILEARN~1TXT .\v0
128B:0050  97 34 97 34 0F 00 7B 30-97 34 B6 49 03 00 00 00   .4.4..{0.4.I....

³Ì©³¤UÂŦ⪺³¡¥÷´N¬OµuÀɦW§Î¦¡ªº FDB¡A¥]§t¤FÀÉ®×ÄÝ©Ê¡B«Ø¥ß¤é´Áµ¥µ¥¡A¦ÓªøÀɦW«h°O¸ü©ó§C¦ì§}ªº¶À¦â»P¾í¦âªº¨â­ÓªøÀɦW§Î¦¡ªº FDB ùØ¡A¶À¦â³¡¥÷«h¬°ªøÀɦWªº²Ä¤@­Ó FDB¡A¬G²Ä¹s­Ó¦ì¤¸²Õ¬° 1¡A¾í¦â¬°²Ä¤G­Ó¡A¤]¬O³Ì«á¤@­Ó FDB¡A¬G²Ä¹s­Ó¦ì¤¸²Õ¬° 42H¡C¦Ó§¹¾ãªºªøÀɦW«h¬O¥ÑµuÀɦW§Î¦¡ªº FDB §C¤@­Ó¦ì§}ªº FDB ¶}©l¡A§â¨C­ÓªøÀɦW§Î¦¡ªº FDB ùتº¤T³¡¥÷ÀɦW²Õ¦X¡A­Y¤@­Ó FDB ¤£°÷¥Î«h©¹§C¦ì§}ªº FDB ©µ¦ù¦Ó²Õ¦¨¡Aª½¨ì¹J¨ì¹s¬°¤î¡C


µù¤@¡G¹ï FAT16 ¤À³Î¦Ó¨¥¡A³Ì¦h¦³ 65536 ­ÓºÏÂO¡A©Ò¥H¦³ 65536 ­ÓºÏÂO½s¸¹¡A¨C­ÓºÏÂO½s¸¹¦û 16 ¦ì¤¸¡A¥ç§Y 2 ­Ó¦ì¤¸²Õ¡A¦]¦¹ FAT ³Ì¦h¦û¦³ 256 ­ÓºÏ°Ï¡C

¤@­Ó FAT ©Ò¦û¦ì¤¸²Õ¼Æ¡G65536*2=131072
¨C­ÓºÏ°Ï¦³ 512 ¦ì¤¸²Õ¡A¬G¤@­Ó FAT ©Ò¦ûºÏ°Ï¼Æ¡G131072/512=256

ÁÙ¤£¦Ü¼vÅT¤Ó¤j¡A¦ý¬O¹ï FAT32 ¤À³Î¦Ó¨¥¡A¤£¥u¨C­ÓºÏÂO½s¸¹¦û¥Î 32 ¦ì¤¸¡A¦P®ÉºÏÂO½s¸¹¼Æ¤]¼W¥[¤F¡A©Ò¥H¦pªG¥Î¤W­zŪ¨ú FAT¡A­pºâ¥¼¨Ï¥ÎªººÏÂO¼Æ¡A±N·|Ãm¤é¶O®É¡A©Ò¥H¥Î FSI_StrucSig ¨Ó­pºâ³Ñ¾l®e¶q¡C


µù¤G¡G¦b²Ä 18¡B32 ©M³o¤@³¹´£¨ì¤F³\¦hºÏ°Ï½s¸¹»P¦s¨úºÏ°ÏªºªA°Èµ{¦¡¡A§Ú·Q¥i¯à¦³³\¦h¤H·|·d²V¡A¦b¦¹µy°µ¸ÑÄÀ¡C

­º¥ý±o­n·|¤À¿ë¹êÅéºÏºÐ»PÅÞ¿èºÏºÐ¡C¹êÅéµwºÐ´N¬O±z¦×²´©Ò¨£ªºµwºÐ¡A¨Ò¦p²{¦bªº IDE ¬É­±³Ì¦h¥i¥H±µ¤W¥|ÁûµwºÐ¡A¦¹³B«K¬O«ü¹êÅéµwºÐ¡C¦ý¬O¤@ÁûµwºÐ¥i¥HÂÇ¥Ñ FDISK.EXE µ¥¤u¨ã¡A§â¥¦¤À³Î¦¨¦n´X­Ó¤À³Î°Ï¡A¨C­Ó¤À³Î°Ï¥iµø¬°¤@ÁûÅÞ¿èµwºÐ¡A¦]¦¹ÅÞ¿èµwºÐ¬O¨Ã«D±z¬Ý¨£ªºµwºÐ¡A¤£¹L§Ú­Ì¦b§@·~¨t²Î¤¤¨£¨ìªº C:¡BD:¡Kµ¥ºÏºÐ½s¸¹´N¬OÅÞ¿èºÏºÐ¡C¦s¨ú¹êÅéµwºÐ®É¡A¥Î INT 13H/INT 13H Extension ªA°Èµ{¦¡¡A¨ä©w§}¤è¦¡¦³ CHS ©Î LBA ÅÞ¿è©w§}¡C¦Ó¦s¨úÅÞ¿èºÏ°Ï«h¬O¥Î INT 25H/INT 26H ©Î AX=7305/INT 21H¡C¨ä¥L½Ð°Ñ¦Ò¤Uªí¡G

µwºÐ ¹êÅéµwºÐ ÅÞ¿èµwºÐ
ºÏ°Ï½s¸¹
¦WºÙ
CHS LBA ¡@
ºÏ°Ï½s¸¹ ¥Ñ³Ì¥~°é¬°¹sºÏ¬W¡A¦V¤º°éª½¨ì³Ì¤jºÏ¬W¡F¨CºÏ¬W¤À¦¨­Y¤zºÏÀY¡AºÏÀY¥Ñ¹s¨ì³Ì¤jºÏÀY¡F¨CºÏÀY¦A¤À¦¨­Y¤zºÏ°Ï¡AºÏ°Ï¥Ñ¤@¶}©l¨ì³Ì¤jºÏ°Ï ¥Ñ¹êÅéµwºÐªº MBR ¶}©l½s¸¹¡A¦¹ºÏ°Ï¬°¹s¤@ª½¨ì¹êÅéµwºÐªººÏ°ÏÁ`¼Æ´î¤@ ¥ÑÅÞ¿èºÏºÐªº³Ì«e­±ºÏ°Ï ( §Y±Ò°ÊºÏ°Ï ) ¶}©l¼Ð¸¹¡A¦¹ºÏ°Ï¬°¹sºÏ°Ï¤@ª½¨ì³o­ÓÅÞ¿èºÏºÐªººÏ°ÏÁ`¼Æ´î¤@
ªA°Èµ{¦¡ INT 13H INT 13H Extension INT 25H/26H ©Î
AX=7305H/INT 21H
ºÏºÐ½s¸¹ ³nºÐ¥Ñ 0 ¶}©l¡A0¡GA:¡A1¡GB:¡K
µwºÐ¥Ñ 80H ¶}©l¡A80H¡G²Ä¤@Áû¹êÅéµwºÐ¡A81H¡G²Ä¤GÁû¹êÅéµwºÐ¡K¨Ì¦¹Ãþ±À
0 ªí¥Ü A: ºÏºÐ¾÷¡A1 ªí¥Ü B: ºÏºÐ¾÷¡A2 ªí¥Ü C: ºÏºÐ¾÷¡K¨Ì¦¹Ãþ±À
ºÏºÐ¾÷©ñ©ó¦ó³B DL ¼È¦s¾¹ AL ¼È¦s¾¹

¦^¨ì­º­¶¡A ¨ì²Ä¤T¤Q¤G³¹¡A¨ì²Ä¤T¤Q¥|³¹