Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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, так наверное даже проще.



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