.TITLE Factorial ; Function Factorial (K) Calculates K! for 0 <= K <= 12 ; Argument List: ; Parameter Offset Purpose Type Passed by K = 4 ; Function argument Longword Reference ; Result: ; K! returned as a longword in R0 ; Algorithm: ; 1. Initialize Factorial = 1, Counter = K ; 2. While Counter > 0 do ; Multiply Factorial by Counter ; Decrement Counter .DISABLE GLOBAL .ENTRY Factorial, ^M Begin: MOVL #1, R0 ; Initialize K Factorial MOVL @K(AP), R2 ; Get K for Counter Loop: BLEQ Done ; Branch if Counter <= 0 MULL2 R2, R0 ; Multiply R0 by Counter DECL R2 ; Decrement Counter BRB Loop ; Repeat at loop Done: RET ; Return from function .END