首页 理论教育 显示卡是否支持VBE标准-判断及解析

显示卡是否支持VBE标准-判断及解析

时间:2023-10-21 理论教育 版权反馈
【摘要】:在判断显示卡是否支持0x118号显示模式之前,有必要首先判断BIOS是否支持VBE标准。因为所有后续设置,包括测试是否支持0x118模式,设置该显示模式等,这些工作都依赖于VBE标准。通过VBE标准可知,给ax寄存器传入0x4F00参数,调用0x10号中断服务,可判断是否支持VBE标准。我们关注的是BIOS是否支持VBE,因此在完成0x10调用后,直接检查al是否为0x4F。一般情况下,BIOS都是支持VBE标准的,因此上面的探测会成功,会执行标号ll_setmodebgn后的代码。

显示卡是否支持VBE标准-判断及解析

在判断显示卡是否支持0x118号显示模式之前,有必要首先判断BIOS是否支持VBE标准。如果连VBE标准都不支持,那么后续工作就可省略了。因为所有后续设置,包括测试是否支持0x118模式,设置该显示模式等,这些工作都依赖于VBE标准。需要补充的是,有可能显示卡是支持0x118显示模式的,但BIOS却不支持VBE标准。这不奇怪,在BIOS版本比较老而显示卡比较新的情况下,可能会遇到这种情况。通用操作系统,比如Windows等,是可以支持这种情况的,因为在Windows启动后,会加载独立显卡驱动程序,不依赖于BIOS的功能。但Hello China却不支持这种情况。

我们知道,BIOS 0x10号调用是专门针对显示设备的功能调用,VBE对这个功能调用做了扩展。通过VBE标准可知,给ax寄存器传入0x4F00参数,调用0x10号中断服务,可判断是否支持VBE标准。如果支持,则al寄存器中会返回0x4f,否则会返回其他值。下面是一段示例代码:

代码比较简单,DEF_VBE_INFO是一个预定义的常数,该常数是一段可用内存的起始地址。在int 0x10调用成功的情况下,会把VBE相关的信息存储在该地址处。由于我们不会用到这些VBE相关的信息,因此不必理会具体的返回内容是什么。我们关注的是BIOS是否支持VBE,因此在完成0x10调用后,直接检查al是否为0x4F。如果是,说明调用成功,于是会执行ll_setmodebgn标号处的代码。如果al的值不是0x4F,说明调用失败,BIOS不支持VBE模式,于是跳转到ll_failed标号处继续执行。这时候就需要在ll_failed标号处进行错误处理了。(www.xing528.com)

一般情况下,BIOS都是支持VBE标准的,因此上面的探测会成功,会执行标号ll_setmodebgn后的代码。这里就是设置显示模式的地方了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈