3

私の mips アセンブリ コードでは、結果が 1 つのレジスタに収まらないため、multi 命令を使用して 2 つの大きな数を乗算しました。これは、数値が hi および lo 特殊レジスターに保存されることを意味します。私の問題は、乗算の結果をどのように出力するかです。hi と lo にアクセスして他のレジスタ (つまり、$t0、$t1) に入れることはできますが、結果を出力するために 2 つの数値を結合する方法がわかりません。ありがとう。

4

2 に答える 2

3

(この回答は意図的に高レベルに保たれています。なぜなら、宿題のためにそれを行っていない限り、誰も mips アセンブリで数字を出力しないと確信しているためです。)

16 進数で入力しても問題ない場合は問題ありません。1 つの単語を 16 進数で出力し、次に次の単語を出力します。2 番目の単語に先頭のゼロを含めることを忘れないでください。(実際には、あなたが使用していると思われる spim は base 10 でしか印刷できないと思うので、これでもちょっとした雑用かもしれません)。

基数 10 にしたい場合、この問題は、私が「お尻の痛み」と呼ぶカテゴリにすぐに向かいます。「実生活」では気にしません。C で印刷を行うと、どこかのコンパイラ担当者がこれらの問題をすべて解決してくれます。宿題として、入力を繰り返し 10 で割る関数を自分で作成してください。最終的に数字を出力することになります。mips に 64 ビットの除算命令がない場合 (私の頭ではわかりません)、これを解決するのはかなり楽しい問題になるでしょう。

于 2010-02-06T05:10:28.547 に答える
-1

数値を印刷する解決策は、実際には数値を繰り返し 10 で割り、残りの部分を取得して文字列に格納し、逆さまに読み取ることです。しかし、唯一の課題は、mips32 が 32 ビットの除算しかない場合、64 ビットの数値を除算することです。このページで方法を見つけます:

https://www.codeproject.com/questions/714114/how-to-print-bit-in

于 2016-12-02T00:53:52.050 に答える