我在编写一个返回常量0x80000的延迟循环时遇到问题。输出应该像Hello,world! 0 你好,世界! 1 你好,世界! 2 ... 但是当我运行我的程序时,终端并没有显示任何内容,即使我相信一个Hello,world!应该出现。我试图通过调试代码找出问题所在,但这似乎并没有帮助我。有关如何解决此问题的任何建议吗?
.ent getDelay
.text
.global getDelay
getDelay:
addi $sp, $sp, -1
sw $ra, 0($sp)
la $a0, helloStr
lw $a1, counter
jal printf
nop
lw $ra, 0($sp)
addi $sp, $sp, -1
lw $t0, ($a1)
addiu $t0, $t0,1
la $t1, counter
sw $t1, ($a1)
$v0 = 0x80000
jr $ra
.end getDelay
.data
helloStr: .asciiz "Hello, world %d\n"
counter: .word 100
答案 0 :(得分:0)
$sp
的倍数为4(字数)。
您应该使用addiu $sp, $sp, -4
和addiu $sp, $sp, 4
。$t0
,但随后存储$t1
。你不需要
我应该使用la $t1, counter
而不是sw $t1, ($a1)
sw $t0, ($a1)
。$v0 = 0x80000
不是指令,您可能需要li $v0,
0x80000
。