您现在的位置: 海口鑫鑫电脑维修 >> 硬件维修 >> 硬盘维修 >> 正文

中断INT13功能及用法分析

INT 13H,AH=00H 软、硬盘控制器复位

说明:
  此功能复位磁盘(软盘和硬盘)控制器板和磁盘驱动器,它在磁盘控制器
芯片上完成复位操场作并在磁盘进行所需的操作之前做一系列用于磁盘校准的
磁盘操作。
  当磁盘I/O功能调用出现错误时,需要调用此功能,此刻复位功能将使BIOS
象该磁盘重新插入一样检查驱动器中磁盘状态,并将磁头校准使之在应该在的
位置上。
  此功能调用不影响软盘或硬盘上的数据。
入口参数:
  AH=00H  指明调用复位磁盘功能。
  DL    需要复位的驱动器号。
返回参数:
  若产生错误,进位标志CF=1,错误码在AH寄存器。
  详情请见磁盘错误状态返回码一文。
示例:
  C_SEG  SEGMENT PUBLIC
       ASSUME CS:C_SEG,DS:C_SEG
       ORG 100H
  START:  MOV AH, 00H
       MOV DL, 80H
       INT 13H
       ;复位硬盘 C
       JC ERROR
       ……
  ERROR:  ……
  C_SEG  ENDS
       END START

INT 13H,AH=02H 读扇区说明:
  调用此功能将从磁盘上把一个或更多的扇区内容读进存贮器。因为这是一个
低级功能,在一个操作中读取的全部扇区必须在同一条磁道上(磁头号和磁道号
相同)。BIOS不能自动地从一条磁道末尾切换到另一条磁道开始,因此用户必须
把跨多条磁道的读操作分为若干条单磁道读操作。
入口参数:
  AH=02H  指明调用读扇区功能。
  AL    置要读的扇区数目,不允许使用读磁道末端以外的数值,也不允许
使该寄存器为0。
  DL    需要进行读操作的驱动器号。
  DH    所读磁盘的磁头号。
  CH    磁道号的低8位数。
  CL    低5位放入所读起始扇区号,位7-6表示磁道号的高2位。
  ES:BX   读出数据的缓冲区地址。
返回参数:
  如果CF=1,AX中存放出错状态。读出后的数据在ES:BX区域依次排列。
  详情请参见磁盘错误状态返回码一文。
示例:
  C_SEG  SEGMENT PUBLIC
       ASSUME CS:C_SEG,DS:C_SEG
       ORG 100H
  START:  JMP READ
  BUFFER  DB  512 DUP(0)
  READ:  PUSH CS
       POP ES
       MOV BX, OFFSET BUFFER
       MOV AX, 0201H
       MOV CX, 0001H
       MOV DX, 0000H
       INT 13H
       ;读软盘A, 0面0道1扇区
       ;读出后数据在BUFFER中
       JC ERROR
       ……
  ERROR:  ……
  C_SEG  ENDS
       END START

INT 13H,AH=03H 写扇区

说明:
  调用此功能将从磁盘上把一个或更多的扇区内容写入驱动器。因为这
是一个低级功能,在一个写入操作中的全部扇区必须在同一条磁道上(磁
头号和磁道号相同)。BIOS不能自动地从一条磁道末尾切换到另一条磁道
开始,因此用户必须把跨多条磁道的写操作分为若干条单磁道写操作。
入口参数:
  AH=03H  指明调用写扇区功能。
  AL    置要写的扇区数目,不允许使用超出磁道末端以外的数值,
也不允许使该寄存器为0。
  DL    需要进行写操作的驱动器号。
  DH    所写磁盘的磁头号。
  CH    磁道号的低8位数。
  CL    低5位放入所读起始扇区号,位7-6表示磁道号的高2位。
  ES:BX   放置写入数据的存贮区地址。
返回参数:
  如果CF=1,AX中存放出错状态。
  详情请参见磁盘错误状态返回码一文。
示例:
  C_SEG  SEGMENT PUBLIC
       ASSUME CS:C_SEG,DS:C_SEG
       ORG 100H
  START:  JMP WRITE
  BUFFER  DB  512 DUP(0FFH)
  WRITE:  PUSH CS
       POP ES
       MOV BX, OFFSET BUFFER
       MOV AX, 0301H
       MOV CX, 0001H
       MOV DX, 0000H
       INT 13H
       ;写入软盘A, 0面0道1扇区
       ;把此扇区数据全部置为0FFH
       JC ERROR
       ……
  ERROR:  ……
  C_SEG  ENDS
       END START
INT 13H,AH=04H 检测扇区

说明:
  这个功能检测磁盘上1个或更多的扇区。这个验证测试不是把磁盘上的
数据和内存中的数据进行比较,而只是简单地确定读出的数据有无CRC错误。
这个功能可用来验证驱动器中的软盘版。如果盘片的格式正确,CF=0。
入口参数:
  AH=03H  指明调用检测扇区功能。
  AL    置要检测的连续扇区数目,不允许使用超出磁道末端以外的
数值,也不允许使该寄存器为0。
  DL    需要进行检测的驱动器号。
  DH    磁盘的磁头号。
  CH    磁道号的低8位数。
  CL    低5位放入起始扇区号,位7-6表示磁道号的高2位。
返回参数:
  如果CF=1,AX中存放出错状态。CF=0,检测正确。
  详情请参见磁盘错误状态返回码一文。
示例:
  C_SEG  SEGMENT PUBLIC
       ASSUME CS:C_SEG,DS:C_SEG
       ORG 100H
  START:  MOV AX, 0401H
       MOV CX, 0001H
       MOV DX, 0000H
       INT 13H
       ;检测软盘A, 0面0道1扇区
       JC ERROR
       ……
  ERROR:  ……
  C_SEG  ENDS
       END START  

磁盘错误状态返回码:

磁盘错误状态

AH=
  00H  未出错
  01H  非法功能调用命令区。
  02H  地址标记损坏,扇区标识(ID)无效或未找到。
  03H  企图对有写保护的软盘执行写操作。
  04H  所寻找的扇区没找到。
  05H  复位操作失败。
  06H  无介质。
  07H  初始化错误,数据未存在DMA的64K缓冲区内。
  08H  DMA故障
  09H  DMA边界错误,数据未存在DMA的64K缓冲区内。
  0AH  检测出错误码率的扇区标志。
  0BH  所寻找的磁道没找到。
  0CH  介质类型没发现。
  0DH  扇区号有问题。
  0EH  发现控制数据地址标记。
  0FH  超出DMA边界
  10H  读磁盘时奇偶校验错,且纠错码(EDC)不能纠正。
  11H  读磁盘时奇偶校验错,但纠错码(EDC)已纠正错误。
  20H  控制器错。
  40H  查找操作无效。
  80H  超时错误,驱动器不响应。
  AAH  驱动器未准备好。
  BBH  不明错误。
  CCH  被选驱动器出现写故障。
  E0H  错误寄存器是零
  FFH  非法操作。

备注:
  控制器的最后状态将会在磁盘操作完成后写入相应的BIOS数据区(40:41)