2012-11-20 251 views
0

我试图在MIPS中显示一个十进制的二进制表示。但是这个程序陷入了无限循环。我无法弄清楚这个问题,所以请告诉我我做错了什么,这个程序是否适用于查找二进制数字的代表。下面是代码: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 

问候

回答

1

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

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

0

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

在你的情况下,我会尝试在beq指令后面放置一个noopSLL $0, $0, 0

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