Division en assembleur

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

2 réponses

Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
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
Messages postés
4
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
22 décembre 2009

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