2

嘿,我对操作系统编写很感兴趣,我已经很长时间了,但仍然无法接受(我主要是“第一次阅读时你不能理解的事情你根本不应该做” - 而且它适用于我所做的所有其他事情,比如 PHP、HTML、AS3.0、C++ ......还有很多)刚刚我有点明白了。问题是——真的,ASM 直到现在我才需要一个特定的引导加载程序才那么有趣(我知道还有其他的,比如 GRUB 之类的,但这只是一个漫长的故事)。

显然,最重要的部分是实际从磁盘读取一些内容到图像扇区并跳转到那里。但是,INT 0x13 与 AH 0x02,即。从磁盘读取扇区并没有真正工作(或者我只是不明白)。

所以,我找到了这个信息: 点击

在对 Bochs 进行了一些研究之后,我发现了扇区数、柱面数、磁头数以及有关磁盘的所有信息。

现在,为了测试它,我想读取第一个扇区,并从中打印出几个字符——因为我一开始就知道有这个引导加载程序,我会看到使用的部分消息。

但是,它只是......不起作用。我正在尝试将缓冲区放到不同的地方、消息、不同的扇区...有人可以给我看一个这样读取指定点的例子吗?

谢谢。

4

2 回答 2

0

您可以查看您知道的引导加载程序之一的源代码,例如 grub...

或者更简单:将工作安装的 MBR 或引导扇区存储在文件中并反汇编。这很棒,因为它会为您提供由于空间限制(最大 512 字节)而仅执行最低限度的加载程序代码

于 2010-07-14T22:04:23.840 回答
0

终于明白了!

看来驱动器号(DL)是错误的......因为我切换到硬盘(而不是软盘)我忘了把它改成 0x80。此外,扇区号在 CH 的 2-7 位中,而不是 0-5 位。

:D 无论如何,谢谢。

于 2010-07-15T05:54:47.093 回答