| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Прерывания от клавиатуры |
| Автор: Freeman 8.5.2005, 18:16 |
| Возникла небольшая проблемка, суть ее в следующем: необходимо перехватить прерывания от клавы и при этом узнать какая клавиша была нажата. У меня получается только перехват до нажатия клавиши, а вот после я что-то не могу додуматься как сделать. Если можно поясните исходником, плз. |
| Автор: Chingachguk 8.5.2005, 20:24 |
| Если обычный способ, то обычно перехватывают прерывание int 9. В этом случае сначала управление передается на перехватчик, затем вызвают оригинальный код BIOS: @@StartMyInt9Handler: pusha push ds push es ; Call original BIOS code pushf call dword ptr cs:OldInt9Handler ; Now key in BIOS kbd buffer ; We can get it: ; use address 0040:001A = ptr to last key ; call int 16h, func 01h - get key ... В аттаче пример моего русификатора. Но можно перехватывать int 16h, так наверное даже проще. |