Программа, реагирующая на нажатие левой и правой кнопок мыши
Категория: Assembler
2011-09-16 23:44:14
Написать программу, реагирующую на нажатие левой и правой кнопок мыши, а именно: изменять диапазон движения курсора по горизонтали при нажатии левой клавиши мыши, а по вертикали при нажатии правой клавиши.
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
Поделиться: