0

MIPS で 10 進数のバイナリ表現を表示しようとしています。しかし、このプログラムは無限ループに陥っています。私は問題を理解できませんでしたので、何が間違っているのか教えてください。このプログラムは数値のバイナリ表現を見つけるのに有効ですか. コードは次のとおりです。

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

アセンブリでの分岐には危険が伴います。通常、分岐が行われるまでプログラムを停止します。これは、プログラムが命令セット内の次の命令を実行するのを防ぐために行われます。

あなたの場合、私はnoopアフターbeqインストラクションを配置してみます。 SLL $0, $0, 0

noopプログラムに影響を与えない、または意味のない命令です。

于 2012-11-20T21:55:15.163 に答える