2014-09-25 91 views
1

我对汇编语言很陌生,并且有一个我正在努力的项目。我不想要代码;我只是想确保我正确地思考这个问题,所以我不会让自己疯狂地执行一个错误的或错误的方法。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

您需要知道每个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和用户的字符串与基准比较字符串的地址写代码回路。

相关问题