Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Вопрос о прерывании 09h (IRQ1)


Автор: KOMATOZZ 17.4.2006, 22:02
Допустим у меня есть программа... Она загружает обработчик прерывания системного таймера, сама уходит в резидент... Теперь мне необходимо выйти из  программы по нажатию комбинации клавиш - допустим alt+q... как это реализовать??

Фактически нужно написать обработчик прерывания  09h... причем все другие нажатые клавиши он должен пропускать, ведь программа же резидент... командная строка должна работать... подскажите как это сделать...

Может впендюрить сканирование клавиш в прерывание 1ch, однако не факт что клавиша (комбинация) будут нажиматься именно во время срабатывания прерывания 1ch (18 раз в секунду...) Есть ли у кого нить нормальный простой обработчик прерывания 09h??? 

Автор: Akina 18.4.2006, 12:07
1) Перехват прерываний выполняется сплайсингом.
2) Перехватываются прерывания таймера и клавиатуры.
3) Обработчик прерывания таймера работает по заложенному алгоритму.
4) Обработчик прерывания клавиатуры по получении скан-кода горячей клавиши (q) проверяет модификатоы (alt) и при совпадении выставляет флаг для обработчика прерывания таймера.
5) Обработчик прерывания таймера при обнаружении выставленного флага восстанавливает оригинальный код старых обработчиков и высвобождает память. 

Автор: KOMATOZZ 18.4.2006, 19:27
А можно какой нибудь простенький исходничек, чтобы разобраться? smile  Именно на обработчик прерывания клавиатуры.... smile  

Автор: SergeCpp 19.4.2006, 09:56
http://sergecpp.mylivepage.ru/file/1/90/ASM_DOS_KEY_RUS.RAR Русский — Английский для DOS и DOS-окна Windows

Написан мною на Ассемблере (исходники прилагаются)

Использован модифицированный модуль переключения из KeyRus

Компилируется FASM 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)