我正在尝试编写一个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
答案 0 :(得分:1)
请在您的代码中加入一些评论,以便我们这些感兴趣的人可以尝试了解它的目的。
此外,上面的代码有一个错字,你有一个标签HR_Negsc和对HR_negc的引用,这让我觉得,当你说“它没有运行”你实际上意味着它无法运行,因为它没有没关系!
第1步 - 发表一些评论,尤其是围绕系统调用
第2步 - 让它实际执行
第3步 - 现在您可以开始调试
您可以查看以下几个方面:
多少空间.space给你,这还够吗?
您正在使用的bltu指令评估+ ve和-ve是否正确?
你的节目如何结束 - 看起来有些东西丢失了?
稍后评论:
嘿,从one of your previous questions的问题描述中我怀疑你编写的一些代码已经存活到这个项目中。我指的是数字15和50。
你知道,当我们猜到你知道多少并且不知道时,很难提供有用的帮助。问题越详细,答案就越有针对性。回答其他问题的一些建议显然仍然适用。