查找最大值及其在数组上的位置的函数

时间:2019-04-10 11:11:13

标签: arrays assembly mips

我必须找到max元素及其在数组上的位置(位置从1开始)(如果数组不包含任何元素,我必须返回position = 0和max =最小的负数)。我认为我的代码还可以(除了将max设置为可能的最低值,我对此表示怀疑),但是我不知道我需要以什么来开始我的代码,例如将最后存储的内容保存在寄存器中。而且我也不能编译它(可能是由于伪指令)。

我尝试用c编写程序,然后编译为MIPS,但仍然无法正常工作。

MaxAndArg:
        li $v0, -2,147,483,648  # $v0(MAX) is the smallest negative number 
        li $v1, 0                # $v1(POSITION) starts from zero
        li $t3, 0                # $t3(i in a normal language) will be used to loop
        li $t4, 0               # $t4 will be used to show the position in the array

L2:         
            beq $t3, $a1, EXIT      # if (i = array size) goto EXIT

            sll $t4, $t4, 2         # $t4 = $t4 * 4
            add $a0, $t4, $a0      # $a0 = $a0 + $t4 (next element in the array)

            blt $v0, a0, L1      # if (max < a[j]) goto L1

            addi $t3, $t3, 1        # i++
            addi $t4, $t4, 1          # array_position++

            j L2

L1: 
        addi $v0, $a0, 0        # $v0 = $a0  
        addi $v1, $t3, 1        # $v1 = i + 1 (probably works)
        addi $t3, $t3, 1        # i++
        addi $t4, $t4, 1        # array_position++

            j L2

EXIT:       
         jr     $ra             #return

0 个答案:

没有答案