MIPS 无法识别空



请原谅我这个问题的简单性,但我是MIPS的新手,并且遇到了一个奇怪的错误:

.data
myString: .asciiz "P5"

.text

li $v0 4
la $a0, myString
newLoop:
    syscall
    addi $a0, $a0, 1
    beq $a0, $zero, done
    j newLoop
done:
    li $v0, 10
    syscall

我的程序永远不会终止,尽管在myString的末尾有一个空字符(正如我从其他帖子中收集到的,相当于$zero)。我本以为 $a 0 会指向"P",然后指向"5",然后指向"\0",然后跳转到完成并终止。

谢谢你的眼睛!

您与零进行比较的是地址,而不是该地址的值。你需要这样的东西:

lbu $t0,($a0)       # load the byte pointed to by $a0
beq $t0,$zero,done

相关内容

  • 没有找到相关文章

最新更新