begin process at 2010 02 09 21:15:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Newbii

 > 

Tronquer un nombre


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tronquer un nombre

lundi 6 septembre 2004 à 08:45:38 | Tronquer un nombre

leclair2000

Bonjour!

J'aimerais savoir comment on doit s'y prendre pour tronquer un nombre en assembleur?

ex : 5.12345 -> 5.12

Merci d'avance
lundi 6 septembre 2004 à 09:16:39 | Re : Tronquer un nombre

ToutEnMasm

Salut,
une fois le nombre transformé en caracteres ascii , chercher le point ,compter le nombre de décimales voulues ,rajouter le zero de bout de chaine.
ToutEnMasm
lundi 6 septembre 2004 à 23:47:17 | Re : Tronquer un nombre

CoreBreaker

Si ton nombre est en virgule fixe dans un entier comme ceci:
num dd 123512345

pour représenter le nombre 1235.12345 avec 5 chiffres après la virgule, il suffit de faire:
num / 100000 * 100000
ou num - (num modulo 10000)
ainsi:
mov ebx, 100000
mov eax, [num]
div eax, ebx
mul ebx

ou
mov ebx, 100000
mov eax, [num]
mov edx, 0
div ebx ; le résultat du modulo est dans edx
mov eax, [num]
sub eax, edx


Si ton nombre est en bcd compacté ainsi:
num db 45h, 23h, 51h, 23h, 01h

il suffit de placer des zéros ainsi
mov word ptr [num], 0
and byte ptr [num+2], 0F0h


Si maintenant tu utilise le fpu, ainsi
num dd 1235.12345
res dd 0


Il suffit de faire ainsi:

; On modifie le mot de controle
; pour activer la troncature lors d'un FRNDINT
fldcw word ptr [res]
or byte ptr [res], 0Ch
fstcw word ptr [res]

fld [num]
frndint
fstp [res]


Core Breaker
mardi 7 septembre 2004 à 09:57:42 | Re : Tronquer un nombre

leclair2000

C'est cool,

Mais en fait, je me suis mal exprimé et je m'en excuse!

En fait, je dois trouver un algoritme faisable en assembleur pour convertir un nombre en un nombre à deux chiffres significatifs et j'ai vraiment aucune idée...
mardi 7 septembre 2004 à 11:43:42 | Re : Tronquer un nombre

BruNews

Administrateur CodeS-SourceS
multiplie par 100
frndint
divise 100

ciao...
BruNews, Admin CS, MVP VC++
mardi 7 septembre 2004 à 22:43:47 | Re : Tronquer un nombre

CoreBreaker

Réponse acceptée !
Je suppose donc que tu veux dire que tu veux 2 chiffres significatifs après la virgule.

Tu peux faire ta tronquature à 2 décimales en virgule fixe avec l'exemple que je t'ai donné, c'est à dire avec une précision de 5 décimales.
Il suffit de reprendre l'exemple que je t'ai donné mais de changer le diviseur. En effet, l'exemple que j'ai donné est une troncature à l'unité, pour obtenir une troncature à 2 décimales avec un diviseur de 1000 (= 100000 / 100)
mov ebx, 1000
mov eax, [num]
mov edx, 0
div ebx ; le résultat du modulo est dans edx
mov eax, [num]
sub eax, edx


Avec le fpu, la troncature à 2 décimales donne:
num dd 1235.12345
res dd 0

...

; On modifie le mot de controle
; pour activer la troncature lors d'un FRNDINT
fldcw word ptr [res]
or byte ptr [res], 0Ch
fstcw word ptr [res]

mov [res], 100.0
fld [res]
fld st
fld [num]
fmul
frndint
fdivr
fstp [res]


Core Breaker


Cette discussion est classée dans : nombre, tronquer


Répondre à ce message

Sujets en rapport avec ce message

petit problême FPU [ par prunkdump ] Bonjours, voilà je voudrais savoir comment afficher un nombre à vigule flottante lorsqu'il est en mémoire. Plus simplement comment convertir un nombre conversion de nombre [ par jolindji ] bonjour a tous... j'ai besoin d'un petit programme qui effectuerai la conversion d'un nombre entré au clavier en base 2,8,10,16ou quelque choes qui y Comment convertir une chaine de caractere en nombre [ par davidv ] Voila,comment une chaine de caractere "12" par exemplepeut elle etre convertie en nombre 12.merci a tousdavidV GENERATUER NOMBRE ALEATOIRE EN ASM [ par fser ] | -= Fr@nçois =- | (cliquez pour m'envoyer un mail)mon siteMERCI DE FAIRE PARVENIR UN PROGRAMME EN ASSEMBLEUR POUR 68 HC 11 POUR GENER Avez-vous des algorithmes pour la génération de nombre aléatoire? [ par Rigel Io ] Salut, ma question est donc assez simple je voudrai seuleument savoir comment générer des nombres aléatoires. Je voudrai savoir car à chaque fois que Aide nombre en asm 8086 16 bits [ par Maureka ] je suis debutant en asm intel 16 bits.j'ai un projet à réaliser et cela consiste à faire un programme qui affiche la liste des nombres premiers compri Probleme nombre signe et non signe [ par Crackshoot ] Voila je voudrais cree un tit programme qui permet d'additionner des nombre negatif et posif mais je sais pas de quel maniere procede, j'arrive qu'a l nombre aléatoire en asm 16f84 [ par sodhaine ] Bonjour,Je suis un newbie-moyen en assembleur/électronique; j'essaie de faire un dé électronique en assembleur 16f84 (avec affichage sur écran LCD) e [NEWBIE] Petit Probleme ! Aidez moi ! [ par xaminou ] Voila , jaimerai cree une fonction qui calcule la suite suivante :Xn+1=Xn + (Xn2 or 5) qui prend en paramètre (dans la pile) l'adresse d'un nombre Xn Afficher un nombre [ par MaxSoldier ] Bonjours, je voudrais afficher un nombre mais j'ai toujours des erreur : J'ai donc 2 questions : Comment déclarer une variable qui contiendra des nomb


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales