Программа, реагирующая на нажатие левой и правой кнопок мыши

Написать программу, реагирующую на нажатие левой и правой кнопок мыши, а именно: изменять диапазон движения курсора по горизонтали при нажатии левой клавиши мыши, а по вертикали при нажатии правой клавиши.

code: #assembler
mov ax,0;Функция 00h предназначена для выяснения, загружен ли в память 
	int 33h;драйвер мыши. Если эта функция возвращает AX = 0, то драйвер 
	test ax,ax;отсутствует. Если драйвер загружен, то AX = 0FFFFh , а в 
	jz exit;регистре BX - число кнопок мыши
	mov ax,0Ch;Функция 0Ch позволяет программно задать реакцию на события 
	push cs;связанные с мышью: ее перемещения, нажатие и отпускание кнопок. 
	pop es;События, на которые необходимо реагировать, должны быть отмечены 
	mov cx,10100b;единицами в соответствующих разрядах регистра CX. CX=1 - 
;вызвать подпрограмму, если левая клавиша отпущена. После выполнения этой 
	mov dx,offset mouse;функции драйвер мыши на каждое из заданных событий 
        int 33h;будет реагировать вызовом обработчика событий - подпрограммы, 
;FAR-указатель на адрес которой был указан в регистрах ES:DX
;Номер 	Назначение маски вызова
;бита
;0	Вызвать, если мышь перемещается
;1	Вызвать, если левая клавиша нажата
;2	Вызвать, если левая клавиша отпущена
;3	Вызвать, если правая клавиша нажата
;4	Вызвать, если правая клавиша отпущена
;5	Вызвать, если средняя клавиша нажата
;6	Вызвать, если средняя клавиша отпущена
;--------------------------------------------------
	mov ax,1;Функция 01h включает изображение курсора мыши на экране.
        int 33h
;---------------------------------------------------------------------
	mov ah,0
	int 16h;жду пока не нажмут на клавиатуру
        mov ax,14h
        mov cx,0;удалить обработчик событий мыши
        int 33h
exit:	mov ah,4Ch;выхожу из программы
	int 21h
;-------------------------------------------------
;процедура обработки нажатия ЛКМ
MOUSE PROC FAR
	mov ax, 07h
	mov cx, 10h
	mov dx, 80h
	int 33h
;устанавливаем обработчик для нажатия ПКМ
	mov ax, 0Ch
	mov bx, seg MOUSE1
	mov es, bx
	lea dx, MOUSE1
	mov cx, 0000000000001000B
	int 33h
ret
ENDP

;процедура обработки нажатия ПКМ
MOUSE1 PROC FAR
	mov ax, 08h
	mov cx, 50h
	mov dx, 8Dh
	int 33h
;устанавливаем обработчик для нажатия ЛКМ
	mov ax, 0Ch
	mov bx, seg MOUSE
	mov es, bx
	lea dx, MOUSE
	mov cx, 0000000000000010B
	int 33h
ret
ENDP

main ends
end start
Поделиться:

Похожие статьи: