视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
PCI BIOS调用深度解析
2025-09-29 04:23:11 责编:小OO
文档
PCI BIOS 调用

通过执行INT 1AH指令可以调用16位的PCI BIOS,也可以直接在物理寄存器位置000FFE6EH调用PCI BIOS。32位BIOS的调用要通过一个远程调用来实现。在这两种情况下,调用这都必须首先将需要的请求参数装入处理器的寄存器组。在入口AH寄存器必须包含PCI的功能ID:B1H,AL寄存器必须包含PCI下级功能识别器。

1、PCI BIOS的存在性

    入口参数:

    AH=B1H

    AL=01H

    出口参数:

    EDX:返回值为“PCI”。字符“P”存放在DL;字符“C”存放在DH;字符“I”存放在EL;EH中方一个空格符

    AH:存在状态。如果EDX设置适当,则00H表示存在PCI BIOS。

    AL:硬件机制

    BL:接口版本

    CL:系统中最后一个PCI局部中线的号码

    CF:状态标志。为1表示没有PCI BIOS,为0表示存在PCI BIOS。

    如果CF被清除且AH的内容为00H时,为了确定PCI功能设置的有效性,对EDX内容的检查仍然是必须的。BX进一步指出版本号,版本号以BCD码形式存在。如v2.10,BH将返回02H,BL将返回10H。

    AL的返回值标识与访问配置空间和产生PCI特殊周期相关的支持平台的特定硬件字符。PCI规范为访问配置空间定义了两种硬件机制,AL返回值的位0与位1表示当前平台支持那种机制。位0等于1时支持1#机制,位1等于1时表示支持2#机制,位2、3、6、7是保留位,返回值必须是0。

    PCI规范中也为特殊周期的产生定义了硬件机制,AL的返回值的位4、5两位指出机制类型。位4为1表示支持基于1#配置机制的特殊周期产生;位5为1表示支持基于2#配置机制的特殊周期产生。

    CL的返回值表示系统中最后一个PCI局部总线的号码,PCI局部中线的号码从0开始,到CL中的返回值为止。

2、PCI设备检测

     入口参数:

    AH=B1H

    AL=02H

    CX=设备识别号,从0~~65535

    DX=供应商识别代码,从0~~65534

    SI=索引号,0~~N

    出口参数:

    BH=总线号

    BL=高5位为设备号,低3位为功能号

    AH=返回3种不同的代码。00H表示检测成功,86H表示未发现要检测的设备,83H表示入口参数中的供应商代码无效

    CF=状态标志。为1表示检测错误,为0表示检测成功。

    如果在该功能调用中,使索引号从0开始以1为增量递增,直到AH中的返回码为86H为止,便可检测出供应商识别码与设备识别码相同的所有设备。

 3、PCI分类代码检测

    入口参数:

    AH=B1H

    AL=03H

    ECX=低三个字节为分类代码

    SI=索引号,0~~N

    出口参数:

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    AH=00H表示检测成功,86H表示未发现要检测的设备

    CF=1表示检测错误,0表示检测成功

    如果在该功能调用中,使索引号从1开始以1位增量递增,直到AH中的返回码为86H为止,便可检测出具有相同分类代码的所有设备。

4、特殊周期的产生

     入口参数:

    AH=B1H

    AL=06H

    BH=总线号,0~~255

    EDX=特殊周期数据

    出口参数:

    AH=00H表示特殊周期产生成功,81H表示不支持该功能

    CF=1表示错误,0表示成功

5、读配置字节

     入口参数:

    AX=B108H

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,0~~255

    出口参数

    CL:读出的配置字节

    AH=00H表示成功

    CF=1表示错误,0表示成功

6、读配置字

    入口参数:

    AX=B109H

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,取值为0、2、4、6、8

    出口参数

    CX=读出的配置字

    AH=00H表示成功,87H表示寄存器无效

    CF=1表示错误,0表示成功

7、读配置双字

    入口参数:

    AX=B10AH

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,0、4、8、12

    出口参数

    ECX=读出的配置双字

    AH=00H表示成功,87H表示寄存器无效

    CF=1表示错误,0表示成功

8、写配置字节

    入口参数:

    AX=B10BH

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,0~~255

    CL=写入的字节值

    出口参数

    AH=00H表示成功

    CF=1表示错误,0表示成功

9、写配置字

    入口参数:

    AX=B10CH

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,0、2、4、6

    CX=写入字的值

    出口参数

    AH=00H表示成功,87H表示寄存器无效

    CF=1表示错误,0表示成功

10、写配置双字

    入口参数:

    AX=B10DH

    BH=总线号,0~~255

    BL=高5位为设备号,低3位为功能号

    DI=寄存器号,0、4、8、12

    ECX=写入双字的值

    出口参数

    AH=00H表示成功,87H表示寄存器无效

    CF=1表示错误,0表示成功下载本文

显示全文
专题