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 :

[TASM] Récupérer les coordonnées de souris


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut [TASM] Récupérer les coordonnées de souris
    Bonjour,
    J'ai un mini projet à faire en assembleur.
    Mon projet consiste à faire un petit programme qui teste la présence de souris puis dessine un rectangle selon deux clicks de souris.
    Mon problème est comment faire pour récuperer les coordonnées X et Y.
    Je connais que le X et Y se situent en CX et DX.
    J'ai écris ce code qui ne marche pas mais il n'y a pas d'erreur.

    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
    20
    21
    22
    23
    24
    25
    data SEGMENT
    x dw (?)
    y dw (?)
    data ends
    code SEGMENT
     
         assume cs:code,ds:data
    	 debut : 
    MOV AX, data
    MOV DS, AX
    push ax
    mov ax,03
    int 33h
    pop ax
    mov ah,09h
    mov x, cx
               int 21h
    		   mov ah,09h
    mov y, dx
    		int 21h
    		mov ah, 09h
    		mov ax,4c00h
               int 21h  
     code ends
     end debut
    Merci infiniment

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Bonjour,

    La fonction 09 de l'interruption 21h sert à écrire à l'écran une chaîne de caractères pointée par DS:DX. Tu ne peux donc pas écrire directement le résultat de la fonction 33h. Il faut d'abord le convertir en A.S.C.I.I., puis ajouter un « $ » final pour clôturer la chaîne.

    D'autre part, tu sauvegardes AX en l'empilant juste après l'initialisation de DS et tu le redépiles juste après l'interruption 33h. C'est bien, mais ça ne sert à rien. C'est la valeur de ton segment que tu récupères, et tu l'écrases tout de suite après pour faire l'interruption 21h.

    Enfin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    mov x, cx
               int 21h
    		   mov ah,09h
     
    mov y, dx
    		int 21h
    		mov ah, 09h
    Tu sauvegardes le résultat de l'interruption 33h en deux parties, juste avant chaque appel à l'interruption 21h. Ça n'a pas de sens. En outre, rien ne te dit que CX et DX auront conservé la même valeur à l'issue de l'interruption.

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonsoir,
    J'ai essayé de convertir comme vous m'avez dit.
    J'ai trouvé un code qui convert en HEXA et affiche des chiffres mais il donne mois le resultat directement du position actuelle du souris, je veux cliquer puis obtenir mon résultat.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    data SEGMENT
    x dw (?)
    y dw (?)
    data ends
    code SEGMENT
     
         assume cs:code,ds:data
    	 debut : 
    MOV AX, data
    MOV DS, AX
    push ax
    mov ax,03
    int 33h
    pop ax
    mov ah,09h
    mov x, cx
    mov cx,00
          mov bx,0ah
      ref:mov dx,00
          div bx
          push dx
          inc cx
          cmp ax,00
          jne ref
     ref2:pop dx
          add dl,30h
           mov ah,2
           int 21h
          loop ref2
     
     
    mov y, dx
    		mov cx,00
          mov bx,0ah
      re:mov dx,00
          div bx
          push dx
          inc cx
          cmp ax,00
          jne re
     re2:pop dx
          add dl,30h
           mov ah,2
           int 21h
          loop re2
     
     
    		mov ax,4c00h
               int 21h  
     code ends
     end debut

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    La même interruption te renvoie également l'état des boutons de la souris. Tu n'as qu'à boucler dessus tant que ceux-ci ne sont pas enfoncés.

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/05/2012, 11h52
  2. Récupérer les coordonnées de points d'une surface avec la souris
    Par ijnuhbygv dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 06/08/2011, 01h57
  3. Récupérer les coordonnées de la souris dans le ViewModel
    Par pansoul dans le forum Silverlight
    Réponses: 2
    Dernier message: 15/07/2010, 18h55
  4. [WD11] Récupérer les coordonnées d'une souris
    Par Redg9 dans le forum WinDev
    Réponses: 8
    Dernier message: 12/07/2010, 10h54
  5. récupérer les coordonnées de la souris
    Par miKL64 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 14/10/2007, 21h43

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