.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal trovaProdottoTest li $v0,4 la $a0,prompt2 syscall jal contoTest li $v0,4 la $a0,prompt3 syscall jal addIngredienteTest li $v0,4 la $a0,prompt4 syscall jal addTortaTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\ntrovaProdottoTest: " prompt2:.asciiz "\ncontoTest: " prompt3:.asciiz "\naddIngredienteTest: " prompt4:.asciiz "\naddTortaTest: " .text # esercizio 1 # $a0 puntatore ad un menu # $a1 codice prodotto loop1: addu $a0,$a0,4 trovaProdotto: lw $v0,($a0) beqz $v0,end1 lhu $t1,($v0) bne $t1,$a1,loop1 end1: jr $ra # esercizio 2 trovaProdottoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,menu li $a1,3 jal trovaProdotto beqz $v0,end2 lhu $a0,2($v0) li $v0,1 syscall end2: lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data menu: .word p1,p2,p3,0 p1: .half 13,5 p2: .half 3,1 p3: .half 8,6 .text # esercizio 3 # $a0 puntatore ad un menu # $a1 puntatore ad un array di codici prodotti conto: 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 li $s2,0 loop3: move $a0,$s0 lhu $a1,($s1) beqz $a1,end3 addu $s1,$s1,2 jal trovaProdotto beqz $v0,loop3 lhu $t0,2($v0) addu $s2,$s2,$t0 j loop3 end3: move $v0,$s2 lw $s2,0($sp) lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 contoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,menu la $a1,prodotti jal conto move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prodotti:.half 3,9,13,3,0 .text # esercizio 1 # $a0 puntatore ad una ricetta # $a1 codice ingrediente # $a2 quantita loop4: addu $a0,$a0,4 addIngrediente: lw $t0,($a0) lbu $t1,($t0) bne $t1,$a1,loop4 lbu $t2,1($t0) addu $t2,$t2,$a2 sb $t2,1($t0) jr $ra # esercizio 2 addIngredienteTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,ricetta li $a1,3 li $a2,4 jal addIngrediente la $t0,ricetta lw $t1,4($t0) lbu $a0,1($t1) li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data ricetta:.word i1,i2,i3,0 i1: .byte 2,1 i2: .byte 3,5 i3: .byte 5,6 .text # esercizio 3 # $a0 puntatore ad una ricetta # $a1 puntatore ad una ricetta addTorta: subu $sp,$sp,16 sw $ra,12($sp) sw $s0,8($sp) sw $s1,4($sp) move $s0,$a0 move $s1,$a1 loop5: move $a0,$s0 lw $t0,($s1) beqz $t0,end5 addu $s1,$s1,4 lbu $a1,($t0) lbu $a2,1($t0) jal addIngrediente j loop5 end5: lw $s1,4($sp) lw $s0,8($sp) lw $ra,12($sp) addu $sp,$sp,16 jr $ra # esercizio 4 addTortaTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,ricetta la $a1,ricetta2 jal addTorta la $t0,ricetta loop6: lw $t1,($t0) beqz $t1,end6 addu $t0,$t0,4 lbu $a0,1($t1) li $v0,1 syscall j loop6 end6: lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data ricetta2:.word i4,i5,0 i4: .byte 2,3 i5: .byte 5,1