Страницы

Поиск по вопросам

вторник, 24 декабря 2019 г.

Ассемблер: перехват NumLock

#ассемблер


Здраствуйте!
Мне нужно при нажатии NumLock в консоли выводить "1". Но проблема в том, что когда
я читаю символы с помощью int 16h:
mov ah,10h  
int 16h

Программа ждет нажатия клавиши, а когда я нажимаю Numlock, то прога продолжает ожидать
нажатия клавиш...
Как сделать так, чтобы при нажатии 1 выводилось 1, а при нажатии Numlock - 2?
Спасибо!    


Ответы

Ответ 1



Функция 10h с прерыванием int 16h проверяет наличие символа в буфере клавиатуры, но клавиши num lock, caps lock, scroll lock, ctrl, shift... не заносятся в буфер клавиатуры. Для того что бы определить нажат ли NumLock можно использовать функцию 12h и прерывание 16h, она вернёт в регистр AL состояние клавиатуры. Бит Название клавиши 0 левый Ctrl 1 Левый Alt 2 Правый ctrl 3 Правый alt 4 ScrollLock 5 NumLock 6 Caps Lock 7 SysReq

Комментариев нет:

Отправить комментарий