Si ton nombre est en virgule fixe dans un entier comme ceci:
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 