比较MIPS中的两个字节

时间:2015-10-15 15:10:27

标签: assembly branch mips

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

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

答案 0 :(得分: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