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

保护模式内容太多,一时半会消化不完,慢慢体会清楚了再继续写吧。今天先把读软盘搞清楚——当然是调用 BIOS 中断直接读了。就是 int 013h 中断,即“直接磁盘服务”(Direct Disk Service)。这个中断功能丰富,今天只学 02 号功能,就是“读软盘”。

首先讲清楚软盘的物理结构:软盘,顾名思义就是存储信息的软式磁盘片(Floppy Disk)——因为是塑料做的,当然软。一般一块软盘有一张磁片,磁片两面都涂有磁性材料,这层磁性材料就叫磁层。磁层就是存储信息的介质,因此软盘两面都能存储信息。

电脑通过软盘驱动器(Floppy Disk Drive,简称软驱, FDD)读写软盘。软驱的结构就不管了,这玩意过时了。只要知道软驱读写软盘的时候,软盘高速旋转,软驱通过一个针状的磁性部件接触软盘上的磁层来读写数据就行,这个接触软盘的磁层来读写数据的部件就叫磁头(Magnetic Head)。每一个盘面都要有一个磁头对应,磁头数量和盘面数量是相等的,所以对应软盘的两面,软驱也有两个磁头,分别是读写软盘正面的磁头0(H0)和读写软盘反面的磁头1(H1)。

所谓磁层存储信息,说白了,就是那些磁性材料以特殊方式磁化成不同的状态。软盘存储信息的过程就是磁头把电信号转化为磁信息,再把盘片上的那些磁性材料以特殊方式磁化成一个个磁化单元的过程。实际操作的时候,盘片高速转动,磁头保持在一个位置不动,在磁层上进行磁化操作,信息就被记录在磁层上。磁头会在盘片表面上画出一个与盘片同心的圆形轨迹,这个圆形轨迹就叫磁道(Track)。软盘上的信息就是沿着磁道存放的,如果这个磁道存满了,磁头就会移动到下一个位置,继续形成下一个磁道。相邻磁道之间并不是紧挨着的,因为磁化单元相隔太近时磁性会产生相互影响,同时也为磁头的读写带来困难。所以 3.5 英寸软盘每面盘片上只有80个磁道。

软盘正反两面都各有80个磁道,并且从外往里,从 0 开始编号,即最外边缘为第 0 磁道,最里一道为第 79 磁道。盘片正反两面盘面上处于同一半径圆的两个磁道组成的一个圆柱面叫柱面(Cylinder)。柱面是一个立体概念,磁道是一个平面概念,柱面的数量和任一个盘面的磁道的数量是相等的。盘片最外边缘是第 0 柱面(C0),最里面是第 79 柱面(C79)。

一圈磁道能记录很多信息,按照整个磁道为单位读写的话,数据量太多。因此每个磁道又被等分为 18 个弧段,实际上是一个弧段一个弧段的读写信息,这些弧段就叫扇区(Sector)。每个扇区能存放 512 字节的数据。

总结一下,一张3.5英寸软盘有2个磁头、80个柱面(也就是80个磁道),每个磁道有18个扇区,每个扇区存放512字节的数据。可以算出一张软盘的容量了: 2 * 80 * 18 * 512 = 1474560 字节(Byte) = 1440 千字节(KB) = 1.44 兆字节(MB)。

同时也发现了,只要知道了磁盘的CHS参数(即柱面Cylinder、磁头Head、扇区Sector),就可以确定其容量(容量=柱面数*磁头数*单磁道扇区数*每扇区字节数512)。

时间: 2024-11-07 18:22:56

第七天、调用 BIOS 中断读软盘的相关文章

软盘相关知识和通过BIOS中断访问

一. 软盘基础知识介绍 (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 磁盘的实际访问由磁盘控制器进行.我们可以通过控制磁盘控制器来访问磁盘.只能以扇区为单位对磁盘进行读写.在读写扇

x01.os.1: BIOS 中断

这只是一点准备工作.为了显示字符串,需要调用中断:int  0x10 (AH=0x13).具体参数设置,参考我的归纳整理如下: INT 10 (AH = 0) -----------------功能:设置显示方式调用参数:    AL = 00:40 * 25 黑白方式         01:40 * 25 彩色方式         02:80 * 25 黑白方式         03:80 * 25 彩色方式         04:320 * 200 彩色图形方式         05:320

使用BIOS中断显示字符串笔记(int 10h 13号中断)

BIOS的10H中断的13号中断用于显示字符串,参数为: 1.AH=13H 2.AL=显示方式 如果AL=0,表示目标字符串仅仅包含字符,属性在BL中包含,不移动光标 如果AL=1,表示目标字符串仅仅包含字符,属性在BL中包含,移动光标 如果AL=2,表示目标字符串包含字符和属性,不移动光标 如果AL=3,表示目标字符串包含字符和属性,移动光标 总之,可以归纳为: |BIT7|BIT6|BIT5|BIT4|BIT3|BIT2|BIT1|BIT0| AL BIT0为0表示不移动光标,为1表示移动光

bios中断表(转)

http://blog.csdn.net/regionyu/article/details/1708084 INT(hex) AH 功能 调用参数 返回参数 10 0 设置显示方式 AL=00 40×25黑白方式AL=01 40×25彩色方式AL=02 80×25黑白方式AL=03 80×25彩色方式AL=04 320×200彩色图形方式AL=05 320×200黑白图形方式AL=06 320×200黑白图形方式AL=07 80×25单色文本方式AL=08 160×200 16色图形 (PCjr

BIOS中断

BIOS中断 BIOS中断 实模式下,调用中断采用的是BIOS中断方式. BIOS中断就不介绍了:BIOS中断 BIOS中断大全 查询相应的中断API可以根据BIOS中断大全:BIOS中断大全 BIOS的中断向量表 中断向量表位置 中断向量表位于BIOS的 0x0000 - 0x03FF 地方,大小为 1k. 中断号 说明: int 中断号 0x00 DIVIDE ERROR 0x01 SINGLE STEP 0x02 NON-MASKABLE INTERRUPT 0x03 BREAKPOINT

fpc : 调用 MS TTS 读中英文

这个例子是 free pascal 在Windows XP 调用 MS TTS 读中英文 tts2.pas Program space2; {$mode objfpc}{$H+} uses Classes,SysUtils,Process,Variants,ComObj,RegExpr,ShellApi; var Sp: Variant; re: TRegExpr; i : Integer; begin if Assigned(InitProc) then TProcedure(InitProc

[转]BIOS中断汇编函数---留用

汇编中的10H中断int 10h详细说明 本文由arthinking发表于4年前 | 汇编语言 | 评论数 8 |  被围观 18,813 views+ 汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service:int 10h) 00H:设置显示器模式 01H:设置光标形状 02H:设置光标位置 03H:读取光标信息 04H:读取光笔位置 05H:设置显示

王爽 <<汇编 语言>> 13.6 BIOS中断例程应用

1 ;名称:ILOVEU程序 2 ;使用BIOS提供的中断例程 3 assume cs:code 4 code segment 5 main: 6 mov cx,880 ;显示背景22*80 7 mov dh,0 ;dh中放行号 8 mov dl,0 ;dl中放列号 9 bibi: 10 push cx 11 mov ah,2 ;显示光标 12 mov bh,0 ;第0页 13 int 10h 14 15 ;在光标处显示个数自定的字符 16 mov ah,9 ;9为在"在光标处显示字符的功能&q

汇编-BIOS中断

INT 10H AH 功 能 调用参数 返回参数 / 注释 1 置光标类型 (CH)0―3 = 光标开始行 (CL)0―3 = 光标结束行 2 置光标位置 BH = 页号 DH = 行 DL = 列 3 读光标位置 BH = 页号 CH = 光标开始行 CL = 光标结束行 DH = 行 DL = 列 4 读光笔位置 AH=0 光笔未触发 =1 光笔触发 CH=象素行 BX=象素列 DH=字符行 DL=字符列 5 显示页 AL = 显示页号 6 屏幕初始化或上卷 AL = 上卷行数 AL =0全