.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal copiaParolaTest li $v0,4 la $a0,prompt2 syscall jal componiFraseTest li $v0,4 la $a0,prompt3 syscall jal copiaColoreTest li $v0,4 la $a0,prompt4 syscall jal componiColoriTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\ncopiaParolaTest: " prompt2:.asciiz "\ncomponiFraseTest: " prompt3:.asciiz "\ncopiaColoreTest: " prompt4:.asciiz "\ncomponiColoriTest: " .text # esercizio 1 # $a0 puntatore ad un array # $a1 indice # $a2 puntatore ad un buffer copiaParola: sll $t0,$a1,2 addu $t1,$a0,$t0 lw $t2,($t1) loop1: lbu $t3,($t2) beqz $t3,end1 sb $t3,($a2) addu $t2,$t2,1 addu $a2,$a2,1 j loop1 end1: move $v0,$a2 jr $ra # esercizio 2 copiaParolaTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,vocabolario li $a1,3 la $a2,buffer1 jal copiaParola sb $0,($v0) la $a0,buffer1 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data vocabolario:.word p1,p2,p3,p4 p1: .asciiz "settembre" p2: .asciiz "assembly" p3: .asciiz "di" p4: .asciiz "scritto" buffer1:.space 128 .text # esercizio 3 # $a0 puntatore ad un array di indici # $a1 lunghezza dell'array # $a2 puntatore ad un buffer componiFrase: subu $sp,$sp,16 sw $ra,8($sp) sw $s0,4($sp) sw $s1,0($sp) move $s0,$a0 move $s1,$a1 beqz $s1,end2 loop2: la $a0,vocabolario lbu $a1,($s0) jal copiaParola subu $s1,$s1,1 beqz $s1,end2 li $t0,' ' sb $t0,($v0) addu $a2,$v0,1 addu $s0,$s0,1 j loop2 end2: sb $0,($v0) lw $s1,0($sp) lw $s0,4($sp) lw $ra,8($sp) addu $sp,$sp,16 jr $ra # esercizio 4 componiFraseTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,indici2 li $a1,5 la $a2,buffer2 jal componiFrase la $a0,buffer2 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data indici2:.byte 3,2,0,2,1 buffer2:.space 128 .text # esercizio 1 # $a0 puntatore ad un array # $a1 indice # $a2 puntatore ad un buffer copiaColore: sll $t0,$a1,2 add $t1,$a0,$t0 lw $t2,($t1) loop3: lbu $t3,($t2) beqz $t3,end3 sb $t3,($a2) addu $t2,$t2,1 addu $a2,$a2,1 j loop3 end3: move $v0,$a2 jr $ra # esercizio 2 copiaColoreTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,tavolozza li $a1,2 la $a2,buffer4 jal copiaColore sb $0,($v0) la $a0,buffer4 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data tavolozza:.word c1,c2,c3,c4 c1: .asciiz "rosso" c2: .asciiz "bianco" c3: .asciiz "giallo" c4: .asciiz "verde" buffer4:.space 128 .text # esercizio 3 # $a0 puntatore ad un array di indici # $a1 lunghezza dell'array # $a2 puntatore ad un buffer componiColori: subu $sp,$sp,16 sw $ra,8($sp) sw $s0,4($sp) sw $s1,0($sp) move $s0,$a0 move $s1,$a1 beqz $s1,end2 loop4: la $a0,tavolozza lhu $a1,($s0) jal copiaColore subu $s1,$s1,1 beqz $s1,end4 li $t0,'+' sb $t0,($v0) addu $a2,$v0,1 addu $s0,$s0,2 j loop4 end4: sb $0,($v0) lw $s1,0($sp) lw $s0,4($sp) lw $ra,8($sp) addu $sp,$sp,16 jr $ra # esercizio 4 componiColoriTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,indici5 li $a1,3 la $a2,buffer5 jal componiColori la $a0,buffer5 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data indici5:.half 1,0,3 buffer5:.space 128