allocate-registers n, cont, downUp, baseCase, sp, one li one, 1 li downUp, LdownUp li baseCase, LbaseCase li sp, 0 read n li cont, LafterTopLevel j downUp LafterTopLevel: halt ;; that's the end of the main program ;; now we can write downUp LdownUp: jeqz n, baseCase write n ; call downUp(n-1) st n, sp add sp, sp, one st cont, sp add sp, sp, one sub n, n, one li cont, LafterTheRecursiveCall j downUp LafterTheRecursiveCall: sub sp, sp, one ld cont, sp sub sp, sp, one ld n, sp write n j cont LbaseCase: write n j cont