Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何用鼠标移动光标?_Assembly_Operating System_X86 16_Bootloader_Osdev - Fatal编程技术网

Assembly 如何用鼠标移动光标?

Assembly 如何用鼠标移动光标?,assembly,operating-system,x86-16,bootloader,osdev,Assembly,Operating System,X86 16,Bootloader,Osdev,我正在x86汇编中开发realmode操作系统。我设法用键盘移动光标,但我想用鼠标移动光标。我不知道怎么做。我发现int 33h处理鼠标,但我似乎无法使用int 33h移动光标。中断int 10h到int 1Fh是BIOS中断;它们可以在操作系统启动之前使用 int 20h至int 2Fh中断为DOS中断;它们只能在DOS已加载时使用 其他中断(例如int 33h)是由设备驱动程序使用的中断;int 33h只能在加载DOS鼠标驱动程序时使用 当您想在没有安装鼠标驱动程序的情况下访问鼠标时,例如在

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

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

int 20h至int 2Fh中断为DOS中断;它们只能在DOS已加载时使用

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

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

请参阅OSDEV中的以下文章:


他正在写一本真正的mode OS,我已经为他回答了其他与此相关的问题。我应该注意到,任何符合IBM PS/2 BIOS的BIOS都有一个功能来帮助开发鼠标驱动程序。**ff**可用,BIOS中断在直接硬件访问周围放置一个包装,允许鼠标处理程序挂钩等。安装的中断处理程序将为您构建鼠标数据包。创建可用的驱动器是一个有用的起点编写操作系统是一项复杂的任务。没有加载DOS时没有什么是容易的。Int 33h不存在,但Int 15h在BIOS上有一些有用的功能,这些功能支持IBM PS/1和PS/2 BIOS扩展,目前大多数机器都支持,但情况并非总是如此。为了展示在文本模式80x25下处理鼠标的复杂性,您可能会发现这个有趣的小项目:该代码是一个简单的轮询鼠标驱动程序,显示测试模式,允许您移动鼠标光标并响应鼠标左键和右键当前版本不支持3个按钮,鼠标滚轮等。测试模式用于显示当鼠标光标移动到不同前景和背景颜色上方时发生的情况。一个真正的mosue驱动程序将处理所有标准文本模式,将处理图形模式等。为简单起见,此版本设计用于80x25文本模式。