#--------------| # File: fattoriale.asm # # tested on SPIM Version 6.3a # # input: numero intero | output: fattoriale del numero # # data:25/01/2004 # # kraba # +-+-+-+-+ +-+-+-+ # |m|i|p|s| |A|S|M| # +-+-+-+-+ +-+-+-+ #--------------| .data inserimento: .asciiz "\nInserisci un numero: " nota: .asciiz "\n\tInserire numeri max fino a 16\n\tscrivere numero >16 per terminare l`esecuzione" annuncio: .asciiz "\nIl fattoriale del numero e`: " non_definito: .asciiz "\nFattoriale non definito!" .text main: li $v0,4 la $a0, nota syscall ciclo: li $v0,4 la $a0, inserimento syscall li $v0, 5 syscall addi $s0, $v0, 0 addi $t1, $s0, 0 beq $s0, 1, n_uno beq $s0, 0, n_zero bltz $t1, negativi bgt $s0, 16, fine jal fattoriale j ciclo fattoriale: addi $s0, $s0, -1 mult $t1, $s0 mflo $t1 beq $s0, 1, stampa j fattoriale jr $ra stampa: li $v0, 4 la $a0, annuncio syscall li $v0, 1 addi $a0, $t1, 0 syscall jr $ra n_zero: li $v0, 4 la $a0, annuncio syscall addi $v0, $zero, 1 add $a0, $zero, 1 syscall jr $ra n_uno: li $v0,4 la $a0, annuncio syscall li $v0,1 add $a0, $zero, 1 syscall jr $ra negativi: li $v0, 4 la $a0, non_definito syscall jr $ra fine: li $v0,10 syscall