【问题标题】:MIPS program! need help- i m not sure if i m doing it rightMIPS程序!需要帮助-我不确定我是否做得对
【发布时间】:2009-12-02 03:07:49
【问题描述】:

我正在尝试编写一个 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

【问题讨论】:

  • ...有什么问题?它运行吗?它是否给出了预期的输出?如果没有,会发生什么?它输出什么错误信息?您运行的哪些测试用例未产生预期结果?
  • 我在大学的一门课程中学习了 MIPS,令人惊讶的是我记得这么少
  • 不,它没有运行。似乎我做错了什么。我需要有人看一下,让我知道我的程序出了什么问题...

标签: assembly mips


【解决方案1】:

请在您的代码中添加一些 cmets,以便我们这些有兴趣的人可以尝试了解它要做什么。

另外,上面的代码有一个错字,因为你有一个标签 HR_Negsc 和一个对 HR_negc 的引用,这让我觉得当你说“它没有运行”时,你实际上意味着它不能运行,因为它没有不要链接!

第 1 步 - 放入一些 cmets,尤其是在系统调用周围

第 2 步 - 让它实际执行

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

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

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

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

你的程序是如何结束的 - 看起来有些东西不见了?

稍后评论:

嘿,从one of your previous questions 的问题描述来看,我怀疑你当时写的一些代码已经在这个项目中幸存下来了。我指的是数字 15 和 50。

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

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2018-04-08
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多