代码之家  ›  专栏  ›  技术社区  ›  Tyler Smith

如何在x86程序集中捕获制表符?

  •  3
  • Tyler Smith  · 技术社区  · 14 年前

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

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

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

    2 回复  |  直到 14 年前
        1
  •  2
  •   Bob    14 年前

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

    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)
    

        2
  •  1
  •   Robert Harvey    14 年前

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

    DOS INT 21H-DOS功能代码

    ah=01h-从标准输入读取字符,带回声

    返回:al=字符读取

    笔记:

    ^ C/^已检查断纸
    ^ p切换DOS内部回显到打印机标志
    ^ Z不被解释,因此,如果输入被重定向,则不会导致EOF,字符被回送到标准输出。

    另见:ah=06h,ah=07h,ah=08h,ah=0ah