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 clavier


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut vider le buffer clavier
    Bonjour à tous,
    je suis actuellement en dut informatique et j'ai un projet à faire : je dois réaliser un space invader.
    Le but de ce jeu est de tirer sur des aliens pour les éliminer.
    Je rencontre un probleme quant au déplacement de mes aliens : ce que je veux, c'est que mes aliens se déplace tout seul, sans que j'ai besoin d'appuyer sur une touche. J'ai donc penser à la fonction 01 de l'interruption 16, mais le problème est que dans mon buffer clavier s'enregistre la dernière touche sur laquelle j'ai appuyé, et je ne peux donc pas modifier les déplacements de mon vaisseau car il se déplace en fonction de la première touche sur laquelle j'ai appuyé. J'ai donc décider de vider le buffer de mon clavier pour palier ce problème. J'ai trouver une solution sur ce forum mais elle ne marche pas :
    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    	appuie_touche: ;teste de l'appuie de touches
    		call affiche_aliens
    		call vider_buffer
     
    		mov ax,0100h
    		int 16h
     
    		cmp ax,011bh
    		je fin
    		cmp ax,4b00h
    		je gauche
    		cmp ax,4d00h
    		je droite
     
    		jmp boucle
     
                    ;solution du forum
    		vider_buffer:
    		mov ax,0040h
    		mov es,ax 
    	l.161 mov ax,es:[001Ah]
    	l.162 mov es:[001ch],ax 
    		ret
    voici l'erreur :
    l.161 error:invalid combinaison of opcode and operand
    l.162 error:invalid combinaison of opcode and operand

    Comment dois-je donc faire pour vider mon buffer clavier s'il vous plait?

    Merci d'avance

    cordialement

    kyuubii_74

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    La fonction 01h de l'interuption 16h nous permet de vérifier si un caractère est présent dans le buffer.
    Si c'est le cas, nous appelons la fonction 00h qui le lira et le retirera du buffer.

    Peux-tu essayer ce code pour voir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    appuie_touche:	;teste de l'appuie de touches
    		call affiche_aliens
     
    		mov ah,01H
    		int 16H
    		jz boucle	; Aller à boucle si aucun caractère présent
     
    		mov ah,00h
    		int 16H		; Lire le caractère
     
    		cmp ax,011bh
    		je fin
    		cmp ax,4b00h
    		je gauche
    		cmp ax,4d00h
    		je droite
     
    		jmp boucle

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    je ne sais pas quoi dire. Merci beaucoup tout marche niquel !!!!!

    Merci encore, je m'en vais finir mon space invader. Merci vraiment.

    Bonne fête de fin d'année

    cordialement

    kyuubii_74

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vider le buffer clavier
    Par Lucien63 dans le forum C++
    Réponses: 1
    Dernier message: 15/08/2011, 09h35
  2. [C] Problème pour vider un buffer clavier
    Par mickael777 dans le forum Windows
    Réponses: 7
    Dernier message: 08/11/2007, 17h05
  3. vider le buffer clavier
    Par josmiley dans le forum Général Python
    Réponses: 2
    Dernier message: 09/08/2007, 16h11
  4. vider le buffer clavier
    Par Pragmateek dans le forum C
    Réponses: 31
    Dernier message: 20/06/2006, 21h33

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