簡體   English   中英

錯誤訪問MIPS組件中的陣列

[英]Error Accessing Array in MIPS assembly

我編寫此代碼來查找兩個數字的LCM。 這是有問題的起始塊。 我試圖找到問題,但無法解決。 當我嘗試加載單詞或存儲單詞時,這給了我地址錯誤和其他異常的錯誤。 這是代碼:

.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

問候

如果它抱怨地址不對齊,那么您應該去看看為什么地址不對齊。 匯編器通常足夠聰明,可以根據需要對齊數據,但是您使用的.space指令沒有任何類型(因此也沒有對齊)信息。 偶然地,您的字符串使數組未對齊。 您可以通過在array1之前手動添加.align 2偽指令來解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM