磁头号和起始扇区的计算方法------软盘结构
于淵關(guān)于從軟盤(pán)讀取文件所附的源代碼注釋如下:
??? ; 設(shè)扇區(qū)號(hào)為 x
??? ;?????????????????????????? ┌ 柱面號(hào) = y >> 1
??? ;?????? x?????????? ┌ 商 y ┤
??? ; -------------- => ┤????? └ 磁頭號(hào) = y & 1
??? ;? 每磁道扇區(qū)數(shù)???? │
??? ;?????????????????? └ 余 z => 起始扇區(qū)號(hào) = z + 1
如何理解這個(gè)計(jì)算方法呢?
3.4寸1.44M軟盤(pán)存儲(chǔ)結(jié)構(gòu):
? 物理地址????????????????????????? 扇區(qū)地址
0面0磁道? 1扇區(qū)?????????????????????? 0
0面0磁道? 2扇區(qū)?????????????????????? 1
??????? :?????????????????????????????????? :
0面0磁道18扇區(qū)?????????????????????? 17
1面0磁道? 1扇區(qū)?????????????????????? 18
1面0磁道? 2扇區(qū)?????????????????????? 19
??????? :?????????????????????????????????? :
1面0磁道18扇區(qū)?????????????????????? 35
??????? :
說(shuō)明:軟盤(pán)存儲(chǔ)地址的編排是以磁道方式安排的,而不是面方式來(lái)安排的,即不是排完第一面再排第二面的方式來(lái)安排。
為了從扇區(qū)號(hào)為地址的方式轉(zhuǎn)換為以磁面號(hào)、磁道號(hào)、起碼扇區(qū)號(hào)為地址方式來(lái)從軟盤(pán)讀取文件的方法。換個(gè)思考方式,反過(guò)來(lái)思考,從磁面號(hào)、磁道號(hào)、起碼扇區(qū)號(hào)為地址轉(zhuǎn)換為以扇區(qū)號(hào)為地址的方式讀取文件。
通過(guò)從上面軟盤(pán)存儲(chǔ)結(jié)構(gòu)并使用高中就學(xué)到的數(shù)學(xué)歸納法可得:
? 磁面號(hào)(F)=0,磁道號(hào)(R)=0? 起始扇區(qū)號(hào)(S)=18 所對(duì)應(yīng)的扇區(qū)地址 (A)=17
? 磁面號(hào)(F)=1,磁道號(hào)(R)=0? 起始扇區(qū)號(hào)(S)=18 所對(duì)應(yīng)的扇區(qū)地址 (A)=35
這兩個(gè)分別為軟盤(pán)最前面的兩個(gè)磁道了,通過(guò)畫(huà)下類(lèi)似于上面的軟盤(pán)存儲(chǔ)結(jié)構(gòu)便可理解。 注 F,R,S,A為簡(jiǎn)寫(xiě),比如:F代表磁面號(hào)。
進(jìn)而可以得知任意的 A = F*18+R*18*2+S-1??? 即? A=(F+2R)*18+S-1?
?
注意 R*18*2中的2 是因有兩個(gè)磁面,比如 R=1 那么它的前面就有 F=0、R=0,F=1、 R=0
所以,A除以18的余數(shù)等于 S-1????? S=A除以18的余數(shù)+1
類(lèi)似的 A除以18的商等于 F+2R??? 如何分別得出F,R的值呢??? 已知 F=0或1,2R的個(gè)位數(shù)一定為偶數(shù)
即:如果 F+2R為個(gè)位數(shù)為奇數(shù)的話 ,那么肯定F為奇數(shù),F的值只能為1(F=1) 所以,F = A除于18的商 & 1
對(duì)于R,如果 F=0? ,那么 R=A除以18的商 除以 2 = A除以18的商 >> 1
如果 F=1 ,那么 A除以18的商 除以 2 = (F+2R)/2 = F/2+R? ,又 F/2=0或0.5 由于是整除被舍去? 即 R = A除于18的商 >> 1
這樣就可以于淵的那段源代碼注釋了。可見(jiàn)理解的關(guān)鍵在于公式 A = F*18+R*18*2+S-1 而這個(gè)公式本身不難得出,多試幾個(gè)值就明白了。
第一次寫(xiě)博客,請(qǐng)多多指正。呵呵。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的磁头号和起始扇区的计算方法------软盘结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 汇编的8种寻址方式,以及2个默认段寄存器
- 下一篇: 《一个操作系统的实现》——pmtest1