spo/vaja2/sklad/rekurzija.asm
2025-11-07 10:45:21 +01:00

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