数组mips中的最大值

时间:2014-09-09 19:48:12

标签: arrays mips

我正在尝试在数组中找到最大值并最终打印出该值。

.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的新手让我很无能为力。

0 个答案:

没有答案