Я делаю проект в MIPS; мы могли создать все, что захотим, если это соответствовало определенным требованиям. Так или иначе, я решил сделать викторину, что было сложно, но не невозможно. Столкнулся с проблемой сегодня с моим ветвлением.
incrEScore:
add $t9, $t9, 1 #increment incr. counter
add $t8, $t8, 1 #increment counter
move $v0, $t8 #move to $v0
beq $v0, $s2, eQTwo #counter=2, question 2
beq $v0, $s3, eQThree #counter=3, question 3
beq $v0, $s4, eQFour #counter=4, question 4
beq $v0, $s5, eQFive #counter=5, question 5
bgt $v0, $t8, eTally #counter>5, eTally
decrEScore:
add $a3, $a3, 1 #increment decr. counter
add $t8, $t8, 1 #increment counter
move $v0, $t8 #move to $v0
beq $v0, $s2, eQTwo #counter=2, question 2
beq $v0, $s3, eQThree #counter=3, question 3
beq $v0, $s4, eQFour #counter=4, question 4
beq $v0, $s5, eQFive #counter=5, question 5
bgt $v0, $t8, eTally #counter>5, eTally
eTally:
beq $t9, $s5, eWin #if increment counter = 5, branch to Easy Win
bltu $a3, $s5, eLoss #if decrement counter < 5, branch to Easy Loss
Переменные, инициализированные в моей основной:
li $s0, 0 #init score
li $s1, 1 #constant; menu num; answer num
li $s2, 2 #constant; menu num; answer num
li $s3, 3 #constant; menu num; answer num
li $s4, 4 #constant; menu num; answer num
li $s5, 5 #constant; counter compare point
li $s6, 6 #constant
li $s7, 7 #constant
li $t0, 8 #constant
li $t1, 9 #constant
li $t2, 10 #constant; counter compare point
li $t3, 11 #constant
li $t4, 12 #constant
li $t5, 13 #constant
li $t6, 14 #constant
li $t7, 15 #constant; counter compare point
li $t8, 0 #question counter
li $t9, 0 #increment counter
li $a3, 0 #decrement counter
li $a1, 100 #constant
Проблема, которая возникает, заключается в том, что вместо того, чтобы все вопросы (это eQNums) выполнялись своим курсом, а счетчик полностью увеличивался или уменьшался, если в любой момент один вопрос неверен, eTally немедленно ответит на проигрыш. Это приводит к тому, что остальные вопросы отключаются/не запускаются, а главное меню снова появляется. Я попытался сделать «blt» вместо «bltu», а также попытался использовать только счетчик приращения вместо счетчиков приращения и уменьшения, но обнаружил, что ни один из них не решает проблему.
Код занимает почти тысячу строк, поэтому вот ссылка на полный исходный код. Легкая секция — это строки со 165 по 299.
v0
был инициализирован изt8
. - person Jester   schedule 14.04.2015