Résultats de 1 à 5 sur 5

Sujet : Comment vider le buffer ?

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    10

    Comment vider le buffer ?

    Hello tout l\'monde...

    Est-ce que quel qu\'un saurait comment vider le buffer de lecture au clavier... :8O:

    je m\'explique...

    j\'aimerai faire un programme, style casse brique ou une balle rebondi et ou il y a une barre au fond de l\'invite de commandes que l\'on peut diriger avec les touche \"A\" et \"D\" le problème
    c que je connais différent moyen de lecture au clavier style :

    mov ah,7
    int 21h

    mais l\'inconvénient étant que le processeur attend l\'appuis d\'une touche... et dans le casse brique la boule ne ce déplace pas en fonction de la barre.

    donc g opté pour une fonction comme ca :

    mov ah,01h
    int 16h

    avantage, le processeur n\'attend pas ( la boule peux toujours bougé) mais control si une touche est appuyé et stock le caractère dans AL ; mais le problème c que la première fois que l\'on appuye, il va toujours prendre le meme caractère...

    c pour cela que j\'aimerais vidé le buffer d\'ecriture apres chaque lecture au clavier...
    mais je sais pas comment faire...

    merci de me répondre

    Dark
    Dark

  2. #2
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Je ne l\'ai jamais fait, mais en regardant la doc sur DOS, il semble que INT 21 AH=0Ch AL=6 ou 7 ou 8 pourrait répondre à ton problème car il est écrit
    \"Empties the standard input buffer and calls one of other standard character I/O function request\"

    moby
    moby

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    j\'ai trouvé ca sur le net mais je ne sais pas comment l\'utilisé...
    le compilateur me signal une erreur
    \"extra caractère on line\" à la 3e ligne

    mov ax, 0040h
    mov es, ax
    mov ax, es:[26]
    mov es:[001Ch], ax
    Dark

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    16
    la syntaxe depend de ton compilateur, essaye avec ca :

    Code:
    mov ax, 0040h 
    mov es, ax 
    
    mov ax, [es:1Ah] 
    mov [es:001Ch], ax
    j\'me suis permis de tout mettre en hexa : c beaucoup plus clair

    Pour ce qui veule une explication sur ce code, 40:1A represente la tete du buffer et 40:1C represente la queue. Si la queue est egale a la tete, alors le buffer est vide !
    Pour info le buffer a une taille de 32 octets et est placé a l\'adr 40:1E

    BonDev\'
    Toujours disponible mais plus tard...

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    10
    merci beaucoup c trop bo ca marche enfin... :
    Dark

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé