57 lines
1.3 KiB
NASM
57 lines
1.3 KiB
NASM
prog START 0
|
|
JSUB stackinit
|
|
LDA #5
|
|
JSUB fakulteta_r
|
|
LDA #10
|
|
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 klicujoče 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
|
|
|
|
|
|
oldvalue WORD 0
|
|
stackptr WORD 0
|
|
stack RESW 1000
|