AREA  FACTORIAL, CODE, READONLY
ENTRY
main 
       mov   lr, #60
       mov   fp, #0x0000C000
	   push	 {lr}
       push  {fp}
	   sub	 sp, sp, #8
	   add	 fp, sp, #0
	   movs	 r0, #4
	   bl	 factorial
	   str	 r0, [fp, #4]
	   movs	 r3, #0
	   mov	 r0, r3
	   adds	 fp, fp, #8
	   mov	 sp, fp
       pop   {fp}
 	   pop	 {pc}
stop   b     stop
factorial
	   push	 {lr}
       push  {fp}
	   sub	 sp, sp, #8
	   add	 fp, sp, #0
	   str	 r0, [fp, #4]
 	   ldr	 r3, [fp, #4]
	   cmp	 r3, #1
	   bne	 L4
	   movs	 r3, #1
	   b	 L5
L4
	   ldr	 r3, [fp, #4]
	   subs	 r3, r3, #1
	   mov	 r0, r3
	   bl	 factorial
	   mov	 r2, r0
	   ldr	 r3, [fp, #4]
	   mul	 r4, r3, r2
       mov   r3, r4
L5
	   mov	 r0, r3
	   adds	 fp, fp, #8
	   mov	 sp, fp
       pop   {fp}
	   pop	 {pc}
    END
