现在的位置: 首页 > 综合 > 正文

DOS程序员参考手册[15C]

2013年09月22日 ⁄ 综合 ⁄ 共 25260字 ⁄ 字号 评论关闭

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                         磁带上没有定位数据
 

抱歉!评论已关闭.