Petit problême FPU

Signaler
Messages postés
33
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
19 avril 2004
-
Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
-
Bonjours, voilà je voudrais savoir comment afficher un nombre à vigule flottante lorsqu'il est en mémoire. Plus simplement comment convertir un nombre à virgule flottante en chaine ASCII.

Si quelqu'un pouvait également m'expliquer le fotionnement de l'instruction "fscale"

MERCI

1 réponse

Messages postés
540
Date d'inscription
dimanche 23 mars 2003
Statut
Membre
Dernière intervention
5 octobre 2007
1
Pour afficher des petites valeurs tu dois d'abord combien de décimales afficher par exemple pour 3 decimales tu fais:
mille dd 1000.0
...
fmul dword ptr [mille]
frndint                          ; Pour arrondir

Ensuite stocker sous forme d'entier par:
val dd 0
...
fistp dword ptr [val]

Ensuite tu n'as plus qu'à convertir un entier en ascii en mettant la virgule décimale au bon endroit.

Pour les plus grands nombre il faudra d'abord obtenir l'exposant en faisant:
fxtract

st(1)=exposant biaisé
st=mantisse
Tu pourras ensuite convertir l'exposant et la mantisse.

fscale est l'équivalant de l'instruction sar si st(1)<0 et équivalent à l'instruction shl ou sal si st(1)>0.
fscale effectue:
st=st * 2^st(1)


mais attention st(1) garde sa valeur il faut effectuer un fpop de la manière suivante:
fxch      st(1)
ffree     st
fincstp


Core Breaker :)