;; def sumDigits(n): ;; if n == 0: ;; return 0 ;; else: ;; return sumDigits(n // 10) + n % 10 allocate-registers cont ans x ten sp one sumDigits n baseCase li sp 0 li one 1 li ten 10 li sumDigits LsumDigits li baseCase LbaseCase li cont LafterSumDigits read n j sumDigits LafterSumDigits: write ans halt ;; sumDigits - computes sum of digits ;; registers used: ;; input -- n ;; output -- ans ;; continuation -- cont ;; LsumDigits: jeqz n baseCase st cont sp add sp sp one st n sp add sp sp one quo n n ten li cont LafterRecursiveCall j sumDigits LafterRecursiveCall: sub sp sp one ld n sp sub sp sp one ld cont sp rem x n ten add ans ans x j cont LbaseCase: li ans 0 j cont