MIPS if 语句未被输入

MIPS if statement not being entered

我正在尝试查看用户输入的第二个字符是否为 0,例如,如果他们输入 "A0123",则该语句为真。我设法删除了等号,但是当我 运行 我的程序时,它没有进入应该检查第二个字符是否为 0 的分支。

在寄存器 $t2 中,我存储了用户的准确输入(带有换行符)。在 $s5 中,我还用换行符存储了 asciiz 字符串“0”。然后我删除用户输入的第一个字符。

出了什么问题,我该如何解决?

.data

zero: .asciiz "0\n"


la $s5, zero

addiu $t2,$t2,1     #remove equals sign
beq $t2, $s5, zero2      #referencing 0
beq $t2, $s6, one2
j exit2
zero2:
    move $t2, $t0
    j exit2

$s5 大概 $t2 是指针,它们永远不会相等。您应该比较它们指向的字符。你可以这样做:

la $s5, zero
lb $s5, ($s5)
lb $t3, 1($t2)
beq $t3, $s5, zero2

当然你并不真的需要zero这个字符串,你可以简单地使用立即数,比如:

lb $t3, 1($t2)
li $s5, '0'
beq $t3, $s5, zero2