2010-05-11 14 views
3

Je travaille sur un projet dans l'assemblage x86 sous Windows (MASM), et je dois attraper en quelque sorte des presses à onglet, mais je ne sais pas comment faire dans l'assemblage (je suis nouveau pour elle).Comment attraper une presse à onglet dans l'assemblage x86?

Je peux obtenir obtenir les commentaires de l'utilisateur avec 21H, mais pour autant que je peux dire qui ne fonctionne que si les utilisateurs types les données, puis appuie sur Entrée.

Ce que je dois est une façon de sorte que si l'utilisateur appuie sur la touche de tabulation, il exécutera un proc, puis de ce proc je peux gérer ce qui doit arriver. Y a-t-il un moyen de faire cela?

+3

Si vous utilisez INT21, il semble que vous écrivez un programme DOS, pas Programme Windows – Gabe

+0

Qu'est-ce que vous définissez AH à pour lire les frappes? – Gabe

+0

@Gabe - Je suppose que c'est juste un programme DOS qu'il exécute dans l'environnement VDM de Windows. –

Répondre

2

Si je comprends correctement, vous pouvez utiliser:

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) 

+0

C'est parfait! Merci beaucoup. –

1

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

DOS 21H - DOS Fonction Codes

AH = 01h - LIRE PERSONNAGE DE STANDARD D'ENTRÉE, AVEC ECHO

Retour: AL = caractère lu

Notes:

^C/^ Pause sont vérifiés
^ P active ou désactive le DOS interne écho à l'imprimante drapeau
^ Z ne soit pas interprété, donc pas provoquer une EOF si l'entrée est réacheminée caractère écho à la sortie standard

Voir aussi: AH = 06h, AH = 07h, AH = 08h, AH = 0Ah