码迷,mamicode.com
首页 > 其他好文 > 详细

第八天、正式读写软盘

时间:2015-11-06 11:26:49      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

    昨天把磁盘的结构搞清楚了,今天正式就搞清楚软盘的细解。

    3.5 英寸软盘是旧时代的产物了,只能采用 CHS 方式寻址

; ========================================================================================
; 3.5英寸软盘的 CHS 参数:
;   80个柱面,柱面编号 0 ~ 79;
;   2个磁头,磁头编号 0、1;
;   每个磁道有 18 个扇区,每个磁道上扇区编号 1 ~ 18;
;   每个扇区可存放 512 字节的数据。
; ****************************************************************************************

    系统 BIOS 提供了对磁盘读写操作的相关中断:

; ========================================================================================
; int 13h(直接磁盘服务)功能表
; ----------------------------------------------------------------------------------------
; 1、磁盘系统复位
; 入口参数:AH = 00H
;           DL = 驱动器号:00H~7FH 为软盘,80H~0FFH 为硬盘
; 出口参数:CF = 0 —— 操作成功,AH = 00H;
;           否则,AH = 状态代码,参见功能号 01H 中的说明
; ----------------------------------------------------------------------------------------
; 2、读、写扇区
; 入口参数:AH = 功能号:02H 读扇区、03H 写扇区
;           AL = 待操作的扇区个数
;           CH = 柱面号,CL = 起始扇区号
;           DH = 磁头号,DL = 驱动器号:00H ~ 7FH 为软盘,80H ~ 0FFH 为硬盘
;           ES : BX = 存放数据的缓冲区地址
; 出口参数:CF = 0 —— 操作成功,AH = 00H,AL = 实际操作的扇区个数;
;                          否则,AH = 状态代码,其定义如下:
;                                      00H — 无错
;                                      01H — 非法命令
;                                      02H — 地址目标未发现
;                                      03H — 磁盘写保护(软盘)
;                                      04H — 扇区未发现
;                                      05H — 复位失败(硬盘)
;                                      06H — 软盘取出(软盘)
;                                      07H — 错误的参数表(硬盘)
;                                      08H — DMA(Direct Memory Access)越界(软盘)
;                                      09H — DMA 超过 64K 界限
;                                      0AH — 错误的扇区标志(硬盘)
;                                      0BH — 错误的磁道标志(硬盘)
;                                      0CH — 介质类型未发现(软盘)
;                                      0DH — 格式化时非法扇区号(硬盘)
;                                      0EH — 控制数据地址目标被发现(硬盘)
;                                      0FH — DMA 仲裁越界(硬盘)
;                                      10H — 不正确的 CRC(Cyclic Redundancy Check code)
;                                          或 ECC(Error Checking & Correcting code)编码
;                                      11H — ECC 校正数据错(硬盘)
;                                      20H — 控制器失败
;                                      40H — 查找失败
;                                      80H — 磁盘超时(未响应)
;                                      AAH — 驱动器未准备好(硬盘)
;                                      BBH — 未定义的错误(硬盘)
;                                      CCH — 写错误(硬盘)
;                                      E0H — 状态寄存器错(硬盘)
;                                      FFH — 检测操作失败(硬盘)
; ****************************************************************************************

    好了,准备工作都完成了,现在可以直接读写3.5英寸软盘了。老规矩,代码直接贴出来:

; ReadSectors.nas


第八天、正式读写软盘

标签:

原文地址:http://my.oschina.net/u/580100/blog/526788

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!