2016-09-20 2 views
0

私のコードはサポートされていないRタイプを思い付きます。他の詳細を変更しようとしました....既にサブを使って試しました..................................... .................................................. ........MIPS-減算する方法(既に使用されているサブは機能しません)

.data 
 
str: .asciiz "\nHello World!\n" 
 
# You can change what is between the quotes if you like 
 

 
.text 
 
.globl main 
 

 
main: 
 
# Do the addition 
 
# For this, we first need to put the values 
 
# to add into registers ($t0 and $t1) 
 
li $t0, 30 # You can change the 10 
 
li $t1, 20 # You can change the 20 
 

 
# Now we can add the values in $t0 
 
# and $t1, putting the result in special register $a0 
 
sub $a0, $t0, $t1 
 

 
# Set up for printing the value in $a0. 
 
# A 1 in $v0 means we want to print an int 
 
li $v0, 1 
 

 
# The system call looks at what is in $v0 
 
# and $a0, and knows to print what is in $a0 
 
syscall 
 

 
# Now we want to print Hello World 
 
# So we load the (address of the) string into $a0 
 
la $a0, str 
 

 
# And put a 4 in $v0 to mean print a string 
 
li $v0, 4 
 

 
# And just like before syscall looks at 
 
# $v0 and $a0 and knows to print the string 
 
syscall 
 

 
# Nicely end the program 
 
li $v0, 0 
 
jr $ra

答えて

1

あなたのプログラムは、プログラム終了の以外marsspimシミュレータに細かい動作します。これらのシミュレータは$raを設定しないので、ゼロです。したがって、最後には、違法な命令を含むセミランダム命令を持つ可能性のあるものに戻ってきます。したがって、それはではないあなたのsubすべてでは問題です。それは後で起こることです。

変更:

# Nicely end the program 
li $v0, 0 
jr $ra 

の中へ:

# Nicely end the program 
li $v0, 10 
syscall 
関連する問題