MIPS-将输入字符串与存储在内存中的字符串进行比较

MIPS-将输入字符串与存储在内存中的字符串进行比较,mips,string-comparison,Mips,String Comparison,我有一个用MIPS编写的功能字符串比较方法(用户输入的两个字符串的逐位比较),但我正在尝试更新它,以便将第二个输入与存储在内存中的输入进行比较。(如果这两个相等,我想在其他地方使用第一个字符串) 然而,我遇到了一些问题。这是我的密码: .data str1: .space 20 str2: .space 20 msg1:.asciiz "Please enter string (max 20 characters): " msg2: .asciiz "\n Please ente

我有一个用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
基本上,我希望做的是在一开始就申报

strToCompare: .asciiz "foo"
并更改我从中传递
str1
地址的位置

la $a0,str1             #pass address of str1 

有人知道为什么这样做行不通,或者有更好的方法来实现这一点吗?
非常感谢,如果我的格式设置被关闭,很抱歉,这是我第一次发布

您缺少输入方法(用于从用户输入数据的系统调用)在末尾添加的换行符(\n)。 您可以预处理输入字符串以删除该换行符,也可以将其添加到存储的字符串中。 后者很容易,只要改变就行了

strToCompare: .asciiz "foo"


谢谢你,我知道这是件相对简单的事情,只是不知道遗漏了什么!
strToCompare: .asciiz "foo"
strToCompare: .asciiz "foo\n"