rekurzija checkpoint
This commit is contained in:
parent
8854ec93a2
commit
e6d4b3694a
1 changed files with 51 additions and 15 deletions
|
|
@ -1,26 +1,60 @@
|
|||
prog START 0
|
||||
JSUB stackinit
|
||||
LDA #5
|
||||
JSUB fakulteta_r
|
||||
LDA #10
|
||||
JSUB fakulteta_r
|
||||
. 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
|
||||
|
||||
fakulteta_r +STL @stackptr . link reg. na sklad
|
||||
JSUB stackpush
|
||||
+STA @stackptr .parameter na sklad
|
||||
+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
|
||||
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 klicujoče funkcije ("starša")
|
||||
MULR B, A .pomnozi, shrani v A
|
||||
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
|
||||
|
|
@ -51,6 +85,8 @@ stackpop STA oldvalue
|
|||
LDA oldvalue
|
||||
RSUB
|
||||
|
||||
device BYTE X'FA'
|
||||
stevke BYTE 100
|
||||
|
||||
oldvalue WORD 0
|
||||
stackptr WORD 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue