Convertisseur Euro

Signaler
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012
-
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012
-
Bonjour,

J'ai écrit l'interface d'un convertisseur euro avec RadAsm (enfin il a presque tout fait )...
Je cherche comment convertir les montants de mes textbox en cliquant sur un des deux boutons (F->? ou ?->F)...

hEdit1 = francs
hEdit2 = Euros

Je patauge complet...

Merci...
à++

5 réponses

Messages postés
141
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
20 avril 2011

Salut,

Je suis un peu troublé par la question ...

La conversion est une simple règle de 3 :
euro = franc/6,55957 (ex : 6.55fr -> 1?)
franc = euro*6,55957 (ex : 1? -> 6.55fr)

Pour celà, on pourra utiliser les instructions fmul et fdiv qui permettent, respectivement, de multiplier et de diviser des flottants stockés dans la pile du FPU.
Ou alors utiliser imul et idiv en utilisant 6,55957*65536 comme coéfficient pour rester dans le domaine des entiers :
euro = ((429888 * franc) >> 16)

voili-voilà ....

La où je suis un peu troublé, c'est de voir que les gens se lancent dans des projets intégrants des interfaces graphiques, voir des problèmes complexes (résolution de sudoku récemment) sans même connaitre la base du calcul en asm (add sub mul ...) ...

Gentoo... que du bonheur ...
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012

Re

En fait, j'ai écrit un mini convertisseur en VB et en C mais il leur faut des DLL complémentaire, je trouve pas ça très satisfaisant.
J'ai réfléchit, et me suis dit que l'assembleur serait pas mal pour faire ça.

Le calcul euro n'a rien de complexe je sais :-)
Mais ça m'a donné envie de faire de l'asm...
J'aime bien avoir un projet pour commencer à apprendre un langage ...

Donc je devrais faire un truc comme ça :

euro     db 6.55957

   mov eax,euro
   fld hEdit2    fmul
   fistp hEdit1

J'ai hEdit2 qui pointe sur le textbox ? et hedit1 qui pointe sur le textbox F 

Hum, mais ça fonctionne pas
Messages postés
141
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
20 avril 2011

salut,

Dans ton exemple, tu charges "euro" dans le registre "eax", mais tu ne t'en sers pas.
( je ne connais pas l'équivalent de "db" pour stocker un "float" en Masn, mais en considérant que c'est "df" ;) ) je l'aurais plutot écrit comme celà :

**************************
euro   df   6.55957

fld    [euro];    // charge m32f dans ST(0)
fmul [hEdit2]; // multiplie m32f avec ST(0) et stock le résultat dans ST(0)
fst    [hEdit1]; // décharge ST(0) dans un m32f
**************************

Par contre, attention !
Mon exemple considère que hEdit1 et hEdit2 sont des pointeurs vers des variables de type FLOAT en mémoire.

Si ces références (hEdit1 et hEdit2) sont des références vers les textBox, il faut extraire les valeurs FLOAT de ces textBox ... et ça, ça dépasse mes connaissance car je suis développeur sous linux/unix ... et je ne maitrise absolument pas la gestion des objets microsoftiens ;) (d'où ma reflexion sur la complexité du programme ;) ).
Essai de passer en référence à la fonction de ta dll non pas les refs vers les textBoxs, mais directement les VALEURS FLOAT dans la pile des paramètres. Ainsi, il te suffira de remplacer "hEdit1" par "ESP+4" et "hEdit2" par "ESP+8" dans l'exemple.

dune2.

Gentoo... que du bonheur ...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
VB, il faut des DLLs, évident c'est de l'interprété donc on passe le sujet.

En C absolument non:
- GetWindowText()
- atof()
- calcul donné plus haut
- sprintf()
- SetWindowText
et tu obtiens un exe indépendant, si pas le cas tu changes illico de compilo pour un correct.

En asm je mets toujours les constantes réelles en format hexa
f32  DD  hexa32ICI
f64  DQ  hexa64ICI
et va tip top. VC++ pratique d'ailleurs ainsi en interne.

Petit outil pour obtenir ces constantes:
http://www.cppfrance.com/code.aspx?ID=41170
C'est fait pour bosser en SSE mais adaptable FPU en qlqs minutes.

ciao...
BruNews, MVP VC++
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012

Merci pour ces pistes, je vais voir tout ça et vous tiens au courant...
à++