Advertisement
Guest User

s3b

a guest
Oct 23rd, 2014
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. # Sessio 3
  2.  
  3. .data
  4. # Declara aqui les variables mat1, mat4 i col
  5. .align 2
  6. mat1: .space 120
  7. .align 0
  8. mat4: .word 2, 3, 1, 2, 4, 3
  9. col: .word 2
  10.  
  11. .text
  12. .globl main
  13. main:
  14. # Escriu aqui el programa principal
  15.  
  16. addi $sp, $sp, -4 # desem espai pila
  17. sw $ra, 0($sp) # desem adreca de retorn a la pila
  18. la $t0, mat1 # operacio intermitja - mars no permet operacions simboliques
  19. addi $s0, $t0, 108 # @mat1[4][3] ==> $s0
  20. la $a0, mat4 # passem @mat4 com a parametre 0 de subr
  21. lw $a1, 8($a0) # passem mat4[0][2] com a parametre 1 de subr
  22. la $a2, col # agafem @col
  23. lw $a2, 0($a2) # passem col com a parametre 2 de subr
  24. jal subr
  25. la $s0, mat1 # @mat1[0][0] ==> $s0
  26. la $a0, mat4 # passem @mat4 com a parametre 0 de subr
  27. li $a1,1 #passem 1 com a parametre 1 de subr
  28. li $a2,1 # passem 1 com a parametre 2 de subr
  29. jal subr
  30. sw $v0, 0($s0) # passem el return de subr a $s0
  31. lw $ra, 0($sp) # recuperem l'adreca de retorn
  32. addiu $sp, $sp, 4 # restaurem la pila
  33. jr $ra
  34.  
  35. subr:
  36. # Escriu aqui el codi de la subrutina
  37. la $t0,mat1+20 # carreguem a $t0 l'adreca de mat1[0][5]
  38. li $t1, 24 # 6(col-mat1)*4(bytes/word) ==> $t1
  39. mult $t1, $a2 # calculem J de mat1
  40. mflo $t1
  41. add $t0,$t0,$t1 # calculem @mat1[J][5]
  42. li $t1, 3 # col-mat4
  43. mult $t1, $a1 # calculem (@x)-j de X
  44. mflo $t1
  45. add $t1,$t1,$a2 # afegim j
  46. sll $t1,$t1,2 # multipliquem per word
  47. add $t1,$t1, $a0 # afegim @mat4 perque x=mat4
  48. lw $t1, 0($t1) # carreguem el valor de x[i][j]
  49. sw $t1, 0($t0) # mat1[j][5] = x[i][j]
  50. move $v0, $a1 # return i;
  51. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement