2010-02-06 20 views
3

Dans mon code d'assemblage de mips, j'ai utilisé l'instruction multiple pour multiplier 2 grands nombres puisque le résultat ne pouvait pas tenir dans un registre. Cela signifie que le numéro est enregistré dans les registres spéciaux hi et lo. Mon problème est comment puis-je imprimer le résultat de la multiplication. Je peux accéder à hi et lo et les mettre dans d'autres registres (c'est-à-dire $ t0, $ t1), mais je ne connais pas de moyen de combiner les deux nombres pour imprimer le résultat. Merci.Comment est-ce que je peux imprimer un nombre plus grand que 32 bits dans l'assemblée de mips?

Répondre

3

(Cette réponse maintenue délibérément de haut niveau, car je suis sûr que personne ne nombre imprime dans l'assemblage de MIPS à moins qu'ils ne le font pour un devoir.)

Si vous ne me dérange pas l'obtenir en hexagone, ce n'est pas un problème; il suffit d'imprimer un mot en hexadécimal, puis le suivant. N'oubliez pas d'inclure les zéros principaux sur le deuxième mot! (En fait, je pense que spim, que je suppose que vous utilisez, ne peut imprimer qu'en base 10, donc même cela peut être une corvée).

Si vous le voulez en base 10, ce problème se dirige rapidement dans la catégorie que je qualifierais de «douleur-dans-le-cul». Dans la «vraie vie», je ne voudrais pas déranger; faire l'impression en C, un gars compilateur quelque part résolu tous ces problèmes pour vous. Pour les devoirs, écrivez vous-même une fonction qui divise l'entrée par 10 à plusieurs reprises et vous finirez par vous retrouver avec les chiffres à imprimer. Si Mips n'a pas une instruction de division de 64 bits (je ne pourrais pas vous le dire du haut de la tête), cela va être un problème assez amusant à résoudre.

-1

La solution pour imprimer le nombre divise réellement le nombre de façon répétée par 10 et récupère le reste de la division et le stocke dans une chaîne, puis le lit à l'envers. Mais le seul défi est de diviser le nombre de 64 bits si les mips32 ont seulement une division de 32 bits. Je trouve un moyen dans cette page:

https://www.codeproject.com/questions/714114/how-to-print-bit-in