Я делаю программу в MIPS, которая будет сравнивать две строки, но я не могу получить доступ к нужным местам. У меня есть функция, которая вычисляет длину строк, которая работает нормально, но когда я пытаюсь использовать другую функцию (в данном случае это просто проверка, работает ли она), она говорит, что я обращаюсь к неправильной памяти. Я использую QTSpim для проверки. Работающая функция — это duzinaStringa, а не работающая — krajStringa. В настоящее время он просто пытается распечатать первый символ строки, поэтому я могу убедиться, что он работает.
.text
krajStringa:
li $v0,0
li $t0,0 #brojac1
move $t2, $a0 #adresa prvog
move $t3, $a1 #adresa drugog
lb $a0,0($t2)
li $v0,4
syscall
jr $ra
duzinaStringa:
move $t1,$a0
li $t0,0
petlja:
lb $t2,0($t1)
beqz $t2,krajDuzine
addi $t1,$t1,1
addi $t0,$t0,1
j petlja
krajDuzine:
addi $t0,$t0,-1
move $v0,$t0
jr $ra
main:
la $a0,str1
li $v0, 4
syscall
la $a0, arr
li $a1,200
li $v0, 8
syscall
la $a0,str1
li $v0, 4
syscall
la $a0, arr2
li $a1,200
li $v0, 8
syscall
la $a0,arr
jal duzinaStringa
move $a2,$v0
la $a0,arr2
jal duzinaStringa
move $a3,$v0
la $a0,arr
la $a1,arr2
jal krajStringa
li $v0,10
syscall
.data
arr: .space 200
arr2: .space 200
str1: .asciiz "Unesi string: \n"