Я пытаюсь создать цикл, который будет добавлять введенные пользователем целые числа в массив, пока он не заполнит массив. Каждый раз, когда я вводил значение, QTSPIM выдает 268501016, которое, как я полагаю, является некоторым случайным значением, хранящимся в регистре.
Чтобы проверить, проходит ли моя программа весь цикл, я добавил вызов строки ascii, когда программа достигла части ветки моего beq. Программа казалась ветвящейся, даже если значения не были (по крайней мере, в моем понимании) равными.
.data
array1: .space 24
str1: .ascii "Type in numbers:"
str2: .ascii "Reached Terminate"
.text
main:
li $t2, 5
li $t3, 0
loop1:
beq $t3, $t2, terminate #branch if equal
la $a0, str1
syscall
ori $v0, $0, 5 #instruction to store user input in v0
syscall #get user input and store it in v0
la $t4, array1 #load the address of the array
addu $t0, $0, $v0 #add v0 (our user input) to $t0
sw 0($t4), t0 #stores the value in $t4 to our array
addi $t3, $t3, 1 #add 1 to t3 (incrementing the counter)
addi $t4, $t4, 4 $add 4 to increment the array 4 bits to the next array slot
jal loop1
terminate:
la $a2, str2 #load the string to check when the program reaches terminate
syscall
ori $v0, $0, 10 # end the program
syscall
Единственное, что я могу думать, это то, что мой вызов перехода не возвращается к loop1, но если это так, я не знаю, как это исправить.
Это 32-битный код MIPS.