一、 软盘基础知识介绍

(1) 3.5英寸软盘

  • 3.5英寸软盘分为上下两面,每面有80个磁道,每个磁道又分为18个扇区,每个扇区大小为512个字节。

  • 软盘大小计算: 2面 * 80磁道 * 18扇区 * 512 字节 = 1440KB ≈ 1.44MB

(2) 5.25英寸软盘

  • 5.25英寸软盘每个磁道只有15个扇区,其它的与3.5英寸软盘一样。因此,5.25英寸软盘大小为 1.2MB

磁盘的实际访问由磁盘控制器进行。我们可以通过控制磁盘控制器来访问磁盘。只能以扇区为单位对磁盘进行读写。在读写扇区的时候,要给出面号、磁道号和扇区号。面号和磁道号从0开始,而扇区号从1开始。

二、 使用BIOS的 int 13h 中断访问磁盘

如果通过直接控制磁盘控制器来访问磁盘,则需要涉及许多硬件细节。BIOS提供了对扇区进行读写的中断例程,这些中断例程完成了许多复杂的和硬件相关的工作,我们可以通过调用BIOS中断例程来访问磁盘。

(一) 读软盘

  1. ah = int 13h 的功能号(2表示读扇区)

  2. al = 读取的扇区数

  3. ch = 磁道号

  4. cl = 扇区号

  5. dh = 磁头号(对于软盘即面号,因为一个面用一个磁头来读写)

  6. dl = 驱动器号(软驱从零开始, 0: 软驱A, 1: 软驱B;硬盘需要把第七位置位,从80h开始, 80h:硬盘c,81h:硬盘D)

  7. 返回参数:操作成功,ah = 0,al = 读入的扇区数;操作失败,ah = 出错代码

读取0面0道1扇区内容到0:200的程序如下所示


mov ax,0
mov es,ax
mov bx,200h mov al,1 ;读取1个扇区
mov ch,0 ;磁道号0
mov cl,1 ;扇区号0
mov dl,0 ;软驱A
mov dh,0 ;软盘0面 mov ah,2 ;int 13h 2号功能
int 13h

(二) 写软盘

  1. ah = int 13h 的功能号(3表示写扇区)

  2. al = 写入的扇区数

  3. ch = 磁道号

  4. cl = 扇区号

  5. dh = 磁头号(对于软盘即面号,因为一个面用一个磁头来读写)

  6. dl = 驱动器号(软驱从零开始, 0: 软驱A, 1: 软驱B;硬盘需要把第七位置位,从80h开始, 80h:硬盘c,81h:硬盘D)

  7. 返回参数:操作成功,ah = 0,al = 写入的扇区数;操作失败,ah = 出错代码

将0:200的内容写入0面0道1扇区的程序如下所示


mov ax,0
mov es,ax
mov bx,200h mov al,1 ;读取1个扇区
mov ch,0 ;磁道号0
mov cl,1 ;扇区号0
mov dl,0 ;软驱A
mov dh,0 ;软盘0面 mov ah,3 ;int 13h 2号功能
int 13h

软盘相关知识和通过BIOS中断访问软盘的更多相关文章

  1. WEB相关知识和Tomcat服务器

    WEB相关知识 1.Internet上供外界访问的Web资源分为: 静态web资源:指web页面中供人们浏览的数据始终是不变的. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间 ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. BIOS中断大全

    BIOS中断大全 BIOS中断:1.显示服务(Video Service——INT 10H)  00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标 ...

  4. BIOS 中断大全

    BIOS中断: 1.显示服务(Video Service--INT 10H) 00H -设置显示器模式0CH -写图形象素  01H -设置光标形状0DH -读图形象素  02H -设置光标位置0EH ...

  5. listener监听器的相关知识

    从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...

  6. 【转】java NIO 相关知识

    原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...

  7. 地址标记,SpringMVC转发与调用相关知识存档

    1.mytest_mavenprj1中,index的 <a href="login/login.html">点击登录</a> 与 <a href=&q ...

  8. AJAX跨域调用相关知识-CORS和JSONP(引)

    AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...

  9. Centos的Inode及Block相关知识

    Centos的Inode及Block相关知识 时间:2016-06-04 01:54来源:blog.51cto.com 作者:"tao" 博客 举报 点击:173次 本经验均在Ce ...

随机推荐

  1. django学习笔记(3)

    Part 3: Views and templates ====> Write your first view$ edit polls\views.py from django.http imp ...

  2. 8-[表操作]--foreign key、表与表的关系

    1. foreign key (1)快速理解foreign key 员工信息表有三个字段:工号 姓名 部门 公司有3个部门,但是有1个亿的员工,那意味着部门这个字段需要重复存储,部门名字越长,越浪费 ...

  3. loj#121.「离线可过」动态图连通性

    题面 话说#122怎么做啊 题解 我的\(\mathrm{LCT}\)水平极差,连最小生成树都快忘了,赶紧复习一下 做法和这篇是一样的 这道题还可以练习线段树分治 还可以练习ETT 果然是道吼题 代码 ...

  4. TMS320VC5509的外部中断

    1. 外部中断引脚INT0-INT4,INT2-平时是低电平,INT3-平时是高电平 2. 不过中断不支持设置上升沿和下降沿触发,中断就是中断,我估计应该是平时是高电平,然后低电平触发中断,代码比较简 ...

  5. bzoj 5301: [Cqoi2018]异或序列

    蛤?这一年cqoi的题这么水???? 这不就是个sb莫队吗 这样写怕是会被打死,,, 注意\(a_x\ XOR a_{x+1}\ XOR\ ...\ a_{y}=s_{x-1}\ XOR\ s_y\) ...

  6. 在使用Reference Source调试.Net 源代码时如何取消optimizations(代码优化)-翻译

    在使用PDB调试XAF时,发现好多变量都看不到.都被优化掉了. 下面的方法可以解决. 当你在使用Reference Source functionality in VS 2008 调试.Net 的源代 ...

  7. 修复bug有哪些更快的技术?做好这6点就够了

    你有没有想过为什么有时修复错误似乎比它应该花费更长的时间?当你终于找到问题时,事实证明你所需要的只是一个小小的改变.然而,花了很多时间才能找到正在发生的事情.这种情况比我想象的更频繁. 另一方面,当您 ...

  8. 引用“kernel32”读写ini配置文件

    引用"kernel32"读写ini配置文件 unity ini kernel32 配置文件  引用"kernel32"读写ini配置文件 OverView ke ...

  9. SpringCloud 学习(二) :服务注册与发现Eureka

    Spring Cloud应用中可以支持多种的服务治理框架,比如Eureka.Consul.Zookeeper等,现在我们用的是consul,本文以SpringCloud Dalston.SR5版本介绍 ...

  10. 剑指offer试题(PHP篇三)

    21.栈的压入.弹出序列 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4 ...