Page 1 sur 1

Question de float (BIS apparement)

Publié : sam. 03/juin/2006 22:48
par SPH
Bon, ma question est toute bete :

Code : Tout sélectionner

xf.f = 14.222
x.l=0

!mov eax,[v_xf]
!mov [v_x],eax  ;  <== grrrr, raté !!

Debug x
Je cherche l'endroit où se trouve "14" (le nombre entier avant la virgule).
Merci de votre réponse :mad:

Publié : dim. 04/juin/2006 8:44
par tonton
faut une conversion avec une instruction x87 , mais un instruction sse fait l affaire plus simplement et rapidement.

xf.f = 14.222
x.l=0

!cvttss2si eax,[v_xf] ; (conversion du flotant en entier avec troncature des décimales)
!mov [v_x],eax ; <== pas grrrr, réussi !!

Debug x ; 14

Publié : dim. 04/juin/2006 12:13
par SPH
Tres grand merci tonton !
Comme quoi on en apprend tous les jours =) =) =)

Publié : mar. 06/juin/2006 11:38
par flaith
petite procedure ASM pour avoir la valeur absolue :

Code : Tout sélectionner

Procedure.l ABS_Asm(val.l)
  !   mov    eax, dword [p.v_val]
  !   test   eax, $80000000
  !   jz     Exit
  !   neg    eax
  !Exit:
  ProcedureReturn
EndProcedure