Рассчитать среднее в мипах - PullRequest
0 голосов
/ 09 апреля 2020

Aslam alikum Ребята, вы можете просто помочь мне, как я могу найти ошибки

    .data
    num1: .word 3
    num2: .word 5
    num3: .word 3
    num4: .word 3
    num5: .word 5
    num6: .word 3
    num7: .float 6.0

    xxx: .word 0
    yyy: .float 0.0

    .text
    .globl main
    .ent main
    main:
            lw $a0, num1
            lw $a1, num2
            lw $a2, num3
            lw $a3, num4
            lw $t0, num5
            lw $t1, num6
            l.s $f8, num7

            subu $sp ,$sp,8
            sw $t0 ,($sp)
            sw $t1 ,($sp)

            jal func 
            sw $v1 ,xxx
            mtc1 $v1,$f6
            cvt.s.w $f6 ,$f6

            div.s $f10 ,$f6, $f8
            s.s $f10,yyy
            addu $sp ,$sp ,8
            syscall
    .end main

    .globl func
    .end func
    func:
            subu $sp ,$sp ,4
            sw $fp , ($sp)
            addu $fp , $fp ,4
            li $v1 ,0
            add $v1 , $v1 , $a0 
            add $v1 , $v1 , $a1 
            add $v1 , $v1 , $a2
            add $v1 , $v1 , $a3
            lw $t0 ,($fp)
            add $v1 , $v1 , $t0
            lw $t1 ,4($fp)
            add $v1 , $v1 , $t1
            lw $sp , ($sp) 
            addu $sp ,$sp ,4
            jr $ra
    .end func

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Есть несколько ошибок, подробности см. Ниже.

    .data
    num1: .word 3
    num2: .word 5
    num3: .word 3
    num4: .word 3
    num5: .word 5
    num6: .word 3
    num7: .float 6.0

    xxx: .word 0
    yyy: .float 0.0

    .text
    .globl main
    .ent main
    main:
            lw $a0, num1
            lw $a1, num2
            lw $a2, num3
            lw $a3, num4
            lw $t0, num5
            lw $t1, num6
            l.s $f8, num7

            subu $sp ,$sp,8
            sw $t0 ,($sp)
            sw $t1 ,($sp)     # this overwrites the preceding store, so use an offset here as sw $t1, 4($sp)

            jal func 
            sw $v1 ,xxx
            mtc1 $v1,$f6
            cvt.s.w $f6 ,$f6

            div.s $f10 ,$f6, $f8
            s.s $f10,yyy
            addu $sp ,$sp ,8

            syscall                   # you don't have a syscall function code in $v0
    .end main

    .globl func
    .end func
    func:
            subu $sp ,$sp ,4
            sw $fp , ($sp)
            addu $fp , $fp ,4   # the source register here should be $sp, not $fp
            li $v1 ,0
            add $v1 , $v1 , $a0
            add $v1 , $v1 , $a1 
            add $v1 , $v1 , $a2
            add $v1 , $v1 , $a3
            lw $t0 ,($fp)
            add $v1 , $v1 , $t0
            lw $t1 ,4($fp)
            add $v1 , $v1 , $t1
            lw $sp , ($sp)          # this should be restoring $fp not $sp
            addu $sp ,$sp ,4
            jr $ra
    .end func
0 голосов
/ 09 апреля 2020
    .data
    num1: .word 3
    num2: .word 5
    num3: .word 3
    num4: .word 3
    num5: .word 5
    num6: .word 3
    num7: .float 6.0

    xxx: .word 0
    yyy: .float 0.0

    .text
    .globl main
    .ent main
    main:
            lw $a0, num1
            lw $a1, num2
            lw $a2, num3
            lw $a3, num4
            lw $t0, num5
            lw $t1, num6
            l.s $f8, num7

            subu $sp ,$sp,8
            sw $t0 ,($sp)
            sw $t1 ,($sp)

            jal func 
            sw $v1 ,xxx
            mtc1 $v1,$f6
            cvt.s.w $f6 ,$f6

            div.s $f10 ,$f6, $f8
            s.s $f10,yyy
            addu $sp ,$sp ,8
            syscall
    .end main

    .globl func
    .end func
    func:
            subu $sp ,$sp ,4
            sw $fp , ($sp)
            addu $fp , $fp ,4
            li $v1 ,0
            add $v1 , $v1 , $a0 
            add $v1 , $v1 , $a1 
            add $v1 , $v1 , $a2
            add $v1 , $v1 , $a3
            lw $t0 ,($fp)
            add $v1 , $v1 , $t0
            lw $t1 ,4($fp)
            add $v1 , $v1 , $t1
            lw $sp , ($sp) 
            addu $sp ,$sp ,4
            jr $ra
    .end func

Это среднее значение для 6 чисел

...