1: 2005-07-30 (土) 09:17:44 |
現: 2024-01-06 (土) 22:39:10 |
| | | |
| ・・・っとまあ、こういう感じかな??? | | ・・・っとまあ、こういう感じかな??? |
| + | |
| + | FAT12は、ルートディレクトリ領域にファイルの情報が書かれている。また、FAT12では1つのファイルに32バイトの情報を持っている。どういう情報かというと |
| + | |
| + | |0|ファイル名。(thebbl.sysだったら、「thebbl」が入る| |
| + | |1|~| |
| + | |2|~| |
| + | |3|~| |
| + | |4|~| |
| + | |5|~| |
| + | |6|~| |
| + | |7|~| |
| + | |8|拡張子。(thebbl.sysだったら、「sys」が入る)| |
| + | |9|~| |
| + | |10|~| |
| + | |11|ファイルの属性の情報| |
| + | |12|予約領域(将来用に用意された部分。FAT12では使わない)| |
| + | |13|ファイル作成時刻(秒の部分?)| |
| + | |14|ファイル作成時刻(何時何分)| |
| + | |15|~| |
| + | |16|ファイル作成時刻(何年何月何日)| |
| + | |17|~| |
| + | |18|ファイルアクセス日付(???よくわからんな・・・)| |
| + | |19|~| |
| + | |20|ファイルが格納されているセクタの番号。(上位2バイト。FAT12では使用しないらしい・・・)| |
| + | |21|~| |
| + | |22|ファイル更新時刻(何時何分何秒)| |
| + | |23|~| |
| + | |24|ファイル更新時刻(何年何月何日)| |
| + | |25|~| |
| + | |26|ファイルが格納されているセクタの番号。(下位2バイト。FAT12ではここだけ使用すればいいらしい・・・)| |
| + | |27|~| |
| + | |28|ファイルのサイズ| |
| + | |29|~| |
| + | |30|~| |
| + | |31|~| |
| + | |
| + | |
| + | なるほどなるほど。じゃ、この「26」の部分を見れば、このファイルがセクタ何番からスタートしているかわかるわけか。 |
| + | |
| + | 「ルートディレクトリ領域」には、上記32ビットを一組にして、ずらーーーーっとこれが並んでいるわけね。 |
| + | |
| + | |
| + | |
| + | *プログラムを妄想 [#df4c64c3] |
| + | |
| + | そんなわけでファイルを探すプログラムを妄想してみる。 |
| + | |
| + | |
| + | |
| + | ;================================================== |
| + | [BITS 16] |
| + | [OPTIMIZE 1] |
| + | [OPTION 1] |
| + | [INSTRSET "8086"] |
| + | [FORMAT "BIN"] |
| + | ORG 0x100 |
| + | ;---------------------------------------------- |
| + | |
| + | ;==とりあえず一個のルートディレクトリ領域を読み込み、そこで指定のファイルを |
| + | ;探してみる |
| + | |
| + | |
| + | MOV AH,02H ;モード指定。(読み込みを指定) |
| + | MOV AL,01H ;連続処理するセクタ数(とりあえず1) |
| + | MOV CH,01H ;シリンダ番号(シリンダ1を指定) |
| + | MOV CL,14 ;セクタ番号(セクター14を指定) |
| + | MOV DH,0 ;ヘッド番号(0すなわち表を指定) |
| + | MOV DL,0 ;ドライブ番号(0すなわちAドライブを指定) |
| + | MOV ES,xxx ;データを読み込むアドレスのセグメント値 |
| + | MOV BX,xxx ;データを読み込むアドレスのオフセット値 |
| + | INT 13H |
| + | |
| + | |
| + | |
| + | |
| + | ;--end--- |
| + | |
| + | ;---------------------------------------------- |
| + | MOV AX,0x4c00 |
| + | INT 0x21 |
| + | ;=============================================== |