Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- vettore: .word 5,6, 6, -3
- L: .word 4
- .text
- lw $t0, L #dimensione vettore
- jal ORDINA
- li $v0, 10
- syscall
- ORDINA:
- li $s0, 0 #indice di partenza, viene incrementato riducendo la parte di vettore da ordinare
- li $t2, 0 #registro per salvare temporaneamente il valore da spostare e sovrascrivere
- ciclo1:
- beq $s0, $t0, fine_ciclo1
- sll $s2, $s0, 2
- lw $t1, vettore($s2) #salva il primo elemento del vettore ridotto
- move $s1, $s0 #aggiorna indice per iterare sugli elementi del vettore ridotto
- ciclo2:
- beq $s1, $t0, fine_ciclo2 #se si é giá iterato sull'intero vettore termina il ciclo
- sll $s2, $s1, 2
- lw $t3, vettore($s2) #carica l'elemento del vettore da ordinare alla posizione attuale
- bge $t3, $t1, continua
- #se il valore attuale è il piu piccolo finora incontrato:
- sll $s5, $s0, 2
- lw $t2, vettore($s5) #salva l'elemeto in prima posizione della parte di vettore che resta da ordinare
- sw $t3, vettore($s5) #sovrascrivi in quella posizione l'elemento piú piccolo
- sw $t2, vettore($s2) #sostituisci il valore salvato al posto dell'elemento minore appena spostato (cioè scambia due elementi di posizione nel vettore)
- move $t1, $t3 #aggiorna il valore minore finora trovato nel registro
- continua:
- addi $s1, $s1, 1 #incrementa indice del ciclo2
- j ciclo2
- fine_ciclo2:
- addi $s0, $s0, 1 #incrementa l'indice di partenza del vettore (riduce la parte di vettore da ordinare)
- j ciclo1
- fine_ciclo1:
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement