2010-09-14 8 views
0

Je rencontre un problème MIPS ici. Ce que j'essaie de faire, c'est que l'utilisateur saisisse un nombre et que le programme épelle le nom de chaque chiffre du numéro. Ainsi, par exemple, l'utilisateur saisit 495 et la machine épelle "Four Nine Five". J'essaye de pousser chaque chiffre du nombre sur la pile, puis j'éteins chacun d'eux. Cependant, le nombre qui est supprimé n'est pas le nombre qui semble être poussé sur la pile. Je suis assez confus à ce sujet et j'espère que quelqu'un peut m'aider! La section importante de mon code est la suivante:Numéro de programmation MIPS

.text 
main: li $v0, 5 
syscall 
move $t0, $v0 
# store 10 into a register, because you can't divide by a constant 
li $s1, 10 

# now the input number is stored in $a0. Time to divide by 10 a few times, 
#and store each digit in a stack: 
DivideLoop: # $s3 = $s0/10 
div $t0, $s1 
# this is the remainder of the division 
mfhi $t3 
mflo $t2 
# move stack over by 4 
addi $sp, $sp, -4 
# store remainder in stack 
sw $t3, 0($sp) 
move $t0, $t2 
beq $t2, $zero, PrintLoop 
j DivideLoop 

# This loop prints each digit 
PrintLoop: 
# check if stack is empty. If so, branch to exit. 
beq $sp, $zero, Exit 
# put first word of stack into register $t0 
lw $t0, 0($sp) 
addi $sp, $sp, 4 

Répondre

0

Résolu. Spim sorti et xspim sont complètement stupides, buggy et faux. J'ai couru ce code à travers Mars, et ça s'est parfaitement déroulé. Je suis heureux maintenant :)