Advertisement
Ferdinando_Ottaviani

Esercizio 2

Oct 27th, 2019
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #N-esimo valore di un array
  2.  
  3. .text
  4. .globl main
  5.  
  6. main:
  7. add $v0, $zero, $zero
  8. lw $s0, LEN #load N
  9. la $s1, BASE #load address
  10. la $t3, BASE
  11. addi $s2,$s2,0 #contatore ciclo loop
  12. addi $s3,$s3,0 #contatore ciclo loop_max
  13.  
  14. loop_max: #loop per trovare il valore x(n)
  15. beq $s3,$s0,loop #uscita al loop al momento di fine ciclo
  16. lw $t4, 0($t3) #accesso all'array
  17. addi $t3, $t3, 4 #$s1: indice del prossimo elemento
  18. addi $s3, $s3, 1 #incremento contatore ciclo
  19. j loop_max
  20.  
  21. loop: #loop per verificare la condizione
  22. beq $s2,$s0,exit #uscita se true
  23. lw $t1, 0($s1) #accesso all'array
  24. bgt $t1,$t4,error #condizione error
  25. addi $s1, $s1, 4 #$s1: indice del prossimo elemento
  26. addi $s2, $s2, 1 #incremento contatore ciclo
  27. j loop
  28.  
  29. exit:
  30. li $v0,4 # codice per print_string
  31. la $a0, stringa # indirizzo stringa
  32. syscall # chiamata di sistema
  33. add $v0, $zero, $zero #inizializzo $v0
  34. addi $v0, $v0, 1 #le assegno il valore 1
  35. jr $ra #return
  36.  
  37. error: li $v0,4 # codice per print_string
  38. la $a0, stringa_error # indirizzo stringa
  39. syscall # chiamata di sistema
  40. add $v0, $zero, $zero
  41. jr $ra
  42.  
  43. .data
  44. LEN: .byte 5
  45. BASE: .word 1 2 4 8 5
  46. stringa: .asciiz "La condizione è verificata, tutti gli elementi di BASE sono minori o uguali di x(N)"
  47. stringa_error: .asciiz "La condizione non è verificata, uno o più elementi di BASE sono maggiori di x(N)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement