MIPS如果没有输入声明

时间:2015-09-21 21:35:21

标签: assembly mips

我试图查看用户输入的输入对于第二个字符是否为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

1 个答案:

答案 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