void additionne(int nb);
int main()
{
int i;
for(i=0; i<10; i++)
{
additionne (i);
}
return 0;
}
;Permet de faire appel à printf externe printf
section .data
;La chaîne passée à printf pour afficher notre addition cumulée (0xa = saut de ligne)
msg db 'Addition cumulée: %d',0xa, 0
;La variable qui mémorisera l'addition cumulée. Elle est égale à 0 au début
addition_cumulée dw 0
section .text
;On rend visible notre fonction additionne pour les fichiers externes
global additionne
;Fonction en convention cdecl
additionne:
push ebp
mov ebp, esp
push ecx
mov ecx, [addition_cumulée]
add ecx, [ebp + 8] ; On fait notre addition: nb + addition_cumulée
mov [addition_cumulee], ecx ; On met à jour addition_cumulée = addition_cumulée + nb
push ecx
push msg
call printf ; Équivalent de printf(msg, ecx). C'est un appel de type cdecl.
add esp, 8
pop ecx
leave
ret
nasm -f elf add.asm
gcc test.c add.o -o test
Addition cumulée: 0 Addition cumulée: 1 Addition cumulée: 3 Addition cumulée: 6 Addition cumulée: 10 Addition cumulée: 15 Addition cumulée: 21 Addition cumulée: 28 Addition cumulée: 36 Addition cumulée: 45
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.