(第4章 1)软盘结构及其数据读取
参考资料:
http://blog.csdn.net/smallmuou/article/details/6796867
?
?? ? ? ?由于后面的汇编中要读取软盘扇区,这里抽空学习一下软盘结构和软盘读取。
?1. 软盘结构
?? ? 1.44MB软盘容量计算:
?? ? 1.44MB=2(面) * 80(磁道/面) * 18(扇区/磁道) * 512(byte/扇区)
2. 相对扇区号及转换
?? ? 在系统中,于是可以通过“盘面+磁道+扇区”访问到相应内容,但是这样比较繁琐,于是有了“(相对)扇区号”的概念。(相对)扇区号实际上是从0开始对磁盘上所有扇区进行的编号。
?
?
扇区物理号 ? ? ? ? ? ? ? 相对扇区号?
0面,0道,1扇区 ? ? ? ? ? ? 0 ??
0面,0道,2扇区 ? ? ? ? ? ? 1 ??
0面,0道,3扇区 ? ? ? ? ? ? 2 ??
……………………. ? ? ? ? ? ? ? ??
0面,0道,18扇区 ? ? ? ? ? 17?
1面,0道,1扇区 ? ? ? ? ? ?18?
……………
1面,0道,18扇区 ? ? ? ? ? 35?
0面,1道,1扇区 ? ? ? ? ? ?36 ?
................... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
0面,1道,18扇区 ? ? ? ? ? 53?
1面,1道,1扇区 ? ? ? ? ? ?54?
...................
?
?? ? ?可见,软盘扇区号不是我们想象的先排完1面,而是交替排列的。也可以认为是先编完0磁道上的扇区号,然后再编完1磁道上的扇区号,...,最后编完79磁道上的扇区号。
?
?? ? ?调用int 13h读取软盘扇区时,要求通过“指定的扇区号”计算出“柱面号(即磁道号)”、“磁头号(即盘面号)”、“起始扇区号(即是某个磁道上的第几个扇区)”。稍微想想就可以出来了,不必赘述。
?
?
3、软盘读写
在系统中,是怎么读和写软盘?
通过BIOS中断13,详细见下图:
其中:
磁盘号:指的是软盘中的磁道或磁柱;
扇区号:指的是软盘的扇区;
CH存放磁道的低8位,CL的高两位存放磁道的高2位,CL的低6位存放扇区
磁头号:指的是软盘中的盘面;
驱动器号:指具体的软盘,如软盘A,软盘B...
CF为1则表示读取错误;
?
注:读磁盘时,将读到的扇区放到[es:bx]开始的内存中;
?? ? ? ?写磁盘时,将[es:bx]开始的一个扇区写到磁盘上。
?? ? ? ?这两处,[es:bx]都称为“数据缓冲区”
?
4. 实例
?
??
?
?
?