408页
当存在640K以上的内存时,必须调用Int 15h的功能88h,以确定扩展内
存的大小。
在PS/2系统上,该中断最多只能返回640K的内存,减去了单独为扩充
BIOS数据区(EBDA)而设置的内存数量。EBDA可以小到只有1K(更多的信
息可参见Int 15h的功能C1h)。
磁盘:
Int 13h 功能 00h
重新设置磁盘系统
重新设置磁盘驱动器的控制器。
调用寄存器: AH 00h
DL 驱动器号(以零为基准)
位720代表软盘;,1代表硬盘
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AH返回代码(参见表15.13)
注释:为作好磁盘I/O操作的准备工作,该功能重新设置磁盘控制器(对于处
理关键的磁盘访问出错来说,重新设置磁盘系统很有必要)。强迫驱动器把磁
头压入磁道0,并从磁道0中开始下一个I/O操作,该功能就能重新校准磁
盘。
请求重置操作不会引起磁盘系统立即作出反应。相反,在磁盘控制器中设
置重置标志以重新校准下一次它们将要使用的驱动器。在磁盘出错之后,有时
可能会听到因重新较准磁盘而导致的难听的响声。
一旦设置了DL中的驱动器号的高位,那么就会重新设置软盘系统,并接
着重新设置硬盘(固定磁盘)。错误返回就是指硬盘的重置。可以在BIOS数据
区的0040:0041h处找到软盘状态。
在试图使用软盘系统时若返回了错误,那么此时就是使用该功能的最佳
时机。当问题产生时,必须调用重置功能,并且该功能必须重试。根据所用程
序的不同,有时可能要求多次重试。在重试过程中,若获得了一连串的失败,这
时就应提醒用户中止重试循环。
磁盘
Int 13h 功能 01h
获取磁盘系统状态
返回磁盘状态字节。
调用寄存器: AH 01h
DL 驱动器代码(仅用于PS/2和扩展的BIOS)
409页
返回寄存器:状态字节(参见表15.13)
表15.13
位
含 义
76543210
. . . . . . . 1 对驱动程序不合法的命令
. . . . . . 1. 未定位地址标记(坏的扇区)
. . . . . . 11 磁盘写保护
. . . . . 1. . 未找到所请求的扇区
. . . . . 11. 活动的磁盘改变线路
. . . . 1. . . DMA超限
. . . . 1. . 1 0MA试图越过64K界限
. . . . 11. . 无效的介质
. . . 1. . . . 磁盘读的CRC出错
. . 1. . . . . 控制器出错
.1. . . . . . 查找失败
1. . . . . . . 磁盘超时(不能应答,驱动器未准备好)
注释:控制器的状态是在每个磁盘操作完成之后才设置的。通过该功能,程序
就能获取到目前为止最近的磁盘操作时的磁盘状态。例如,可用该功能通过检
查位1来检测驱动器中的某个已设置了写保护的磁盘。
磁盘
Int 13h 功能 02h
读取磁盘扇区
获取指定数目的磁盘扇区。
调用寄存器: AH 02h
AL 要传送的扇区号
ES:BX 指向用户磁盘缓冲区的指针
CH 磁道号(参见注释)
CL 扇区号
DH 磁头号
DL 驱动器号(位7置位表示为硬盘)
返回寄存器:进位标志清除表示成功
AH 0
AL 所传送的扇区个数
进位标志置位表示出错
AH 状态字节(参见表15.13)
410页
注释:该功能把磁盘中的1个或多个扇区传送给内存。读磁盘是一种很标准
的操作,但在磁盘驱动器号超出时,该操作中却没有包括出错检查,这确实让
人感到意外。因此,在调用此服务之前,必须仔细地检查所有的输入参数,因为
一旦传送了非法值,往往导致产生难以预料的结果。
若把此功能用于硬盘,磁道数就是10位,而不是一般情况下的8位。通过
cL寄存器中的两个高位,可以把其中的两个高位传送给该功能。
注意:使用该功能时,系统的特征在于:一旦DMA操作越过了一个以三
个0为终止的内存偏移值地址,错误代码AH=9(DMA边界出错)就会出现。
在磁盘读操作中,内存边界对应于某个扇区边界。
若使用某些DOS版本中的FORMAT.COM程序,DMA边界问题就会
变得极其麻烦;它往往会产生这样一种信息;即磁道0是坏的,并且磁盘是不
可用的。一旦出现这种信息,那么校正的办法只能从CONFIG.SYS中删除或
增加BUFFERS= 或FILES= 值,并重新引导系统,以改变在FORMAT.COM中所使用
的磁盘缓冲区的内存中该程序所在的位置。
磁盘
Int 13h 功能 03h
写入磁盘扇区
将指定的内存区域写入设定的磁盘扇区中。
调用寄存器: AH 03h
AL 要传送的扇区数
ES:BX 指向用户磁盘缓冲区的指针
CH 磁道号(参见注释)
CL 扇区号
DH 磁头号
DL 驱动器号(位7置位表示硬盘)
返回寄存器:进位标志清除表示成功
AH 0
AL 已传送的扇区数
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:该功能把一个或多个扇区内容从内存中写给磁盘。除了磁盘驱动器号
以外,其余传送给该功能的值都不进行有效性检查。有效性检查是程序员的职
责。写磁盘是一种很标准的操作,在这种操作中却没有出错检查,确实让人感
到不可思议。
在发出请求服务的调用之前,必须仔细地检查所有的输入参数。因为一旦
传入了非法值,其结果是难以预料的。
411页
若把该功能用于硬盘,磁道号就为10,而不是8。可通过AL寄存器中的
两个高位来把磁道号的两个高位传送给该功能。
IBM公布的文档表明,在PC XT 286上使用该功能时,不要求保存在AL
中的扇区数。这种时候设置AL与否无关大局,因为此时不检查传送值的有效
性。
注意:在使用该功能时,系统的特征在于:一旦DMA操作越过了一个以
三个0为终止的内存偏移值地址,就会出现错误代码AH=9(DMA边界出
错)。在磁盘写操作中,这种内存边界必须与扇区边界相对应。
磁盘
Int 13h 功能 04h
验证磁盘扇区
检验指定的磁盘扇区的CRC值是否准确
调用寄存器: AH 04h
AL 要验证的扇区号
CH 磁道号(参见注释)
CL 扇区号
DH 磁头号
DL 驱动器号(位7置位表示硬盘)
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:可用该功能来验证指定磁盘扇区的地址域。在此操作过程中,没有从磁
盘中传出或向其传入任何数据。若把该功能用于硬盘,磁道号就是10位,而不
是8位。可通过cL寄存器中的两个高位来把磁道数的两个高位传送给该功
能。
发生在磁盘上的磁盘验证操作,不涉及将磁盘上的数据与内存中的数据
之间进行对比验证(因为有些人相信是一致的)。该功能不读或写磁盘;相反,
它导致系统去读取一个或多个指定扇区中的数据,并以保存在磁盘上的数据
为对照,对其计数结果进行循环冗余检查(CRC)。
一旦把扇区写给磁盘,就会进行CRC计算,并把计算的结果作为扇区头
信息的一部分而保存在磁盘上。由于验证操作检查这种值,因而其出现的概率
很高,但是不能肯定磁盘扇区中的这种数据是否有效。
由于使用的磁盘功能种类很多,唯一要求进行出错检查的输入数据是磁
盘驱动器号。输入过程中的错误往往会导致难以预料的结果。
可用该功能来检查用于当前可读磁盘的磁盘驱动器。若驱动器中不含已
412页
正确地格式过的磁盘,该功能就会返回一个相应的错误。
磁盘
Int 13h 功能 05h
格式化磁盘磁道
格式化单个磁盘磁道
调用寄存器: AH 05h
ES:BX 指向磁道地址字段列表的指针
CH 磁道号
DH 磁头号
DL 驱动器号
返回寄存器: AH 返回代码(参照表15.13)
注释:该功能通过初始化磁盘地址字段和数据扇区来格式化磁盘的磁道(更
多的信息可参见第8章对“磁盘”的介绍)。应十分细心地使用该功能;因为一
不小心就会丢失机器上的一部分或全部磁盘存储内容。可在一个下拉式的
(stripped-down)系统上(仅用于软盘)检验该功能,直到完全肯定其正确性。
格式化磁道只是格式化磁盘操作的一部分。要格式化整个磁盘,必须先正
确地格式化每个磁道,但是,如果把磁盘用于DOS,就必须还要把基本的DOS
磁盘结构写给该磁盘(包括引导扇区、初始FAT表和该磁盘的根目录)。
磁盘格式化操作由磁道地址字段列表(ES:BX指的列表)控制。该表的
格式为一连串的4个字节项,每一项代表着磁道上的一个扇区。每个4字节项
的结构如下:
字节偏移值 含义
00h 磁道号
01h 磁头号
02h 扇区号
03h 大小代码
表15.14磁道地址字段大小代码
大小代码 每扇区字节数
0 128
1 256
9 512
3 1024
如果把该功能用于硬盘,磁道号就是10位而不是8位。可通过扇区号的
两个高位来把磁道号的高两位传送给该功能。
表15.14显示了可允许的大小代码;各项的排列对应于扇区出现在磁盘
上的先后次序。不必遵循这一顺序;可以交错使用这些扇区以促进磁盘访问的
实现(参见第8章“磁盘”)。
413页
磁盘
Int 13h 功能 06h
格式化柱面并设置坏的扇区标志
调用寄存器: AH 06h
AL 交叉因子
CH 要格式化的柱面
CL 扇区号
DH 磁头号
DL 驱动器号(以零为基准)
位7=0代表软盘;1代表硬盘
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AH 出错状态(参见表15.13)
注释:该功能只能用于BIOS日期为1/10/86或以后的PC XT、Personal
Computer AT或PS/2系列的机器上,它仅重新格式化驱动器的指定柱面。重
新格式化过的区域中所有的数据都会丢失。因而使用该功能时要格外小心。
磁盘
Int 13h 功能 07h
从指定的柱面着手来格式化驱动器
只格式化指定的柱面,并设置在此处理过程中找到的坏扇区。
调用寄存器: AH 08h
AL 交叉因子
CH 要格式化的柱面
CL 扇区号
DH 磁头号
DL 驱动器号(以零为基准)位7=0代表软盘;
1代表硬盘
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AH 出错状态(参见表 15.13)
注释:该功能只用于BIOS发行日期为1/10/86或以后的PC XT、Personal
Computer AT以及PS/2系列的机器上,它重新格式化驱动器的指定柱面及
其所有具有较高序号的柱面。重新格式化过的区域中所有的日期都会丢失。因
而使用该功能时要格外谨慎。
414页
磁盘
Int 13h 功能 08h
返回磁盘驱动器参数
返回指定磁盘驱动器的有关信息。
调用寄存器: AH 08h
DL 驱动器号(以零为基准)位7代表软盘;
1代表硬盘
返回寄存器:进位标志清除表示成功
CH 每面的磁道数
CL 每磁道的扇区数
DH 面数
ES:DI 指向11个字节的软盘参数表的指针
BL CMOS中的有效驱动器字节值
01h 51/4英寸、360K、40个磁道
02h 51/4英寸、1.2M、80个磁道
03h 31/2英寸、720K、80个磁道
04h 31/2英寸、1.44M、80个磁道
进位标志置位表示出错
AH 出错状态(参见表15.13)
注释:可用该功能(只能用于Personal Computer AT以及PS/2系列上)来获
取磁盘的物理参数。
设置DL寄存器的位7来调用该功能,以便访问硬盘。
该功能允许在指定的驱动器中检查磁盘的特征。其结果是:ES:DI所指
的表具有如表15 .15所示的格式。
表15.15磁盘介质特征表
偏移值 含 义
00h 第一个指定的字节
01h 第二个指定的字节
02h 在关闭驱动器电机之前计时器记录要等待的时间计数
03h 每扇区的字节数
00h= 128
01h=256
02h=512
03h= 1024
04h 每磁道的扇区数
05h 间隙长度
415页
偏移值 含 义
06h 数据长度
07h 格式化的间隙长度
08h 格式化的填充字节
09h 按毫秒计的磁头稳定时间
0Ah 按1/8秒计算的电机启动时间
磁盘
Int 13h 功能 09h
初始化硬盘表
把指定硬盘表中的值设置为各自的缺省值。
调用寄存器: AH 09h
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:该功能只能用于Personal Computer AT和PS/2系列上,并且只能在
固定(硬)磁盘上工作。可用该功能来设置硬盘驱动器的物理参数。所使用的
驱动器号不是标准的BIOS驱动器号;相反,它们采用的是一系列特殊的号
码,这些号码仅用于固定磁盘(80h对应于第一个磁盘;81h对应于第二个磁
盘,如此等等)。若使用超出范围的驱动号,其结果往往是难以预料的。
驱动器的初始化信息出自于硬盘参数表。中断向量41h指向硬盘1参数
表;向量46h指向磁盘2的参数表。若访问其它的磁盘,该功能就会通过AH
返回“Invalid command”状态字节。
AT
Int 13h 功能 0Ah
读取长扇区
(磁盘) 从硬盘中读取指定数目的长扇区。
调用寄存器: AH 0Ah
AL 扇区数
ES:BX 指向数据缓冲器的指针
CH 磁道(参见注释)
416页
CL 扇区
DH 磁头号
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:该功能只能用于Personal Computer AT,并且只能在固定(硬)磁盘上
工作。在上述范围内,可用该功能来把长扇区从硬盘中读进内存。长扇区都是
标准扇区,除了具有常规数据以外,它还保存有错误改正代码的四个字节。
同其它的读/写功能一样,该功能对DMA边界错误(AH=9)十分敏感,
当DMA访问跨越末尾为三个零的内存偏移值时就可能会出现这种错误。由
于该功能未配备参数的出错检查,因而参数值出错往往导致难以预料的结果。
所使用的驱动器号不是标准的BIOS驱动器号;相反,它们都取自于一个
仅用于硬盘的特殊系列号(80h对应于第一个磁盘;81h对应于第二个磁盘,
如此等等)。若使用超出范围的硬盘驱动器号就会导致难以预料的结果。
表15.16列出了可以传送给该功能的所有参数的有效范围。尤其要注意
的是磁道号(CH和CL寄存器),它是一个10位的数值号,其中两个高位字节
被保存在寄存器CL的位6和7中,并且将其余的8个低位字节保存在寄存
器CH中。扇区地址(寄存器CL)是一个6位的号,这6个位分别被保存在位0
-5中(磁道号不使用这些位)。
表15.16有效的参数范围
寄存器 参数 有效范围
AL 扇区数 1-121
CH/CL 磁道 0-1023
CL 扇区 0-17
DH 磁头 0-15
DL 驱动器 80h,81h等
图15.1显示了该功能对CH和CL中的位的解释方式。
AT
Int 13h 功能 0Bh
写入长扇区
(磁盘)把指定数目的长扇区写入磁盘中。
调用寄存器: AH 0Bh
417页
AL 扇区数
ES:BX 指向数据缓冲区的指针
CH 磁道(参见注释)
CL 扇区
DH 磁头号
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
表15.1 Int 13h的功能0Ah解释CH和CL中各位的方式
注释:本功能只能用于Personal Computer AT上,并且只能在固定(硬)磁盘
上工作。长扇区都是标准扇区,除含有常规的数据外,还含有错误改正代码的
四个字节。同其它的读/写功能一样,该功能对DMA边界出错(AH=9)非常
敏感,当DMA访问跨越其末尾为三个零的内存偏移值时,往往会产生这种错
误。由于不存在参数的出错检查,因而,参数值出错就会产生难以预料的结果。
所使用的驱动器号不是标准的BIOS驱动器号;相反,它们所采用的是只
能用于硬盘的特殊系列号(80h对应于第一个磁盘,81h对应于第二个磁盘,
如此等等)。使用超出范围的驱动器号会产生难以预料的结果。
磁道号共有10个位而不是8个。通过扇区号的两个高位可把磁道号中的
418页
高两位传送给该功能。
磁盘
Int 13h 功能 0Ch
查找柱面(寻道)
把读/写磁头移动到某一个指定的柱面上
调用寄存器: AH 0Ch
CH 磁道号的低位
CL 磁道号的高位
DH 磁头号
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:本功能只能用于Personal Computer AT上,并且只能在固定(硬)磁盘
上工作,其作用是把读/写磁头移动到指定的柱面。该功能所使用的驱动器号
不是标准的BIOS驱动器号;相反,它们采用的是只能用于硬盘的一特殊系列
驱动器号(80h对应于第一个磁盘;81h对应于第二个磁盘,如此等等)。使用
超出范围的磁盘驱动器号会导致难以预料的结果。在调用该功能时,非法的参
数设置也能产生难以预料的结果。
磁盘
Int 13h 功能 0Dh
可选的磁盘重置
重新设置硬盘控制卡。
调用寄存器: AH 0Dh
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 0
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:本功能只能用于Personal Computer AT上,并且只能在固定(硬)磁盘
上工作,它所使用的驱动器号不是标准的BIOS驱动器号;相反,它们采用的
是只能用于硬盘的一特殊系列驱动器号(80h对应于第一个磁盘;81h对应于
419页
第二个磁盘,如此等等)。使用不符合要求的磁盘驱动器号会导致难以预料的
结果。
除了在较新的BIOS版本中本功能不重新设置软盘控制器以外,该功能
与Int 13h,功能00h的作用是相同的。两者都可由关键出错处理程序用于强
行进行重新校准操作(在下一个I/O操作开始之前将磁盘的磁头重定位到磁
道0上)。在较旧的BIOS版本中,可编码关键出错处理程序以便到达同Int
13h,功能00h一样的例程地址。
磁盘
Int 13h 功能 0Eh
读扇区缓冲区
读扇区缓冲区。
调用寄存器: AH 0Eh
ES:BX 指向RAM缓冲区
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AX 出错码
注释:本功能仅用于最初有10M硬盘控制器的XT机器。没有定义它可用于
BIOS的其它版本,最好避免使用它。
该功能是IBM S/360用法的继续。从保存在ES:BX中的地址处开始,
10M磁盘控制器把数据的512个字节(一个扇区)从一个内部扇区缓冲区(在
此控制器上)直接传送给RAM。本功能已经过时,程序员必须杜绝使用这一
功能。
磁盘
Int 13h 功能 0Fh
写扇区缓冲区
写扇区缓冲区
调用寄存器: AH 0Fh
ES:BX 指向RAM缓冲区
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AX 出错码
注释:本功能只能用于那些最初有10M硬盘控制器的XT机器上。没有将该
功能定义为可用于BIOS版本,如果可能的话,最好不要使用它。
该功能是IBM S/360用法的继续。从保存在ES:BX中的地址开始,10M
420页
磁盘控制器把数据的512个字节(一个扇区)从RAM直接传送给某个内部扇
区缓冲器(在此控制器上)。在格式化10M XT驱动器时,必须在使用功能05h
之前用该功能来初始化控制器的缓冲区。本功能已经过时,程序员必须杜绝使
用这种功能。
磁盘
Int 13h 功能 10h
检查硬盘系统的状态
返回磁盘状态字节(仅适用于硬盘)。
调用寄存器: AH 10h
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 状态字节(参见表15.13)
进位标志置位表示出错
AX 出错码
注释:本功能的作用与功能01是一样的,但它只能在固定(硬)盘上工作。如
果没有出现错误,该功能返回的磁盘状态号为00h。
所使用的驱动器号不是标准的BIOS驱动器号,相反,这些驱动器号采用
的是一系列只能用于硬盘的特殊号码(80h对应于第一个磁盘;81h对应于第
二个磁盘,等等)。使用超出范围的磁盘驱动器号会导致产生难以预料的结果。
磁盘
Int 13h 功能 11h
重新校准硬盘驱动器
把硬盘的磁头返回到柱面00,并报告驱动器的状态。
调用寄存器: AH 11h
DL 硬盘驱动器号
返回寄存器:进位标志清除表示成功
AH 状态字节(参见表15. 13)
进位标志置位表示出错
AX 出错码
注释:本功能只能在固定(硬)磁盘上工作。如果没有出现错误,该功能以00h
来返回磁盘状态。
所使用的驱动器号不是标准的BIOS驱动器号;相反,它们采用的是一系
列只能用于硬盘的特殊号(80h对应于第一个磁盘;81h对应于第二个磁盘,
421页
等等)。使用此系列以外的驱动器号会产生难以预测的结果。
磁盘
Int 13h 功能 12h
诊断控制器RAM
仅仅在XT机器中,对硬盘控制器的扇区缓冲区RAM实现内在的诊断检验。
调用寄存器: AH 12h
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AX 出错码
注释:本功能仅仅只能用在那些最初有10M硬盘控制器的XT机器上。没有
将它定义为可用于BIOS的其它版本,在可能的情况下尽量不要使用这一功
能。
磁盘
Int 13h 功能 13h
诊断驱动器
仅仅在XT型号中实现对硬盘的诊断检验。
调用寄存器: AH 13h
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AX 出错码
注释:该功能只能用于那些最初有10M硬盘控制器XT型号。没有将此功能
定义为可用于其它的BIOS版本,在可能的情况下尽量避免使用这一功能。
磁盘
Int 13h 功能 14h
诊断控制卡
只在XT型号中实现对硬盘控制卡的内存诊断检验。
调用寄存器: AH 14h
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AX 出错码
注释:该功能只能用于那些最初有10M硬盘控制器XT型号。没有将它定义
为可用于其它的BIOS版本,如果可能,尽量避免使用这一功能。
422页
磁盘
Int 13h 功能 15h
返回DASD类型
获取驱动器的DASD(直接访问存储设备)类型以及扇区的数目。
调用寄存器: AH 15h
DL 驱动器号
返回寄存器:进位标志清除表示成功
AH 驱动器的DASD类型
CX 硬盘扇区数(高位字)
DX 硬盘扇区数(低位字)
进位标志置位表示出错
AH 状态字节(参见表15.13)
注释:该功能可用于PC XT(标明BIOS的日期为1/10/86或更近)、PC XT
286、Personal Computer AT或PS/2系列,它可以使用标准系列的BIOS驱动
器号(0=驱动器A;1=驱动器B,如此等等),或者使用硬盘号(80h=第1个
驱动器;81h=第2个驱动器,如此等等)。
可用该功能来确定能否用功能16h来检查驱动器,以便弄清楚自上次访
问以来该驱动器中的软盘是否发生了改变。表15.17列出了该功能的有效返
回代码,这些代码指明了能否说明驱动器中磁盘状态的详细情况。
表15.17 DASD类型
代码 DASD类型
0 所请求的驱动器不可用
1 驱动器存在,不能检测出磁盘的改变
2 驱动器存在,能检测磁盘的改变
3 硬盘
只有当AH返回的DASD类型为3时,CX:DX返回的值才是有效的。
磁盘
Int 13h 功能 16h
读取磁盘改变线路状态
调用寄存器: AH 016h
DL 驱动器号
返回寄存器:进位标志清除表示成功
AH 00h,磁盘未改变
423页
进位标志置位表示出错
AH 06h,磁盘已改变
AH 00h,出错
注释:本功能只能于Pc XT(标明的BIOS日期为1/10/86或更近)、PC XT
286、Personal Computer AT或PS/2系列,其作用是能确定是否已改变或移走
了某个驱动器中的磁盘。该功能要么使用标准系列的BIOS驱动器号(0=驱
动器A;1=驱动器B,等等)或者使用只限于硬盘的驱动器号(80h=第1个驱
动器;81h=第2个驱动器,等等)。
使用这种功能时,应注意它在处理进位标志时易于造成的与其它功能的
混淆;它处理进位标志的方式与其它中断是不一致的。本中断中进位标志的设
置并不意味着已经出错。相反,它表明了下述两种可能的情形:要么已经出错
或者已移走了磁盘。其它所有的功能都使用进位标志来表示已经出错。
磁盘
Int 13h 功能 17h
设置磁盘格式的DASD类型
指定供BIOS磁盘格式化功能所使用的DASD(直接访问存储设备)类型。
调用寄存器: AH 17h
AL DASD格式类型
DL 驱动器号(以零为基准)
返回寄存器:无
注释:本功能只能用于PC XT(标明的BIOS日期为1/10/86或更近)、pc
XT 286、Personal Computer AT或PS/2系列上,只能在格式化磁盘之前调用
该功能。它的作用在于通知格式化功能:用于格式化操作的DASD类型是什
么。
表15.18列出了在Personal Computer AT系统能进行格式化的有效磁盘
类型。
表15.18 DASD格式化类型
类型 含 义
1 在320/360K驱动器中格式化320/360K软盘
2 在1.2M驱动器中格式化320/360K软盘
3 在1.2M驱动器中格式化1.2M软盘
4 在720K驱动器中格式化720K软盘
软盘状态被保存在BIOS数据区中的地址0004:0041处。
424页
磁盘
Int 13h 功能 18h
设置格式化时的介质类型
指定BIOS用于磁盘格式化功能的介质类型。
调用寄存器: AH 18h
CH 磁道数(以零为基准)
CL 每磁道的扇区数
DL 驱动器号(以零为基准)
位7=0代表软盘1;1代表硬盘
返回寄存器:进位标志清除表示成功
ES:DL 指向11个字节的参数表的指针(参见
表15.15)
进位标志置位表示出错
AH 返回代码
注释:本功能只能用于Personal Computer(注明的BIOS日期晚于11/15/
86)、PC XT(标明的BIOS日期晚于1/10/86)、PC XT Model 286、以及PS/2
系列。最好在用Int 13h,功能05h格式化磁道之前使用这一功能。该功能为
BIOS指定它希望能在磁盘驱动器中找出的介质类型。
在使用本功能之前,必须记住要用CH和CL寄存器来指定磁道和扇区
信息。磁道可以是10位的值;并且同前面一样。它要求CL中的两个高位(参
见图15.1,该图显示出了如何将信息保存在寄存器CH和CL中)。
磁盘
Int 13h 功能 19h
停放磁头
把磁盘驱动器的读/写磁头移动到该磁盘驱动器上的某个“安全”位置。
调用寄存器: AH 19h
DL 驱动器号(以零为基准,仅用于PS/2系列)
位7=0表示软盘;1代表硬盘
返回寄存器:进位标志清除表示成功
AH 状态字节(参见表15.13)
进位标志置位表示出错
AX 出错码
注释:本功能只能干Personal Computer(注明的BIOS日期晚于11/15/ 86)、
PC XT(标明的BIOS日期晚于1/10/86)、PC XT Model 286、以及PS/2系列。
其使用是把磁头移动到生产厂商指定的停放区域。最好在断开系统电源或移
425页
动系统之前使用这一功能,以防毁坏数据。
磁盘
Int 13h 功能 1Ah
格式化ESDI单元
格式化与PS/2系统相连接的且与ESDI兼容的磁盘驱动器。
调用寄存器: AH 1Ah
AL 0,没有使用缺陷表
<>0,使用缺陷表
ES:BX 指向缺陷表的指针
CL 修改位(参见注释)
DL 驱动器号(以零为基准)
位7=0表示软盘;1代表硬盘
返回寄存器:无
注释:本功能只能用于PS/2系列型号50、60和80,其作用是格式化ESDI磁
盘。使用该功能时往往导致丢失了磁盘上所有数据,因此必须十分谨慎地使用
这一功能。若用此功能来格式化软盘,其结果就难预知。
当调用本功能时,CL寄存器便保存了具有下述含义的修改位:
位
含 义
76543210
. . . . . . . 1 忽略主缺陷映象图
. . . . . . 1. 忽视次缺陷映象图
. . . . . 1. . 更新次缺陷映象图
. . . . 1. . . 完成扩展的表面分析
. . . 1. . . . 周期性的中断ON
x x x . . . . . 保留
通信
Int 14h 功能 00h
初始化通信端口
设置串行端口参数。
调用寄存器: AH 00h
AL 初始化参数
DX 端口号(0=COM1,1=COM2,在Personal
Computer AT上,2=COM3,3=COM4)
返回寄存器: AH 端口状态
AL 调制解调器状态
426页
注释:可使用本功能来初始化DX中指定的通信端口。可用该功能来初始化
COM端口1和2(DX=0-1);在Personal Computer AT系统上,允许COM端
口为1-4。
在AL中,可指定如何初始化通信端口。可用表15.19中的参数来指定被
特率、奇偶性、字长和停止位。
表15.19串行端口初始化参数
7,6,5 4,3 2 1,0
波特率 奇偶性 停止位 字长
000=110波特 x0无 0=1位 10=7位
001= 150波特 01奇 122位 11=8位
010=300波特 10无
011=600波特 11偶
100=1200波特
101=2400波特
110=4800波特
111=9600波特
该中断返回端口(参见表15.20)和调制解调器(参见表15.21)的状态。
BIOS加上端口状态位(超时)中的位7来指出用于等待应答的超出时间。在其
它情况下,返回的状态就是可直接从硬件中获取的状态。
表15.20端口状态位
位
含 义
76543210
.. . . . . . 1 数据准备就绪
. . . . . . 1. 超限错误
. . . . . 1. . 奇偶性出错
. . . . 1. . . 成帧时出错
. . . 1. . . . 检测出了中断
. . 1. . . . . 传送保持寄存器(THR)空
.1. . . . . . 传送移位寄存器(THR)空
1. . . . . . . 超时
表15.21 调制解调器状态位
位
含 义
76543210
. . . . . . . 1 清除发送(CTS)状态下的改变
. . . . . . 1. 数据集就绪(DSR)状态下的改变
. . . . . 1. . 后沿环形指示符
427页
位
含 义
76543210
. . . . 1. . . 接收线信号的改变
. . . 1. . . . 清除发送(Clear to send:CTS)
. . 1. . . . . 数据集就绪(Datato set Ready:DSR)
.1. . . . . . 环形指示符(R1)
1. . . . . . . 检测到的接收线信号
通信
Int 14h 功能 01h
把字符写给通信端口
把字符输出给串行端口。
调用寄存器 AH 01h
AL 要输出的字符
DX 端口号(0=COM1,1=COM2)(在Personal
Computer AT上,2=COM3,3=COM4)
返回寄存器: AH 位7 0(功能成功)
AH 位7 1(功能失败)
位0-6显示失败的原因(参见表
15.20)
注释:该功能把字符写给指定的通信端口并返回该通信端口的状态。一般情
况下,把字符写给串行端口并不是一种时间紧要(time-critical)任务。无论字符
何时准备就绪都能实现这一任务。该功能可写给串行端口1和2(COM1和
COM2)。在调用此功能之前,一定要用Int 14h,功能00h来初始化其输出端
口。(在Personal Computer AT上,可以访问端口(COM1至COM4)
尽管依赖于BIOS读功能的通信程序很少超出1200波特的操作范围,但
对于写功能来说,这一范围不管用。当刚刚发送出前一个字符时,唯一影响到
能否支持下一个输出字符的因素是系统有效的吞吐量问题。在此过程中没有
丢失任何数据。
表15.20显示了在该功能返回的(如果该功能失败)AH寄存器位0-6
的含义。
428页
通信
Int 14h 功能 02h
从通信端口中读取字符
从串行端口中输入字符。
调用寄存器: AH 02h
DX 端口号(0=COM1,1=COM2)(在Personal
computer AT上,2=COM3,3=COM4)
返回寄存器: AH 位7 0(功能成功)
AL 字符
AH 位7 1(功能失败)
位0-6显示失败的原因(参见表
15.20)
注释:本功能从指定的通信端口中读取字符,并返回该端口的状态,它能从串
行端口1和2(COM1和COM2)中读取字符。(在Personal Computer AT上,
可以访问端口COM1至COM4)。在调用此功能之前,一定要先初始化对应的
输入端口。
在任何通信应用程序中,接收字符都是一个极端的时间紧要操作。当外部
设备在未受控制的区间里输入字符时,计算机必须立即做好应答的准备。虽然
由计算机控制输出(但也公开地试图在通信程序中进行输入),而输入必须与
外部系统相对应。若在新的字符到达时,计算机尚未作好相应的准备,那么就
会丢失该字符。
依赖于该功能的通信程序在进行连续操作时很少超过300波特率。在大
多数情况下,1200波特率一次只能传送几个字符,而且每当显示填满一行并
必须上卷一行时,就会丢失几个字符。
在大多数用于通信的应用程序中,该功能不起作用,因为大多数情况下都
要求直接访问I/O端口以达到连续操作所必需的速度。独立于人为干预之外
的程序可以使用该功能。在使用相对慢些的速度来控制和监视应用程序时,通
过该功能来读串行设备通常很实用,也很有用。
表15.20显示了在该功能返回(如果该功能失败)的AH寄存器中位0-6
的含义。
通信
Int 14h 功能 03h
请求通信端口状态
返回串行端口的状态信息。
429页
调用寄存器: AH 03h
DX 端口号(0=COM1,1=COM2)(在Personal
Computer AT上,2=COM3,3=COM4)
返回寄存器: AH 端口状态(参见表15.20)
AL 调制解调器状态(参见表15.21)
注释:该功能返回指定通信端口的当前状态,它仅请求状态而不进行任何I/
O操作或以任何其它的方式来影响对应的串行端口。此功能可访问通信端口
1和2(DX=0-1)。(在Personal Computer AT上,该功能可访问端口COM1
至COM4)。
表15.17和表15.18显示了该调用返回的寄存器AH和AL中状态位的含
义。表15.17指定其中的位用于串行端口,而表15.18中给出的位用于与串行
端口相连接的调制解调器。
通信
Int 14h 功能 04h
扩展的初始化
初始化串行端口参数。
调用寄存器: AH 04h
AL 中断设置
BH 奇偶性
BL 停止位
CH 数据长度
CL 传送速率(bps:位/秒)
DX 端口号(0=COM1,1=COM2)(在Personal
Computer AT上,2=COM3,3=COM4)
返回寄存器: AH 端口状态(参见表15.17)
AL 调制解调器状态(参见表15.21)
注释:该功能(注:只能用于PS/2系列)为RS232端口(以一种比功能00h所
使用的方法更为简单的方式)提供直接在BIOS层进行初始化的方法。表
15.22显示了能用于该功能的所有寄存器设置。
表15. 22可能的寄存器设置
寄存器 含义 设置 含 义
AL 中断 00h 无中断
01h 中断
BH 奇偶性 00h 无奇偶性校验
01h 奇校验
430页
寄存器 含义 设置 含 义
02h 偶校验
03h 坚持为奇校验
04h 坚持为偶校验
BL 停止位 00h 一个停止位
01h 两个停止位(如果CH中数据长度设置为
00h则为11/2个停止位)
CH 数据长度 00h 5位字长
01h 6位字长
02h 7位字长
03h 8位字长
CL BPS速率 00h 110波特
01h 150波特
02h 300波特
03h 600波特
04h 1200波特
05h 2400波特
06h 4800波特
07h 9600波特
08h 19200波特
该功能通过AH和AL寄存器返回端口当前状态。表15.17和表15.18
给出了这两个寄存器中每一个位的含义。
通信
Int 14h 功能 05h
扩展的通信端口控制
允许对调制解调器控制寄存器的扩展控制。
调用寄存器: AH 05h
AL 00h,读取调制解调器控制寄存器
DX 通信端口(0=COM1;1=COM2;2=COM3;3=
COM4)
AL 01h,写调制解调器控制寄存器
BL 调制解调器控制寄存器(如果AL=01h,参见
表15.23)
DX 端口号(0=COM1,1=COM2)(在Personal
Computer AT上,2=COM3,3=COM4)
返回寄存器: AH 端口状态(参见表15.20)
AL 调制解调器状态(参见表15.21)
431页
BL 调制解调器控制寄存器(参见表15.23)
注释:该功能(只能用于PS/2系列)允许读/写与所期望的RS-232端口相关
的调制解调器控制寄存器。因此可以从BIOS层直接对端口的调制解调器控
制线路进行访问。在读操作中,可以获取这些线路的状态;在写操作中则可设
置这些状态。表15.23中定义了BL寄存器中的每个位。
表15.23调制解调器控制寄存器的位
位
含义
76543210
.. . . . . . 1 数据终端就绪(DTR)
. . . . . . 1. 请求发送(RTS)
. . . . . 1. . 输出1
. . . . 1. . . 输出2
. . . 1. . . . 回送检验
111. . . . . 保留
在调用该功能时,它也会通过寄存器AH和AL来返回串行端口和调制
解调器的状态。表15.17和表15.18分别给出了从该调用中返回的对应位的
含义。
磁带
Int 15h 功能 00h
接通磁带电机
接通盒式磁带机器的电机。
调用寄存器: AH 00h
返回寄存器:进位标志清除表示成功
进位标志置位表示出错
AH 返回代码(参见表15.24)
注释:由于该功能只能在较旧的PC型号上工作,因而在PC XT、Personal
Computer AT或PS/2系统上使用该功能,就会导致设置进位标志,并返回
AH=86(参见表15.24)。
表15.24磁带服务的返回代码
代码 含 义
00h 非法命令
01h CRC出错
02h 数据转换丢失
03h 磁带上没有定位数据