.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal replaceTest li $v0,4 la $a0,prompt2 syscall jal wordsTest li $v0,4 la $a0,prompt3 syscall jal resultTest li $v0,4 la $a0,prompt4 syscall jal resultAllTest li $v0,4 la $a0,prompt5 syscall jal checkLessTest li $v0,4 la $a0,prompt6 syscall jal checkRangeTest li $v0,4 la $a0,prompt7 syscall jal orderedPrefixTest li $v0,4 la $a0,prompt8 syscall jal isOrderedTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\nreplaceTest: " prompt2:.asciiz "\nwordsTest: " prompt3:.asciiz "\nresultTest: " prompt4:.asciiz "\nresultAllTest: " prompt5:.asciiz "\ncheckLessTest: " prompt6:.asciiz "\ncheckRangeTest: " prompt7:.asciiz "\norderedPrefixTest: " prompt8:.asciiz "\nisOrderedTest: " .text # esercizio 1 # $a0 puntatore ad una stringa # $a1 carattere 1 # $a2 carattere 2 rep: sb $a2,($a0) norep: addu $a0,$a0,1 replace:lbu $t0,($a0) beq $t0,$a1,rep bnez $t0,norep jr $ra # esercizio 2 replaceTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,replaceStr lbu $a1,replaceChar lbu $a2,replaceChar+1 jal replace la $a0,replaceStr li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data replaceStr: .asciiz "stringa da modificare" replaceChar: .byte ' ','_' .text # esercizio 3 # $a0 puntatore ad una stringa words: subu $sp,$sp,8 sw $ra,4($sp) sw $a0,0($sp) li $a1,' ' li $a2,0 jal replace lw $v0,0($sp) lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 4 wordsTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,wordsString jal words move $a0,$v0 li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data wordsString: .asciiz "uno due tre" .text # esercizio 1 # $a0 intero a 8 bit senza segno # $a1 intero a 8 bit senza segno result: bgt $a0,$a1,res1 beq $a0,$a1,resx li $v0,'2' jr $ra resx: li $v0,'x' jr $ra res1: li $v0,'1' jr $ra # esercizio 2 resultTest: subu $sp,$sp,8 sw $ra,4($sp) lbu $a0,resNum lbu $a1,resNum+1 jal result sb $v0,0($sp) sb $0,1($sp) move $a0,$sp li $v0,4 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data resNum: .byte 1,3 .text # esercizio 3 # $a0 puntatore array di 6 coppie di interi a 8 bit senza segno resultAll: subu $sp,$sp,16 sw $ra,12($sp) sw $s0,8($sp) sw $s1,4($sp) move $s0,$a0 addu $s1,$s0,12 sb $0,1($sp) loop1: lbu $a0,0($s0) lbu $a1,1($s0) jal result sb $v0,0($sp) move $a0,$sp li $v0,4 syscall addu $s0,$s0,2 blt $s0,$s1,loop1 lw $s0,8($sp) lw $s1,4($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 resultAllTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,resAllArray jal resultAll lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data resAllArray: .byte 1,2,3,4,1,1,0,3,3,2,2,2 .text # esercizio 1 # $a0 puntatore ad una stringa # $a1 carattere checkLess: li $v0,1 loop2: lbu $t0,($a0) beqz $t0,end2 addu $a0,$a0,1 ble $t0,$a1,loop2 li $v0,0 end2: jr $ra # esercizio 2 checkLessTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,lessStr lbu $a1,lessChar jal checkLess move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data lessStr: .asciiz "abcecba" lessChar:.byte 'd' .text # esercizio 3 # $a0 puntatore ad una stringa # $a1 carattere 1 # $a2 carattere 2 checkRange: subu $sp,$sp,8 sw $ra,4($sp) move $t1,$a0 loop3: lbu $t0,($t1) beqz $t0,ok3 addu $t1,$t1,1 bge $t0,$a1,loop3 li $v0,0 j end3 ok3: move $a1,$a2 jal checkLess end3: lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 4 checkRangeTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,checkStr lbu $a1,checkChar lbu $a2,checkChar+1 jal checkRange move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data checkStr: .asciiz "qwerty" checkChar: .byte 'a','z' .text # esercizio 1 # $a0 puntatore array di interi a 32 bit senza segno orderedPrefix: li $v0,0 lw $t1,($a0) beqz $t1,end4 loop4: addu $v0,$v0,1 addu $a0,$a0,4 move $t0,$t1 lw $t1,($a0) blt $t0,$t1,loop4 end4: jr $ra # esercizio 2 orderedPrefixTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,orderedArray jal orderedPrefix move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data orderedArray: .word 2,5,7,7,6,25,0 .text # esercizio 3 # $a0 puntatore array di interi a 32 bit senza segno isOrdered: subu $sp,$sp,8 sw $ra,4($sp) sw $a0,0($sp) jal orderedPrefix lw $a0,0($sp) sll, $v0,$v0,2 addu $a0,$a0,$v0 lw $t0,($a0) li $v0,1 beqz $t0,end5 li $v0,0 end5: lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 4 isOrderedTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,isOrderedArray jal isOrdered move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data isOrderedArray: .word 2,5,15,25,30,0