0

2 の補数を 10 進数に手動で変換する方法を知っています。

http://sandbox.mc.edu/~bennet/cs110/tc/tctod.html

リンクで示されているように。数値が負か正かは最初のビットでわかるので、私の考えは、数値が 8 ビットであるため、2 進数または 16 進数の 0x00000080 で 1000 0000 で割ります。

現在、これは実際には機能していないため、より良い解決策はありますか?私のコードは一番下にあります。レジスター 1 は、2 の補数が入っている場所です。

lis $8
.word 0x00000080

div $1, $8

mflo $9

jr $31
4

1 に答える 1

2

最初にできることは、変数の NOT を作成することです。MIPS には組み込みの NOT がありませんが、XOR を使用してそれを取得できます (addi でレジスタの値を -1 に設定し、レジスタで XOR を使用して -1 を含むレジスタで否定し、すべてを格納します)。 1の)

あとは簡単、1足すだけ。

于 2013-02-26T08:28:35.363 に答える