可以在linux上的代码中使用bios中断吗?

时间:2014-04-28 10:13:16

标签: assembly nasm interrupt system-calls bios

我在Linux中使用汇编语言编写一个简单的程序(使用nasm),出于教育目的,我想使用BIOS中断代替linux系统调用,这可能吗?

2 个答案:

答案 0 :(得分:4)

简短的回答是,不可能。

更长的答案是Linux支持virtual8086模式(int vm86(unsigned long fn, struct vm86plus_struct *v86)调用),它能够执行实模式代码(包括BIOS功能,如果设置正确)。然而; BIOS期望许多不同的硬件处于特定/默认状态,而Linux(像所有优秀的操作系统一样)控制硬件并将其全部置于BIOS无法预期的各种状态。因此,可以调用BIOS功能,但是可以预期它们会崩溃,导致未知行为和/或破坏Linux本机设备驱动程序的正常运行。

另请注意,BIOS功能非常低劣"无论如何,对于Linux的本机设备驱动程序(换句话说,如果它确实起作用,你仍然不应该这样做);现在很多系统都使用UEFI(在这种情况下,BIOS功能根本就不存在)。

答案 1 :(得分:2)

您可以组装DOS环境并使用DOSBox从Linux运行它。或者,您可以在没有操作系统(bootloader)的情况下编写它并在VirtualBox内部运行。