MIPS计划!需要帮助 - 我不确定我是否做得对

时间:2009-12-02 03:07:50

标签: assembly mips

我正在尝试编写一个MIPS程序,该程序将检查十个单位数字的集合 (正,零或负)可以从终端输入。检查后 数字,只需要输出负数(带有适当的符号)及其数量 到终点站。

以下是我的MIPS计划

        .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 个答案:

答案 0 :(得分:1)

请在您的代码中加入一些评论,以便我们这些感兴趣的人可以尝试了解它的目的。

此外,上面的代码有一个错字,你有一个标签HR_Negsc和对HR_negc的引用,这让我觉得,当你说“它没有运行”你实际上意味着它无法运行,因为它没有没关系!

第1步 - 发表一些评论,尤其是围绕系统调用

第2步 - 让它实际执行

第3步 - 现在您可以开始调试

您可以查看以下几个方面:

多少空间.space给你,这还够吗?

您正在使用的bltu指令评估+ ve和-ve是否正确?

你的节目如何结束 - 看起来有些东西丢失了?

稍后评论:

嘿,从one of your previous questions的问题描述中我怀疑你编写的一些代码已经存活到这个项目中。我指的是数字15和50。

你知道,当我们猜到你知道多少并且不知道时,很难提供有用的帮助。问题越详细,答案就越有针对性。回答其他问题的一些建议显然仍然适用。