########################################################### ## INSERIRE: COGNOME - NOME - NUMERO POSTAZIONE - PROFESSORE ########################################################### .data nelem: .word 4 #numero di elementi da inserire vet: .word 50,10,30, 80 #valori da inserire nell'albero tree: .space 200 #array in cui e' memorizzato l'albero .text .globl main main: li $t7, 200 # dimensione in byte dell'array "tree" sw $t7, tree # tree[0] = 200 lw $s5, nelem sll $s5, $s5, 2 # $s5= 4*nelem li $s1, 0 loop: bge $s1, $s5, end_loop la $a0, tree lw $a1, vet($s1) jal insert addi $s1, $s1, 4 j loop end_loop: la $a0, tree li $a1, 8 jal print_int_vet esce: li $a0, 0 li $v0, 10 syscall #===================================================== # Sub: "insert" insert di un elemento nell'albero binario di ricerca # Arg1: $a0 = indirizzo dell'array in cui e' memorizzato l'albero # Arg2: $a1 = elemento da inserire nell'albero binario di ricerca # Ritorna: 0 se l'array non ha spazio sufficiente a contenere il nuovo elemento, # altrimenti ritorna l'offset della posizione di inserimento. #======================================================== insert: # INSERIRE QUI IL CODICE RICHIESTO esci: jr $ra #===================================================== # Sub: "print_int_vet" Stampa un vettore di interi # Arg1: $a0 = indirizzo del vettore # Arg2: $a1 = numero elementi del vettore # Ret: nulla #======================================================== print_int_vet: #======================================================== move $t0, $a0 # $t0 = &vet[0] move $t1, $a1 # $t1 = n sll $t1, $t1, 2 # n = 4*n addu $t2, $t1, $t0 # &vet[n] print_vet_loop: lw $a0, 0($t0) li $v0, 1 # stampa vet[i] syscall la $a0, print_int_vet_tab li $v0, 4 # tabulazione syscall addu $t0, $t0, 4 blt $t0, $t2, print_vet_loop # ---> loop jr $ra #========================================================== .data print_int_vet_tab: .asciiz "\t" #========================================================