【问题标题】:Using Int 13H to Read disk parameters使用 Int 13H 读取磁盘参数
【发布时间】:2013-02-01 17:40:24
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

  • 如果您在 Windows 上,为什么要使用 int 0x13?只需向 ATA 设备发出 ATA_IDENTIFY 即可获得更好的信息。
  • 这是指定我编写实模式程序并使用 int 13h 的作业的一部分,这就是为什么我要问我是否在正确的轨道上,而不是代码。我对此很陌生,所以我不是 100% 采用最佳方法,没有指定 Windows,我只是认为这可能是一个合理的方向。
  • 您必须在 Windows 内部进行吗?
  • 问题格式对此含糊不清,现在教授只是说在VirtualBox中使用MSDOS。谢谢大家的时间!

标签: assembly interrupt hard-drive bios


【解决方案1】:

热重启没有多大意义。

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

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

如果你真的想在干净的系统(没有 DOS 或 Windows)上运行你的代码,写一个引导扇区,制作一张可引导的软盘或 CD 或闪存棒,然后从它引导。

【讨论】:

    猜你喜欢
    • 2010-12-31
    • 2013-11-20
    • 2017-08-10
    • 1970-01-01
    • 2021-12-20
    • 2013-01-09
    • 2012-01-31
    • 2015-07-16
    • 2013-01-29
    相关资源
    最近更新 更多