rekurzija.asm completed
This commit is contained in:
parent
414325bf95
commit
83a4e6015a
2 changed files with 46 additions and 12 deletions
|
|
@ -1,3 +1,5 @@
|
||||||
|
1
|
||||||
|
9
|
||||||
5
|
5
|
||||||
10
|
10
|
||||||
0
|
0
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
prog START 0
|
prog START 0
|
||||||
. beri stevke do newline (\n = 10), nato evalviraj
|
. inicializiraj sklad
|
||||||
|
JSUB stackinit
|
||||||
|
. beri stevke do newline (\n = 10), nato evalviraj stevilo
|
||||||
LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e
|
LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e
|
||||||
loop RD device . FA.dev
|
loop RD device . FA.dev
|
||||||
COMP #10 . newline
|
COMP #10 . newline
|
||||||
|
|
@ -8,7 +10,7 @@ loop RD device . FA.dev
|
||||||
+STCH stevke, X
|
+STCH stevke, X
|
||||||
TIX #-1 . primerjava TIX tu nima pomena
|
TIX #-1 . primerjava TIX tu nima pomena
|
||||||
J loop
|
J loop
|
||||||
evaluate . T zacasno hrani rezultat, na koncu v A
|
evaluate . T zacasno hrani rezultat; na koncu v A
|
||||||
LDT #0
|
LDT #0
|
||||||
. S hrani potence st. deset
|
. S hrani potence st. deset
|
||||||
LDS #1
|
LDS #1
|
||||||
|
|
@ -28,39 +30,67 @@ loop_e LDCH stevke, X
|
||||||
RMO X, A
|
RMO X, A
|
||||||
SUB #1
|
SUB #1
|
||||||
RMO A, X
|
RMO A, X
|
||||||
|
. ce je X = 0, si prebral vse stevke
|
||||||
COMP #0
|
COMP #0
|
||||||
JGT loop_e
|
JGT loop_e
|
||||||
|
|
||||||
. ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico
|
. ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico
|
||||||
RMO T, A
|
RMO T, A
|
||||||
COMP #0
|
COMP #0
|
||||||
JEQ HALT
|
JEQ HALT
|
||||||
JSUB stackinit
|
|
||||||
JSUB fakulteta_r
|
JSUB fakulteta_r
|
||||||
. JSUB izpis
|
. izpisi rezultat na standard output
|
||||||
STA temp
|
|
||||||
CLEAR A
|
|
||||||
CLEAR T
|
|
||||||
CLEAR S
|
CLEAR S
|
||||||
CLEAR X
|
JSUB izpis
|
||||||
|
CLEAR A
|
||||||
J prog
|
J prog
|
||||||
HALT J HALT
|
HALT J HALT
|
||||||
END prog
|
END prog
|
||||||
|
|
||||||
|
izpis LDX #1
|
||||||
|
loop_i RMO A, S . kopiraj stevilo v S
|
||||||
|
. pridobi stevko, z mod 10
|
||||||
|
DIV #10
|
||||||
|
MUL #10
|
||||||
|
RMO A, T . odstevanec gre v T
|
||||||
|
RMO S, A
|
||||||
|
SUBR T, A
|
||||||
|
STCH stevke_r, X
|
||||||
|
TIX #-1 . primerjava nima pomena
|
||||||
|
RMO S, A
|
||||||
|
DIV #10
|
||||||
|
COMP #0
|
||||||
|
JGT loop_i
|
||||||
|
. izpis iz pomnilnika
|
||||||
|
RMO X, A
|
||||||
|
SUB #1
|
||||||
|
RMO A, X
|
||||||
|
loop_ii LDCH stevke_r, X
|
||||||
|
ADD #48 . pretvori v ascii
|
||||||
|
WD #1
|
||||||
|
RMO X, A
|
||||||
|
SUB #1
|
||||||
|
RMO A, X
|
||||||
|
COMP #0
|
||||||
|
JGT loop_ii
|
||||||
|
. izpis newline
|
||||||
|
LDA #10
|
||||||
|
WD #1
|
||||||
|
RSUB
|
||||||
|
|
||||||
fakulteta_r +STL @stackptr . link reg. na sklad
|
fakulteta_r +STL @stackptr . link reg. na sklad
|
||||||
JSUB stackpush
|
JSUB stackpush
|
||||||
+STA @stackptr . parameter na sklad
|
+STA @stackptr . parameter na sklad
|
||||||
JSUB stackpush
|
JSUB stackpush
|
||||||
|
|
||||||
|
COMP #1 . robni primer n = 1
|
||||||
|
JEQ exit
|
||||||
SUB #1 . pripravimo podproblem
|
SUB #1 . pripravimo podproblem
|
||||||
COMP #1 . zaustavitveni pogoj
|
COMP #1 . zaustavitveni pogoj
|
||||||
JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema
|
JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema
|
||||||
JSUB fakulteta_r
|
JSUB fakulteta_r
|
||||||
|
|
||||||
exit JSUB stackpop
|
exit RMO A, B . premakni vrednost podroblema v B
|
||||||
RMO A, B . premakni vrednost podroblema v B
|
JSUB stackpop
|
||||||
+LDA @stackptr . nalozi parameter klicujoce funkcije ("starša")
|
+LDA @stackptr . nalozi parameter klicujoce funkcije ("starša")
|
||||||
MULR B, A . pomnozi, shrani v A
|
MULR B, A . pomnozi, shrani v A
|
||||||
JSUB stackpop
|
JSUB stackpop
|
||||||
|
|
@ -92,9 +122,11 @@ stackpop STA oldvalue
|
||||||
CLEAR A
|
CLEAR A
|
||||||
LDA oldvalue
|
LDA oldvalue
|
||||||
RSUB
|
RSUB
|
||||||
|
|
||||||
temp WORD 0
|
temp WORD 0
|
||||||
device BYTE X'FA'
|
device BYTE X'FA'
|
||||||
stevke BYTE 100
|
stevke BYTE 100
|
||||||
|
stevke_r BYTE 100
|
||||||
|
|
||||||
oldvalue WORD 0
|
oldvalue WORD 0
|
||||||
stackptr WORD 0
|
stackptr WORD 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue