再貼一次好了。
有關FAT讀檔及處理方式(磁簇值-->磁區值)等,可見我N年前寫的FSRC程式(可在這裡取得)
不過是ASM寫的,不過我沒寫太多的註解,因為我另外寫成筆記的,該程式只是讀出FAT功能,沒有寫入FAT資料。
我忘了當初我取得BOOT內的各項資料是透過DOS CALL還是 INT25H 讀 SEC.0 ,這要查查。
寄件者:Asc Cpu (newsgate@teatime.lifenet.com.tw)
主旨:DOS磁區和物理磁區的互換問題(解答版)
新聞群組:tw.bbs.comp.language
日期:1998/11/10
DOS絕對磁區換算成物理磁軌、磁面、磁區之算法
───────────────────────
首先介紹本人HD之分割法:
HD1 = C: to P: ( 2.1GB )
HD2 = Q: ( 120MB )
第一台HD分成C:~P:磁碟,第二台沒分割。
表1~3是HD1的各個磁碟的分割表內量;要算物理磁軌、磁面、磁區所需要
知的有HD的最大每一磁面上的磁區總數值,由表1知為63;每一磁軌的磁面數
(就是磁頭數),由表1知為64,而總磁軌數要不要,則示程式寫作時決定;
再來就是要知保留磁區的值(由 RELATIVE SEC. 欄得知)。
接下來談公式:
A式:
物理磁區值=線性磁區值(註) MOD 每一磁面的磁區總數值
B式:
物理磁面值= INT(線性磁區值/每一磁面的磁區總數值) MOD 每一磁軌的磁面總數值
C式:
物理磁軌值= INT(線性磁區值/(每一磁面的磁區總數值*每一磁軌的磁面總數值))
註:因為要區分物理磁區而取名的,其如何求出的,後述。
OK:現在我要求出在C:之絕對磁區3988,位於HD的何處,則步驟如下:
1、絕對磁區+1+C:的保留磁區值=線性磁區值,為:
3988+1+63=4052
2、把1步求出的值代入上面的A、B、C三式中得:
A=4052/63=64餘20,所以 A=20
B=64/64=1餘0,所以 B=0
C=1
3、所以位在磁軌1、磁面0、磁區20的地方。(CYLI.=1,SIDE=0,SEC.=20)
表1:
DISK DRIVER= C: & D:+
---------------------------------------------------------------------------
| | | Starting Location | Ending Location |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors | Sectors |C:
|BIGDOS| Yes| 1 0 1 | 63 60 63 | 63| 245889|D:+
|EXTEND| No | 0 61 1 | 63 1021 63 | 245952| 3874752|
---------------------------------------------------------------------------
表2:
DISK DRIVER= D: & E:+
---------------------------------------------------------------------------
| | | Starting Location | Ending Location |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors | Sectors |D:
|BIGDOS| No | 1 61 1 | 63 121 63 | 63| 245889|E:+
|EXTEND| No | 0 122 1 | 63 182 63 | 245952| 245952|
---------------------------------------------------------------------------
表3:
DISK DRIVER= E: & F:+
---------------------------------------------------------------------------
| | | Starting Location | Ending Location |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors | Sectors |E:
|BIGDOS| No | 1 122 1 | 63 182 63 | 63| 245889|F:+
|EXTEND| No | 0 183 1 | 63 243 63 | 491904| 245952|
---------------------------------------------------------------------------
好,現在要求出E:中絕對磁區77988在何處:
1、由表2的E:+處得之,之前的保留區是245952,再看表3中的E:分割
表內的保留區是63,所以線性磁區值為:
77988+1+63+245952=324004
2、代入ABC三式得:
A=324004/63=5142餘58,所以 A=58
B=5142/64=80餘22,所以 B=22
C=80
則位於 CYLI.=80,SIDE=22,SEC.=58 處。
好了,說明完了,知到算法之後,你可以把整個邏輯磁碟機 BACK UP 都行了
OK,有問題或有錯的地方可以提出來........
.. THE WAY YOU DO THE THINGS YOU DO/MY GIRL .. (DARYL HALL & JOHN OATES)
--- News Gateway 0.08+
* Origin: TeaTime BBS 886-2-2245-3105 News <=> BBS Gateway (6:720/345.0)
[AGC 在 2005-12-5 11:07 PM 作了最後編輯]