2016-10-08 13 views
0

PCSpimを使用していますが、問題が発生しました 16進数の値を挿入するための文字の配列があり、それをHEXARRAYと呼びます。intのバイトをMIPSに格納する

HEXARRAY:.byte '0'、 '0'、 '0'、 '0'、 '0'、 '0'、 '0'、 '0'。

と私は

SBの$ t0の操作を実行して整数を挿入したい、HEXARRAY($ t1の)$ t0のは、私が欲しいintで

は、8 と$ t1は8であると言うことができます、配列の最後のバイト

intはMIPSで4バイトですが、intを1バイトに挿入するにはどうすればよいですか?

+0

あなたは明確にできますか? 'sb $ t0、HEXARRAY($ t1)'は動作しません。 –

+0

sbは1バイトを意味するバイトのみを格納し、整数は4バイトです。どのようにして1バイト(127と-128の間)しか必要としない、この1バイトに4バイトを収めることができますか? – JAngara

+0

ビットはバイト)は測定単位です。 4バイトを1バイトに合わせることは、4リットルの水を1リットルの水に入れるように求めることと同じです。あなたはそれを投げ捨てることなくそれをすることはできません。それはあなたの質問と同じです。それが私が説明を求めた理由です。 'sb'は最下位バイトだけを格納します(他の3バイトを投げ捨てます)。したがって、' $ t0'の可能な数値が0-255または-128-127(1バイトしか必要としない範囲)の場合、 'sb'を問題なく使用できます。そうでない場合、あなたは "水"を捨てるように指示する必要があります。 –

答えて

0

あなたは...「SW」=ストア・ワードを行うことによって、のようなものワード(32ビット)を挿入することができます:あなたは全体の数8を保存したくない場合は

number: .word 8  # your number is 8 
space: .space 20 # adress to save your number 

la $t3, number   # loading the adress of your number 8 
lw $t3, 0($t3)   # NOTICE that with 'lw' you are taking your WHOLE WORD = number 8 

la $s1, space 
sw $t3, 0($s1)   # where $t3 is your number and $s1 the adress you want to save it 

を、しかし、別の保存あなたの数字のバイト...あなたは$ s1の別のアドレスでそれを行うことができます。以下のような

何か:

sb $t3, 0($s1) # you are storing the byte'00001000' in the 1st adress of $s1 
addi $s1, $s1, 1 # adding 1 to the adress where you want to save your next byte 
srl $t3, $t3, 3 # moving your number 8 (in binary) to the right... so you can 
        # 'sb' = store byte (a different one) again in $s1 
関連する問題