鼠標(biāo)的操作方式
用匯編語(yǔ)言對(duì)鼠標(biāo)的各項(xiàng)操作進(jìn)行描述的,也可以用C、C++等其他語(yǔ)言來描述。
1. 初始化鼠標(biāo)驅(qū)動(dòng)程序:
例如:中斷號(hào)INT33h 功能16h 子功能17h
中斷號(hào):用于請(qǐng)求服務(wù)
功能號(hào):用于確定用戶期望獲取哪種服務(wù)
子功能號(hào):進(jìn)一步指定所希望的服務(wù)
調(diào)用寄存器:設(shè)置被調(diào)用的服務(wù)功能所要求的參數(shù)
返回寄存器:返回服務(wù)功能執(zhí)行結(jié)果
調(diào)用的進(jìn)程:設(shè)置參數(shù) 中斷號(hào)INT33h 功能15h BX寄存器 ES:DX 功能16h 功能17h ES:DX
2. 顯示或隱藏鼠標(biāo)光標(biāo)
中斷33h的功能1和2分別置鼠標(biāo)光標(biāo)為“打開”和“關(guān)閉”。而鼠標(biāo)驅(qū)動(dòng)程序一直跟蹤鼠標(biāo)的移動(dòng),當(dāng)鼠標(biāo)移動(dòng)時(shí)就更新它在屏幕的位置。
鼠標(biāo)的程序從開始通常在打開光標(biāo),一直到程序結(jié)束。
鼠標(biāo)驅(qū)動(dòng)程序采用光標(biāo)標(biāo)記,用做顯示和隱藏光標(biāo)的分層方法。初次打開光標(biāo)標(biāo)記設(shè)為-1;功能1將標(biāo)記加至0,使光標(biāo)出現(xiàn)。功能2將標(biāo)記減1,當(dāng)標(biāo)記為負(fù)值時(shí)就隱藏光標(biāo)。
3. 設(shè)置文本鼠標(biāo)光標(biāo)的形狀
在以視頻文本模式工作時(shí),鼠標(biāo)驅(qū)動(dòng)程序生成兩類光標(biāo):
(1)硬件光標(biāo),由視頻硬件所產(chǎn)生的常規(guī)屏幕光標(biāo),由水平掃描線組成。
(2)軟件或?qū)傩怨鈽?biāo),這種情況下,鼠標(biāo)驅(qū)動(dòng)程序在光標(biāo)出現(xiàn)的屏幕位置寫數(shù)據(jù)。驅(qū)動(dòng)程序在改變此位置顯示的字符或改變字符屬性,使它閃爍、背景色等。
(3)中斷33h的功能Ah設(shè)置文本光標(biāo)的類型:AX存放功能號(hào);BX存放應(yīng)光標(biāo)或軟件光標(biāo)選擇;CX存放起始掃描線;DX存放終止掃描線。
4. 設(shè)置圖形鼠標(biāo)光標(biāo)的形狀
中斷33h的功能9h設(shè)置圖形模式下的鼠標(biāo)光標(biāo)的形狀,并定義光標(biāo)里的一個(gè)點(diǎn)為熱點(diǎn)。光標(biāo)由16 x 16位的視頻掩碼和16 x 16位的光標(biāo)掩碼組成。
5. 取得或設(shè)置鼠標(biāo)光標(biāo)的位置
中斷33h的功能4h用于設(shè)置鼠標(biāo)光標(biāo)位置,功能3h則用于報(bào)告光標(biāo)的位置。AX存放功能號(hào),CX被賦予X坐標(biāo),DX被賦予Y坐標(biāo)。P200例7-4
6. 將鼠標(biāo)光標(biāo)限定在屏幕的一部分
將鼠標(biāo)光標(biāo)可以限制在屏幕的一個(gè)矩形區(qū)域內(nèi),由中斷33h的功能7h設(shè)置鼠標(biāo)光標(biāo)移動(dòng)的水平范圍,8h設(shè)置垂直范圍。P201例7-5
7. 定義不顯示鼠標(biāo)光標(biāo)的屏幕區(qū)域
中斷33h的功能10h定義屏幕的一個(gè)區(qū)域,當(dāng)鼠標(biāo)進(jìn)入該區(qū)域時(shí)會(huì)自動(dòng)關(guān)掉。進(jìn)入時(shí),CX存放被保護(hù)域的左列號(hào),SI存放右列號(hào);DX存放首行號(hào),DI存放末行號(hào)。
例7-6 設(shè)置一個(gè)范圍是從第10~50列和5~30行之間的矩形域。
MOV AX , 10h ;功能號(hào)
MOV CX , 10 ;左列
MOV S I , 50 ;右列
MOV DX , 5 ;首行
MOV D I , 30 ;末行
INT 33h ;調(diào)用中斷設(shè)置域
8. 跟蹤鼠標(biāo)的移動(dòng)
中斷33h 功能Bh報(bào)告自從上次調(diào)用該功能后,鼠標(biāo)移動(dòng)的實(shí)際距離(測(cè)量單位為米基)。該功能在CX中返回相對(duì)的水平位移;DX中返回相對(duì)的垂直位移。例7-7 查詢鼠標(biāo)光標(biāo)的相對(duì)位移。
MOV AX , 0Bh
INT 33h
MOV HORZ_MOTION , CX
MOV VERT_MOTION , DX
評(píng)論