比较 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
我正在尝试制作一个简单的 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