|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 19, 2002 21:16:59 Вот нужно в резиденте при нажимании на клавиши делать озвучку при помощи динамика. Так вот написал это без прерываний и в WinXP гудит ок, а в DOS - вилы...до потери пульса...не останавливается...может читать не так значение сис. таймера надо?.. Что за глюк... Вот код: in al,61h or al,00000011b out 61h,al mov al,10110110b out 43h,al mov dx,473h mov al,dl out 42h,al mov al,dh out 42h,al xor ax,ax mov ds,ax mov bx,word ptr ds:046Ch ;берём значение системного таймера add bx,3 @beep: mov dx,word ptr ds:046Ch cmp bx,dx jne @beep in al,61h and al,11111100b out 61h,al И ещё: как обрыбатывать клавиши-стрелки, у них ведь 0+скан-код, как и обычные или нет...??? Заранее благодарен. |
|
|
Дата: Дек 19, 2002 21:52:19 1. Чтобы значение системного таймера менялось, нужно дать обработчику прерываний таймера возможность работать, т.е. a) sti - включить обработку прерываний b) послать контроллеру прерываний команду "конец прерывания" mov al,20h out 20h,al (или вызвать стандартный обработчик int9, который сам это сделает) 2. >как обрыбатывать клавиши-стрелки, у них ведь 0+скан-код 0+скан-код - это на выходе int16, а в обработчике int9 читаются только скан-коды |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067 |