鼠标中断实例6-7

原创 2007年09月25日 04:25:00

 .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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

开发人员学Linux(6):CentOS7编译安装MySQL5.17.8多实例及主从复制

上一篇讲述了如何在CentOS7下编译安装Nginx-1.12.0并如何配置反向代理,本篇将讲述如何编译安装MySQL5.7.18并配置多实例。本篇主要讲述了如何从MySQL官方网站下载源代码通过编译...

图解Detour安装及简单使用实例(Win7+VC6)

相关下载: http://pan.baidu.com/s/1o7OEMc6 detour6.rar是本文工程 DetoursExpress30是微软下载的detour安装文件 de...

百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html

百度地图 var iscreatr=false; function initialize() { //------------------------------------------...
  • sd0902
  • sd0902
  • 2013-01-07 20:13
  • 6926

Quartz入门实例7-处理被中断的Job

让Job实现  InterruptableJob就可以

VC6捕获鼠标事件(移动、单击等)的一些总结(MFC消息、DriectInput、钩子)

鼠标事件,无非是WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE(就说这基本的三个命令吧),开始以为很容易获取这些事件,但在实现过程中,并不是想象中的那么简单: ...

VC6 鼠标钩子 最简单例子

. Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)