Salut,

Je souhaite que vous m'aidiez à trouver l'erreur dans mon code assembleur qui vise à afficher le mot le plus long d'un chaîne de de caractères. Après exécution , on m'affiche une belle séquence de caractères bizarres. J'utilise TASM. Je sais que c'est ancien mais on nous a imposé de l'utiliser donc j'ai pas le choix.

Merci d'avance pour l'aide.

Code asm : 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
mov si, offset Chaine ; si pointe su le debut du tableau
 
	mov di , offset MotLong
	mov bx , offset MotLongFinal
	mov NbC , 0
	mov NbCMax , 0
 
 
		 repeterS2:
		          mov al,Chaine[si]
 
 
				  cmp al,' '
				  je stopAjout
		          cmp al,'	'
				  je stopAjout
			      cmp al,','
				  je stopAjout
				  cmp al,'.'
				  je stopAjout
				  cmp al,0dh
				  je stopAjout
				  cmp al,0ah
				  je stopAjout
				  cmp al,':'
				  je stopAjout
				   cmp al,ar
				   je stopAjout
 
				  ; ajout du caractere dans MotLong
				  mov MotLong[di], al
 
				  inc di
				  add NbC , 1				  
				  inc si
                jmp repeterS2 
 
 
		 stopAjout : ; on compare la taille avec le precedant taille max
 
			 ;mov MotLong[di] , "$"
			 mov di , offset MotLong
			 mov cl,NbCMAx
			 mov ch,NbC
			 cmp ch, cl ; si nbc < =  nbcmax	 pas changmentdumot 	
			 jle pasChangementDuMot  
 
			; nbc > nbcmax -> changement du mot
 
			; copie de MotLong dans MotLongFinal
			 mov di , offset MotLong
			 mov bx, offset MotLongFinal
 
 
			 mov ah , 0
 
 
			 repeterM :
 
			 mov cl , MotLong[di] 
			 mov MotLongFinal[bx] , cl
 
			 inc ah
			 cmp ah , NbC
			 jge sortirM
			 inc di
			 inc bx
			 jmp repeterM
 
			 sortirM :
 
			 mov cl , NbC
			 mov NbCMax , cl
 
			 mov NbC , 0
 
			 pasChangementDuMot  :
 
			 cmp al , ar
		     je finRepeterS2
 
		     inc si
 
             jmp repeterS2
         finRepeterS2:
....
 
 ;affiche message 'mot plus long' ( non Fait)
		 mov dx, offset MMotLong 
		 mov ah,9
		 int 21h 
 
		 mov dx , offset MotLongFinal
		 int 21h 
		 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;