Advertisement
Ferdinando_Ottaviani

Esercizio 5 Assembly

Nov 13th, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. .text
  2. .globl main
  3.  
  4. main: la $a0, M #carico M in a0
  5. lw $a1, N #carico N in a1
  6. add $v0,$0,$0 #inizializzo v0
  7. add $v1,$0,$0 #inizializzo v1
  8. jal diagonale #chiamo diagonale
  9. jr $ra #return
  10.  
  11. diagonale:
  12. addi $sp,$sp,-4 #dealloco sp
  13. sw $ra, 0($sp) #salvo il return
  14. add $t0,$0,$0 #contatore i=0
  15. mult $a1,$a1 #N*N
  16. mflo $t2 #salvo il risultato di lo
  17. addi $t3,$0,4 #variabile 4
  18. mult $t3,$t2 #4*N
  19. mflo $t2 #$t2 = N*N*4 (sarebbe l'indirizzo massimo della matrice +4)
  20. jal contatore #chiamo contatore
  21.  
  22. exit:
  23. lw $ra, 0($sp) #rialloco sp
  24. addi $sp,$sp,4 #carico il return
  25. jr $ra #return
  26.  
  27. contatore: slt $v1,$t0,$t2 #if $t0<$t2; $v1=1 else: $v1=0
  28. beq $v1,$0,exit #if $v1=0 jump to exit
  29. add $t5,$a0,$t0 #$t5=N+i
  30. lbu $t6,0($t5) #$t6=M[i]
  31. add $v0,$v0,$t6 #salvo il risultato
  32. mult $t3,$a1 #4*N
  33. mflo $t6 #salvo il risultato
  34. addi $t7,$t6,4 #(4*N)+4
  35. add $t0,$t0,$t7 #$t0= $t0+(4*N)+4
  36. jal contatore #richiamo la ricorsiva
  37.  
  38. .data
  39. M: .word 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #matrice quadrata
  40. N: .word 4 #len matrice
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement