MIPS使用分支时尝试执行非指令

时间:2018-03-24 01:52:34

标签: mips32 spim

有人可以帮我弄清楚是什么原因导致我的程序显示尝试在0x00400140执行非指令,当我取消注释beqz行时。如果我保持它评论我的程序运行得很好,但就像我取消注释它它在随机时间显示错误(即有时在5秒后,有时在10秒后,等)。 (该程序基本上是一个计时器,我使用beqz只能每秒打印一次)

非常感谢任何帮助!

主:

addi $t0, $zero, 60             # stores 60 in $t0
div $s0, $t0                    # divides total time by 60

mflo $s1                    # stores minutes in $s1
mfhi $s2                    # stores seconds in $s2

#beqz $s4, skip
#nop

move $s3, $ra                   # stores $ra in $s3 

move $a0, $s1                   # stores minute value in $a0
jal printToAscii                # calls function to print minute

la $a0, colon                   # loads colon address in $a0
jal printColon                  # calls function to print colon

move $a0, $s2                   # stores second value in $a0
jal printToAscii                # calls function to print second

jal EraseLine

move $ra, $s3                   # restores $ra
addi $s4, $zero, 0

跳过:

j main
nop

1 个答案:

答案 0 :(得分:0)

找到解决方案,我的异常处理程序一直跳过该行,因此j主线被跳过。