2013-02-17 160 views
0

我的目标是简单地说,使用Int 13h来读取我的磁盘参数。使用Int 13H读取磁盘参数

我知道这不能直接在Windows中完成,因为它本质上是拦截BIOS调用。

到目前为止,我的想法是,我可以在0x7C00h的内存位置重写代码,并利用Int 19h进行热重启,这将跳转到现在被覆盖的0:7C00h,然后我就可以读取磁盘参数。

我在正确的轨道上吗?我觉得(我希望)我至少指向正确的方向。

在此先感谢。

+0

为什么你使用int 0x13如果你在Windows上?只要看一下ATA_IDENTIFY到ATA设备,你就会得到更好的信息。 – SecurityMatt 2013-02-17 02:51:49

+0

这是一个赋值的一部分,它指定我编写一个实模式程序并使用int 13h,这就是为什么我要问我是否在正确的轨道上,而不是代码。我相当新,所以我不是100%的最佳方法,没有指定Windows,我只是认为这可能是一个合理的方向。 – Ramrod 2013-02-17 03:17:43

+0

你必须从Windows内部完成吗? – SecurityMatt 2013-02-17 03:30:38

回答

2

做热重启没有太大意义。

如果您的程序在Windows下运行,您将无法启动热重启,并且地址0x7c00不太可能映射到物理地址0x7c00处的物理内存,这要归功于Windows。

如果您的程序在DOS下运行,为什么不直接使用int 13h而无需重新启动?

如果您确实想在干净的系统上运行您的代码(无DOS或Windows),请编写引导扇区,制作可引导软盘或CD或闪存盘并从中启动。