P
Pro_BD
У меня маленькая проблемма написал программу, а она работает не коректно ( не так как надо )
вот код программы:
.model tiny
.code
org 100h
Begin:
jmp Init ;метка
Int_33_proc proc ;наш обрабочик
pushf ;сохраним все =)
push ds
push dx ;сохраним регистры
push es
push dx
mov ah,0Fh ; получим текущие состояние дисплея
int 10h
mov ax,0 ;инициализация мышки
int 33h
mov ax,1 ; покажем курсор
int 33h
mov ax,000Ch ;установим обрабочик событий
mov cx,0002h ;нажатие левой кнопки mouse'a
mov dx,offset Mouse_Ok ; адрес нашего обрабочика
int 33h
mov ax,000Ch
mov cx,0000h ;удалить обрабочик
int 33h
iret ; выход
Mouse_Ok:
mov ax,3 ;определим состояние мышки
int 33h
mov ah,9h ;выводим строку на экран
mov dx,offset Message_1
int 21h
pop dx
pop es
retf ; выход из обработчика - команда RETF
call dword ptr cs:[Int_33_Real]
pop dx
pop ds
iret ; Выходим из прерывания
Int_33_Real dd ? ;Переменная для хранения адреса "int 33h"
Message_1 db 'Вы нажали левую кнопку мышки$'
Int_33_proc endp
Init:
mov ah,35h ;Показывает адрес прерывания
mov al,33h ;Указывает номер прерывания
int 21h
mov word ptr [Int_33_Real],dx ;показываем куда мы это все сохроняли
mov word ptr [Int_33_Real]+2,ds
mov ah,25h ;Установим вектор прерывания
mov al,33h
mov dx,offset Int_33_proc
int 21h
popf
int 20h
end Begin
Помогите мне разобратся в чем я мог ошибится
Что должна была делать программа:
1.Мы её запускаем.
2.При нажатие на левую кнопку мыши она должна была выводить сообщение что 'Нажата левая кнопка мыши $'
3.Все
а работает она так ( по крайне мере у меня оТна так работает ).
При её запуске в Дос навигаторе мышь исчезает(верней курсор невидать) , просто отключается (все нету её больше) где могла быть ошибка подскажите, я дня 3 сидел думал думал так не че не надумал решил обратится к вам.
P.S. Позор мне товарищи позор, написал прогу а не могу понять что к чему в ней =(((((
И если ко нить будет что небуть высказывать по поводу моей программы (я иммею в виду ошибки ) если можно то поконкретней изъесняйтесь. тоесть не так Например: Ты облажался в строке (6) , а так, ты облажался потому что ......
Заранее спасибо
вот код программы:
.model tiny
.code
org 100h
Begin:
jmp Init ;метка
Int_33_proc proc ;наш обрабочик
pushf ;сохраним все =)
push ds
push dx ;сохраним регистры
push es
push dx
mov ah,0Fh ; получим текущие состояние дисплея
int 10h
mov ax,0 ;инициализация мышки
int 33h
mov ax,1 ; покажем курсор
int 33h
mov ax,000Ch ;установим обрабочик событий
mov cx,0002h ;нажатие левой кнопки mouse'a
mov dx,offset Mouse_Ok ; адрес нашего обрабочика
int 33h
mov ax,000Ch
mov cx,0000h ;удалить обрабочик
int 33h
iret ; выход
Mouse_Ok:
mov ax,3 ;определим состояние мышки
int 33h
mov ah,9h ;выводим строку на экран
mov dx,offset Message_1
int 21h
pop dx
pop es
retf ; выход из обработчика - команда RETF
call dword ptr cs:[Int_33_Real]
pop dx
pop ds
iret ; Выходим из прерывания
Int_33_Real dd ? ;Переменная для хранения адреса "int 33h"
Message_1 db 'Вы нажали левую кнопку мышки$'
Int_33_proc endp
Init:
mov ah,35h ;Показывает адрес прерывания
mov al,33h ;Указывает номер прерывания
int 21h
mov word ptr [Int_33_Real],dx ;показываем куда мы это все сохроняли
mov word ptr [Int_33_Real]+2,ds
mov ah,25h ;Установим вектор прерывания
mov al,33h
mov dx,offset Int_33_proc
int 21h
popf
int 20h
end Begin
Помогите мне разобратся в чем я мог ошибится
Что должна была делать программа:
1.Мы её запускаем.
2.При нажатие на левую кнопку мыши она должна была выводить сообщение что 'Нажата левая кнопка мыши $'
3.Все
а работает она так ( по крайне мере у меня оТна так работает ).
При её запуске в Дос навигаторе мышь исчезает(верней курсор невидать) , просто отключается (все нету её больше) где могла быть ошибка подскажите, я дня 3 сидел думал думал так не че не надумал решил обратится к вам.
P.S. Позор мне товарищи позор, написал прогу а не могу понять что к чему в ней =(((((
И если ко нить будет что небуть высказывать по поводу моей программы (я иммею в виду ошибки ) если можно то поконкретней изъесняйтесь. тоесть не так Например: Ты облажался в строке (6) , а так, ты облажался потому что ......
Заранее спасибо