比较 MIPS 中的两个字节

Comparing two bytes in MIPS

我正在尝试制作一个简单的 MIPS 程序。我想检查用户输入的字符是否是space。我在 .data 部分定义了一个变量 space。然后我接受用户输入,并使用 jal 调用我的函数来检查它。我将字节 space 加载到 $a0 中,然后想检查 $t0$a0 是否相同。如果它们不是 $t1 应该设置为 1 然后我使用 branch not equal to branch 到我的其他函数打印出对用户的响应。但是,无论我输入什么字符,它总是分支。我不确定我做错了什么。

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

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

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