//On suppose que b>0 et on renvoie un nombre qui est toujours positif. __declspec(naked) int __fastcall mod3(int a,int b) { __asm { push ebp mov ebp, esp sub esp, __LOCAL_SIZE mov a,ecx; mov b,edx; } a%=b; __asm { mov eax,a; cmp eax,0; jge fin; add eax,b; fin: mov esp, ebp; pop ebp; ret; } } /* Pour des nombres positifs le temps d'exécution est quasiment identique à celui de l'opérateur % (la différence est imperceptible car les opérende ne passe pas par la pile). Mais pour un a négatif, on renvoie un nombre positif dans un temps à peine plus long. */