###################################################################### # factorial.s (recursive) ###################################################################### .data prompt: .asciiz "Enter a positiv number:\n" response: .asciiz "Factorial: " ###################################################################### # main ###################################################################### .text .globl main main: li $v0, 4 la $a0, prompt syscall li $v0, 5 syscall move $s0, $v0 move $a0, $s0 jal factorial move $a0, $v0 li $v0, 1 syscall exit: li $v0, 10 syscall ###################################################################### # factorial ###################################################################### .text factorial: sub $sp, $sp, 16 sw $fp, 16($sp) sw $ra, 12($sp) sw $s0, 8($sp) add $fp, $sp, 16 sw $a0, -12($fp) move $s0, $a0 bgt $s0, 1, recurse li $v0, 1 lw $s0, 8($sp) lw $ra, 12($sp) lw $fp, 16($sp) add $sp, $sp, 16 jr $ra recurse: sub $a0, $a0, 1 jal factorial mul $v0, $v0, $s0 lw $s0, 8($sp) lw $ra, 12($sp) lw $fp, 16($sp) add $sp, $sp, 16 jr $ra