Langage :
C
Date ajout :
15/05/2007
Posté par
BruNews
[
Liste]
DateMAJ :
18/05/2007
Remarque :
__declspec(naked) DWORD __fastcall bnsumint(int inum)
{
__asm {
test ecx, ecx
mov [esp-4], ebx
jg short L2
jl short L1
xor eax, eax
ret 0
L1:
neg ecx
L2:
xor ebx, ebx
L3:
mov eax, -858993459
mul ecx
mov eax, edx
shr eax, 3
mov edx, ecx
lea ecx, [eax+eax*4]
add ecx, ecx
sub edx, ecx
add ebx, edx
mov ecx, eax
cmp ebx, 9
jbe short L4
sub ebx, 9
L4:
test eax, eax
jnz short L3
mov eax, ebx
mov ebx, [esp-4]
ret 0
}
}
EXEMPLE UTILISATION:
void __stdcall OnNbr(HWND hdlg)
{
int n, bok;
char szres[4];
n = GetDlgItemInt(hdlg, IDED_INT, &bok, 1);
if(!bok) MessageBox(hdlg, "ERREUR", "SumInt", 0x30);
szres[0] = bnsumint(n) + 48;
szres[1] = 0;
SetDlgItemText(hdlg, IDST_SUM, szres);
}