2016-10-17 12 views
1

私はアセンブリでは初心者ですが、かなりの困難を抱えています。アセンブリMIPS:入力された番号を印刷

私はMARS 4.5を使用しています。私は、キーボードから整数を受け取り、後でそれを印刷するコードを記述しようとします。

.data 
number: .word 

.text 
.globl main 
main: 

li  $v0, 5 
syscall 

move  $v0, $a0 

li  $v0, 1 
la $a0, ($v0) 
syscall 


li  $v0, 10  
syscall 

これを実行すると、入力が何であっても値1が返されます。

問題は "la $ a0、($ v0)"コマンドのようです。

私は整数を印刷するための標準レジスタに入力番号を保持する$ v0レジスタのアドレスをロードした場合、それが動作する可能性があります。

どうすればこの問題を解決できますか?

+0

レジスタにはアドレスがなく、印刷整数関数にはアドレスではなく値が必要です。だから、その行を削除すればうまくいくはずです。 – Jester

+0

load addressコマンドを削除すると、0が返されます。 – Coursal

+0

また、 'move'オペランドも逆になっています。 – Jester

答えて

0

あなたは正しい道を歩いています。 @ Jesterが説明したように、load addressコマンドを削除し、moveオペランドを修正する必要があります。

.data 
number: .word 

.text 
.globl main 
main: 

li  $v0, 5  #Read integer to $v0 
syscall 

move  $a0, $v0 #Move integer to $a0 

li  $v0, 1  #Print integer from $a0 
syscall 

li  $v0, 10 #Exit  
syscall 
関連する問題