2012-11-25 56 views
0

我製作了這個代碼來查找兩個數字的LCM。這是有問題的起始塊。我試圖找到問題,但無法弄清楚。當我嘗試加載單詞或存儲單詞時,它給我錯誤的未對齊地址和其他異常。下面是代碼:訪問MIPS程序集中的數組時出錯

.data 

user: .asciiz "enter first number\n" 
user2: .asciiz "enter second number\n" 

array1: .space 500 
array2: .space 500 
array3: .space 500 

.text 

main: 

la $a0,user 
li $v0,4 
syscall 

li $v0,5 
syscall 

move $s0,$v0 

la $a0,user2 
li $v0,4 
syscall 

li $v0,5 
syscall 

move $s1,$v0 

li $t0,0 
li $t1,0 
li $t2,2  
li $t3,3 
li $t4,0 
li $t5,5 
li $t6,7 
li $t7,0 
li $t8,0 
li $t9,0 
li $s8,0 

la $t8,array1 
la $t9,array2 

j Loop1 



Loop1: 

div $s0,$t2 

mflo $s2 
mfhi $s3 # remainder 

beq $s2,1,Loop2 

xor $s5,$s3,$0 

beq $s5,1,Odd3 

add $t4,$t7,$t8 

sw $t2,0($t4) # error 

addi $t7,$t7,4 


j Loop1 

問候

+0

請提及並添加一個標籤,說明您使用哪種組裝程序(可能是汽油或煤氣) – Jester

+0

我可以收到您的電子郵件地址嗎?我的代碼搞亂了,所以我想把它發給你。如果你想在這裏看到代碼,我會過去這裏,但代碼非常冗長 – Alfred

回答

1

如果抱怨對齊地址,那麼你應該去看看它爲什麼不對齊。彙編程序通常足夠聰明,可以根據需要對齊數據,但是您使用的指令不具有任何類型(因此對齊)信息。偶然你的字符串使陣列不對齊。您可以通過在array1之前手動添加.align 2指令來解決此問題。