IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 16-bits Assembleur Discussion :

Vider le buffer du clavier [FAQ]


Sujet :

x86 16-bits Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Vider le buffer du clavier
    Bonjour,

    Je voudrais savoir comment vider le buffer du clavier.

    Merci
    Programmer, c'est bien; créer un programme qui fonctionne, c'est mieux!

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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.

    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
    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    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 !

Discussions similaires

  1. vider le buffer clavier
    Par josmiley dans le forum Général Python
    Réponses: 2
    Dernier message: 09/08/2007, 16h11
  2. Vider le buffer de clavier
    Par mastergoddot dans le forum Visual C++
    Réponses: 3
    Dernier message: 22/06/2007, 18h14
  3. vider le buffer clavier
    Par Pragmateek dans le forum C
    Réponses: 31
    Dernier message: 20/06/2006, 21h33
  4. Vider le buffer du clavier.
    Par Maglight dans le forum Delphi
    Réponses: 2
    Dernier message: 18/05/2006, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo