鼠标中断实例6-7
来源:互联网 发布:万网域名邮箱解析 编辑:程序博客网 时间:2024/05/16 06:05
.model small, c
.486
.stack 128
.data
oldaddr dd ?
msg label byte
xmsg db 'x=' ;显示方式:X=** Y=**
xasc dw ?
db ' '
ymsg db 'y='
yasc dw ?
count equ $ - msg
.code
clsscr proc ;清除整个屏幕
mov ax, 0600h
mov bh, 30h
mov cx, 0
mov dx, 184fh
int 10h
ret
clsscr endp
;把两位十进制数Data转换成字符串放入以首地址Desc开始的缓冲区之中
btoasc proc uses ax cx di data:word, desc:ptr byte
mov ax, data
mov di, desc
mov word ptr[di], 2020h ;赋两个空格
mov cl, 10
div cl
or al, 30h
mov [di], al
inc di
or ah, 30h
mov [di], ah
ret
btoasc endp
;把当前鼠标位置(CX,DX)显示在屏幕右上角,该子程序在本程序被设置为鼠标移动事
;件的中断处理程序,所以,只要鼠标一移动,该子程序马上就被执行。
disppos proc far
shr cx, 3
shr dx, 3
invoke btoasc, cx, addr xasc
invoke btoasc, dx, addr yasc
mov ah, 02h
mov bh, 0
mov dx, 046h
int 10h ;设置字符串的显示位置
mov ah, 40h
mov bx, 01h
mov cx, count
lea dx, msg
int 21h ;显示鼠标位置的字符串
ret
disppos endp
.startup
call clsscr
mov ax, 00
int 33h ;鼠标复位及取状态
.if ax != 00
mov ax, 01h
int 33h ;显示鼠标指针
mov ax, cs
mov es, ax
lea dx, disppos
mov ax, 14h
mov cx, 1 ;把子程序DispPos设置成鼠标
int 33h ;移动事件的中断服务程序
mov word ptr oldaddr, dx
mov word ptr oldaddr + 2, es ;保存原移动事件处理程序的入口地址
.repeat
mov ax, 03h
int 33h
.until bx==1 ;按下鼠标左键
mov ax, 02h
int 33h ;隐藏鼠标指针
.endif
mov dx, word ptr oldaddr
mov es, word ptr oldaddr + 2
mov cx, 1
mov ax, 0ch
int 33h ;恢复原鼠标移动的中断服务程序
call clsscr
.exit 0
end
- 鼠标中断实例6-7
- 【中断】中断编程实例
- 鼠标功能中断INT_33H
- 鼠标中断 int33h 使用说明
- 软中断开发实例6-13
- [Rx86OS-VII] 实现鼠标中断
- 串口中断应用实例
- 中断服务程序实例
- 中断实例-tasklet
- linux中断实例
- 按键中断驱动实例
- EXTI中断程序实例
- MSP430G2553 定时器中断实例
- 线程中断 实例 interrupt
- STM32F1外部中断实例
- 鼠标事件实例
- VB 鼠标钩子实例
- openCV鼠标事件实例
- Tcpdump的小经验
- 17条笑死人的短信
- 网络测试及故障诊断方法及工具 v0.1b
- Javascript url 解码算法(utf-8) by shawl.qiu
- BIOS和DOS中断大全
- 鼠标中断实例6-7
- 试验网站#1搜索引擎优化收录情况记录(断续运行)2007-9-25
- 试验网站#3搜索引擎优化收录情况记录2007-9-25
- 应届大学生,我想对你说
- 测试工程师与开发人员沟通的五要与四不要
- div+css使用!important标记实现Firefox和IE6处理padding尺寸上的兼容
- 黄小宁罪大恶极!!!!!!!!!!黄小宁罪大恶极!!!!!!!!!!
- jQuery的最新代码
- crond 的使用