我正在寻找PC提供的BIOS中断列表。
要获得最常见的BIOS调用,可以使用各种公共资源,但是我希望获得PC的所有BIOS调用列表(可能不是非常公开)。
是否有程序可以执行此操作,或者可以用什么方式编写(最好是用汇编或C语言编写)?
如果没有,那没什么大不了的。我可以安排一些通用的清单。
我的目标是避免低级BIOS调试/拆卸。我也知道BIOS的底层API相对相似,因此API调用的列表也相似。
答案 0 :(得分:7)
“ Ralf Brown's interrupt list”可能对您有所帮助。
该站点列出了x86系统上最常用的大多数中断:
不仅列出了BIOS中断,而且还列出了MS-DOS中断和普通程序使用的中断。这包括列出Linux系统调用(中断0x80)的部分。
...即,请不要包括...
不幸的是,您将不得不分开“普通” BIOS中断,仅某些BIOS中存在的中断和MS-DOS自己。
但是,对于许多中断,列表显示类似以下内容:“仅存在于Example Software Inc.制造的BIOS中。”
...我最近的编辑...
如果我对您的理解正确,那么您想要某种API来告诉您特定系统上存在哪些中断。
不幸的是,这样的API不存在:
BIOS不一定是单个软件。相反,某些硬件组件(例如图形卡)可能具有自己的固件。
此类组件的固件通常没有自己的中断,但可以通过更改中断向量来向BIOS中断添加功能。
图形卡的固件可以通过更改中断向量来向AX=5678h
添加功能int 10h
,使其指向以下代码段:
new_int_10_vector:
cmp ax, 5678h
je new_function
; (In reality, the next line is not as simple as shown here)
jmp original_int_10_vector
new_function:
; Perform the "new" function "AX=5678h" of "int 10h"
; ...
iret
如果现代BIOS供应商希望引入列出所有受支持功能(您正在寻找的功能)的功能,那么他们会遇到问题:
BIOS应该如何检测图形卡的固件向AX=5678h
添加了附加功能int 10h
?