.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal vocaleTest li $v0,4 la $a0,prompt2 syscall jal filtraVocaliTest li $v0,4 la $a0,prompt3 syscall jal spacesTest li $v0,4 la $a0,prompt4 syscall jal underscoreTest li $v0,4 la $a0,prompt5 syscall jal lowerCaseTest li $v0,4 la $a0,prompt6 syscall jal compareTest li $v0,4 la $a0,prompt7 syscall jal variazioneTest li $v0,4 la $a0,prompt8 syscall jal stessoAndamentoTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\nvocaleTest: " prompt2:.asciiz "\nfiltraVocaliTest: " prompt3:.asciiz "\nspacesTest: " prompt4:.asciiz "\nunderscoreTest: " prompt5:.asciiz "\nlowerCaseTest: " prompt6:.asciiz "\ncompareTest: " prompt7:.asciiz "\nvariazioneTest: " prompt8:.asciiz "\nstessoAndamentoTest: " .text # esercizio 1 # $a0 carattere c vocale: li $v0,1 beq $a0,'a',end1 beq $a0,'e',end1 beq $a0,'i',end1 beq $a0,'o',end1 beq $a0,'u',end1 li $v0,0 end1: jr $ra # esercizio 2 vocaleTest: subu $sp,$sp,8 sw $ra,4($sp) lbu $a0,ch1 jal vocale move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data ch1: .ascii "a" .text # esercizio 3 # $a0 puntatore ad una stringa # $a1 puntatore ad un buffer stringa filtraVocali: subu $sp,$sp,16 sw $ra,12($sp) sw $s0,8($sp) sw $s1,4($sp) sw $s2,0($sp) move $s0,$a0 move $s1,$a1 loop2: lbu $a0,($s0) beqz $a0,end2 move $s2,$a0 jal vocale bnez $v0,skip2 sb $s2,($s1) addu $s1,$s1,1 skip2: addu $s0,$s0,1 j loop2 end2: sb $a0,($s1) lw $s2,0($sp) lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 filtraVocaliTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str2 la $a1,buf2 jal filtraVocali la $a0,buf2 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str2: .asciiz "Scrivere una" buf2: .space 16 .text # esercizio 1 # $a0 puntatore ad una stringa # $a1 puntatore ad un array spaces: li $t0,0 loop3: lbu $t1,($a0) beqz $t1,end3 bne $t1,' ',skip3 sb $t0,($a1) addu $a1,$a1,1 skip3: addu $a0,$a0,1 addu $t0,$t0,1 j loop3 end3: li $t0,-1 sb $t0,($a1) jr $ra # esercizio 2 spacesTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str4 la $a1,buf4 jal spaces li $v0,1 la $a1,buf4 loop4: lb $a0,($a1) beq $a0,-1,end4 syscall addu $a1,$a1,1 j loop4 end4: lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str4: .asciiz "uno due tre" buf4: .space 16 .text # esercizio 3 # $a0 puntatore ad una stringa underscore: subu $sp,$sp,8 sw $ra,4($sp) sw $s0,0($sp) move $s0,$a0 la $a1,buf5 jal spaces la $a1,buf5 li $t0,'_' loop5: lb $t1,($a1) beq $t1,-1,end5 addu $a0,$s0,$t1 sb $t0,($a0) addu $a1,$a1,1 j loop5 end5: lw $s0,0($sp) lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data buf5: .space 16 .text # esercizio 4 underscoreTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str5 jal underscore la $a0,str5 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str5: .asciiz "a bcd e" .text # esercizio 1 # $a0 puntatore ad una stringa loop6: addu $a0,$a0,1 lowerCase: lbu $t0,($a0) beqz $t0,end6 blt $t0,'A',loop6 bgt $t0,'Z',loop6 addu $t0,$t0,32 sb $t0,($a0) j loop6 end6: jr $ra # esercizio 2 lowerCaseTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str6 jal lowerCase la $a0,str6 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str6: .asciiz "eRo MaIUScoLo" .text # esercizio 3 # $a0 puntatore ad una stringa # $a1 puntatore ad una stringa compare: subu $sp,$sp,16 sw $ra,12($sp) sw $s0,8($sp) sw $s1,4($sp) move $s0,$a0 move $s1,$a1 jal lowerCase move $a0,$s1 jal lowerCase li $v0,0 loop7: lbu $t0,($s0) lbu $t1,($s1) bne $t0,$t1,end7 addu $s0,$s0,1 addu $s1,$s1,1 bnez $t0,loop7 li $v0,1 end7: lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 compareTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str8a la $a1,str8b jal compare move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str8a: .asciiz "eRo MaIUScoLo" str8b: .asciiz "ero maiusCOLO" .text # esercizio 1 # $a0 un puntatore ad un array di interi ad 8 bit con segno # $a1 un puntatore ad un array # $a2 numero di interi nell'array variazione: loop9: subu $a2,$a2,1 beqz $a2,end9 lb $t0,($a0) lb $t1,1($a0) li $t2,0 beq $t0,$t1,skip9 li $t2,1 blt $t0,$t1,skip9 li $t2,-1 skip9: sb $t2,($a1) addu $a0,$a0,1 addu $a1,$a1,1 j loop9 end9: li $t2,2 sb $t2,($a1) jr $ra # esercizio 2 variazioneTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array10a la $a1,array10b li $a2,6 jal variazione li $v0,1 la $a1,array10b loop10: lb $a0,($a1) beq $a0,2,end10 syscall addu $a1,$a1,1 j loop10 end10: lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data array10a:.byte 1,4,1,5,6,2 array10b:.space 16 .text # esercizio 3 # $a0 un puntatore ad un array di interi ad 8 bit con segno # $a1 un puntatore ad un array di interi ad 8 bit con segno # $a2 numero di interi negli array stessoAndamento: subu $sp,$sp,16 sw $ra,12($sp) sw $s0,8($sp) sw $s1,4($sp) sw $s2,0($sp) move $s0,$a0 move $s1,$a1 move $s2,$a2 la $a1,array11a jal variazione move $a0,$s1 la $a1,array11b move $a2,$s2 jal variazione la $a0,array11a la $a1,array11b li $v0,0 loop11: lbu $t0,($a0) lbu $t1,($a1) bne $t0,$t1,end11 addu $a0,$a0,1 addu $a1,$a1,1 bne $t0,2,loop11 li $v0,1 end11: lw $s2,0($sp) lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra .data array11a:.space 16 array11b:.space 16 .text # esercizio 4 stessoAndamentoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array12a la $a1,array12b li $a2,6 jal stessoAndamento move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data array12a:.byte 1,4,1,5,6,2 array12b:.byte 2,7,4,5,9,8