如何将用户输入与预设字符进行比较以查看它们是否相同?

How do I compare user input to a preset character to see if they are the same?

我正在尝试找出一种方法来正确地获取我从用户那里获得的字符串作为输入,并将其与特定字符进行比较以查看它们是否相同。

我试过将我的用户输入与我的预设字符串进行比较,但无济于事。你可以看到我在我的代码中做了什么:

.data
userInput:      .space      4
pieceMessage:   .asciiz "\nSelect a piece (X/O): "
pieceX:     .asciiz "x"
.text

main:

    jal selectPiece

    li $v0, 10
    syscall

    selectPiece:
#Display prompt
li      $v0, 4
la      $a0, pieceMessage
syscall

#Enter your desired piece
move    $a0,$t2
li  $v0, 8
la  $a0, userInput
li  $a1, 10
syscall

#Compare
la  $s2, pieceX
move    $t2, $s2
la  $s3, userInput
move    $t3, $s3
bne $t2,$t3,selectPiece

jr $ra

预期的结果是,当用户正好输入"x"时,他们应该可以继续,但如果他们输入任何其他内容,它将再次调用selectPiece函数再次询问他们。但是,即使我输入 "x",它仍然认为它们不相同。我不太确定我遗漏了哪些部分,因为如果我用另一个 userInput 替换 pieceX,它会给我预期的结果,所以我知道它正确地存储了它们,但是如果我将 userInput 与 pieceX 进行比较,比较似乎永远不会成功.

你的指示

bne $t2,$t3,selectPiece

比较$t2$t3,它们是字符串userInput和`pieceX``的地址,显然总是不同的。

你想要的是比较这些地址指向什么。比较之前应该有某种负载。

#Compare
la     $s2, pieceX
lb     $t2, ($s2)  ; mem[$s2] -> $t2
la     $s3, userInput
lb     $t3, ($s3)  ; mem[$s3] -> $t3
bne    $t2,$t3,selectPiece