Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > x86 16-bits
x86 16-bits Architecture x86 16 bits et ses outils (assembleurs, debuggers, émulateurs...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 22h01   #1
anouarattn
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : -3
Points : -3
Par défaut Problème avec un exercice assembleur : NASM et interruption DOS 21h

Bonsoir,

Dans un exercice d'un TP d'assembleur avec Nasm et l'interruption DOS 21h sous Windows, Il est demandé d’écrire un programme qui affiche la question « somme-nous en fin d'après-midi (o/n) ? ».

Le programme lit ensuite une touche au clavier et, selon la réponse de l'utilisateur, affiche le message « allez, in faut rentrer chez soi ». Si la réponse est « o » ou « courage, on a encore beaucoup de chose a faire ! ». Si c'est « n », donc ma réponse est la suite :

Code :
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Programme Exercice 1 - 2
 
segment .data
	msg     DB 'Sommes-nous en fin d apres midi (O/N) ?' ,13,10,'$'
	msg1    DB 'Allez il faut rentrer chez soi !' ,13,10,'$'
	msg2    DB 'Courage, on a encore beaucoup de choses a faire' ,13,10,'$'
	msg3    DB 'Vous avez tapez un choix errone' ,13,10,'$'
 
 
segment .text
 
 
; nasm -f bin ex.asm -o ex.com
; .\ex
 
 
  enter 0,0
  pusha
 
 
MAIN:  
    mov AH,09h
    mov DX, msg
    int 21h
 
 
 
LECTURE:
 
    mov AH,01h
	int 21h
 
	CMP AL,'o'
	JE  MSG_1
 
	CMP AL,'n'
	JE  MSG_2
 
	JMP MSG_3
 
 
MSG_1:
    mov AH,09h
    mov DX, msg1
    int 21h           
 
 
MSG_2:
    mov AH,09h
    mov DX, msg2
    int 21h
 
 
MSG_3:
    mov AH,09h
    mov DX, msg3
    int 21h
    JMP LECTURE
 
FIN:
 
popa
mov eax,0
leave
ret
Le problème est que, à chaque fois que je tape « o » ou « n » seul, donc pas d'entrée, il revient à « sommes-nous en fin d après-midi (o/n) ? ».

Merci de m'indiquer ma faute ou me donner une solution avec l'interruption 21h, fonction 01h.

Merci beaucoup.
anouarattn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 10h42   #2
Forthman
Membre expérimenté
 
Avatar de Forthman
 
Homme François
conception mécanique
Inscription : janvier 2005
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 37
Localisation : France, Tarn et Garonne (Midi Pyrénées)

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

Informations forums :
Inscription : janvier 2005
Messages : 340
Points : 547
Points : 547
Bonjour,

à la fin de tes sous programmes MSG_1 et MSG_2 Il te faut un JMP FIN
(ou un saut vers un sous programme qui attend à nouveau une touche pour avoir
le temps de lire le message car la fenêtre sous win$ va se fermer de suite)

a+ François
Forthman est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web