在MIPS中查找字符串的字符

时间:2013-01-24 09:27:30

标签: assembly mips spim

如何在用户输入的字符串中找到MIPS中已知长度的特定字符?我已经看过SO以及许多其他网站,但是,似乎没有任何一个可以从根本上解释如何操纵用户输入的数据。

这是我到目前为止所拥有的:

A_string: 
.space 11
buffer:
asciiz"Is this inputed string 10 chars long?"
main: 

la $a0, buffer
li $v0, 4
syscall

li $v0, 8
la $a0, A_string
li $a1, 11
syscall

1 个答案:

答案 0 :(得分:4)

您必须遍历读取缓冲区以查找所需的特定字符。

例如,假设您要在输入数据中找到字符'x',并假设此代码段放在代码之后,因此$a1已经读取了最大字符数。您必须从缓冲区的开头开始并迭代,直到找到您期望的字符或者遍历整个缓冲区:

  xor $a0, $a0, $a0
search:  
  lbu $a2, A_string($a0)
  beq $a2, 'x', found    # We are looking for character 'x'
  addiu $a0, $a0, 1
  bne $a0, $a1, search
not_found:
    # Code here is executed if the character is not found
    b done
found:
    # Code here is executed if the character is found
done: