Advertisement
peppe1992

Untitled

Jan 21st, 2019
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #carica 10 interi nello stack
  2.  
  3. .data
  4. .align 2
  5. interi: .word 0 1 2 3 4 5 6 7 8 9
  6.  
  7. .text
  8. .globl main
  9. main:
  10.     addi $sp, $sp, -40  #alloco 10 word nello stack
  11.     add $s4, $sp, $zero #copio la posizione di $sp
  12.     addi $s2, $s2, 0    #inizializzo i a 0
  13.     addi $s3, $s3, 10   #inizializzo j = 10
  14.     la $s0, interi      #carico l'indirizzo del primo valore inserito nel .data all'etichetta "interi" (0)
  15.     ciclo:
  16.     sll $s1, $s2, 2     #$s1 = i*4
  17.     beq $s3, $s2, print #se i=j vai a stampa
  18.     add $s1, $s1, $s0   #calcolo l'indirizzo dove prelevare il dato
  19.     lw $t2, 0($s1)      #carico in $t2 il dato
  20.     sw $t2, 0($s4)      #faccio il push del dato nello stack
  21.     add $s4, $s4, 4     #incremento di 4 la copia della posizione di $sp per poter inserire il prossimo valore nello stack
  22.     addi $s2, $s2, 1    #incremento i di 1
  23.     j ciclo             #jump
  24.    
  25.     print:    #########ROUTINE DI STAMPA############
  26.     beq $s3, $zero, esci #$s3 (j) vale 10 e lo confronto con 0
  27.     addi $s3, $s3, -1    #decremento di 1 $s3 (j)
  28.     addi $s4, $s4, -4    #decremento di 4 la copia della posizione di $sp per stampare il valore corretto presente nello stack
  29.     lw $t0, 0($s4)       #carico il valore in $t0
  30.     addi $v0, $zero, 1   #metto in $v0 il valore 1 per la syscall print
  31.     add $a0, $t0, $zero  #metto in $a0 il valore di cui voglio fare il print
  32.     syscall              #chiamata a sistema
  33.     j print              #jump
  34.    
  35.     esci:    ##########ROUTINE ESCI################
  36.     addi $sp, $sp, 40     #dealloco lo stack
  37.     addi $v0, $zero, 10   #metto in $v0 il valore 10 per la syscall di exit
  38.     syscall               #chiamata a sistema
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement