vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
8 sept. 2004 à 20:34
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
18 sept. 2004 à 18:34
Je fait un mul, donc j'obtiens un nombre en 2 parties dans eax et edx, soit n sur 64 bits.
J'aimerais savoir comment je peux faire pour obtenir n % x et n / x
Merci
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 18 sept. 2004 à 18:34
Je ne sais pas si vous aviez bien compris mon poblème...
En fait l'instruction div suffit puisqu'elle attend un dividende sur 64 bits (edx:eax), et je pensais que c'était 32
Il suffit donc de faire
ToutEnMasm
Messages postés587Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 8 sept. 2004 à 22:16
Salut,
Comme un pourcentage normal
eax et edx doivent rester inchanger
mov ecx,100
div ecx
mov ecx,N% ;extrait N% de eax:edx initial
mul ecx
;;;;;le tour est joué,mais le reste est perdu
mais on peut aussi utiliser le FPU,masm32 fournit le proc suivant
sur 32 bits
PourCent proc source:DWORD, percent:DWORD
; invoke PourCent,Xresolution,80 ;80 % de Xresolution
LOCAL var1:DWORD
mov var1, 100 ; to divide by 100
FINIT ; l'instruction qui manque dans lib masm32
fild source ; load source integer
fild var1 ; load 100
fdiv ; divide source by 100
fild percent ; load required percentage
fmul ; multiply 1% by required percentage
fist var1 ; store result in variable
mov eax, var1