2011-04-18 24 views
4

MIPS(ユーザの入力からの2つの文字列のビットごとの比較)で書かれた機能文字列比較メソッドがありますが、私はメモリに格納されているものと2番目の入力。 (それらの2つが等しい場合は、最初の文字列を別の場所に使用したい)。MIPS - メモリに格納されている文字列と入力文字列を比較します。

ただし、いくつかの問題が発生しています。ここに私のコードです:

.data 
str1: .space 20 
str2: .space 20 
msg1:.asciiz "Please enter string (max 20 characters): " 
msg2: .asciiz "\n Please enter method (max 20 chars): " 
msg3:.asciiz "\nSAME" 
msg4:.asciiz "\nNOT SAME" 


.text 
.globl main 

main: 
    li $v0,4  #loads msg1 
    la $a0,msg1 
    syscall 

    li $v0,8 
    la $a0,str1 
    addi $a1,$zero,20 
    syscall   #got string to manipulate 

    li $v0,4  #loads msg2 
    la $a0,msg2 
    syscall 

    li $v0,8 
    la $a0,str2 
    addi $a1,$zero,20 
    syscall   #got string method 

     la $a0,str1    #pass address of str1 
    la $a1,str2   #pass address of str2 
    jal methodComp  #call methodComp 

    beq $v0,$zero,ok #check result 
    li $v0,4 
    la $a0,msg4 
    syscall 
    j exit 
ok: 
    li $v0,4 
    la $a0,msg3 
    syscall 
exit: 
    li $v0,10 
    syscall 

methodComp: 
    add $t0,$zero,$zero 
    add $t1,$zero,$a0 
    add $t2,$zero,$a1 

loop: 
    lb $t3($t1)   #load a byte from each string 
    lb $t4($t2) 
    beqz $t3,checkt2 #str1 end 
    beqz $t4,missmatch 
    slt $t5,$t3,$t4  #compare two bytes 
    bnez $t5,missmatch 
    addi $t1,$t1,1  #t1 points to the next byte of str1 
    addi $t2,$t2,1 
    j loop 

missmatch: 
    addi $v0,$zero,1 
    j endfunction 
checkt2: 
    bnez $t4,missmatch 
    add $v0,$zero,$zero 

endfunction: 
    jr $ra 

基本的に、私は何を期待していたことはbeginnning

strToCompare: .asciiz "foo" 

で宣言し、私は

la $a0,str1    #pass address of str1 

から str1のアドレスを渡す場所を変更しました
la $a0,strToCompare  #pass address of strToCompare 

これはうまくいかない理由、またはこれを実装するより良い方法を知っていますか? ありがとうございました。申し訳ありませんが、私の書式がオフの場合、これは私の初めての投稿です。

答えて

3

入力方法(ユーザーからのデータ入力に使用しているシステムコール)が末尾に追加されている改行文字(\ n)がありません。 入力文字列を前処理してその改行を削除するか、保存した文字列に追加することができます。 後者は簡単で、ただありがとう

strToCompare: .asciiz "foo\n" 
+0

strToCompare: .asciiz "foo" 

を変更、私は欠けていたかを把握couldntの、それは比較的単純なものを知っていました! – zomgcopters