Bonjour,
Je voudrais savoir comment vider le buffer du clavier.
Merci
Bonjour,
Je voudrais savoir comment vider le buffer du clavier.
Merci
Programmer, c'est bien; créer un programme qui fonctionne, c'est mieux!
Le clavier fonctionne d'une manière bien particulière.
Il dispose d'un buffer à l'adresse 0040:001E, qui peut contenir 16 codes de touches.
A ceci s'ajoute deux pointeurs sur le buffer, d'une taille de 1 word chacun, pointant sur le buffer (0040:XXXX).
Le premier pointeur, à l'adresse 0040:001A, pointe sur le prochain caractère dans le buffer. Le deuxième, à l'adresse 0040:001C, pointe sur le premier emplacement libre dans le buffer.
Donc, pour "vider" le buffer clavier, il suffit d'indiquer au clavier que le prochain caractère à lire est vide, autrement dit, que les deux pointeurs aient la même valeur !
Donc, dès que [0040:001A] = [0040:001C], ton buffer est considéré comme vide.
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 mov ax, 0040 mov es, ax mov ax, es:[001Ah] mov es:[001Ch], ax
euh, faut pas desactiver les interuptions avant, et les remettre apres pour eviter de perdre des frappes qui pourraient intervenir entre la lecture et l'ecriture des pointeurs.
Ca donnerais donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 mov ax,0040h mov ds,ax cli ;disable interrupts mov ax,es:[001Ah]0 mov es:[001Ch],ax sti ;set interrupts
Rq: il manquait un h a 0040H !
1)Avant de poster, merci de lire les règles. 2)Utiliser [code] [/code] pour quoter le code ! 3)Conseils pour le forum C [a lire en entier!]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager