2015-10-15 57 views
0

我试图做一个简单的MIPS程序工作。我想检查用户输入的字符是否是空格。我在我的.data部分中定义了变量space。然后,我采取用户输入,并使用jal来调用我的功能,应该检查这一点。我将字节space加载到$a0中,然后要检查$t0$a0是否相同。如果他们不是$t1应该设置为1然后我使用分支不等于分支到我的其他功能打印出响应给用户。然而,无论我输入什么字符,它总是分支。我不确定我做错了什么。在MIPS中比较两个字节

space: .byte ' ' 

main: 
    #Getting user input 
    li $v0,8 
    la $a0,str1 
    li $a1, 20 
    syscall 
    jal is_space 

    #Indicate the end of main function 
    li $v0,10 
    syscall 
is_space: 
    add $t0, $a0, $zero 
    lb $a0, space 
    sltu $t1, $a0, $t0 
    bne $t1, $zero, spaceinput 
+1

我假设你的'syscall'是SPIM使用的那种:'syscall'用'$ v0 == 8'读取一个*字符串*。如果你想比较该字符串的一个字节,你需要将它加载到一个寄存器中。 – EOF

回答

2

您甚至忘记访问已读取的字符。它放在str1的缓冲区中。另外,如果你想检查平等,为什么你使用sltu?将空间存储在内存中也是一种浪费。

main: 
    #Getting user input 
    li $v0,8 
    la $a0,str1 
    li $a1, 20 
    syscall 
    lb $a0, ($a0) # fetch first character entered 
    jal is_space 

    #Indicate the end of main function 
    li $v0,10 
    syscall 
is_space: 
    li $t0, ' ' 
    beq $a0, $t0, spaceinput