MIPS Добавление всех элементов из массива - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в MIPS и изучаю основы.Я столкнулся с проблемой, над которой работал два часа, и мне не повезло.Я пытался найти эту проблему в Интернете, но примеры очень ограничены.Поэтому в основном я пишу две функции:

  1. Суммирование массива.Для моей функции суммирования всегда выводится 268501055 для простого массива.Я чувствую, что моя логика верна, но мне не повезло найти ошибку.У меня есть эта функция с именем sumArray.
  2. Нахождение макс массива.Я получаю исключение 4, за которым следуют сообщения об ошибках неограниченного исключения 7 при запуске.Я не уверен, почему это не работает.Я использую симулятор QTSpim для запуска этих тестов.

Вот мой код:

##
    .data

    A: .word 11, 12, -10, 13, 9, 12, 14, 15, -20, 0 
    out_m: .asciiz "The maximum of A is : "
    out_s: .asciiz "The summation of A is : "
    out_n: .asciiz "\n"

    .text

main:
    la $a3, A 

    jal sumArray 

    li $v0, 4
    la $a0, out_n 
    syscall

    jal findMax 

    li $v0, 10  
    syscall

findMax:

    add $t0, $zero, $a3 
    lw $t8, ($t0) 
    addi $t1, $zero, 0
    add $t3, $zero, $a0 
    L1: slti $t2, $t1, 10
        beq $t2, $zero, Loop2 
        lw $t4, 0($t3) 
        addi $t3, $t3, 4 
        slt $t2, $t0, $t4                       
        addi $t1, $zero, 1
        beq $t2, $zero, Loop3

        j L1
    Loop3: add $t8, $zero, $t4
        j L1
    Loop2: li $v0, 4
    la $a0, out_m
    syscall

    move $t3, $v0
    li $v0, 1
    move $a1, $t0
    syscall

    jr $ra

sumArray:

    addi $t0, $zero, 0
    addi $t6, $zero, 0
    add $t5, $zero, $zero
    loop: slti $t1, $t0, 9
        add $t2, $a3, $t6
        beq $t1, $zero, $L
        lw $t4, 0($t2)
        add $t5, $t5, $t4
        addi $t0, $t0, 1
        addi $t6, $t6,4
        j loop
    $L:
    li $v0, 4
    la $a0, out_s
    syscall

    move $t5, $v0
    li $v0, 1
    move $a1, $t0
    syscall

    jr $ra


## end of file

Извините за грязный код, я попытался отформатировать соответствующим образом.Любая помощь будет принята с благодарностью.

...