【问题标题】:How to move cursor with mouse?如何用鼠标移动光标?
【发布时间】:2019-01-04 16:27:50
【问题描述】:

我正在用 x86 程序集开发实模式操作系统。我设法用键盘移动光标,但我想用鼠标移动光标。我不知道怎么做。我发现 int 33h 处理鼠标,但我似乎无法使用 int 33h 移动光标。

【问题讨论】:

  • 编写操作系统是一项复杂的工作。没有加载 DOS 时没有什么是容易的。Int 33h 不存在,但 Int 15h 在支持 IBM PS/1 和 PS/2 BIOS 扩展的 BIOS 上具有一些有用的功能(现在大多数机器都支持,但并非总是如此案子)。为了展示仅在文本模式 (80x25) 下处理鼠标的复杂性,您可能会发现这个有趣的小项目:capp-sysware.com/misc/stackoverflow/54042732
  • 该代码是一个简单的轮询鼠标驱动程序,它显示一个测试模式,允许您移动鼠标光标并响应鼠标左右键(当前版本不支持 3 个按钮,一个鼠标滚轮等)。测试模式的存在是为了显示当鼠标光标移动到不同的前景色和背景色之上时会发生什么。真正的鼠标驱动程序将处理所有标准文本模式,将处理图形模式等。为简单起见,此版本专为 80x25 文本模式而设计。

标签: assembly operating-system x86-16 bootloader osdev


【解决方案1】:

中断int 10hint 1Fh 是BIOS 中断;它们可以在操作系统启动之前使用。

中断int 20hint 2Fh 是DOS 中断;它们只能在 DOS 已经加载时使用。

其他中断(例如int 33h)是设备驱动程序使用的中断; int 33h 只能在加载 DOS 鼠标驱动程序时使用。

如果您想在没有安装鼠标驱动程序的情况下访问鼠标(例如在您自己的引导加载程序中),您必须直接访问硬件。

请参阅 OSDEV 中的以下文章:

https://wiki.osdev.org/%228042%22_PS/2_Controller
https://wiki.osdev.org/PS/2_Mouse

【讨论】:

  • 他正在编写一个实模式操作系统(我已经为他回答了与此相关的其他问题)。我应该注意,任何符合 IBM PS/2 BIOS 的 BIOS(许多,但不是所有 BIOS 都支持它)具有帮助开发鼠标驱动程序的功能。**ff** 可用,BIOS 中断Int 15h/AX=0C200h to Int 15h/AX=0C209h 放置一个包装器围绕直接硬件访问,允许鼠标处理程序挂钩等。安装的中断处理程序将为您构建鼠标数据包。创建驱动程序(如果可用)可能是一个有用的起点
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多