2009-12-02 5 views
1

J'essaie d'écrire un programme MIPS qui examinera un ensemble de dix nombres à un seul chiffre (positif, zéro ou négatif) pouvant être saisis par le terminal. Après avoir examiné les numéros , seuls les nombres négatifs (avec le signe approprié) ainsi que leur nombre doivent être sortis vers le terminal.Programme MIPS! J'ai besoin d'aide - je ne sais pas si je fais les choses correctement

EST en dessous de mon MIPS PROGRAMME

 .data 
prompt: .asciiz "Input Score: " 
     .align 2 
HR_Neg:  .asciiz "\n negative Scores: " 
     .align 2 
HR_Pos:  .asciiz "\n positive Scores: " 
     .align 2 
HR_Negsc:  .asciiz "\n Number of Negative Scores: " 
     .align 2 
HR_Posc: .asciiz "\n Number of positive Scores: " 
     .align 2 
HR_coma: .asciiz ", " 
     .align 2 
HR_brk:   .asciiz "\n\n" 
     .align 2 
NEg:  .space 10 
     .align 2 
Pos:  .space 10 
     .align 2 

     .globl main 
     .text 
main: 
     li $t0, 0 
     la $t1, Neg 
     li $t2, 0 
     la $t3, pos 
     li $t4, 0 
     li $t5, 0 
     li $t6, 0 

loop: 
     li $v0, 4 
     la $a0, prompt 
     syscall 

     li $v0, 5 
     syscall 

     bltu $v0, 50, else 
     sw $v0, 0($t1) 
     addi $t1, $t1, 4 
     addi $t0, $t0, 1 
     b l_end 

else: 
     sw $v0, 0($t3) 
     addi $t3, $t3, 4 
     addi $t2, $t2, 1 

l_end: 
     addi $t4, $t4, 1 
     bltu $t4, 15, loop 

#output counts 
     li $v0, 4 
     la $a0, HR_negc 
     syscall 

     la $v0, 1 
     add $a0, $t0, 0 
     syscall 

     li $v0, 4 
     la $a0, HR_posc 
     syscall 

     la $v0, 1 
     add $a0, $t2, 0 
     syscall 

#output neg scores 
     li $v0, 4 
     la $a0, HR_neg 
     syscall 

     la $t1, Neg 
     lw $a0, 0($t1) 
     li $v0, 1 
+1

... Quel est le problème? Est-ce que ça marche? Cela donne-t-il la sortie attendue? Si non, que se passe-t-il? Quel message d'erreur sort-il? Quel cas de test exécutez-vous qui ne produit pas un résultat attendu? – FrustratedWithFormsDesigner

+0

J'ai appris MIPS pour un cours à l'université, incroyable combien je peux me rappeler –

+0

Non, il n'a pas fonctionné. Et il semble que je fasse quelque chose de mal. J'ai besoin de quelqu'un pour le regarder et laissez-moi savoir ce qui ne va pas avec mon programme ... – kingcross9999999

Répondre

1

S'il vous plaît mettre des commentaires dans votre code pour ceux d'entre nous qui sont intéressés peuvent essayer de comprendre ce qu'il essaie de faire.

Aussi, le code ci-dessus a une faute de frappe en ce que vous avez une étiquette HR_Negsc et une référence à HR_negc, ce qui me fait penser que quand vous dites "ça n'a pas fonctionné" vous ne pouvez pas courir n'a pas lié!

Étape 1 - Mettre quelques commentaires, en particulier autour des syscalls

Étape 2 - Obtenir l'utiliser pour exécuter

Étape 3 - Maintenant, vous pouvez commencer à déboguer

Il y a quelques domaines que vous pourriez regarder:

Combien de place est .space en vous donnant, est-ce suffisant?

L'instruction bltu que vous utilisez pour évaluer + ve et -ve est-elle correcte?

Comment votre programme se termine-il semble que certains éléments manquent?

COMMENTAIRE PLUS TARD:

Hey, de la description du problème de one of your previous questions je soupçonne que certains du code que vous avez écrit a ensuite survécu dans ce projet. Je fais référence aux numéros 15 et 50.

Vous savez, il est très difficile de fournir une aide utile lorsque nous devons deviner ce que vous savez et ce que vous ne savez pas. Plus la question est détaillée, plus la réponse peut être dirigée. Et certains des conseils en réponse à cette autre question s'appliquent évidemment encore.

Questions connexes