Bonjour je suis debutant en assembleur et je dois faire une calculatrice mais sous certaine conndition et je n'arrive pas du tout a gerer mes clics !!!! Pouvez vous m'aider ???
Je dois d'abord introduire le a puis le b sinon il y a des messages d'erreur pour l'ordre et la division par zero doit etre signale comme impossible !!!
Merci d'avance !!!!
;======================================================;
; Auteur : Hernaut Emmanuel ;
; Date : 20 décembre 2004 ;
; Objet : Projet Lmi - La belle calculette. ;
;======================================================;
.model small
.stack 100h
.data
nom db 'Hernaut Emmanuel','$'
groupe db 'Groupe C22','$'
cours db 'LMI : Nicolas VanSteelKist (NVS)','$'
projet db 'Projet 1 : La belle calculette','$'
touche db 'Appuyer sur une touche SVP ...','$'
a db 'A','$'
b db 'B','$'
res db 'Resultat','$'
signe_plus db '+','$'
signe_moins db '-','$'
val_a db 'Valeur de A','$'
val_b db 'Valeur de B','$'
resultat db 'Valeur du resultat','$'
plus db 'Add','$'
moins db 'Sub','$'
fois db 'Mul','$'
diviser db 'Div','$'
erreur1 db 'Respecter ordre de saisie','$'
erreur2 db 'Action non autorisée','$'
erreur3 db 'Attention : Division par zero','$'
zone_mess db 'Zone de message','$'
.code
; Fonction Principale
main proc
; Début du programme
mov ax,@data
mov ds,ax
CALL video ; Appel au mode vidéo
CALL entete ; Affiche mon entete
CALL clavier ; Attend une touche pour continuer
CALL video ; Efface mon écran
CALL calculette
CALL init_souris ; Initialisation de la souris
mov ax,0001h ; Affichage du curseur de la souris
int 33h
mov ax,3 ; Gestion de clics
@@clic: ; Reviens ici si clic hors zone
@@rebond: ; Attendre que le bouton soit relaché
int 33h
cmp bx,0
JNE @@rebond
@@attend: ; Attente d'un clic gauche ou droit
int 33h
cmp bx,0
JE @@attend
cmp bx,1
JE @@st
JMP @@clic
@@st: ; Test de la zone
CALL clavier ; Attend une touche pour finir
mov ax,0002h ; Cache le curseur de la souris
int 33h
; Fin du programme
mov ax,04c00h
int 21h
main endp
;=============================================================
;================== Procédures secondaires ===================
;=============================================================
video proc
mov al,03h ; Mode graphique 03h
mov ah,00h
int 10h ; Interruption 10h,03h
ret
video endp
entete proc ; Fonction qui affiche mon en-tete
mov ah,02 ; Placement du curseur en ligne 6 et colonne 28
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,6
mov dl,28
int 10h
mov dx,offset nom ; Affichage de la variable nom
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 9 et colonne 28
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,9
mov dl,28
int 10h
mov dx,offset groupe ; Affichage de la variable groupe
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 12 et colonne 28
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,12
mov dl,28
int 10h
mov dx,offset cours ; Affichage de la variable cours
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 15 et colonne 28
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,15
mov dl,28
int 10h
mov dx,offset projet ; Affichage de la variable projet
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
ret ; Retour a la fonction appelante
entete endp
clavier proc
mov ah,02 ; Placement du curseur en ligne 24 et colonne 48
mov bh,0 ; Càd à la derniere ligne
mov dh,24
mov dl,48
int 10h
mov dx,offset Touche
mov ax,0900h
int 21h ; Interruption 21h,09h
mov ah,07h ; Attente d'une touche
int 21h
ret ; Interruption 21h,07h
clavier endp
init_souris proc ; Initialisation de la souris
mov ax,0 ; Pilote souris pas installer (Sinon FFFF)
mov bx,2 ; Nombre de bouton de la souris
int 33h ; Interruption 33h,0h
ret
init_souris endp
calculette proc
mov ah,02 ; Placement du curseur en ligne 3 et colonne 5
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,3
mov dl,5
int 10h
mov dx,offset a ; Affichage de la variable a
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 3 et colonne 30
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,3
mov dl,30
int 10h
mov dx,offset val_a ; Affichage de la variable val_a
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 3 et colonne 70
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,3
mov dl,70
int 10h
mov dx,offset signe_plus ; Affichage de la variable signe_plus
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 5 et colonne 5
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,5
mov dl,5
int 10h
mov dx,offset b ; Affichage de la variable b
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 5 et colonne 30
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,5
mov dl,30
int 10h
mov dx,offset val_b ; Affichage de la variable val_b
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 5 et colonne 70
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,5
mov dl,70
int 10h
mov dx,offset signe_plus ; Affichage de la variable signe_plus
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 10 et colonne 23
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,10
mov dl,23
int 10h
mov dx,offset plus ; Affichage de la variable plus
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 10 et colonne 33
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,10
mov dl,33
int 10h
mov dx,offset moins ; Affichage de la variable moins
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 10 et colonne 42
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,10
mov dl,43
int 10h
mov dx,offset fois ; Affichage de la variable fois
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 10 et colonne 53
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,10
mov dl,53
int 10h
mov dx,offset diviser ; Affichage de la variable diviser
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 15 et colonne 5
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,15
mov dl,5
int 10h
mov dx,offset res ; Affichage de la variable res
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 15 et colonne 30
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,15
mov dl,30
int 10h
mov dx,offset resultat ; Affichage de la variable resultat
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 15 et colonne 70
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,15
mov dl,70
int 10h
mov dx,offset signe_plus ; Affichage de la variable signe_plus
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
mov ah,02 ; Placement du curseur en ligne 20 et colonne 30
mov bh,0 ; Grace a l'interruption 10h,02h
mov dh,20
mov dl,30
int 10h
mov dx,offset zone_mess ; Affichage de la variable zone_mess
mov ax,0900h ; Grace a l'interruption 21h,09h
int 21h
ret
calculette endp
end main ; Fin du programme