用于编写引导加载程序的高级程序集指南

时间:2012-03-03 22:29:17

标签: assembly x86 bootloader

对于计算机体系结构项目,我想编写一些可引导的代码来做一些简单的事情(我想过一个蛇游戏,如果那不是太复杂的话)。我认为编写一个小型引导加载程序来将控制权传递给C程序应该不会太难,但我找不到任何准确的信息。

我正在寻找一些正确描述保护模式的x86程序集的高级指南(我仍然无法判断我是否需要切换到它,我的第一直觉是我没有),计算机如何启动,阅读从键盘和打印到屏幕。

我可以在汇编中编写并传递gcc来编写小程序,我只需要启动和接口信息。任何信息都很受欢迎,包括书籍。

2 个答案:

答案 0 :(得分:3)

我会推荐this网站。你会发现(特别是在“简介”类别中)你需要知道的一切。

除非您切换到保护模式,否则您可以使用BIOS中断来打印到屏幕,从键盘读取等。例如interrupt 0x10, function 0x0e。如果要使用其他程序,除了引导加载程序之外,您还需要手动将其加载到内存中。有用于从硬盘(或模拟硬盘的pendrive)读取的BIOS功能,但您必须自己处理文件系统。也许,在您的情况下,最好的解决方案是不使用任何解决方案,只需将其他程序写入固定地址,然后使引导加载程序从该硬编码位置加载它。

此外,如果要在实模式下执行使用gcc编译的代码,则需要使用.code16gcc指令。它将使气体代码能够在32位机器上以16位实模式执行。

答案 1 :(得分:2)

Here是一段时间前发现的链接,我觉得它很有意思,所以我把它添加到我的收藏中......也许会有所帮助。