【发布时间】:2016-01-31 11:18:25
【问题描述】:
可以写入任意内存区域的实模式程序会损坏硬件吗?这种情况下不包括中断调用或其他可以在实模式下完成的事情——只是纯粹的写入内存。
This page 显示了 x86 系统的内存映射,我看到了 BIOS 数据区之类的东西;所以我担心写入这个区域可能会对 BIOS 进行持续更改,或者至少将 BIOS 设置更改为意外值。可能更多的东西可以被摧毁。
我经常读到实模式下的硬件访问会破坏硬件;但他们没有解释必须做出的情况。
由于我只询问写访问而不调用中断,我的主要问题是,如果对内存的更改可以进行持久更改;如果是,是哪个,为什么?
【问题讨论】:
-
我认为您尝试写入 ROM 是安全的。 (看看它代表什么。)
-
我知道 ROM 是什么意思。但是你可以刷一个ROM。您可以更改可能不一致的 BIOS 设置,从而在下次启动时崩溃。可能还有更多可能出错的地方
-
如果“ROM区”实际上是由ROM芯片构成的,则无法更改。你不能刷 ROM 芯片。
-
...无论谁投了我的票,都应该向我展示我所做的研究不足。例如stackoverflow.com/questions/6813636/…,一个 6 次赞成的问题提出了相同的问题,而关于实模式的答案是“任何访问都可能损坏任何东西”。这对我来说还不够! :-( 我想了解哪个内存区域的什么变化会造成什么损坏,以及为什么。
-
我不知道 Bios 数据区或扩展 BDA 中的任何内存位置如果写入会导致 PC 物理损坏。但是,如果您写入这些区域,您的 PC 可能无法按预期运行,可能需要重新启动才能解决。如果您使用 IO 端口直接与硬件交互,那么您可能会做一些令人讨厌的事情,这些事情可能会使您的 PC 在某些较旧/有缺陷的 BIOS 上无法工作。许多 BIOS 可以用新代码重新刷新,如果该代码是错误的,那么您的 PC 将来可能无法启动。许多系统现在都带有工作 BIOS 的备份副本以防万一。
标签: assembly x86 hardware bios hardware-programming