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

評論