8.3.5 鼠标的中断功能
鼠标是现在计算机 系统中的一个常用输入设备,它为使用计算机带来了很大的方便,鼠标指针的各种表现形式还反映了系统(或应用程序)当前处于什么样的工作状态。许多计算机使 用者为体现其个性化还选择各自喜欢的鼠标图形,所以,了解和掌握计算机系统对鼠标所提供的功能对理解鼠标的各种操作也是有一定的帮助。
1、鼠标中断的常用功能
BIOS系统提供了中断33H来实现鼠标中断功能,其常用的功能如下:
|
00H—初始化鼠标 01H—显示鼠标指针 02H—隐藏鼠标指针 03H—读取鼠标位置及其按钮状态 04H—设置鼠标指针位置 05H—读取鼠标按键信息 06H—读取鼠标按钮释放信息 07H—设置鼠标水平边界 08H—设置鼠标垂直边界 09H—设置图形鼠标形状 |
0AH—设置本文鼠标形状 0BH—读取鼠标移动计数 0CH—为鼠标事件设置处理程序 0FH—设置鼠标计数与象素比 10H—设置鼠标指针隐藏区域 14H—替换鼠标事件中断 18H—为鼠标事件设置替换处理程序 19H—读取替换处理程序的地址 1DH—为鼠标指针选择显示页 1EH—读取鼠标指针的显示页 |
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之鼠标功能中断。
2、鼠标指针的设置
鼠标指针主要有二种表现形式:文本鼠标和图形鼠标。文本鼠标又分为软指针和硬指针。软指针是用各种字符来作鼠标指针,而硬指针是用方块光标的大小来表示鼠标指针,其效果类似于INT 10H之功能01H——设置光标类型。
图形鼠标的表现形式与文本鼠标相比就显得更加丰富多彩,可用各种不同的指针形状来反映系统当前所处的工作状态和所能进行的操作。在Windows操作系统及其应用程序中使用了很多指针形状的变化来表达各种有用信息。
鼠标的文本软指针与图形指针的形成过程相一致,它需要两部分信息:象素掩码和光标掩码。其指针形成过程如下:
1)、用象素掩码与当前鼠标所处位置的象素信息进行“逻辑与”运算;
2)、光标掩码与步骤1的运算结果再进行“异或”操作,该操作所得到的16×16位的0/1信息就构成了当前鼠标指针的形状。
假设象素掩码为全0。全0的象素掩码与屏幕上的显示信息“逻辑与”后,所得结果仍为全0,全0的运算结果再和“光标掩码”进行“异或”操作,这时,所得结果显然与“光标掩码”完全一样,所以,看到的鼠标指针形状就是光标掩码所表达的指针形状。
综合上述,可得结论:若象素掩码为全0,那么,鼠标的形状就是16×16位光标掩码所表示的指针形状,鼠标所到之处就看不到该区域内(16×16点阵范围)的其它显示信息。
在Windows操作系统及其应用程序中,在16×16点阵范围内,除了看不见被各种形状指针覆盖的部分之外,还能看见其它小区域,这是因为鼠标的“象素掩码”取其“光标掩码”的反相点阵所致。感兴趣的读者可验证或证明之。
(1)、硬指针的设置
设置鼠标硬指针的中断功能使用方式:
|
MOV |
BX, 1 |
;硬指针 |
MOV |
CX, 01H |
;鼠标硬指针的起始扫描线 |
|
MOV |
DX, 0FH |
;鼠标硬指针的结束扫描线 |
|
MOV |
AX, 0AH |
;设置文本鼠标指针 |
|
INT |
33H |
(2)、软指针的设置
设置鼠标软指针的中断功能使用方式:
|
MOV |
BX, 0 |
;软指针 |
MOV |
DL, 'A' |
;用字符'A'作为鼠标指针符号 |
|
MOV |
DH, 07FH |
;置鼠标的颜色 |
|
MOV |
CX, 0 |
;置象素位掩码 |
|
MOV |
AX, 0AH |
||
INT |
33H |
;设置文本鼠标指针 |
(3)、图形指针的设置
设置鼠标软指针的中断功能使用方式:
|
…… |
||
PMask |
DW 16 dup(?) |
;象素位掩码,PMask可以是~CMask |
|
CMask |
DW 16 dup(?) |
;光标掩码,二者紧相邻 |
|
…… |
|||
MOV |
AX, DS |
||
MOV |
ES, AX |
||
LEA |
DX, PMask |
;ES:DX=象素位掩码的起始地址 |
|
MOV |
BX, 0 |
||
MOV |
CX, 0 |
;在鼠标指针范围内,(0,0)点为指示点 |
|
MOV |
AX, 09H |
||
INT |
33H |
;设置图形鼠标指针 |
3、鼠标功能的应用举例
例8.11 在屏幕的右上角动态显示文本鼠标的位置,即:鼠标的任何移动都将马上显示其所处位置,按鼠标左键结束程序的运行。
例8.12 编写可随时修改文本鼠标指针符号的程序,即要求:在程序运行过程中,随时在键盘上按什么字符,即以该字符为鼠标指针符号。
读者可把例8.11和8.12结合在一起,使之:一方面,可动态显示鼠标的位置,另一方面,也可随时修改文本鼠标的指针符号。
改变图形鼠标指针是许多计算机使用者体现其个性的方法之一,读者可参考例8.12和前面的“图形指针的设置”部分的叙述,编写一个显示自己设计的鼠标指针的程序。在学习了有关文件操作知识之后,还可利用现有的鼠标指针文件来显示鼠标指针。
8.3.6 目录和文件的中断功能
中断21H提供了许多有关目录和文件操作的功能,其中常用的功能如下:
1、操作目录的常用功能
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之目录控制功能。
2、用文件句柄操作文件的常用功能
|
39H——创建目录 |
3BH——设置当前目录 |
3AH——删除目录 |
47H——读取当前目录 |
|
3CH——创建文件 |
4EH——查找到第一个文件 |
3DH——打开文件 |
4FH——查找下一个文件 |
|
3EH——关闭文件 |
56H——文件换名 |
|
3FH——读文件或设备 |
57H——读取/设置文件的日期和时间 |
|
40H——写文件或设备 |
5AH——创建临时文件 |
|
41H——删除文件 |
5BH——创建新文件 |
|
42H——设置文件指针 |
67H——设置文件句柄数(最多文件数) |
|
43H——读取/设置文件属性 |
6CH——扩展的打开文件功能 |
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之文件操作功能。
3、用FCB操作文件的常用功能
|
0FH——打开文件 |
21H——随机读 |
10H——关闭文件 |
22H——随机写 |
|
13H——删除文件 |
23H——读取文件的大小 |
|
14H——顺序读 |
24H——设置相对记录数 |
|
15H——顺序写 |
27H——随机读块 |
|
16H——创建文件 |
28H——随机写块 |
|
17H——文件换名 |
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之文件操作功能(FCB)和记录操作功能(FCB)。
4、磁盘绝对读写中断
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之其它DOS中断。
5、系统标准设备的句柄
6、目录、文件功能的应用举例
例8.13 编写一个创建子目录的程序,具体要求如下:
1)、用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;
2)、若目录创建成功,显示成功信息,否则,显示创建失败信息。
例8.14 编写一个类似TYPE命令的程序,其要求如下:
1)、用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;
2)、若输入的文件存在,则显示其内容,否则,显示文件不存在的信息。