0

我正在尝试在 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

问候

4

2 回答 2

1

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

如果只需要二进制转换,通常的方法就是使用移位。

于 2012-11-20T18:23:34.540 回答
0

装配中的分支伴随着它的危险。通常你会拖延你的程序,直到分支被采用。这样做是为了防止程序执行指令集中的下一条指令。

在你的情况下,我会尝试放置一个noopbeq指令。 SLL $0, $0, 0

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

于 2012-11-20T21:55:15.163 回答