2015-10-15 85 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