![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 09:39 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » INT33 详细说明文档 |
| 可打印版本 2,329 / 5 |
| 第1楼 dsysps | 发表于 2006-11-18 00:25 |
| 初级用户 发帖 34 积分 98 | |
|
INT33 详细说明文档 希望对DOS下使用鼠标或触摸屏的朋友有所帮助
INT33 说明 (1)、功能00H 功能描述: 初始化鼠标,该操作只需要执行一次 入口参数: AX=00H 出口参数: AX=0000H——不支持鼠标功能,FFFFH——支持鼠标功能 BX=鼠标按钮个数(在支持鼠标功能时) 在支持鼠标功能的情况下,鼠标还被设置如下参数: 1、 鼠标指针放在屏幕中央 2、 如果当前鼠标指针是显示的,则操作后,鼠标指针被隐藏 3、 鼠标指针的显示页为0 4、 根据屏幕的显示模式显示鼠标指针:文本—反向显示矩形块,图形—尖头形状 5、 水平象素比=8:8,垂直象素比=16:8 6、 设置水平和垂直的显示边界为当前显示模式的最大边界 7、 允许光笔仿真 8、 双速门槛值=64 (2)、功能01H 功能描述: 显示鼠标指针,通常在鼠标初始化后,用此功能显示其指针 入口参数: AX=01H 出口参数: 无 (3)、功能02H 功能描述: 隐藏鼠标指针,一般在程序结束时,调用此功能 入口参数: AX=02H 出口参数: 无 (4)、功能03H 功能描述: 读取鼠标位置及其按钮状态 入口参数: AX=03H 出口参数: BX=按键状态: 位0=1——按下左键 位1=1——按下右键 位2=1——按下中键 其它位——保留,内部使用 CX=水平位置 DX=垂直位置 (5)、功能04H 功能描述: 设置鼠标指针位置 入口参数: AX=04H,CX=水平位置,DX=垂直位置 出口参数: 无 (6)、功能05H 功能描述: 读取鼠标按键信息 入口参数: AX=05H,BX=指定的按键:0—左键,1—右键,2—中键 出口参数: AX=按键状态,参见功能3H中BX的说明 BX=按键次数 CX=水平位置(最后按键时) DX=垂直位置(最后按键时) (7)、功能06H 功能描述: 读取鼠标按钮释放信息 入口参数: AX=06H,BX=指定的按键:0—左键,1—右键,2—中键 出口参数: AX=按键状态,参见功能3H中BX的说明 BX=释放的次数 CX=水平位置(最后释放时) DX=垂直位置(最后释放时) (8)、功能07H 功能描述: 设置鼠标水平边界 入口参数: AX=07H CX=最小水平位置 DX=最大水平位置 出口参数: 无,鼠标有可能因新区域变小而自动移进新区域内 (9)、功能08H 功能描述: 设置鼠标垂直边界 入口参数: AX=08H CX=最小垂直位置 DX=最大垂直位置 出口参数: 无,鼠标有可能因新区域变小而自动移进新区域内 (10)、功能09H 功能描述: 设置图形鼠标形状 入口参数: AX=09H BX=指针的水平位置 CX=指针的垂直位置 ES:DX=16×16位光标的映象地址 参数说明: (BX,CX)是鼠标的指针在16×16点阵中的位置,(0,0)是左上角; ES:DX指向的存储单元内存放16×16点阵的位映象隐码,紧跟其后的是16×16点阵的光标掩码。 鼠标指针的显示方法: 位映象隐码“逻辑与”上屏幕显示区的内容,然后再用光标掩码内容“异或”前面运算的结果。 出口参数: 无 (11)、功能0AH 功能描述: 设置本文鼠标形状 入口参数: AX=0AH BX=光标类型: 0 — CX和DX的各位含义如下: 位7~0 鼠标指针符号 位10~8 字符前景色 位11 亮度 位14~12 字符背景色 位15 闪烁 1 — CX=光标的起始扫描线 DX=光标的结束扫描线 出口参数: 无 (12)、功能0BH 功能描述: 读取鼠标移动计数 入口参数: AX=0BH 出口参数: CX=水平移动距离:正数——向右移,负数——向左移 DX=垂直移动距离:正数——向下移,负数——向上移 (13)、功能0CH 功能描述: 为鼠标事件设置处理程序 入口参数: AX=0CH CX=中断掩码 位0=1 ——鼠标指针位置发送变化 位1=1 ——按下左按钮 位2=1 ——释放左按钮 位3=1 ——按下右按钮 位4=1 ——释放右按钮 位5=1 ——按下中间按钮 位6=1 ——释放中间按钮 位7~15=0 ——保留 ES:DX=中断处理程序的地址 在进入中断处理程序时,有关寄存器的值含义: AX=中断掩码 BX=按键状态 CX=鼠标指针的水平位置 DX=鼠标指针的垂直位置 SI=水平位置的变化量 DI=垂直位置的变化量 出口参数: 无 (14)、功能0DH 功能描述: 允许光笔仿真 入口参数: AX=0DH 出口参数: 无 (15)、功能0EH 功能描述: 关闭光笔仿真 入口参数: AX=0EH 出口参数: 无 (16)、功能0FH 功能描述: 设置鼠标计数与象素比 入口参数: AX=0FH CX=水平比例 DX=垂直比例 出口参数: 无 (17)、功能10H 功能描述: 设置鼠标指针隐藏区域 入口参数: AX=10H CX=左上角X坐标 DX=左上角Y坐标 SI=右下角X坐标 DI=右下角Y坐标 出口参数: 无 (18)、功能13H 功能描述: 设置倍速的阈值,其缺省值为64 入口参数: AX=13H DX=阀值 出口参数: 无 (19)、功能14H 功能描述: 替换鼠标事件中断 入口参数: AX=14H CX=中断掩码 ES:DX=中断处理程序的地址 出口参数: CX=旧的中断掩码 ES:DX=旧的中断处理程序地址 (20)、功能15H 功能描述: 读取鼠标驱动器状态的缓冲区大小 入口参数: AX=15H 出口参数: BX=存放鼠标驱动器状态所需缓冲区的大小 (21)、功能16H 功能描述: 存储鼠标驱动器状态 入口参数: AX=16H ES:DX=存储鼠标驱动器状态的地址 出口参数: 无 (22)、功能17H 功能描述: 重装鼠标驱动器状态 入口参数: AX=17H ES:DX=鼠标驱动器状态的地址 出口参数: 无 (23)、功能18H 功能描述: 为鼠标事件设置可选的处理程序 入口参数: AX=18H CX=替换中断掩码 ES:DX=替换中断处理程序的地址 CF=0 出口参数: 无 (24)、功能19H 功能描述: 读取替换处理程序的地址 入口参数: AX=19H CX=替换中断掩码 出口参数: 若AX=-1——不成功,否则,ES:DX=中断处理程序的地址 (25)、功能1AH 功能描述: 设置鼠标的灵敏度,其取值1~100 入口参数: AX=1AH BX=水平灵敏度(每8个象素鼠标需要移动的数量,一般为8) CX=垂直灵敏度(每8个象素鼠标需要移动的数量,一般为16) DX=倍速阀值 出口参数: 无 (26)、功能1BH 功能描述: 读取鼠标的灵敏度 入口参数: AX=1BH 出口参数: BX=水平灵敏度 CX=垂直灵敏度 DX=倍速阀值 (27)、功能1CH 功能描述: 设置鼠标中断速率 入口参数: AX=1CH BX=每秒钟中断的次数:0—关中断,1—30/S,2—50/S,3—100/S,4—200/S 出口参数: 无 (28)、功能1DH 功能描述: 为鼠标指针选择显示页 入口参数: AX=1DH BX=显示页 出口参数: 无 (29)、功能1EH 功能描述: 读取鼠标指针的显示页 入口参数: AX=1EH 出口参数: BX=显示页 (30)、功能1FH 功能描述: 禁止鼠标驱动程序 入口参数: AX=1FH 出口参数: 若AX=-1——不成功,否则,ES:BX=鼠标驱动程序的地址 (31)、功能20H 功能描述: 启动鼠标驱动程序 入口参数: AX=20H 出口参数: 无 (32)、功能21H 功能描述: 鼠标驱动程序复位 入口参数: AX=21H 出口参数: 若AX=-1——不成功,否则,BX=2 (33)、功能22H 功能描述: 设置鼠标驱动程序信息语言 入口参数: AX=22H BX=语言代码:0—英语,1—法语,2—荷兰语,3—德语,4—瑞典语,5—芬兰语,6—西班牙语,7—葡萄牙语,8— 意大利语 出口参数: 无 (34)、功能23H 功能描述: 读取语种 入口参数: AX=23H 出口参数: BX=语言代码 (35)、功能24H 功能描述: 读取鼠标信息 入口参数: AX=24H 出口参数: BH=主版本号,BL=辅版本号 CL=中断请求号 CH=鼠标类型:1-Bus Mouse,2-Serial Mouse,3-InPort Mouse,4-PS/2 Mouse,5-HP Mouse (36)、功能25H 功能描述: 读取鼠标驱动程序信息 入口参数: AX=25H 出口参数: AX=鼠标驱动程序信息: 位15 ——0: 驱动程序是.SYS文件,否则,为.COM文件 位14——0: 不完全鼠标显示驱动程序,否则,为完全的 位13-12——00: 软件文本光标 01: 硬件文本光标 1X: 图形光标 (37)、功能26H 功能描述: 读取最大有效坐标 入口参数: AX=26H 出口参数: BX=鼠标驱动程序状态 CX=最大水平坐标 DX=最大垂直坐标 |
|
| 第2楼 zhgwbzhd | 发表于 2006-11-18 03:43 |
| 高级用户 发帖 187 积分 506 | |
|
恩,这方面的知识刚刚看过,在求伯君的那本书中有很详细的解释。你的解释也很好。
|
|
| 第3楼 zyw052553 | 发表于 2006-12-19 13:21 |
| 新手上路 发帖 9 积分 18 | |
|
太详细了,能给出一些应用的例子就更好了
|
|
| 第4楼 defrag | 发表于 2007-02-22 08:49 |
| 中级用户 发帖 570 积分 456 | |
|
DO
CALL GetMouseStatus(BTN,Y,X) IF BTN=1 AND Y<=3 AND X<=2 AND Y>=2 AND X>=2 THEN btnOK_Click K$=INKEY$ IF K$<>"" THEN Screen_KeyPress LOOP 用汇编写一下 |
|
| 第5楼 defrag | 发表于 2007-02-22 09:34 |
| 中级用户 发帖 570 积分 456 | |
|
DS:DX DS
XDS:DI DS IES:DX ES XES:DI ES IADD CS:[BX+SI],AL ADD CS:[BX+SI],AL 发贴时最好用参数: X 禁用 URL 识别 X 禁用 Smilies X 禁用 Discuz! 代码 口 使用个人签名 口 接收新回复邮件通知 |
|
| 第6楼 tobb133 | 发表于 2008-10-12 19:50 |
| 新手上路 发帖 9 积分 18 | |
|
看过了,很有用
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |