Новичок
Джуниор
Регистрация: 17.11.2013
Сообщений: 2
|
Требуется помощь с событиями
Исходник полностью:
PHP код:
code segment
assume cs:code, ds:code
org 100h
start:
jmp begin
y db 0ch ;координата курсора по Y
x db 28h ;координата курсора по X
driver db 'Driver version:$'
prerivanie db 0dh,0ah,'IRQ:$'
MouseType db 0dh,0ah,'MouseType:$'
USBType db 'USBType$'
SerialType db 'SerialType$'
PS2Type db 'PS2Type$'
LeftMouseKey db 0dh,'LeftMouseKey$'
RightMouseKey db 0dh,'RightMouseKey$'
begin:
;mov ax,12h ;установка видеорежима 640х480, 16 цветов
;int 10h
; инициализация мыши
mov ax, 0
int 33h
; спрятать курсор мыши
mov ax, 2
int 33h
; вывод версии драйвера мыши
; вывод строки driver
mov ah, 9
mov dx, offset driver
int 21h
mov ax,bx ; Заносим в AX старш и мл часть версии драйвера
mov cl,16-4 ; Начинаем перевод числа AX в строку
xchg dx,ax
Repeat1:
mov ax,dx ; Восстанавливаем число в AX
shr ax,cl
and al,0Fh
add al,'0'
cmp al,'9'
jbe Digit1
add al,'A'-('9'+1)
Digit1: int 29h
sub cl,4
jnc Repeat1 ; Если знаковый CL >= 0, то повторяем
; вывод номера прерывания
; вывод строки prerivanie
mov ah, 9
mov dx, offset prerivanie
int 21h
xor ax,ax ; очищаем верхнюю часть от мусора
mov al,cl ; Заносим в AX старш и мл часть версии драйвера
mov cl,16-4 ; Начинаем перевод числа AX в строку
xchg dx,ax
Repeat2:
mov ax,dx ; Восстанавливаем число в AX
shr ax,cl
and al,0Fh
add al,'0'
cmp al,'9'
jbe Digit2
add al,'A'-('9'+1)
Digit2: int 29h
sub cl,4
jnc Repeat2 ; Если знаковый CL >= 0, то повторяем
; вывод типа мыши
mov ah, 9
mov dx, offset MouseType
int 21h
cmp ch,0
je case1
cmp ch,2
je case2
cmp ch,4
je case3
case1:
mov dx, offset USBType
jmp endcase
case2:
mov dx, offset SerialType
jmp endcase
case3:
mov dx, offset PS2Type
jmp endcase
endcase:
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;ДВИЖЕНИЕ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
vivod:
; устанавливаем курсор для вывода символа
mov ah, 2
mov bh, 0
mov dh, y
mov dl, x
int 10h
nazatie:
; ждем нажатия клавиши
mov ah, 0
int 16h
; отсекаем функциональные клавиши
cmp al, 0
je nazatie
; проверяем на ESC
cmp al, 1bh
je MoveExit
; проверяем на ВВЕРХ (w)
cmp al, 77h ;77h
je b_up
jne s_but
b_up:
cmp dh, 0 ;проверяем верхнюю границу
je m1
dec y
jmp m1
; проверяем на ВНИЗ (s)
s_but:
cmp al, 73h
je b_down
jne a_but
b_down:
cmp dh, 18h ;проверяем нижнюю границу
je m1
inc y
jmp m1
; проверяем на ВЛЕВО (a)
a_but:
cmp al, 61h
je b_left
jne d_but
b_left:
cmp dl, 0 ;проверяем левую границу
je m1
dec x
jmp m1
; проверяем на ВПРАВО (d)
d_but:
cmp al, 64h
je b_right
jne nazatie
b_right:
cmp dl, 4Fh ;проверяем рпавую границу
je m1
inc x
m1:
; стираем символ в текущей позиции (пробелом)
mov ah, 0eh
mov al, ' '
int 10h
jmp vivod ; пошли на вывод символа в следующей позиции
MoveExit:
; устанавливаем курсор для вывода символа
mov ah, 2
mov bh, 0
mov dh, 3
mov dl, 0
int 10h
;;;;;;;;;;;;;;;;;;;;;;;;ДВИЖЕНИЕ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;mov ax,12h ;установка видеорежима 640х480, 16 цветов
;int 10h
;mov ax,0000h ;инициализация мыши
;int 33h
; обраотчик нажатия клавиши
mov ax,0ch ; установка обработчика мыши
;push cs
;pop es
mov cx, 000ah ; нажата ЛКМ или ПКМ 0000000000001010b
mov dx, offset MouseKey
int 33h
; ждем нажатия клавиши
mov ah, 0
int 16h
MouseKey:
test bx,1
jz left; нажали на левую клавишу
; обработка ПКМ
; вывод типа мыши
mov ah, 9
mov dx, offset LeftMouseKey
int 21h
retf
left:
;обработка ЛКМ
; вывод типа мыши
mov ah, 9
mov dx, offset RightMouseKey
int 21h
retf
exit:
mov ah, 4ch
int 21h
code ends
end start
Там где у меня проблемы:
PHP код:
; обраотчик нажатия клавиши
mov ax,0ch ; установка обработчика мыши
;push cs
;pop es
mov cx, 000ah ; нажата ЛКМ или ПКМ 0000000000001010b
mov dx, offset MouseKey
int 33h
; ждем нажатия клавиши
mov ah, 0
int 16h
MouseKey:
test bx,1
jz left; нажали на левую клавишу
; обработка ПКМ
; вывод типа мыши
mov ah, 9
mov dx, offset LeftMouseKey
int 21h
retf
left:
;обработка ЛКМ
; вывод типа мыши
mov ah, 9
mov dx, offset RightMouseKey
int 21h
retf
Помогите пожалуйста... Идея в том, чтобы при нажатии на кнопки мыши выводилось сообщение, какая кнопка нажата, но у меня выводятся какие-то символы.
|