我正在尝试在数组中找到最大值并最终打印出该值。
.globl start
.data
array: .word 8,2,31,81,12,10
size: .word 6
max: .word 0
.text
main:
jal start
start:
lw $t3, size #size
la $t1, array # get array address
lw $s5, ($t1) # set max, $s5 to array[0]
add $t1, $t1, 4 # skip array[0]
add $t3, $t3, -1 # len = len - 1
loop:
lw $t4, ($t1) # get n of array[n]
ble $t4,$s5,L1 #if t4 is not less than t5 we got a new max otherwise not.
lw $s5, 0($t4) #get element in array <-- Pretty sure im doing something wrong here.
#sw $s5,0($t1) #max
L1:
add $t3, $t3, -1 #counter-1
addi $t1, $t1, 4 # advance array pointer
bnez $t3, loop #if not 0 then go on and loop
sw $s5, max #printing the max val of the array
lw $a0, max
li $v0, 1
syscall
li $v0, 10
如果我改变lw指令移动s5 var只是在每次t4改变值时改变值。我的问题是s5只是每次t4更改都会改变。使用move指令代替lw,最大值为10,即数组的最后一个元素。
澄清一下:我希望s5变量保留它所具有的值,并且只有在找到新的最大值时才会改变。当我使用移动指令时,每次t4改变时它都会改变。
很抱歉,如果代码看起来很糟糕,MIPS的新手让我很无能为力。