MIPS程序集中的十进制到二进制转换

时间:2012-11-20 16:50:01

标签: assembly mips division

我试图在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

此致

2 个答案:

答案 0 :(得分:1)

$s4是当前数字(余数)。你应该测试$s0为零。如果您在调试器/模拟器中逐步执行代码,这应该是显而易见的。另请注意,这将以相反的顺序打印数字。

如果您只需要二进制转换,通常的方法是使用轮班。

答案 1 :(得分:0)

装配中的分支带来危害。通常你会停止你的程序直到分支被采取。这样做是为了防止程序执行指令集中的下一条指令。

在您的情况下,我会尝试在noop指令后放置beqSLL $0, $0, 0

noop是一条对程序没有任何影响或没有任何意义的指令。