Division en assembleur

Messages postés
4
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 décembre 2009
- - Dernière réponse : Haox85
Messages postés
4
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 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

Merci de votre aide :)
Afficher la suite 

2 réponses

Messages postés
552
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
26 mars 2016
1
0
Merci
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


 ret
PourCent endp
Commenter la réponse de ToutEnMasm
Messages postés
4
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 décembre 2009
0
Merci
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...

Je ne sais vraiment pas comment faire.

Merci
Commenter la réponse de Haox85