Есть несколько ошибок, подробности см. Ниже.
.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