Você está na página 1de 1

.

data
        A:        .word 1,2,3,4   
        B:        .word 11,12,13,14
        C:        .word 0,0,0,0
        N:        .word 4 #dimensão dos vetores
    
.text
                        li t0,0 #t0=sum
                        lw t2,N #t2=N
                        la a0,A #a0=*A
                        la a1,B #a1=*B
                        la a2,C #a2=*C
                        li t1,0 #t1=i
                        addi t3,t2,-1 #t3=j (N-1)

        for1: #for(int i=0;i<N;i++)


                        li t0,0 #t0=sum
                        addi t3,t2,-1
                for2: #for(int j=N-1;j>=i;j--)
                        mv a5,a1 #a5=*B       
                        mul a7,t3,t2 #a7=offset(j* sizeof word)
                        add a5,a7,a5 #a5=*B[j]
                        lw a5,0(a5) #ar=B[j]
                        add t0,t0,a5 #sum+=B[j]
                        addi t3,t3,-1 #j--
                        bge t3,t1,for2 #if(j>=i)->for2
                #secção depois dos for
                        mv a4,a0 #a4=*A
                        mv a5,a1 #a5=*B
                        mv a6,a2 #a6=*C
                        mul a7,t2,t1 #a7=calcula o offset (sizeof word*i)
                        add a4,a4,a7 #a4=*A[i]
                        add a5,a5,a7 #a5=*B[i]
                        add a6,a6,a7 #a6=*C[i]
                        lw t4,0(a4) #t4=A[i]
                        lw t5,0(a5) #t5=B[i]
                        lw t6,0(a6) #t6=C[i]
                        sub t6,t5,t4 #C[i]=B[i]-A[i]
                        mul t6,t6,t0 #C[i]*=sum
                        sw t6,0(a6) #guarda resultado em *C[i]
                addi t1,t1,1 #i++
                blt t1,t2,for1 #if(i<N) -> for1

Você também pode gostar