# Data declarations .data str1: .asciiz "inserire numero elementi in array2: " array1: .word 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 .word 42, 42, 42, 42, 42 # code section .text .globl main .ent main main: # chiedere inserimento numero elementi in array2 li $v0, 4 # codice system call per print_str la $a0, str1 # indirizzo stringa da stampare syscall # stampa stringa # leggere valore inserito li $v0,5 # codice system call per read_integer syscall # lettura intero (e storage in $v0) addu $t0, $v0, 0 # backup valore numero elementi N in array # calcolo dimensione dell'array richiesto in byte sll $t1, $t0, 2 # 4 * N subu $sp, $sp, 4 # metto risultato sullo stack sw $t1, 0($sp) # allocazione dinamica memoria per array li $v0,9 # allocazione memoria (codice sbrk) lw $a0,0($sp) # dimensione array richiesto in byte syscall # $v0 <-- indirizzo array allocato move $s2,$v0 # backup indirizzo in $s2 # Inizializzazione array: # num elementi array disponibile in $t0 # indirizzo in memoria del primo elemento dell'array disponibile in $s2 # valore da scrivere inserito in $a2 indice loop in $s3 li $a2, 42 li $s3, 0 DynArrInitLoop: sw $a2, 0($s2) addu $s2, $s2, 4 addu $s3, $s3, 1 blt $s3, $t0, DynArrInitLoop # if indice < len, loop # exit addu $sp, $sp, 4 li $v0, 10 syscall .end main