使用 Int 13H 读取磁盘参数
Posted
技术标签:
【中文标题】使用 Int 13H 读取磁盘参数【英文标题】:Using Int 13H to Read disk parameters 【发布时间】: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。谢谢大家的时间! 【参考方案1】:热重启没有多大意义。
如果您的程序在 Windows 下运行,您将无法启动热重启,并且地址 0x7c00 不太可能映射到物理地址 0x7c00 的物理内存,这要归功于 Windows。
如果您的程序在 DOS 下运行,为什么不直接使用 int 13h
而无需重新启动?
如果你真的想在干净的系统(没有 DOS 或 Windows)上运行你的代码,写一个引导扇区,制作一张可引导的软盘或 CD 或闪存棒,然后从它引导。
【讨论】:
以上是关于使用 Int 13H 读取磁盘参数的主要内容,如果未能解决你的问题,请参考以下文章
在引导加载程序中使用 int 13h ah=42h 读取 LBA 硬盘