########################################################### ## INSERIRE: COGNOME - NOME - NUMERO POSTAZIONE - PROFESSORE ########################################################### .data nelem: .word 4 vet: .word 50,10,30, 80 tree: .space 200 .text .globl main main: li $t7, 200 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 del array in cui e' memorizzato l'albero # Arg2: $a1 = elemnto da inserire nell'albero binario di ricerca #======================================================== insert: #======================================================== li $t0, 4 # pos =4 lw $t8, ($a0) # $t8 = max_dim for: bgt $t0, $t8, overflow # if ($t0 >= max_dim) return null add $t1, $a0, $t0 # $t1 = addr tree[t0] lw $t2, 0($t1) # $t2 = tree[t0] bne $t2, $zero, continua sw $a1, 0($t1) # if ($t2 == null) tree[t0] = elem j inserito continua: sll $t0, $t0, 1 ble $a1, $t2, for # continua a sin addi $t0, $t0, 4 j for overflow: li $v0, 0 j esci inserito: move $v0, $t1 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" #========================================================