WEB开发网
开发学院软件开发汇编语言 扩展Int 13H调用规范 阅读

扩展Int 13H调用规范

 2008-04-29 09:34:09 来源:WEB开发网   
核心提示:三.接口规范1.寄存器约定在扩展Int13H调用中一般使用如下寄存器约定:ds:si==>磁盘地址数据包(diskaddresspacket)dl==>驱动器号ah==>功能代码/返回码在基本Int13H调用中,0-0x7F之间的驱动器号代表可移动驱动器0x80-0xFF之间的驱动器号代表固定驱动器,

三.接口规范

1.寄存器约定

在扩展Int13H调用中一般使用如下寄存器约定:

ds:si==>磁盘地址数据包(diskaddresspacket)

dl==>驱动器号

ah==>功能代码/返回码

在基本Int13H调用中,0-0x7F之间的驱动器号代表可移动驱动器0x80-0xFF之间的驱动器号代表固定驱动器。但在扩展Int13H调用中0x80-0xFF之间还包括一些新出现的可移动驱动器,比如活动硬盘等。这些驱动器支持先进的锁定,解锁等功能。

ah返回的错误码除了标准Int13H调用规定的基本错误码以外,又增加了以下错误码:

B0h驱动器中的介质未被锁定

B1h驱动器中的介质已经锁定

B2h介质是可移动的

B3h介质正在被使用

B4h锁定记数溢出

B5h合法的弹出请求失败

2.API子集介绍

1.x版的扩展Int13H调用中规定了两个主要的API子集。

第一个子集提供了访问大硬盘所必须的功能,包括检查扩展In13H是否存在(41h),扩展读(42h),扩展写(43h),校验扇区(44h),扩展定位(47h)和取得驱动器参数(48h)。 

第二个子集提供了对软件控制驱动器锁定和弹出的支持,包括检查扩展Int13H是否存在(41h),锁定/解锁驱动器(45h),弹出驱动器(46h),取得驱动器参数(48h),取得扩展驱动器改变状态(49h),int15h。 

如果使用了调用规范中不支持的功能,BIOS将返回错误码ah=01h,CF=1。 

3.API详解

1)检验扩展功能是否存在

入口:

AH=41h

BX=55AAh

DL=驱动器号

返回:

CF=0

AH=扩展功能的主版本号

AL=内部使用

BX=AA55h

CX=API子集支持位图

CF=1

AH=错误码01h,无效命令

这个调用检验对特定的驱动器是否存在扩展功能。如果进位标志置1则此驱动器不支持扩展功能。如果进位标志为0,同时BX=AA55h,则存在扩展功能。此时CX的0位表示是否支持第一个子集,1位表示是否支持第二个子集.

对于1.x版的扩展Int13H来说,主版本号AH=1。AL是副版本号,但这仅限于BIOS内部使用,任何软件不得检查AL的值。 

2)扩展读

入口:

AH=42h

DL=驱动器号

DS:DI=磁盘地址数据包(DiskAddressPacket)

返回:

CF=0,AH=0成功

CF=1,AH=错误码

这个调用将磁盘上的数据读入内存。如果出现错误,DAP的BlockCount项中则记录了出错前实际读取的数据块个数。 

3)扩展写

入口:

AH=43h

AL

0位=0关闭写校验

1打开写校验

1-7位保留,置0

DL=驱动器号

DS:DI=磁盘地址数据包(DAP)

返回:

CF=0,AH=0成功

CF=1,AH=错误码

这个调用将内存中的数据写入磁盘。如果打开了写校验选项,但BIOS不支持,则会返回错误码AH=01h,CF=1。功能48h可以检测BIOS是否支持写校验。

如果出现错误,DAP的BlockCount项中则记录了出错前实际写入的数据块个数。

上一页  1 2 3 4 5 6  下一页

Tags:扩展 Int 调用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接