MIPS:将用户输入字符串与内存中的字符串数组进行比较

时间:2014-09-25 15:24:39

标签: arrays string memory assembly mips

我是汇编语言的新手,我有一个我正在努力的项目。我不想要代码;我只是想确保我正确地思考这个问题所以我不会让自己疯狂地实施一个糟糕或不正确的错误方法。

问题可归纳为:

我们在内存中有一个字符串数组:

.data
animals:    .asciiz    "bear", "tiger", "gorilla", "horse", "dog"

我们想要获取用户的输入字符串并将其存储到str:

.data
animals:    .asciiz    "bear", "tiger", "gorilla", "horse", "dog"
str: .space  64    #user input stored here

然后我们想看看用户是否输入了内存中现有字符串中存在的内容。因此,如果用户要进入,"马"我们会回来"发现!"如果他们要进入"车库"我们将返回"未找到。"

实际上,我想我需要将输入字符串的每个字符(每个字节)与数组中每个字符串的相应字符(字节)进行比较。

我有两个主要问题:这是一个好方法/正确思考问题吗?我怎么能让程序识别出什么时候到达阵列中一个字符串的末尾并开始一个新的?

非常感谢您的回复。对不起,如果有任何不清楚或不好的问题,我很抱歉。我很难把头缠在装配上。

1 个答案:

答案 0 :(得分:1)

您需要知道每个animals字符串在内存中的起始位置。试试这个:

.data
animals:    
a0: .asciiz    "bear"
a1: .asciiz    "tiger"
a2: .asciiz    "gorilla"
a3: .asciiz    "horse"
a4: .asciiz    "dog"

# addrs is a list of the starting addresses for each of the strings
addrs: 
  .word a0
  .word a1
  .word a2
  .word a3
  .word a4
  .word 0

现在,您可以编写代码来遍历从addrs开始的每个地址,并将用户的字符串与参考字符串进行比较。