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 :

[Assembleur 16 bits] 2 touches utilisées en même temps


Sujet :

x86 16-bits Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 48
    Par défaut [Assembleur 16 bits] 2 touches utilisées en même temps
    Bonjour les amis.
    je suis un dut info et je vais devoir coder un pong en assembleur 16 bits
    j'aimerais savoir si il existe une ou des instruction qui permette d'avoir deux raquette qui pourrai bouger en même temps ou si seul l'interruption 16,10h permet de taper une touche et a ce moment la chose n'est plus possible...

    Merci beaucoup d'avance et vive l'assembleur

  2. #2
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Hello,

    Quand une touche est actionne sur le clavier, celui-ci envoit des donnes
    a la carte mere. Celle-ci analyse tout ca, et si ca lui convient, active
    l'interruption 09h

    Les donnees provenant du clavier arrivent sur le port 60h octet par octet
    (il faut donc creer une routine simple qui remplacera celle de l'int 09h)

    si le bit 7 (le plus a gauche) de cet octet vaut 1 c'est que la touche
    est relachee, sinon c'est qu'elle est appuyee
    Ce qui nous fait 128 touches possibles :-)

    Pourquoi, je sais pas, mais ca devait etre trop simple alors on
    a invente des "codes etendus". Ca concerne les touches flechees, inser,
    suppr, fin, page-up, page-down, home, impr-ecran, la petite touche enter
    et d'autres encore...

    les codes etendus sont composes de 2 octets envoyes l'un apres l'autre :
    E0h + code clavier
    ainsi la touche CTRL de gauche = 1Dh et celle de droite = E0h,1Dh

    Mais c'est pas tout ! (arggrr !!!) certaines touches ne se contentent pas
    d'ajouter E0h comme code etendu mais E0h,2Ah,E0h+"code touche"
    (cas tres particulier de la touche "Pause")

    voila, avec ca, tu va pouvoir detecter plus d'une touche a la fois

    a+ Francois

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 48
    Par défaut
    wow!
    je n'est pas encore de connaisance aussi poussé en assembler mais merci de cette réponse je vais bien le relire et tout analyser...
    merci beaucoup....

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut Re:
    Rien ne t'empêche de faire une boucle et de tester si l'utilisateur a tapé (ou enfonce ...) une touche. C'est ce qu'on appelle agir par scrutation. On ne peut pas appuyer sur deux touches simultanément, il y a toujours un qui arrive, avec une chance sur 2 (?), en premier (différences de Heisenberg ).

  5. #5
    Membre Expert
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Par défaut
    Oui, mais il faut pouvoir differencier l'appuis et le relachement de la touche

    Dans le cas du Pong a 2 joueurs, il faut pouvoir gerer deux fois deux touches
    separements (haut et bas pour chaque joueur)

    a+ Francois

    Edit : la revectorisation des touches fonctionne dans les programmes DOS sous XP

  6. #6
    Membre très actif
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Billets dans le blog
    1
    Par défaut
    tout simple, tu utilise mon int9 au lieu de celle du bios

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ;pour FASM  
    call int9
    ;puis pour tester une touche, tu regarde sa valeur dans le tableau
    mov al,[key+key.???]
    ; et voilà tu connais l'etat de la touche désirée
    ;là, c'est ton programme
    ;...
    exit:
    call oldint9 ; vau mieu le faire sous dos, et meme sous WIN9x.
    ret           ;maintenant, tu quitte le programme
    include 'int9.inc'
    bon, c'est pour du 32 bit, mais rienne t'empeche de le convertir en 16 bits

    attention, ce fichier est sous licence UFO NOSS
    pour les curieux, allez sur acronymfinder.com ou org, je sais plus... ;-)
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2012, 17h15
  2. [Pygame]Gérer deux touches appuyées en même temps
    Par yetimothee dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 19/11/2008, 20h13
  3. Réponses: 7
    Dernier message: 05/06/2006, 13h44
  4. Tester l'état de plusieurs touches du clavier en même temps
    Par wikers dans le forum Composants VCL
    Réponses: 7
    Dernier message: 11/11/2004, 09h13
  5. utiliser le même fichier dans plusieurs projets vc++6
    Par yannick_sch dans le forum MFC
    Réponses: 5
    Dernier message: 12/02/2004, 17h39

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