2014-09-25 74 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和用戶的字符串與基準比較字符串的地址寫代碼迴路。

相關問題