3

我正在 Windows (MASM) 上的 x86 程序集中开发一个项目,我需要以某种方式捕获制表符,但我不确定如何在程序集中执行此操作(我是新手)。

我可以使用 int 21h 获取用户输入,但据我所知,只有在用户键入数据然后按 Enter 时才有效。

我需要的是一种方法,如果用户按下 tab 键,它将运行一个 proc,然后我可以从该 proc 处理需要发生的事情。有没有办法做到这一点?

4

2 回答 2

2

如果我理解正确,您可以使用:

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)

于 2010-05-12T20:55:31.753 回答
1

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

于 2010-05-11T17:38:51.670 回答