Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Sessio 3
- .data
- # Declara aqui les variables mat1, mat4 i col
- .align 2
- mat1: .space 120
- .align 0
- mat4: .word 2, 3, 1, 2, 4, 3
- col: .word 2
- .text
- .globl main
- main:
- # Escriu aqui el programa principal
- addi $sp, $sp, -4 # desem espai pila
- sw $ra, 0($sp) # desem adreca de retorn a la pila
- la $t0, mat1 # operacio intermitja - mars no permet operacions simboliques
- addi $s0, $t0, 108 # @mat1[4][3] ==> $s0
- la $a0, mat4 # passem @mat4 com a parametre 0 de subr
- lw $a1, 8($a0) # passem mat4[0][2] com a parametre 1 de subr
- la $a2, col # agafem @col
- lw $a2, 0($a2) # passem col com a parametre 2 de subr
- jal subr
- la $s0, mat1 # @mat1[0][0] ==> $s0
- la $a0, mat4 # passem @mat4 com a parametre 0 de subr
- li $a1,1 #passem 1 com a parametre 1 de subr
- li $a2,1 # passem 1 com a parametre 2 de subr
- jal subr
- sw $v0, 0($s0) # passem el return de subr a $s0
- lw $ra, 0($sp) # recuperem l'adreca de retorn
- addiu $sp, $sp, 4 # restaurem la pila
- jr $ra
- subr:
- # Escriu aqui el codi de la subrutina
- la $t0,mat1+20 # carreguem a $t0 l'adreca de mat1[0][5]
- li $t1, 24 # 6(col-mat1)*4(bytes/word) ==> $t1
- mult $t1, $a2 # calculem J de mat1
- mflo $t1
- add $t0,$t0,$t1 # calculem @mat1[J][5]
- li $t1, 3 # col-mat4
- mult $t1, $a1 # calculem (@x)-j de X
- mflo $t1
- add $t1,$t1,$a2 # afegim j
- sll $t1,$t1,2 # multipliquem per word
- add $t1,$t1, $a0 # afegim @mat4 perque x=mat4
- lw $t1, 0($t1) # carreguem el valor de x[i][j]
- sw $t1, 0($t0) # mat1[j][5] = x[i][j]
- move $v0, $a1 # return i;
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement