プログラムは、ユーザ入力キーを取り、そのキーから右端の5ビットを抽出し、次いで、これは私が試したものである請求ビット操作MIPSアセンブリ
に2ビットの間にそれらのビットを置き換えます。
lw $s1, 0($s0) # extracts the first word in the array
beq $s1, $zero, done # at the end of the array is a zero => 0
move $t1, $s2 #s2 has the input key
move $t0, $s1 # put the word in a temporary register
andi $t2, $t1, 0x0000001f # use the input mask to return the rightmost 5 bits
sll $t3, $t2, 2 # move the bits over to align with bits 2-6
andi $t0, $t3, 0xffffff83
だから私の考えは、アンディ$ t2のは、$ t1,0x0000001fと5ビットを抽出、入力キーを取ることです、そして6
にビット2で抽出された5ビットを整列するために論理的に2ビットの左シフトこれは私が立ち往生している場所です。私が取ったビットをユーザー入力キーから置き換え、ビット位置2から6に入れるにはどうしたらいいですか? 2番目のANDIの入力マスクは正しいと思いますが、適切なレジスタを使用しているとは思われません。
編集:返信いただきありがとうございます。私は提供された提案で解決策を見つけました。同様の問題を抱えている人:
そして、完全な答えを提供することを避けるために、データワードで置き換える必要のあるビットは入力マスクで修正する必要があります。これは異なるandi命令で行うことができます。いくつかのステップがありますが、これは少なくとも、誰かが正しい方向を向いていることを将来的に指すべきです。
最後の行では、明らかに入力をマスクしたいので、 '$ t3'はそこではビジネスがありません。いったんあなたがそれを修正したら、それらを一緒に「または」。追加もあまりにも。 – Jester
"私はインターネットから宿題を盗んで捕まえたくない"以外の質問を削除したいという正当な理由がある場合は、 "私たちに連絡"リンクを介して管理者に連絡してみてください。彼らはあなたを助けるかもしれない、彼らはそれを拒否するかもしれない。質問の「削除編集」はここでは受け入れられません。 –