繁体   English   中英

编写引导加载程序的高级汇编指南

[英]Advanced assembly guide for writing a bootloader

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

我正在寻找一些 x86 程序集的高级指南,正确描述保护模式(我仍然不知道是否需要切换到它,我的第一直觉是我不需要),计算机如何启动,从键盘读取并打印到屏幕上。

我可以在汇编中编写并通过gcc编写小程序,我只需要启动和接口信息。 任何信息表示赞赏,包括书籍。

我会推荐这个网站。 您会在那里(尤其是在“简介”类别中)找到您需要知道的一切。

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

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

是前段时间看到的一个链接,我觉得它很有趣,所以我将它添加到我的收藏夹中……也许它会有所帮助。

这是 2014 年的回归机器快照:

https://web.archive.org/web/20141231102230/http://www.acm.uiuc.edu/sigops/roll_your_own/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM