allocate-registers n, cont, ten, base-case, body, sp, one, write-digs, digit li sp, 0 li ten, 10 li one, 1 li body, body-label li write-digs, write-digits read n li cont, after-top-level write-digits: ; writes digits of n (MSD to LSD) where n >= 0, then jumps to cont slt base-case, n, ten jeqz base-case, body write n j cont body-label: st n, sp add sp, sp, one st cont, sp add sp, sp, one quo n, n, ten li cont, print-last-digit j write-digs after-top-level: halt print-last-digit: sub sp, sp, one ld cont, sp sub sp, sp, one ld n, sp rem digit, n, ten write digit j cont