鼠标中断实例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

[Rx86OS-VII] 实现鼠标中断

平台 处理器:Intel Celeron(R) Dual-Core CPU 操作系统:Windows7 专业版 x86 阅读书籍:《30天自制操作系统》—川合秀实[2015.03.19 –03.21]...
  • misskissC
  • misskissC
  • 2015年04月17日 16:48
  • 1702

USB驱动——鼠标驱动程序(中断传输)

本文以 usbmouse.c 为例,简单分析usb鼠标驱动程序。 static int __init usb_mouse_init(void) { int retval = usb_register...
  • lizuobin2
  • lizuobin2
  • 2016年07月20日 17:46
  • 1100

USB驱动程序(三)——鼠标驱动程序(中断传输)

本文以 usbmouse.c 为例,简单分析usb鼠标驱动程序。 [cpp] view plain copy  print? static int _...
  • yangguoyu8023
  • yangguoyu8023
  • 2017年05月16日 10:27
  • 152

int 15h中断获取内存信息

在启动分页机制之前,我们要设置页目录和页表信息,理论上,我们利用一页内存(4k)来存放页目录,用1k页(4M)来存放页表,可以表示4G的内存。但是我们的内存不一定就是固定4G的,可能是1G,512MB...
  • trochiluses
  • trochiluses
  • 2014年02月27日 22:32
  • 1955

51单片机外部中断编程实例2

作者:江苏科技大学 机械工程学院 赵长金   1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;2、中断源的编号: 串行口中断为4、定时中...
  • zcj331
  • zcj331
  • 2014年04月11日 13:26
  • 2559

STM32可屏蔽中断优先级详解

CM3 内核支持 256 个中断,其中包含了16个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84...
  • u011415222
  • u011415222
  • 2015年09月30日 15:54
  • 1249

uCOS_II系统实操_外部中断

uCOS_II 的外部中断配置
  • qq_36955622
  • qq_36955622
  • 2016年12月28日 18:11
  • 147

uc/os-iii学习笔记-中断管理

UCOSIII中断中断
  • JosephGodVim
  • JosephGodVim
  • 2016年07月19日 15:21
  • 694

flash 的鼠标事件详解

Flash AS3鼠标事件使用详解  鼠标事件(MouseEvent)和鼠标位置(AS3鼠标坐标总结)是RIA中最重要的人机交互途径。最近在做一个动态产品展示的系统ProdutShow的时候才发现自己...
  • jinpeng0
  • jinpeng0
  • 2013年08月21日 09:41
  • 765

js判断鼠标位置是否在某个div中

找到该div左上角和右下角坐标,判断鼠标的坐标是否在这一区域就可以了。 var eventPositiont=function(event){  var div = document.g...
  • karali
  • karali
  • 2015年10月08日 16:55
  • 537
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:鼠标中断实例6-7
举报原因:
原因补充:

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