Si ton nombre est en virgule fixe dans un entier comme ceci:
num dd 123512345
pour représenter le nombre 1235.12345 avec 5 chiffres après la virgule, il suffit de faire:
num / 100000 * 100000
ou num - (num modulo 10000)
ainsi:
mov ebx, 100000
mov eax, [num]
div eax, ebx
mul ebx
ou
mov ebx, 100000
mov eax, [num]
mov edx, 0
div ebx ; le résultat du modulo est dans edx
mov eax, [num]
sub eax, edx
Si ton nombre est en bcd compacté ainsi:
num db 45h, 23h, 51h, 23h, 01h
il suffit de placer des zéros ainsi
mov word ptr [num], 0
and byte ptr [num+2], 0F0h
Si maintenant tu utilise le fpu, ainsi
num dd 1235.12345
res dd 0
Il suffit de faire ainsi:
; On modifie le mot de controle
; pour activer la troncature lors d'un FRNDINT
fldcw word ptr [res]
or byte ptr [res], 0Ch
fstcw word ptr [res]
fld [num]
frndint
fstp [res]
Core Breaker :)