.data __str0: .asciiz "Enter n:\n" __str1: .asciiz "n! = " __str2: .asciiz "\n" .text .globl entry entry: addi $sp, $sp, -4 addi $sp, $sp, -16 la $s0, prints sw $s0, 12($sp) la $t0, __L1 sw $t0, 8($sp) la $t0, __str0 sw $t0, 0($sp) lw $t0, 12($sp) addi $sp, $sp, 0 jr $t0 __L1: addi $sp, $sp, 0 lw $t0, 4($sp) lw $s0, 12($sp) move $s0, $t0 addi $sp, $sp, 16 addi $sp, $sp, -16 addi $s0, $sp, 16 la $s1, inputd sw $s1, 12($sp) sw $s0, 8($sp) la $t0, __L3 sw $t0, 4($sp) lw $t0, 12($sp) addi $sp, $sp, 0 jr $t0 __L3: addi $sp, $sp, 0 lw $t0, 0($sp) lw $s0, 8($sp) lw $s1, 12($sp) move $s1, $t0 sw $s1, 0($s0) move $s0, $s1 addi $sp, $sp, 16 addi $sp, $sp, -16 la $s0, prints sw $s0, 12($sp) la $t0, __L5 sw $t0, 8($sp) la $t0, __str1 sw $t0, 0($sp) lw $t0, 12($sp) addi $sp, $sp, 0 jr $t0 __L5: addi $sp, $sp, 0 lw $t0, 4($sp) lw $s0, 12($sp) move $s0, $t0 addi $sp, $sp, 16 addi $sp, $sp, -28 la $s0, printd sw $s0, 24($sp) la $t0, __L8 sw $t0, 20($sp) la $t0, factorial sw $t0, 12($sp) la $t0, __L9 sw $t0, 8($sp) lw $t0, 28($sp) sw $t0, 0($sp) lw $t0, 12($sp) addi $sp, $sp, 0 jr $t0 __L9: addi $sp, $sp, 0 lw $t0, 4($sp) sw $t0, 12($sp) lw $t0, 24($sp) addi $sp, $sp, 12 jr $t0 __L8: addi $sp, $sp, -12 lw $t0, 16($sp) lw $s0, 24($sp) move $s0, $t0 addi $sp, $sp, 28 addi $sp, $sp, -16 la $s0, prints sw $s0, 12($sp) la $t0, __L11 sw $t0, 8($sp) la $t0, __str2 sw $t0, 0($sp) lw $t0, 12($sp) addi $sp, $sp, 0 jr $t0 __L11: addi $sp, $sp, 0 lw $t0, 4($sp) lw $s0, 12($sp) move $s0, $t0 addi $sp, $sp, 16 addi $sp, $sp, 4 lw $ra, 4($sp) jr $ra .globl factorial factorial: addi $sp, $sp, 0 lw $s0, 0($sp) li $s1, 1 sgt $s0, $s0, $s1 beq $s0, $zero, __L12 addi $sp, $sp, -20 lw $s0, 20($sp) la $s1, factorial sw $s1, 16($sp) sw $s0, 12($sp) la $t0, __L14 sw $t0, 8($sp) lw $t0, 20($sp) sw $t0, 0($sp) li $s0, 1 lw $t0, 0($sp) sub $t0, $t0, $s0 sw $t0, 0($sp) lw $t0, 16($sp) addi $sp, $sp, 0 jr $t0 __L14: addi $sp, $sp, 0 lw $t0, 4($sp) lw $s0, 12($sp) lw $s1, 16($sp) move $s1, $t0 mult $s0, $s1 mflo $s0 addi $sp, $sp, 20 sw $s0, 4($sp) addi $sp, $sp, 0 lw $ra, 8($sp) jr $ra __L12: li $s0, 1 sw $s0, 4($sp) addi $sp, $sp, 0 lw $ra, 8($sp) jr $ra addi $sp, $sp, 0 lw $ra, 8($sp) jr $ra