Проблема здесь:
beq $3,$t3,Exit
$3
- это регистр ;это , а не значение 3. Это относится к содержимому регистра $3
, который на самом деле $v1
, который содержит значение 0, потому что вы ничего там не поместили.Таким образом, вместо сравнения со значением 3 вы сравниваете с 0. (На самом деле это не бесконечный цикл, поскольку $t3
в конечном итоге обернется до 0, но вы поняли.)
MIPSотсутствует инструкция для сравнения с немедленной, поэтому вам нужно сначала загрузить значение 3 в регистр.
Добавьте эту строку перед циклом, потому что вам нужно загрузить значение только один раз:
li $t4, 3
И измените свое сравнение на это:
beq $t4, $t3, Exit
Это выведет вас из цикла.Затем ваша программа напечатает msg1 три раза и выйдет, что, я подозреваю, не то, что вам нужно, но, надеюсь, это позволит вам продолжить работу.