我试图在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
此致
答案 0 :(得分:1)
$s4
是当前数字(余数)。你应该测试$s0
为零。如果您在调试器/模拟器中逐步执行代码,这应该是显而易见的。另请注意,这将以相反的顺序打印数字。
如果您只需要二进制转换,通常的方法是使用轮班。
答案 1 :(得分:0)
装配中的分支带来危害。通常你会停止你的程序直到分支被采取。这样做是为了防止程序执行指令集中的下一条指令。
在您的情况下,我会尝试在noop
指令后放置beq
。
SLL $0, $0, 0
noop
是一条对程序没有任何影响或没有任何意义的指令。