Example 16. Using Recursive Macros

1 .fcnolist 2 3 fact .macro N, LOC 4 5 .if N < 2 6 MOV @LOC, #1 7 .else 8 MOV @LOC, #N 9 10 11 .eval N-1, N 12 fact1 13 14 .endif 15 .endm 16 17 fact1 .macro 18 .if N > 1 19 MOV @T, @LOC 20 MPYB @P, @T, #N 21 MOV @LOC, @P 22 MOV ACC, @LOC 23 .eval N - 1, N 24 fact1 25 26 .endif 27 .endm