2016-11-28 21 views
-1

"srl"命令で行われた除算の残りの部分をレジスタに保持し、バイナリ値で整数を出力する方法がわかりました。アセンブリMIPS:シフトで10進数をバイナリに変換する

f.e. T1は、我々が変換する番号がある場合、我々はループ内、それを分割する2と右論理シフトを使用する:残りはSRLコマンドの後に保持した後のビットを巻き戻すことができる方法

loop: 
    srl  $t2, $t1, 2 #number/2 

    beq $t2, '0', exit  #if the quotient is 0, exit the loop 

j loop 

exit: 

残りの2進数を印刷するには?

+1

ビット単位で 'and'を使用します。 PS: 'srl'が' 2'で除算されていない場合は、 '4'で除算します。 – Jester

+1

印刷方法?正確にどのような結果が欲しいですか?小数点はどのようにこのようになりますか(私はあなたが既に小数点以下の文字列ではなくレジスタに整数を持っていると思いました)? –

+0

私はすでにt1の整数を持っているので、バイナリとして見られる整数を出力したいと思います。 f.e.入力が9の場合、出力は1001 – Coursal

答えて

0

$ t1を29(31-2)だけ左にシフトしてから、右に戻すことができます。それは元の$ t1の下位2ビットを残すはずです。

もちろんこれは32ビットの整数サイズを前提としています。例えば

、あなたが値5 で始まると仮定すると、あなたが戻ってシフトし、その後29の利回り 1000 0000 0000 0000 0000 0000 0000 0000 0000

左にシフト 0000 0000 0000 0000 0000 0000 0000 0101

を持っている: 0000 0000 0000 0000 0000 0000 0000 0001 あります残り。

関連する問題