# CopiaStruct.asm # .text .globl main main: # creazione prima struct li $v0,9 # allocazione memoria li $a0,12 # 12 byte syscall # $v0 <-- indirizzo move $s1,$v0 # $s1 prima struct # inizializzazione della struct # chiedere inserimento eta li $v0, 4 # codice system call per print_str la $a0, str1 # indirizzo stringa da stampare syscall # stampa stringa # leggere valore per eta li $v0,5 # codice system call per read_integer syscall # lettura intero (e storage in $v0) sw $v0,0($s1) # salva valore letto in eta # chiedere inserimento salario li $v0, 4 # codice system call per print_str la $a0, str2 # indirizzo stringa da stampare syscall # stampa stringa # leggere valore per salario li $v0,5 # codice system call per read_integer syscall # lettura intero (e storage in $v0) sw $v0,4($s1) # salva valore letto in salario # chiedere inserimento livello li $v0, 4 # codice system call per print_str la $a0, str3 # indirizzo stringa da stampare syscall # stampa stringa # leggere valore per livello li $v0,5 # codice system call per read_integer syscall # lettura intero (e storage in $v0) sw $v0,8($s1) # salva valore letto in livello # creazione seconda struct li $v0,9 # allocazione memoria li $a0,12 # 12 byte syscall # $v0 <-- indirizzo move $s2,$v0 # $s2 seconda struct # copia dati dalla prima alla seconda struct lw $t0,0($s1) # copia eta dalla prima sw $t0,0($s2) # alla seconda struttura lw $t0,4($s1) # copia salario dalla prima sw $t0,4($s2) # alla seconda struttura lw $t0,8($s1) # copia livello dalla prima sw $t0,8($s2) # alla seconda struttura li $v0,10 # exit syscall .data str1: .asciiz "inserire eta: " str2: .asciiz "inserire salario: " str3: .asciiz "inserire livello: "