Manipulation de souris en assembleur (TASM)
laymen
-
loupius -
loupius -
Bonjour,
je veux déterminer la position de la souris (X,Y). je sais qu'on va utiliser l'interruption (INT 33H) et je sais aussi que :CX = position horizontale (X) et DX = position verticale (Y)
mais mon problème dans l'écriture de la procédure
Quel est l'instruction qui permet de déterminer X et Y?
Merci infiniment
salut
je veux déterminer la position de la souris (X,Y). je sais qu'on va utiliser l'interruption (INT 33H) et je sais aussi que :CX = position horizontale (X) et DX = position verticale (Y)
mais mon problème dans l'écriture de la procédure
Quel est l'instruction qui permet de déterminer X et Y?
Merci infiniment
salut
A voir également:
- Manipulation de souris en assembleur (TASM)
- Comment activer le pavé tactile sans souris - Guide
- Souris ordinateur - Guide
- Pointeur souris - Guide
- Souris hid ✓ - Forum souris / Touchpad
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
4 réponses
INT 33H Fonction 03H:
Lecture de la position de la souris et de l'état des boutons
Appel avec:
AX = 0003H
Retour avec:
BX = etat des boutons (bit2=bouton central, bit1=bouton droite, bit0=bouton gauche)
CX = nbre de pixels en X (coordonnée horizontale)
DX = nbre de pixels en Y (coordonnée verticale)
Voilà, tu sais tout.
Bon courage
Lecture de la position de la souris et de l'état des boutons
Appel avec:
AX = 0003H
Retour avec:
BX = etat des boutons (bit2=bouton central, bit1=bouton droite, bit0=bouton gauche)
CX = nbre de pixels en X (coordonnée horizontale)
DX = nbre de pixels en Y (coordonnée verticale)
Voilà, tu sais tout.
Bon courage
bonjour,
pourquoi dans certaines procédure lier a la manipulation de souris on passe généralement par la pile?
est ce que ce passage est obligatoire?
merci
pourquoi dans certaines procédure lier a la manipulation de souris on passe généralement par la pile?
est ce que ce passage est obligatoire?
merci
lors d'une recherche sur internet j'ai trouvé un petit exemple
exemples de procedures:
;Pour afficher le curseur
pointer_visibl proc
push ax
mov ax,01
int 33h
pop ax
ret
pointer_visibl endp
;Pour masquer le curseur
masqu_pointer proc
push ax
mov ax,2
int 33h
pop ax
ret
masqu_pointer endp
;Bouton gauche poussé
bouton_g proc
mov ax,5
mov bx,01
int 33h
ret
bouton_g endp
;Bouton droite poussé
bouton_d proc
mov ax,5
mov bx,02
int 33h
ret
bouton_d endp
dans les 2 procedures (visible et masquer le curseur) on a utiliser la pile
Merci infinement
exemples de procedures:
;Pour afficher le curseur
pointer_visibl proc
push ax
mov ax,01
int 33h
pop ax
ret
pointer_visibl endp
;Pour masquer le curseur
masqu_pointer proc
push ax
mov ax,2
int 33h
pop ax
ret
masqu_pointer endp
;Bouton gauche poussé
bouton_g proc
mov ax,5
mov bx,01
int 33h
ret
bouton_g endp
;Bouton droite poussé
bouton_d proc
mov ax,5
mov bx,02
int 33h
ret
bouton_d endp
dans les 2 procedures (visible et masquer le curseur) on a utiliser la pile
Merci infinement
Avec les commentaires:
;Pour afficher le curseur pointer_visibl proc push ax ; sauvegarde le registre ax mov ax,01 ; prépare l'appel à la fonction 01h int 33h ; appel de 'affichage souris' pop ax ; restaure le registre ax ret pointer_visibl endpVoilà, c'est tout simple, c'est simplement pour que la fonction ne modifie pas le registre 'ax'.
et maintenant quest ce ke je vais mettre dans la fonction qui retourne la position horizontal et vertical du curseur? c'est a dire qu'est je vais mettre dans les registres CX et DX pour avoir la position?
Merci infiniment pour votre aide
Merci infiniment pour votre aide
Ben, pour BX,CX,DX y'a rien a mettre.
A l'appel de la fonction, il faut mettre 03h dans AX pour spécifier le choix de la fonction et l'appel de cette fonction, par l'intermédiaire de l'interruption 33h, remplira les registres BX,CX,DX. Il ne sert donc à rien de les remplir avant.;
A l'appel de la fonction, il faut mettre 03h dans AX pour spécifier le choix de la fonction et l'appel de cette fonction, par l'intermédiaire de l'interruption 33h, remplira les registres BX,CX,DX. Il ne sert donc à rien de les remplir avant.;
Pour obtenir la position du curseur pointer_position proc push ax ; sauvegarde le registre ax mov ax,03 ; prépare l'appel à la fonction 03h int 33h ; appel de 'position souris' pop ax ; restaure le registre ax ret ; bouton dans BX, position dans CX,DX pointer_position endpL'appel des fonctions via une interruption est (presque (soyons prudent, il y a toujours des exceptions)) toujours construit sur ce modèle.