【问题标题】:How to get a mouse working in my own operating system? INT 33h doesn't work outside of EMU8086如何让鼠标在我自己的操作系统中工作? INT 33h 在 EMU8086 之外不起作用
【发布时间】:2011-04-22 09:44:48
【问题描述】:

我已经完全在 Assembly 中开发了一个自己的操作系统,现在我想实现一个鼠标驱动程序,因为我看到带有 EMU8086 的 Windows 中的 INT 33h 可以工作,但是当我从软盘启动时它不起作用。我尝试过 USB 和 PS/2 鼠标,结果相同。谁能解释我必须做什么才能让操作系统识别鼠标?

【问题讨论】:

  • 过去 10 年我没有做 x86 硬件编程,但现在的 BIOS 真的提供了 INT 33h 吗?我认为它只是应用程序和鼠标驱动程序之间的一个协议,如果你正在编写自己的操作系统,它不是开箱即用的东西。
  • 你是对的,INT 33h 是 DOS 中断而不是 BIOS 中断。但是我发现了一些关于 INT 15h
  • 不知道,但为你的工作 +1
  • 我也想看看 Linux 是如何做到的:stackoverflow.com/questions/25175960/…

标签: assembly mouse interrupt x86-16 osdev


【解决方案1】:

我不认为旧的 BIOS“指针设备”功能(例如“int 0x15, ax = 0xC200”)也可以工作。

如果您正在编写操作系统,则需要为操作系统编写设备驱动程序。这意味着为 USB 键盘/鼠标编写完整的 USB 堆栈和驱动程序;并为 PS/2 键盘和鼠标编写驱动程序。见http://wiki.osdev.org/Mouse_Input

【讨论】:

  • 现在我想起来了,我似乎记得 Int 15h 指针设备例程一直追溯到原始 PC 或 PCjr 并且在那里用于操纵杆。虽然它们可能在较新的机器上支持鼠标,但更有可能不支持。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多