Bonjour à tous ,
je commence les challenges du site ProjectEuler , en asm ...
Là je dois trouver la somme de tout les multiples de 3 et 5 en dessous de 1000:
Voici mon programme
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 extern printf section .text global main main: mov ecx,3 mov esi,3 mov edi,5 xor ebx,ebx ; sum boucle: mov eax,ecx xor edx,edx div esi test edx,edx je yes mov eax,ecx xor edx,edx div edi test edx,edx jne no yes: add ebx,ecx no: inc ecx cmp ecx,1000 jne boucle finboucle: leave ret
Cependant j'ai une erreur de segmentation , elle apparait dans le "no" lorsque j'incrémente ecx , je ne comprends vraiment pas pourquoi ...
Merci de votre aide d'avance !
EDIT : finalement ça venait du "leave" et "ret" qui servent en fait à quitter une fonction et non le programme , si j'ai bien compris .
je les ai remplacés par
Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 mov eax,1 mov ebx,0 int 0x80
Partager