#recurse.sim5 - input an integer n and output 1+2+3+...+ 000 5010 main: lda 10 %r1 = 10 001 9001 mvrr %r0,%r1 002 5006 lda recurse %r0=recurse(%r1) 003 9600 call %r0 004 8100 out %r0 output(%r0) 005 0000 halt return 006 8801 recurse: push %r1 temp=%r1 007 7101 skeq %r1 if (%r1 == 0) 008 6012 jmp notdone 009 8901 pop %r1 %r1=temp 010 8200 clr %r0 return 0 011 8909 ret 012 8401 notdone: dec %r1 %r1-- 013 5006 lda recurse %r0=recurse(%r1) 014 9600 call %r0 015 8901 pop %r1 %r1=temp 016 9410 addr %r1,%r0 return %r0=%r0+temp 017 8909 ret 000 .end main