Bonjour à tous,
Je suis actuellement en DUT Informatique (en première année) et je dois réaliser une calculatrice en Assembleur 8086.
J'avoue que je bloque un peu sur l'opération de la multiplication...
La multiplication demandé doit multiplier deux nombres saisit par l'utilisateur de 4 digits maximum par nombre.
J'ai eu donc l'idée de faire des enchainement d'addition dans une boucle. Dans un premier temps je récupère la valeur d'un nombre (ici mon nb2) et je la met dans CL.
Par la suite, j'ai tenté de faire une boucle du type :
Tant que CL > 0 faire
nb1 := nb1 + nb1
CL := CL - 1
Fin Tant que
Affichage
Malheureusement j'ai l'impression que la compteur ne fonctionne pas..
J'obtiens dans tout les cas : nb1 * 2
C'est à dire je rentre :
- Entrer nb1 : 4
- Entrer nb2 : 3
- Le résultat est : 0008
Voici mon code :Merci d'avance pour l'aide !
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65 multiplication : CRLF CMP recupnum, 0 ; booleen qui dit si les nombres ont été saisit ou non JE recupnuminter ; je saute recupérer les deux nombres à multiplier entre eux MOV AL, nb2+5 ADD AL, 0 AAA ; adjust ascii for addition MOV res+6, AL MOV AL, nb2+4 ADC AL, 0 AAA MOV res+5, AL MOV AL, nb2+3 ADC AL, 0 AAA MOV res+4, AL MOV AL, nb2+2 ADC AL, 0 AAA MOV res+3, AL MOV AL, 0 ADC AL, 0 MOV res+2, AL CALL AJUST ; procédure qui converti les nombres en ASCII en décimal MOV CL, res go : CMP CL, 0 JE next DEC CL MOV AL, nb1+5 ADD AL, nb1+5 AAA ; adjust ascii for addition : on converti les nombres pour l'addition MOV res+6, AL MOV AL, nb1+4 ADC AL, nb1+4 AAA MOV res+5, AL MOV AL, nb1+3 ADC AL, nb1+3 AAA MOV res+4, AL MOV AL, nb1+2 ADC AL, nb1+2 AAA MOV res+3, AL MOV AL, 0 ADC AL, 0 MOV res+2, AL JMP go next : CALL AJUST AFFICHMUL JMP start ; start est le début du programme
Bonne journée !
Partager