Quitter le programme lorsque l'on appuie sur une touche [ASM] - ASM - Programmation
Marsh Posté le 06-12-2004 à 11:55:37
A priori, c'est parce que AH ne vaut pas 0. Donc fait plûtot un IN AL, DX.
Qui plus est, tu as 2 instructions de saut (JNZ et JMP) là où tu pourrais n'en avoir qu'une.
MOV DX,60h
boucle:
IN AL,DX
CMP AX,1h ; "DEC AX" irait plus vite ici...
JNZ boucle
ret
Bon, tout ça reste bien sûr une méthode très "primitive" de fonctionner (ça bouffe un max de temps CPU au lieu d'attendre une interruption déclenchée par le clavier, et ça risque de cours-circuiter le vrai handler clavier), mais pour du code écrit au bout de 2 semaines, c'est déjà pas mal.
Marsh Posté le 05-12-2004 à 13:45:17
Bonjour.
Bon je suis debutant en asm, on a commence ca il y a 2 semaine ^^;
C'est de l assembleur 8086
Alors voila j'aimerai bien quitter mon programme des que l on appui sur la touche ESC par exemple. Donc j ai fait une boucle infini qui scan le port 60h (le clavier) et compare la valeur a 01 ( valeur de ESC ).
Cela donne :
boucle:
MOV DX,60h
IN AX,DX ;scan le clavier
CMP AX,1h ;compare la valeur scanné a 1 (ESC)
JZ fin ;si la comparaison est egale, on saute a fin:
JMP boucle
fin:
ret
Ca marche tres bien sous winXP mais ca ne marche pas sous msdos(le vrai dos).
Pourquoi?
Et comment je pourrai faire la meme chose sous dos ?