NASM和INT13h - 我做错了什么?

时间:2010-07-14 21:50:45

标签: assembly disk nasm

嘿,我对操作系统写作非常感兴趣,我已经很长时间了,但仍然无法忍受它(我主要选择的是“在第一次阅读时你不能理解的是你根本不应该做什么” - 它适用于我所做的一切,如PHP,HTML,AS3.0,C ++ ...更多)刚才我得到了它。问题是 - 实际上,ASM直到现在还不是那么有趣,我需要一个特定的引导程序(我知道还有其他的,比如GRUB等,但这只是一个很长的故事)。

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

所以,我发现了这个信息: Click

经过对Bochs的一些研究后,我发现了磁盘的扇区,圆柱,磁头和一切的数量。

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

但是,它只是......不起作用。 我试图把缓冲区放到不同的地方,消息,不同的部门...... 任何人都可以给我看一个这样读取指定点的例子吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以查看您了解的其中一个引导加载程序的源代码,例如:蛴螬...

甚至更简单:将工作安装的MBR或引导扇区存储在文件中并进行反汇编。这很好,因为它会给你加载器代码,由于空间限制(最大512字节)

,它只做最小的

答案 1 :(得分:0)

终于搞定了!

看来Drive Number(DL)错了...... 由于我切换到HDD(而不是软盘),我忘了将其更改为0x80。此外,扇区号在CH中的位2-7中,而不是0-5。

:d 不管怎样,谢谢。