【发布时间】:2011-03-27 13:35:18
【问题描述】:
如何在保护模式下执行受限指令,例如 IN 和 OUT?
我发现它需要足够高的权限级别 (CPL) 才能执行 IO 指令。我怎样才能在内核模式下运行,拥有 IO 权限或任何其他可能对我有帮助的东西? - 我想直接访问硬件,没有任何阻碍。
谢谢。
【问题讨论】:
-
假设您在第三方操作系统下运行,您需要编写内核模式驱动程序。你如何做到这一点在很大程度上取决于你所拥有的操作系统。此外,它可能有助于确切地知道你想用这个做什么。您想编写某种不寻常的硬件,还是有其他目标?
-
实际上我正在尝试访问简单的硬件,例如键盘。你可以看看这个问题:stackoverflow.com/questions/219120?这基本上就是我想要做的 - 使用 IN 和 OUT 访问 IO 设备,正如给出的链接上的第一个答案所暗示的那样。
-
我可能会补充一点,我正在制作一个 16 位的汇编应用程序,可能会使用 DOS-Box 进行模拟
-
哦,好的。那是一个完全不同的情况。在 DOS 下,您的代码在实模式下运行,硬件保护基本上是无关紧要的。您应该可以从这里毫无问题地执行
IN和OUT指令。如果您知道应该可以工作的代码确实存在问题,则可能是由于 DOSBox 的仿真不准确造成的。不过,我认为基本的键盘 IO 会起作用。 -
有人使用在控制台上运行的dosemu 尝试了代码,他说它运行良好。但是,当我使用 DOS-Box 尝试我的代码时,它不起作用。你有什么建议吗?
标签: assembly io hardware privileges