是否可以通过BIOS中的程序调用将存储在硬盘上的Windows库?

时间:2010-02-16 09:35:29

标签: assembly bios

我正在尝试编写一个程序,这将是一个BIOS选项(POST后)。我希望应用程序有一个漂亮的GUI而不是基于文本(有多种原因,本地化就是其中之一)。

我的问题是我们受到应用程序大小的限制,我们可以刷新到BIOS。

是否可以使用MASM32“链接”到硬盘上的dll,以便我们可以使用Windows API来开发GUI?

或者是否有一个API可供我们创建可以链接到最终可执行文件的GUI? (最终程序可执行文件的大小约束为60K)

如果提前感谢,我们将非常感谢您提供的任何帮助。

5 个答案:

答案 0 :(得分:9)

有可能。你所要做的就是:

  • 将处理器设置为保护模式并按预期映射内存(平面模型)
  • 开发文件系统驱动程序并加载
  • 支持所有可能的视频卡,鼠标,显示器,键盘等,包括潜在的旧硬件
  • 设置执行环境,以便存在所请求的DLL的所有外部引用,包括(对于Windows)KERNEL32,GDI等。

这有很多,这并不容易。然而,一个接近的例子是MenuetOS,这是一个令人印象深刻的紧凑环境。但它完全源于对如何实现GUI环境的全面反思。


我编写了模拟GUI界面的BIOS代码。视频卡保持文本模式,字体看起来更漂亮,文本单元分隔符关闭,鼠标被识别。通过简单的动画,整个事情确实适合60 KiB左右。

答案 1 :(得分:5)

不,这是不可能的。 Windows应用程序需要Windows操作系统在其上运行,因此BIOS必须已启动操作系统并在使用Windows GUI(或控制台应用程序)之前完成运行。即使要访问磁盘上的DLL文件,您也需要一个文件系统,在操作系统启动之前,该文件系统将无法使用。

但是,在60K中,您应该能够使用相当合理的基于字符的GUI。我会看看一些linux bootloader是如何做到的。

答案 2 :(得分:0)

没有支持此功能的BIOS实现。但从理论上说这是可能的,但请记住,首先应该开发整个操作系统:)

答案 3 :(得分:0)

您可能有兴趣查看XOSL的源代码 - old boot manager,它有一个很好的窗口GUI。

答案 4 :(得分:0)

我不确定请求是否真的可行。 (牢记问题的背景)

为此,您必须初始化整个Microsoft Windows环境才能使用API​​函数绘制GUI。

出于好奇,你在这个BIOS程序中做了什么?