########################################################### ## INSERIRE: COGNOME - NOME - NUMERO POSTAZIONE - PROFESSORE ########################################################### .data #Albero binario di ricerca per testare il programma #La prima pozione dell'array "tree" contiene la dimensione #in bytes dell'array tree: .word 32,50,10,80,0,30,0,85 .text .globl main main: la $a0, tree #l'albero li $a1, 30 #l'elemento da cercare jal find move $a0, $v0 li $v0, 1 # stampa elem syscall esce: li $a0, 0 li $v0, 10 # fine syscall #===================================================== # Sub: "find" cerca un dato elemento nell'albero binario di ricerca # Arg1: $a0 = indirizzo dell'array in cui e' memorizzato l'albero # Arg2: $a1 = elemento da cercare nell'albero binario di ricerca # Se non trova l'elemento ritorna zero, # altrimenti ritorna l'offset dell'elemento trovato #======================================================== # INSERIRE QUI IL CODICE RICHIESTO find: li $v0, 4 # pos =4 lw $t8, 0($a0) # $t8 = max_dim forF: bge $v0, $t8, nonTrovato # if ($v0 >= max_dim) return null add $t1, $a0, $v0 # $t1 = addr tree[v0] lw $t2, ($t1) # $t2 = tree[v0] beq $t2, $zero, nonTrovato beq $t2, $a1, esciF # trovato sll $v0, $v0, 1 ble $a1, $t2, forF # continua a sin addi $v0, $v0, 4 j forF nonTrovato: li $v0, 0 esciF: jr $ra