# listaottonodi.asm # .text .globl main main: # creare la lista concatenata # $s1 nodo corrente in loop costruzione lista # $s2 contatore loop costruzione # creazione primo nodo li $v0,9 li $a0,8 syscall move $s1,$v0 # backup puntatore a primo nodo sw $s1,first # inizializzazione primo nodo li $t0,1 sw $t0,0($s1) # creazione nodi rimanenti li $s2,2 li $s3,8 loop: bgtu $s2,$s3,done # creazione di un nodo li $v0,9 li $a0,8 syscall # collegamento del nodo al precedente sw $v0,4($s1) # rendere nodo creato nodo corrente move $s1,$v0 # inizializzazione nodo sw $s2,0($s1) addi $s2,$s2,1 b loop done: # chiusura lista sw $0,4($s1) # stampa contenuto lista # $s0 --- nodo corrente nel print loop lw $s0,first # ottenere puntatore a primo nodo lp: beqz $s0,endlp # fino a quando il puntatore non è nullo lw $a0,0($s0) # leggi dato nodo li $v0,1 # stampa syscall # la $a0,sep # stampa separatore li $v0,4 # syscall # lw $s0,4($s0) # ottieni puntatore a prossimo nodo b lp endlp: li $v0,10 syscall .data first: .word 0 sep: .asciiz " "