You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编语言鼠标位置获取及绘图代码无效果问题求助

汇编中获取鼠标位置并绘制像素的问题解决

你的代码无绘图效果主要有两个核心问题,下面逐个说明并给出修正方案:

1. 未初始化鼠标驱动

int 33h的鼠标功能调用必须先执行初始化操作(ax=0h),否则鼠标驱动未激活,ax=3h获取的坐标值完全无效。

2. 16色视频模式下的绘图参数遗漏

在int 10h/ah=0Ch的绘图调用中,16色模式(如你使用的12h模式)需要显式设置bx=0(指定视频页码,单页显示场景下固定为0),虽然部分环境默认bx为0,但显式设置能避免兼容性问题。

修正后的完整代码

; 先设置视频模式为12h(640x480 16色)
mov ah, 0h
mov al, 12h
int 10h

; 初始化鼠标驱动
mov ax, 0h
int 33h
; 检查初始化是否成功(ax返回FFFFh表示成功)
cmp ax, 0FFFFh
jne mouse_init_fail ; 可添加初始化失败的处理逻辑

; 获取当前鼠标位置
mov ax, 3h
int 33h ; cx=x坐标(0-639),dx=y坐标(0-479)

; 在鼠标位置绘制像素
mov ah, 0Ch
mov al, 5       ; 紫色(16色模式下0-15为有效颜色值)
mov bx, 0       ; 视频页码,单页模式设为0
; cx和dx已保存鼠标的x、y坐标,无需重新赋值
int 10h

mouse_init_fail:
; 这里可添加初始化失败后的提示或退出逻辑

额外注意事项

  • 鼠标坐标范围:12h模式下x为0-639,y为0-479,int33h/ax=3h返回的坐标会自动适配当前视频模式,无需手动转换。
  • 若要持续跟踪鼠标位置并绘制,需加入循环,每次循环调用ax=3h获取最新坐标后再执行绘图操作,同时可添加键盘退出逻辑(比如检测ESC键输入)。

内容的提问来源于stack exchange,提问作者plsHelpMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:12:51