第八天、正式读写软盘

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

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
时间: 2024-10-20 19:28:45

第八天、正式读写软盘的相关文章

第九天、继续读写软盘

今天把读写软盘的代码写完,目标是把跨磁道的读写操作分为若干次单磁道的读写操作.思路是这样的:先把起始扇区所在磁道内的扇区读写完,然后修改输来的参数--去掉已经读写的部分,重新计算起始逻辑扇区号.要读写的扇区数.内存缓冲区地址,这样就可以当做新任务再去读写.为了方便测试,把昨天的代码加上输出文字部分一起贴上来: ; ReadWriteFloppyLogicalSectors.nas ; ========================================================

编写软盘的启动代码-----第一天

一个软盘的启动代码,和屏幕显示: ; hello-os ; TAB=4 TAB键的宽带 ; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code 用windows格式化出来的软盘就是这种格式 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL" ; 启动扇区名称(8字节) 软盘的第一个扇区被称为启动区,一个扇区=512字节 CPU启动时以512为单位进行读写的 ; 计算机首先从最初的一个扇区开始读写软盘,所以称为启动扇区 DW 5

第七天、调用 BIOS 中断读软盘

保护模式内容太多,一时半会消化不完,慢慢体会清楚了再继续写吧.今天先把读软盘搞清楚--当然是调用 BIOS 中断直接读了.就是 int 013h 中断,即"直接磁盘服务"(Direct Disk Service).这个中断功能丰富,今天只学 02 号功能,就是"读软盘". 首先讲清楚软盘的物理结构:软盘,顾名思义就是存储信息的软式磁盘片(Floppy Disk)--因为是塑料做的,当然软.一般一块软盘有一张磁片,磁片两面都涂有磁性材料,这层磁性材料就叫磁层.磁层就是

不同WINDOWS平台下磁盘逻辑扇区的直接读写

不同WINDOWS平台下磁盘逻辑扇区的直接读写 关键字:VWIN32.中断.DeviceIoControl 一.概述 在DOS操作系统下,通过BIOS的INT13.DOS的INT25(绝对读).INT26(绝对写)等功能调用实现对磁盘逻辑扇区或物理扇区的读写是很方便的,C语言中还有对应上述功能调用的函数:biosdisk.absread和abswrite等.但在WINDOWS操作系统下编写WIN32应用程序时却再也不能直接使用上述的中断调用或函数了.那么,在WINDOWS操作系统下能不能实现磁盘

各种操作系统

或许大部分人都知道Windows,可能相当一部分人知道Linux,甚至知道Linux和Windows的纷争.可是提到国内制作的操作系统时恐 怕就知之甚少了.能提起名字的,恐怕仅仅有中科院的红旗.国防科技大学的银河麒麟.可是,国人制作的操作系统就仅仅有这么几个商业化的或者科研计划的操作系统 么? 事实上远不是这样.在民间,已经有大量的操作系统人才在积蓄着自己的力量,已经有优秀的作品公布了出来,这里面既包含了Magic Linux.RelaxBSD这类比較成熟完好的系统,也包含了那些刚刚起步还仅仅有

自制操作系统第一周总结

第一个任务是启动. 计算机的启动,参考本篇:http://www.cnblogs.com/rixiang/p/5075825.html 两个重要的概念: 1,boot: 软盘的第一个扇区区为启动区.(计算机读写软盘的时候,不是一个字节一个字节的读取的,而是512字节为一个单位来读写.因此,软盘的512字节为一个扇区.一张软盘的空间共有1440KB,也就是1474560字节,2880个扇区.) 2,IPL: 启动程序加载器.启动区只有区区512字节,实际的操作系统根本装不进去.所以几乎所有的操作系

ASP.NET应用技巧:非托管COM组件的使用

众所周知,asp.net是基于通用语言运行库创建的,也就是所谓的托管执行环境.生成的代码称为托管代码.编译器能够从源代码的描述中产生元数据信息,而运行库又从元数据中获得托管代码的信息.而我们编写的组件一般是在非托管环境下创建的,这些组件往往不包含元数据信息,那么我们怎么在托管代码中使用这些元数据信息呢? 为了在托管环境中使用非托管代码,我们首先必须手工为这些现有的组件产生元数据信息.必须有一种工具能够产生元数据.能够从某个地方获得元数据.这个元数据的发源地就是类型库,事实上,今天所有的组件都有一

PC主板故障维修技巧

1.熟悉PC主板的总线类型及I/O总线插槽中各信号排列情况,以I/O插槽中重要信号为线索进行故障点查找是维修PC主板致命性故障的关键.微机主板常用总线有PC/XT.PC/AT.VESA.PCI等类型,不同总线的I/O槽中信号排列有所差别,熟悉I/O槽中重要信号是查找因总线类故障系统死机.屏幕无显示等严重故障的前提. 对死机类故障,首先区分故障原因是由I/O设备故障引起还是主板本身故 障引起.确诊故障在系统板后,可检测系统板I/O槽中地址总线或数据总线的脉冲状态初步判断系统故障部位:若所有地址总线

小米路由为何要搭载搜狗预取引擎

小米手机畅销背后,除了其以硬件性价比为卖点外,MIUI系统是很重要的因素.MIUI确实是android系统中较为好用的系统,硬件配置再好也需要通过软件表现出来,软硬配合才能真正发挥智能产品的优质性能.放在路由器市场也是同样的道理. 然而,在路由器市场,小米引以为傲的MIUI系统已经派不上用场,那小米路由除了硬件配置和超低售价以外还有什么卖点?在国内参差不齐的网络环境下,如何能让大众用户感受到小米路由超强性能?小米自己那点技术积累是指望不上了,所以需要强有力的外援做技术支持. 小米路由器除了在价格