我试图查看用户输入的输入对于第二个字符是否为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
答案 0 :(得分:1)
$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