我正在 Windows (MASM) 上的 x86 程序集中开发一个项目,我需要以某种方式捕获制表符,但我不确定如何在程序集中执行此操作(我是新手)。
我可以使用 int 21h 获取用户输入,但据我所知,只有在用户键入数据然后按 Enter 时才有效。
我需要的是一种方法,如果用户按下 tab 键,它将运行一个 proc,然后我可以从该 proc 处理需要发生的事情。有没有办法做到这一点?
如果我理解正确,您可以使用:
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)
http://spike.scu.edu.au/~barry/interrupts.html#ah01
DOS INT 21h - DOS 功能代码
AH = 01h - 从标准输入读取字符,带有 ECHO
返回: AL = 字符读取
笔记:
^C/^Break 已检查
^P 切换 DOS 内部回显到打印机标志
^Z 不被解释,因此如果输入被重定向,则不会导致 EOF 字符回显到标准输出
另见:AH=06h、AH=07h、AH=08h、AH=0Ah