#NB queste soluzioni sono prese # da AdE_assembly_220903.s .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,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: " 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 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