-2

私はアセンブリを学び始めたばかりで、このコードを機能させるのに苦労しているので、誰かが私を助けてくれれば幸いです。

main:
ori $5,$0,x 
addu $10,$0,$5
sll $5,3,shft 
addu $10, $0, $5
sll $5,2,shft 
addu $10,$0 ,$5 

「13*x を計算するプログラムを作成します。これを行うには、x にレジスタ $5 を使用し、ori 命令を使用してプログラムの先頭にロードします。x は、符号なし 2 進数で表される正の整数であると仮定します。13*x をシフトして計算します。明示的な乗算命令を使用しないでください。入出力を行わないでください。結果をプログラムの最後にレジスタ $10 に入れます。x の値を簡単に変更できるようにプログラムを作成してください。」

4

1 に答える 1

2

基本的な手順は次のとおりです。13xはと同じなので(8 + 4 + 1)x、シフトして追加することでこれを行うことができます(擬似コード):

move x to accumulator.

shift x left twice, it is now 4x.
add x to accumulator.

shift x left once more, it is now 8x.
add x to accumulator.

これで、アキュムレータはを保持します13x。あなたがしなければならないのはそれをするための正しいMIPS命令を理解することです。


これは宿題のように見えるので漠然としていますが、あなたが間違っていることをいくつかお話しします:-)

変更$5は、上記で指定した順序で行う必要があります。左に3つ、次に左に2つシフトすると、2 5、つまり。が掛けられ32ます。

さらに、これらの引数のいくつかの順序を確認することもできます。彼らは期待されているものとゲル化していないようです。

于 2013-02-17T04:16:58.520 に答える