【问题标题】:Assembly - Privilege Levels装配 - 特权级别
【发布时间】:2011-03-27 13:35:18
【问题描述】:

如何在保护模式下执行受限指令,例如 IN 和 OUT?

我发现它需要足够高的权限级别 (CPL) 才能执行 IO 指令。我怎样才能在内核模式下运行,拥有 IO 权限或任何其他可能对我有帮助的东西? - 我想直接访问硬件,没有任何阻碍。

谢谢。

【问题讨论】:

  • 假设您在第三方操作系统下运行,您需要编写内核模式驱动程序。你如何做到这一点在很大程度上取决于你所拥有的操作系​​统。此外,它可能有助于确切地知道你想用这个做什么。您想编写某种不寻常的硬件,还是有其他目标?
  • 实际上我正在尝试访问简单的硬件,例如键盘。你可以看看这个问题:stackoverflow.com/questions/219120?这基本上就是我想要做的 - 使用 IN 和 OUT 访问 IO 设备,正如给出的链接上的第一个答案所暗示的那样。
  • 我可能会补充一点,我正在制作一个 16 位的汇编应用程序,可能会使用 DOS-Box 进行模拟
  • 哦,好的。那是一个完全不同的情况。在 DOS 下,您的代码在实模式下运行,硬件保护基本上是无关紧要的。您应该可以从这里毫无问题地执行INOUT 指令。如果您知道应该可以工作的代码确实存在问题,则可能是由于 DOSBox 的仿真不准确造成的。不过,我认为基本的键盘 IO 会起作用。
  • 有人使用在控制台上运行的dosemu 尝试了代码,他说它运行良好。但是,当我使用 DOS-Box 尝试我的代码时,它不起作用。你有什么建议吗?

标签: assembly io hardware privileges


【解决方案1】:

DOS 不是保护模式操作系统。在过去,有名为DOS extenders 的 PM 框架。他们有这样的 API。创建您自己的 PM 环境不仅仅是将 CPU 切换到保护模式。

您还应该使用调试程序来检查 DosBox 下到底出了什么问题。

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 2018-02-21
    • 1970-01-01
    相关资源
    最近更新 更多