Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试在 MIPS 中显示小数的二进制表示。但是这个程序陷入了无限循环。我无法弄清楚这个问题,所以请告诉我我做错了什么,这个程序对于查找数字的二进制表示是否有效。这是代码:
Loop: div $s0,$t1 # t1 is 2 mflo $s0 # storing quotient in s0 for division mfhi $s4 move $a0,$s4 li $v0,1 syscall beq $s4,0,Exit j Loop
问候
$s4是当前数字(余数)。你应该测试$s0为零。如果您在调试器/模拟器中单步执行代码,这应该很明显。另请注意,这将以相反的顺序打印数字。
$s4
$s0
如果只需要二进制转换,通常的方法就是使用移位。
装配中的分支伴随着它的危险。通常你会拖延你的程序,直到分支被采用。这样做是为了防止程序执行指令集中的下一条指令。
在你的情况下,我会尝试放置一个noop后beq指令。 SLL $0, $0, 0
noop
beq
SLL $0, $0, 0
noop是对程序没有任何影响或没有意义的指令。