代码之家  ›  专栏  ›  技术社区  ›  Aurel Bílý

纳森和因特13H-我做错了什么?

  •  2
  • Aurel Bílý  · 技术社区  · 15 年前

    嘿,我对OS写作很感兴趣,我已经有很长时间了,但还是不能吞下它(我主要是跟你第一次读到你根本不能理解的东西一起做的)——而且它对我所做的一切都很适用,比如PHP,HTML,AS3.0,C++…更多)刚才我有点明白了。问题是——事实上,直到现在我才需要一个特定的引导装载程序(我知道还有其他的,比如GRUB之类的,但这只是一个很长的故事)。

    显然,最重要的部分是从磁盘读取一些内容到图像扇区,然后跳到那里。但是,使用ah 0x02的int 0x13,也就是从磁盘读取扇区,并没有真正工作(或者我只是没有得到它)。

    所以,我发现了以下信息: Click

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

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

    但是,它只是…不起作用。 我正在尝试将缓冲区放在不同的位置、信息、不同的扇区… 有人能给我举个例子来说明这种特定点的解读吗?

    谢谢。

    2 回复  |  直到 15 年前
        1
  •  0
  •   JeSuisse    15 年前

    你可以看看你所知道的一个引导加载程序的源代码,例如grub…

    或者更简单:将工作安装的MBR或引导扇区存储在一个文件中,然后将其反汇编。这是很好的,因为它将为您提供加载程序代码,因为空间限制(最大512字节),它只执行裸露的最小值。

        2
  •  0
  •   Aurel Bílý    15 年前

    终于得到了!

    驱动器号(dl)好像错了… 因为我换了硬盘(而不是软盘),我忘了把它换成0x80。此外,扇区数在ch中以2-7位为单位,而不是0-5位。

    D 无论如何谢谢。