如果我没弄错的话,执行INT基本上就是一个软件子程序。当你可以使用CALL执行这些中断例程时,为什么会有INT指令?
答案 0 :(得分:3)
使用INT
使API非常通用,并且与定义它的系统中所有函数入口点的位置无关。您不需要具有定义链接到的所有外部符号的库。例如,您可以调用INT xxH
来获取某个值xx
并使用寄存器设置某种方式。如果使用CALL
,则必须直接通过链接库知道函数的地址,或者通过已知的表或其他位置间接知道该函数的地址,这可能仍需要表位置的链接库。
您的BIOS之类的子系统使用此方法,因为他们不必发布一堆单独功能的地址,或者无法维护为每个可能的操作系统分发链接/ lib文件的任务或你可能有的开发工具。 (更不用说,您可能正在编写自己的操作系统。)而且对于不同的PC硬件制造商来说,它可能也会有所不同。 INT
机制完全独立于所有这些。
如果您有一系列由特定软件中断和寄存器设置服务的功能,您可以更改所有功能的位置,并且功能集合仍将与使用的所有软件保持兼容中断。非常方便用于BIOS或Linux系统调用等。