中断服务程序Word文档格式.docx
- 文档编号:14908143
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:21
- 大小:89.70KB
中断服务程序Word文档格式.docx
《中断服务程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《中断服务程序Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
当按鼠标左键时,小车左边显示出一个L;
当按鼠标右键时,小车右边显示一个R;
当鼠标移动时,小车也跟着移动。
通过一个循环体使得鼠标状态可以一直得到检测,从而实现所需的功能。
在进行课程设计的过程中,通过分析问题、提出解决方案、通过编程等手段实现解决方案、不断调试最终达到设计要求的全过程,帮助了我系统地掌握微机原理的接口技术的相关知识,达到了将知识融会贯通的目的。
关键词:
中断服务程序,鼠标状态,小车
1设计任务与分析
1.1设计任务
设计一个程序,可以捕获鼠标左键,右键以及移动,并利用小车图形做出相应的表示。
1.2任务分析
计算机在执行正常程序的过程中,出现异常事件(或事先安排好的事件),迫使CPU暂时中止现行程序的执行,转去执行事件处理程序。
当处理完毕后,CPU再返回到被暂时中止的程序继续执行,这个过程称为中断。
固化在ROM中的基本输入输出系统BIOS包含了主要I/O设备的处理程序和许多常用例行程序,他们一般以中断处理程序的形式存在。
如显示输出的10H号中断处理程序,答应输出的17H号中断处理程序,键盘输入的16H号中断处理程序。
BIOS直接建立在硬件的基础上。
本设计要求设计的中断程序可以捕获鼠标左键右键及其移动,因此程序肯定涉及到与鼠标功能有关的设计技巧,另外,还要通过小车图形做出相应的表示,所以还要有屏幕设置和坐标计算等过程。
2总体方案设计
2.1设计思路
此程序要求检测鼠标的状态,是否按下或是否移动,程序要求能循环检测鼠标的状态。
我们设计的思路是采用一个循环体,负责处理鼠标中断。
首先读取鼠标状态,判断鼠标是否被按下,若没有被按下则转到检测鼠标是否移动,若鼠标被按下,则继续判断是左键还是右键按下,确定鼠标的状态后,再设置小车的形状并显示出来。
在不同的状态下,小车的形状不一样。
汽车图形由10个文本字符组成,按下鼠标左键或右键或移动鼠标时,汽车的形状不一样。
当按下左键时,小车是由字母L(ASCII码为4CH),四个实心方块(ASCII码为DBH),两个字母O(ASCII码为4FH)和3个空格符(ASCII码为32)组成;
当按下右键时,小车是由四个实心方块,字母R(ASCII码为52H),两个车轮和3个空格符组成;
当没有按键时,小车是由五个实心方块,两个车轮和3个空格符组成。
以上十个文本字符都是以正常属性显示。
2.2鼠标操作简介
2.2.1鼠标简介
鼠标系统实际上由两个主要元素组成:
鼠标机制和称作鼠标驱动程序的内存驻留程序。
鼠标驱动程序提供与鼠标通信所需的全部低级支持。
此外,它自动维持鼠标光标位置和发现是否按下了某个键。
一旦装入驱动程序,鼠标就可以被随后执行的任意程序使用。
2.2.2鼠标驱动程序的主要功能
可以通过PC中断33H访问鼠标和鼠标驱动程序的各种功能。
所选择的特定函数依赖于中断时AX寄存器的值。
三个其它寄存器(BX、CX和DX)用于把各种参数传送给鼠标例程。
同样,鼠标函数使用这四个寄存器把鼠标的位置和按钮的状态返回给调用函数。
鼠标中断的常用功能如表1所示
表1鼠标中断常用功能表
功能
输入值
输出值
功能调用
初始化
无
AXBX
AX=0000
显示光标
AX=0001
隐藏光标
AX=0002
读取状态
BX、CX、DX
AX=0003
设置位置
CX、DX
AX=0004
设置光标
AX=0009
X范围
CXDX
AX=0007
Y范围
AX=0008
光标范围
CXDXSIDI
AX=0010
中断程序
CXES:
DX
AX=000C
2.3本设计调用的中断服务程序
1.鼠标功能中断INT33H
(1)功能00H
功能描述:
初始化鼠标,该操作只需要执行一次
入口参数:
AX=00H
出口参数:
AX=0000H——不支持鼠标功能,FFFFH——支持鼠标功能
BX=鼠标按钮个数(在支持鼠标功能时)
(2)功能03H
读取鼠标位置及其按钮状态
AX=03H
BX=按键状态:
位0=1——按下左键
位1=1——按下右键
位2=1——按下中键
其它位——保留,内部使用
CX=水平位置
DX=垂直位置
2.屏幕功能调用INT10H
(1)功能02H
用文本坐标下设置光标位置
AH=02H
无
BH=显示页码
DH=行(Y坐标)
DL=列(X坐标)
(2)功能06H和07H
初始化屏幕或滚屏
AH=06H——向上滚屏,07H——向下滚屏
AL=滚动行数(0——清窗口)
BH=空白区域的缺省属性
(CH、CL)=窗口的左上角位置(Y坐标,X坐标)
(DH、DL)=窗口的右下角位置(Y坐标,X坐标)
(3)功能01H
功能:
设置光标形状
入口参数:
AH=01H
无
CH低四位=光标的起始行
CL低四位=光标的终止行(本设计中设置为禁止光标显示)
3.DOS系统功能调用INT21H
功能02H
向标准输出设备(如:
屏幕)输出一个字符。
该输出还可被重定向,如果这样做,则将无法判断磁盘是否满
AH=02H
DL=待输出字符的ASCII码
3程序设计流程图及程序设计
3.1程序流程图
经过上述分析,可以画出程序流程图如图1所示:
是
否
图1程序流程图
3.2主程序的设计与分析
在DATA段定义9个变量:
MDYDB00H;
目的地列数
MDXDB00H;
目的地行数
MSDD00H;
鼠标按键状态
MSXDD00H;
光标位置横坐标
MSYDD00H;
光标位置纵坐标
CARDB00H;
当前要显示字符的ASCII码
CARLDB00H;
小车最左边一个字符的ASCII码
CARRDB00H;
小车最右边一个字符的ASCII码
对鼠标进行初始化并读取鼠标状态:
MOVAX,DATA
MOVDX,AX
MOVAX,00H;
初始化鼠标
INT33H
RDMS:
MOVAX,03H;
读取鼠标状态
判断鼠标状态:
CMPBX,WORDPTRMS;
读取鼠标按键变化
JZMSMV
MOVWORDPTRMS,BX;
保存当前鼠标按键状态
ANDBX,0111
CMPBX,0;
判断鼠标是否有状态变化
JZRDMS
ANDBX,0110B
CMPBX,0;
判断按下左键还是右键
JZMSL
MSR:
;
右键响应
MOVCX,WORDPTRMSX
MOVDX,WORDPTRMSY
MOVCARL,0DBH;
设置小车形状为右键按下状态
MOVCARR,52H;
52H是字母R的ASCII码
CALLPRCAR;
显示小车
JMPRDMS;
重新检测鼠标状态
MSL:
;
左键响应
MOVCX,WORDPTRMSX
MOVCARL,4CH;
设置小车形状左键按下状态,4CH是字母L的ASCII码
MOVCARR,0DBH
CALLPRCAR;
JMPRDMS;
MSMV:
;
鼠标移动
CMPCX,WORDPTRMSX;
判断鼠标是否横行移动了
JNZMSM
CMPDX,WORDPTRMSY;
判断鼠标是否纵向移动了
JNZMSM
JMPRDMS;
MSM:
MOVWORDPTRMSX,CX
MOVWORDPTRMSY,DX
MOVCARL,0DBH;
设置小车形状为无按键按下状态
MOVCARR,0DBH
JMPRDMS;
重新检测鼠标
主程序实现对鼠标的检测,通过判断鼠标的状态调用小车显示子程序,实现在不同的状态下小车形状不一样且小车随鼠标移动而移动。
3.3小车显示子程序的设计与分析
由上面分析知,想要显示小车,要在屏幕上输出组成汽车的ASCII码,显
示小车的程序如下:
PRCARPROCNEAR
RORCX,1;
计算小车坐标
RORCX,1
RORCX,1
MOVAX,CX
MOVCL,3
RORDX,CL
MOVCX,AX
SUBCX,2
MOVMDY,CL
MOVMDX,DL
CALLCLEAN;
清除屏幕
MOVAL,CARL;
显示小车图形
MOVCAR,AL
CALLVISION;
显示小车的第一个字符
INCMDX
MOVCAR,4FH
CALLVISION;
显示小车的第二个字符,字母O
INCMDY
DECMDX
MOVCAR,0DBH
CALLVISION;
显示小车的第三个字符,方块
INCMDX
MOVCAR,32
CALLVISION;
显示第四个字符,一个空格
CALLVISION;
显示第五个字符,方块
显示第六个字符,空格
DECMDX
CALLVISION;
显示第七个字符,方块
INCMDX
CALLVISION;
显示第八个字符,空格
MOVAL,CARR
CALLVISION;
显示第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 服务 程序