Как поймать нажатие на вкладку в сборке x86? - PullRequest
3 голосов
/ 11 мая 2010

Я работаю над проектом в сборке x86 под Windows (MASM), и мне нужно как-то ловить нажатия табуляции, но я не уверен, как это сделать в сборке (я новичок в этом).

Я могу получить пользовательский ввод с помощью int 21h, но, насколько я могу судить, это работает, только если пользователь вводит данные, а затем нажимает enter.

Мне нужен способ, чтобы, если пользователь нажал клавишу Tab, он запустил процесс, а затем из этого процесса я смог обработать то, что должно произойти. Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 13 мая 2010

Если я правильно понимаю, вы можете использовать:

mov ah,1 ; get char from keyboard

int 21h

cmp al, 9 ; 9 is ascii of tab

jnz Dont_Call

Call Proc_Name

Dont_Call:

(REST OF CODE)

1 голос
/ 11 мая 2010

http://spike.scu.edu.au/~barry/interrupts.html#ah01

DOS INT 21h - функциональные коды DOS

AH = 01h - ПРОЧИТАЙТЕ ХАРАКТЕР ОТ СТАНДАРТНОГО ВХОДА, С ECHO

Возврат: AL = чтение символа

Примечания:

^ C / ^ Перерыв проверен
^ P переключает DOS-внутренний флаг эха на принтер
^ Z не интерпретируется, поэтому не вызывает EOF, если ввод перенаправленного символа отображается на стандартный вывод

См. Также: AH = 06 ч, AH = 07 ч, AH = 08 ч, AH = 0 ч

...