数组总是指向第一个索引,即使索引递增
array always pointing to the first index even though index is incremented
出于某种原因,即使 $t2 递增,($t3) 始终输出 1。我不明白为什么。
代码如下:
.data
myArray1: .word 1, 2, 3, 4, 5
myArray2: .word 0, 0, 0, 0, 0
newline: .asciiz "\n"
.text
main:
li $s1, 5
li $s0, 1
la $a1, myArray1
la $a2, myArray2
loop:
beq $s0, $s1, exit
sll $t0, $s0, 2 # $t0 = i * 4
sub $t2, $s0, 1
sll $t2, $t2, 2 # $t2 = (i-1)*4
add $t1, $a1, $t0 # $t1 = A[i]
add $t3, $a1, $t2 # $t3 = A[i-1]
move $a0, $t2
li $v0, 1
syscall
jal newLine
lw $a0, ($t3)
li $v0, 1
syscall
jal newLine
add $t4, $a2, $t0 # $t4 = B[i]
lw $t5, ($t3)
lw $t6, ($t4)
add $t7, $t5, $t6 # $t7 = A[i-1] - B[i]
sw $t7, ($t1) # A[i] = $t7
addi $s0, $s0, 1
j loop
exit:
li $v0, 10
syscall
newLine:
la $a0, newline
li $v0, 4
syscall
jr $ra
我已经添加了一段代码来输出 ($t3) 和 $t2,即使 $t2 正在上升 ($t3) 也永远不会改变
我不太确定你想做什么。但实际发生的是 $t7
在 sw $t7, ($t1) # A[i] = $t7
处的值始终为 1,因此您不断用 1.
覆盖 myArray1
中的下一个值
考虑案例i==1
:
A[i-1] == A[0] == 1
B[i] == B[1] == 0
A[i-1] + B[i] == 1 + 0 == 1
然后,在 i==2
的下一次迭代中:
A[i-1] == A[1] == 1
(因为您在上一次迭代中将其设置为 1)
B[i] == B[2] == 0
A[i-1] + B[i] == 1 + 0 == 1
以此类推
出于某种原因,即使 $t2 递增,($t3) 始终输出 1。我不明白为什么。
代码如下:
.data
myArray1: .word 1, 2, 3, 4, 5
myArray2: .word 0, 0, 0, 0, 0
newline: .asciiz "\n"
.text
main:
li $s1, 5
li $s0, 1
la $a1, myArray1
la $a2, myArray2
loop:
beq $s0, $s1, exit
sll $t0, $s0, 2 # $t0 = i * 4
sub $t2, $s0, 1
sll $t2, $t2, 2 # $t2 = (i-1)*4
add $t1, $a1, $t0 # $t1 = A[i]
add $t3, $a1, $t2 # $t3 = A[i-1]
move $a0, $t2
li $v0, 1
syscall
jal newLine
lw $a0, ($t3)
li $v0, 1
syscall
jal newLine
add $t4, $a2, $t0 # $t4 = B[i]
lw $t5, ($t3)
lw $t6, ($t4)
add $t7, $t5, $t6 # $t7 = A[i-1] - B[i]
sw $t7, ($t1) # A[i] = $t7
addi $s0, $s0, 1
j loop
exit:
li $v0, 10
syscall
newLine:
la $a0, newline
li $v0, 4
syscall
jr $ra
我已经添加了一段代码来输出 ($t3) 和 $t2,即使 $t2 正在上升 ($t3) 也永远不会改变
我不太确定你想做什么。但实际发生的是 $t7
在 sw $t7, ($t1) # A[i] = $t7
处的值始终为 1,因此您不断用 1.
myArray1
中的下一个值
考虑案例i==1
:
A[i-1] == A[0] == 1
B[i] == B[1] == 0
A[i-1] + B[i] == 1 + 0 == 1
然后,在 i==2
的下一次迭代中:
A[i-1] == A[1] == 1
(因为您在上一次迭代中将其设置为 1)B[i] == B[2] == 0
A[i-1] + B[i] == 1 + 0 == 1
以此类推