2009-11-30 6 views
0

En utilisant l'assemblage MIPS si je demande à un utilisateur d'entrer un entier, comment puis-je prendre cet entier et le décomposer en ses parties requises?Problème d'un nombre entier dans l'assemblage MIPS

Exemple:

    # User inputs a number 
li $v0, 5  # read value of n 
    syscall 

je puis stocker la valeur v0 $ dans un registre temporaire, par exemple t0 $, et la nécessité de le casser dans chaque partie qui le rend vers le haut. Donc, 308 doit être divisé en: 3, 0 et 8. J'ai besoin de faire ceci pour que je puisse ensuite mettre chacune de ces parties en carré et les ajouter ensemble.

La valeur d'entrée de l'utilisateur doit être entrée en tant qu'entier.

grâce, rmn

Répondre

1

Ceci est la réponse @ Don, avec une touche

t0 $ contient l'entrée utilisateur. (asume unsigned)

li $t1,10 
DIVU $t0,$t1 //divide by 10 

mfhi $t2 //t2 contains the division result 
mflo $t3 //t3 containts the division remainder 

d'utiliser beq, bgt pour faire les comparaisons.

Une aide

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

2

division par 10, utiliser le reste pour obtenir la 8, si le quotient est non nul, diviser par dix fois et ensuite utiliser reste à au zéro, si le quotient est non nulle répéter.

+0

Cela est parfaitement logique. Je pensais totalement à cela. Merci pour l'aide. – ihtkwot