Haox85
Messages postés4Date d'inscriptionmardi 26 mai 2009StatutMembreDernière intervention22 décembre 2009
-
16 juin 2009 à 18:17
Haox85
Messages postés4Date d'inscriptionmardi 26 mai 2009StatutMembreDernière intervention22 décembre 2009
-
17 juin 2009 à 14:25
Bonsoir tout le monde,
J'aimerai savoir comment faire pour diviser un nombre en assembleur.
En réalité, j'ai une valeur sur 10 bits qui représente la moyenne de 8 conversions analogiques. Mon signal analogique varie de 0 à 4,5V. J'aimerai que la moyenne représente un pourcentage de ce signal.
Donc si j'ai une moyenne correspondant à 2,25V, j'aimerai qu'il devienne 50 en décimal et ainsi l'afficher sur deux 7 segments
ToutEnMasm
Messages postés591Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention13 décembre 20223 17 juin 2009 à 11:29
Se servir du fpu,
a titre d'exemple un proc qui extrait un pourcentage d'une valeur
attention aux types de nombres entrés,chose non précisé dans le message.
Les intrustions peuvent être différentes si on utilise des réels,...
Içi il s'agit d'entiers (integer)
Attention aussi à l'état de la pile fpu (null en sortie)
PourCent proc PRIVATE source:DWORD, percent:DWORD
; invoke PourCent,Xresolution,80 ;80 % de Xresolution
LOCAL var1:DWORD
mov var1, 100 ; to divide by 100
FINIT
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
Haox85
Messages postés4Date d'inscriptionmardi 26 mai 2009StatutMembreDernière intervention22 décembre 2009 17 juin 2009 à 14:25
Bonjour,
Merci de votre réponse.
Je ne sais pas vraiment comment appliquer votre méthode... (je suis encore un bleu en asm)
J'aimerai que la moyenne des conversions se trouvant sur 10 bits soit réduite en une valeur comprise entre 0x0 et 0x64 pour être afficher sur deux 7 segments. Mon résultat ne doit donc être un entier.
De plus, j'utilise un PIC18F2525 et je n'ai pas vu dans son datasheet une fonction fpu, ni même une instruction nommée fdiv...