Poskusu dokoncat rekurzijo, neki ne dela, dosti imam

This commit is contained in:
Timon 2025-11-10 15:11:43 +01:00
parent 9f753e66c4
commit c305a8bdb4
3 changed files with 31 additions and 13 deletions

View file

@ -1,4 +1,4 @@
1 10
5 5
7 6
0 0

View file

@ -1,5 +1,5 @@
prog START 0 prog START 0
+JSUB sinit JSUB sinit
LDA #5 LDA #5
JSUB fa JSUB fa
WD #1 WD #1

View file

@ -1,15 +1,33 @@
rek START 0 rek START 0
JSUB sinit
LDT #10
loop RD #0xFA loop JSUB read . Pretvorimo iz ASCII v stevilko
COMP #1 COMP #1 . Če je (A) <= 1 končamo, ker 0!=1!=1
JLT halt JLT halt
JSUB fa JSUB fa . Sicer izračunamo (A)!
WD #1 WD #1 . Zapišemo na std izhod
CLEAR B
CLEAR A CLEAR A
J loop J loop . Gremo prebrat naslednji vhod
halt J halt halt J halt
read RD #0xFA
COMP #0xA
JEQ rExit . Če preberemo newline gremo na izhod
SUB #0x30 . Sicer iz ascii kode dobimo stevko
LDB tmp
MULR T, B . tmp *= 10
ADDR A, B . tmp += A
STB tmp
J read
rExit LDA tmp
LDB #0
STB tmp
RSUB
fa STL @stkp fa STL @stkp
JSUB spush JSUB spush
STB @stkp STB @stkp
@ -23,7 +41,7 @@ fa STL @stkp
MULR B, A MULR B, A
faExit JSUB spop faExit JSUB spop
LDB @stkp LDB @stkp
JSUB spop JSUB spop
LDL @stkp LDL @stkp
@ -55,5 +73,5 @@ spop . stkp--
stkp WORD 0 stkp WORD 0
stk RESW 1000 stk RESW 1000
stkA WORD 0 stkA WORD 0
tmp WORD 0
END rek END rek