function:
la $s0, array1 # loads address of array1 into $s0
lw $t8, ($s0) # loads word contained in $s0 into $t8
la $s1, array2 # loads address of array2 into $s1
lw $t9, ($s1) # loads word contained in $s1 into $t9
beq $t8, $t9, count # if first element of arrays is equal --> count
j end
count:
la $t7, counter # loads address of count into $t7
lw $t3, ($t7) # loads word contained in $t7 into $t3
addi $t3, $t3, 1 # increments count by 1
sw $t3, counter # now count var contains 1
printcount:
li $v0, 4 # print string syscall code
la $a0, prompt3 # prints "number of same elements: "
syscall
la $t6, counter # loads address of count into $t6
lw $t5, ($t6) # loads word contained in $t6 into $t5
li $v0, 1 # print integer syscall code
move $a0, $t5 # move integer to be printed into $a0
syscall
end:
li $v0, 10 # system code halt
syscall
Привета, в этом разделе программы предполагается сравнить первый элемент из двух массивов (которые пользователь введенного, я подтвердил, что массивы хранится правильно), и если эти элементы равны, «счетчик» будет увеличен на 1 и напечатан, чтобы я знал, правильно ли он работает.MIPS: сравнение первого элемента из двух массивов
Проблема в том, что она всегда печатает '1', независимо от того, равны или не равны два элемента. Что может быть причиной этого?
Вы можете использовать 'count' в качестве метки кода и как элемент данных - это на самом деле не может быть и другое. –
спасибо, я скопировал код неправильно. Должен быть правильный код сейчас. – DjokovicFan
забыл добавить условие, если два не были равны. Добавлен. – DjokovicFan