当前位置: 代码迷 >> 汇编语言 >> 为什么调用int 13h只能读一个磁道的17个扇区
  详细解决方案

为什么调用int 13h只能读一个磁道的17个扇区

热度:2495   发布时间:2013-02-26 00:00:00.0
求助:为什么调用int 13h只能读一个磁道的17个扇区?
我想读取第   17   号逻辑扇区,程序是这样的。  
mov   ah,   02h     ;读扇区  
mov   al,   01h     ;要读扇区数  
mov   ch,   0h       ;0柱面  
mov   cl,   12h     ;第   18   个扇区  
mov   dh,   0h       ;0磁头  
mov   dl,   0h       ;软驱  
int   13h  

然后就出错了,错误代码为2。  
在某个网站上查到的是这样:  
02h         address   mark   not   found  

为什么出错呢?

------解决方案--------------------------------------------------------
int 13H 的02子功能读软盘时,一次最多可以读取18个扇区,因为调用时要指定磁头号,磁道号和扇区号。因为指定了磁头和磁道,而磁道内只有18个扇区,所以最多一次可以读取18个扇区。虽然使用了之多这个字眼,但是如果指定的起始扇区不是磁道内的第一个扇区,那么将不能读取18个扇区,而只能读到本磁道的结束为止。而且int 13 02子功能使用的扇区号是基于1的,如果使用0会出错。如果真的需要批量读取扇区,就必须检测要读取的这一批扇区是否跨越了磁道,如果跨越了磁道,就必须分两次读完,即,第二次读取的时候,修改磁道号或者磁头号(根据逻辑扇区的编址方式而定)。
  相关解决方案