MIPS-将输入字符串与存储在存储器中的一个字符串进行比较
|
我有一个用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
至
la $a0,strToCompare #pass address of strToCompare
有谁知道为什么这行不通,或者更好的方法来实现呢?
谢谢,很抱歉,如果我的格式已关闭,这是我第一次发布。
没有找到相关结果
已邀请:
1 个回复
奥李
至