Assembly MIPS分支问题
我在MIPS做一个项目;我们可以创造任何我们想要的东西,只要它符合一定的要求。无论如何,我选择了做一个琐碎的节目,虽然很难,但并非不可能。今天我的分支遇到了问题Assembly MIPS分支问题,assembly,mips,pcspim,Assembly,Mips,Pcspim,我在MIPS做一个项目;我们可以创造任何我们想要的东西,只要它符合一定的要求。无论如何,我选择了做一个琐碎的节目,虽然很难,但并非不可能。今天我的分支遇到了问题 incrEScore: add $t9, $t9, 1 #increment incr. counter add $t8, $t8, 1 #increment counter move $v0, $t8
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
出现的问题是,不是所有的问题都是运行它们的过程的等式和完全递增或递减的计数器,如果在任何时候有一个问题是错误的,eTally将立即转移到损失。这导致其他问题被切断/不运行,主菜单弹出。我试着用“blt”代替“bltu”,我也试着只用递增计数器代替递增和递减计数器,但发现这些都不能解决问题
代码几乎是1k行。
简单的部分是第165到299行。通过一些帮助解决了这个问题!Jester你是对的-$t8被初始化为0,而不是1,它把所有东西都扔掉了 这只是一个粗略的猜测,但是您是否解释了分支延迟槽?使用您的模拟器逐步检查代码,看看哪里出错了。这里有一些非常可疑的分支,比如第240行和第252行,由于v0是从t8初始化的,所以它们总是错误的。是的,$s5应该是第240行和第252行上的$t8所在的位置。
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