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