Problème en langage d'assembleur !

Fermé
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 8 juin 2013 à 19:21
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 10 juin 2013 à 16:25
Bonjour,

Donc pour commencer j'explique mon soucis, on étudie l'assembleur en cours d'info cette année en 2éme année de fac, pour la version c'est en x86 syntaxe intel. Si besoin d'info complémentaire je pourrais vous en donnez.

Donc le jour de l'examen on a eu à corriger un code qui devait faire quelque chose mais ne le faisait pas, je suis pas super bon en assembleur et vu qu'on a pas trop le droit à la copie ou a des corrections on sait pas vraiment où on a foiré mais j'aimerais au moins être sûr parceque mes rattrapages sont pour bientôt ! :)

Donc le code suivant est censé calculer le nombre de lettre majuscules dans une série d'élément et en retourner la somme qui ne devra pas dépassé '10', c'est le code comme celui de l'examen donc rempli de fautes, si vous pouviez juste m'aider à toutes les dénichés je vous en serez très reconnaissant :

section .data

buffer db 0, 0, 0, 0, 0
length equ $
sum db '0', 10

section .text

global _start
_start :

mov eax, 3
mov ebx, 1
mov ecx, buffer
mov edx, length-buffer
int 80h

count:
cmp word [edi], 'A'
jb next
cmp word [edi], 'Z'
jna next
inc byte [sum]

next:
inc edi
loop count
cmp eax, length-buffer
jmp _start
mov eax, 3
mov ebx, 0
mov ecx, sum
mov edx, 2
int 80h

mov eax, 1
mov ebx, 0
int 80h


donc concernant le code, des fautes que j'ai trouvé déjà et dites moi si j'ai juste :

section .data

buffer db 0, 0, 0, 0, 0
length equ $-buffer
sum db '0', 10

section .text

global _start
_start :

mov eax, 3
mov ebx, 1
mov ecx, buffer
mov edx, length
int 80h

mov edi, buffer
mov eax, 0

count:
cmp word [edi], 'A'
jb next
cmp word [edi], 'Z'
ja next
inc byte [sum]

next:
inc edi
add eax, 1
cmp eax, length
jne count

mov eax, 3
mov ebx, 0
mov ecx, sum
mov edx, 2
int 80h

mov eax, 1
mov ebx, 0
int 80h


et là normalement sa devrait marcher, mais je suis pas sûr d'avoir tout fait correctement, une seconde opinion serait apprécier ! :)

Merci d'avance pour ceux qui me liront et j'espère avoir des réponses !
A voir également:

2 réponses

dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
10 juin 2013 à 16:24
Up, quand je test le programme sa me retourne 0 en somme même si je met les lettres en majiscule
0
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
10 juin 2013 à 16:25
Aussi, à la fin il y a quelque chose que j'avais oublié de corriger :
mov eax, 4
mov ebx, 1
mov ecx, sum
mov edx, 2
int 80h
0