prog START 0 . beri stevke do newline (\n = 10), nato evalviraj LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e loop RD device . FA.dev COMP #10 . newline JEQ evaluate SUB #48 . ASCII koda za 0 +STCH stevke, X TIX #-1 . primerjava TIX tu nima pomena J loop evaluate . T zacasno hrani rezultat, na koncu v A LDT #0 . S hrani potence st. deset LDS #1 . zmanjsaj X za 1 RMO X, A SUB #1 RMO A, X . nalozi stevko, pomnozi s S, shrani oz. pristej rez. v T loop_e LDCH stevke, X MULR S, A ADDR A, T . povecaj potenco RMO S, A MUL #10 RMO A, S . zmanjsaj X RMO X, A SUB #1 RMO A, X COMP #0 JGT loop_e . ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico RMO T, A COMP #0 JEQ HALT JSUB fakulteta_r HALT J HALT END prog fakulteta_r +STL @stackptr . link reg. na sklad JSUB stackpush +STA @stackptr . parameter na sklad JSUB stackpush SUB #1 . pripravimo podproblem COMP #1 . zaustavitveni pogoj JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema JSUB fakulteta_r exit JSUB stackpop RMO A, B . premakni vrednost podroblema v B +LDA @stackptr . nalozi parameter klicujoce funkcije ("starša") MULR B, A . pomnozi, shrani v A JSUB stackpop +LDL @stackptr RSUB stackinit STA oldvalue CLEAR A LDA #stack STA stackptr CLEAR A LDA oldvalue RSUB stackpush STA oldvalue CLEAR A LDA stackptr ADD #3 STA stackptr CLEAR A LDA oldvalue RSUB stackpop STA oldvalue CLEAR A LDA stackptr SUB #3 STA stackptr CLEAR A LDA oldvalue RSUB device BYTE X'FA' stevke BYTE 100 oldvalue WORD 0 stackptr WORD 0 stack RESW 1000