.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal alfabetoUsatoTest li $v0,4 la $a0,prompt2 syscall jal stringaAlfabetoUsatoTest li $v0,4 la $a0,prompt3 syscall jal appendiMinoriTest li $v0,4 la $a0,prompt4 syscall jal appendiMinoriStringaTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\nalfabetoUsatoTest: " prompt2:.asciiz "\nstringaAlfabetoUsatoTest: " prompt3:.asciiz "\nappendiMinoriTest: " prompt4:.asciiz "\nappendiMinoriStringaTest: " .text # esercizio 1 # $a0 puntatore ad una stringa # $a1 puntatore ad un buffer loop1: subu $t1,$t0,'a' addu $t1,$a1,$t1 sb $t0,($t1) addu $a0,$a0,1 alfabetoUsato: lbu $t0,($a0) bnez $t0,loop1 jr $ra # esercizio 2 alfabetoUsatoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str1 la $a1,buf1 jal alfabetoUsato li $t0,32 la $t1,buf1 li $v0,1 loop2: lbu $a0,($t1) syscall addu $t1,$t1,1 subu $t0,$t0,1 bgtz $t0,loop2 lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str1: .asciiz "caffe" buf1: .space 33 .text # esercizio 3 # $a0 puntatore ad una stringa # $a1 puntatore ad un buffer stringaAlfabetoUsato: subu $sp,$sp,8 sw $ra,4($sp) sw $a1,0($sp) addu $a2,$a1,32 li $t0,'_' loop3: sb $t0,($a1) addu $a1,$a1,1 blt $a1,$a2,loop3 sb $0,($a1) lw $a1,0($sp) jal alfabetoUsato lw $v0,0($sp) lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 4 stringaAlfabetoUsatoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str1 la $a1,buf1 jal stringaAlfabetoUsato move $a0,$v0 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .text # esercizio 1 # $a0 puntatore ad una stringa # $a1 un carattere # $a2 puntatore ad un buffer appendiMinori: lbu $t0,($a0) beqz $t0,end4 addu $a0,$a0,1 bgeu $t0,$a1,appendiMinori sb $t0,($a2) addu $a2,$a2,1 j appendiMinori end4: sb $0,($a2) jr $ra # esercizio 2 appendiMinoriTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str4 lbu $a1,chr4 la $a2,buf4 jal appendiMinori la $a0,buf4 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str4: .asciiz "assembly" chr4: .ascii "m" buf4: .space 64 .text # esercizio 3 # $a0 puntatore ad una stringa # $a1 puntatore ad una stringa # $a2 puntatore ad un buffer appendiMinoriStringa: 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 loop5: lbu $a1,($s1) beqz $a1,end5 move $a0,$s0 move $a2,$s2 jal appendiMinori addu $s1,$s1,1 loop6: lbu $t0,($s2) beqz $t0,loop5 addu $s2,$s2,1 j loop6 end5: lw $s2,0($sp) lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 appendiMinoriStringaTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,str4 la $a1,str5 la $a2,buf4 jal appendiMinoriStringa la $a0,buf4 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data str5: .asciiz "fun"