Bonjour,
Je voudrais savoir comment vider le buffer du clavier.
Merci![]()
Bonjour,
Je voudrais savoir comment vider le buffer du clavier.
Merci![]()
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 !
Partager