L'utilisation de la virgule flottante instructions pour obtenir des résultats en décimal
Salut, je suis à coder un petit programme en MIPS qui divisent 2 entre 9 et afficher le résultat.C'est le code
li $t1, 2
li $t2, 9
li $v0, 2
div $t0,$t2,$t1
move $a0,$t0
syscall
(ce n'est pas le code complet, juste la section de la manipulation, de la division des
Donc, 2 /9 est 0.2222222222222222
Mais quand je le lance je ne reçois 0.0
Comment je montre le résultat vrai (0.2222222222222222)?
J'ai été dit que je suis à l'aide d'entiers à la place de la virgule flottante, que je dois utiliser la virgule flottante instructions pour obtenir des résultats en décimal. Que je devrait ressembler la div.x instruction, mais la div.x n'est pas un opérateur reconnu.
Donc, je suis à peu près dans le vide. Je ne comprends pas quoi faire.
Quelqu'un pourrait-il poster le code pour afficher le résultat en virgule flottante?
Merci d'avance.
N'est pas assez bien expliquer
Vous devriez envisager ce marquage comme devoir à la maison, puisque je ne peux pas penser à une autre raison de travailler avec MIPS.
Si vous devez expliquer à votre question mieux, merci d'éditer votre question précédente au lieu d'en ouvrir un nouveau. Si vous êtes à la recherche pour une meilleure réponse, donnez-lui un peu de temps. Re-poser des questions n'est pas la bonne façon d'obtenir des réponses.
J'ai fusionné vos 3 questions dans juste un. Merci de ne pas reposter la même question encore et encore (au moins 2 d'entre eux sont presque identiques.)
OriginalL'auteur Ashir | 2011-06-29
Vous devez vous connecter pour publier un commentaire.
Ok, après une longue essaie et erreur le droit d'imprimer le résultat est:
Set 2 floating points registres à l'aide de pseudo li.s (Merci à Paul R pour me diriger dans la bonne direction)
Évidemment, préparation à l'impression d'un flotteur
À la division au lieu de
div $t0,$t2,$t1
que je devrais utiliseret au lieu de
move $a0,$t0
je devrais justeIl n'est pas nécessaire pour se déplacer, div.s imprime out le résultat à la fois, donc il n'y a pas de réel besoin de déplacer le contenu de $f12 dans $a0 pour l'impression de son contenu.
C'est une véritable honte que mars n'a pas implment le pseudo li.s. J'ai dû l'essayer sur PCSPIM...
Le code final est
Lorsque vous l'exécutez, vous aurez 0.22222222, le vrai résultat de la division 2 entre 9.
OriginalL'auteur Ashir
C'est un entier de la division de l'instruction, de sorte
2 /9 = 0
est le résultat correct. Essayez par exemple27 /9
et vous devriez obtenir un résultat de 3.Vous devez utiliser virgule flottante au lieu de integer.
Pour charger une valeur à virgule flottante dans un registre que vous devez
l.s
- vous devriez vraiment passer du temps à lire les MIPS documentation avant d'aller beaucoup plus loin avec son affectation.vous avez probablement besoin de faire deux choses à ce point: (1) faire de la lecture de la MIPS et de MARS, de la documentation et (2) si quelque chose n'est pas encore clair puis après une ou plusieurs nouvelles questions ici AFIN détaillant toutes les questions spécifiques que vous avez encore.
OK - lire les docs attentivement, comprendre la différence entre les entiers et à virgule flottante instructions/données, de comprendre la différence entre immédiate des charges et des charges de la mémoire, et assurez-vous que vous comprenez les syscalls. Si vous prenez soin de tous les détails, alors il ne devrait pas être trop difficile de faire ce travail. Bonne chance !
OriginalL'auteur Paul R
Vous faites division entière. L'utilisation de la virgule flottante instructions pour obtenir des résultats en décimal. Regardez en haut de la div.x instruction.
OriginalL'auteur Jens Björnhager
Sans connaître l'ensemble des objectifs, peut-être, il suffit d'utiliser une commode entier raccourci: diviser pour 2 milliards de dollars par 9 et d'afficher avec un inséré artificiellement point décimal. Dans
C
, ce serait quelque chose commepourquoi ne pouvez-vous pas le faire? Est-ce devoirs?
Parce que plus tard, j'ai demander pour 2 numéros et j'ai besoin de les diviser aussi, donc il n'y a aucun moyen pour moi de savoir quels sont les numéros vont être divisés et donc je ne peux pas diviser par hasard milliards. À côté, comme je l'ai demander 2 nombres aléatoires, il n'y a pas de garantie que j'ai à les diviser et obtenir pour résultat un nombre à virgule...
OriginalL'auteur wallyk