Dodal funkcionalnost da izpise dejanske stevilke ne sam ascii kode
This commit is contained in:
parent
a54d6c7f46
commit
101414bad7
1 changed files with 64 additions and 6 deletions
|
|
@ -1,23 +1,74 @@
|
||||||
rek START 0
|
rek START 0
|
||||||
JSUB sinit
|
JSUB sinit
|
||||||
|
JSUB binit
|
||||||
LDT #10
|
LDT #10
|
||||||
|
|
||||||
|
|
||||||
loop JSUB read . Pretvorimo iz ASCII v stevilko
|
loop JSUB read . Pretvorimo iz ASCII v stevilko
|
||||||
COMP #1 . Če je (A) <= 1 končamo, ker 0!=1!=1
|
COMP #1 . Če je (A) == 0 končamo
|
||||||
JLT halt
|
JLT halt
|
||||||
JSUB fa . Sicer izračunamo (A)!
|
JSUB fa . Sicer izračunamo (A)!
|
||||||
+STCH @screen
|
JSUB store . Shranimo znake na buffer
|
||||||
LDA screen
|
JSUB print . Printamo iz bufferja
|
||||||
ADD #1
|
|
||||||
STA screen
|
|
||||||
CLEAR B
|
CLEAR B
|
||||||
CLEAR A
|
CLEAR A
|
||||||
J loop . Gremo prebrat naslednji vhod
|
J loop . Gremo prebrat naslednji vhod
|
||||||
|
|
||||||
|
print LDCH @bfp . Shranimo char iz pomnilniske lokacije na katero kaze bfp (torej iz bufferja)
|
||||||
|
+STCH @screen . Ta char zapisemo na zaslon
|
||||||
|
LDA screen
|
||||||
|
ADD #1 . Pomaknemo screen za eno naprej
|
||||||
|
STA screen
|
||||||
|
LDA bfp . Bfp znizamo za 1, da kaze na naslednji znak (printamo v obratnem vrstnem redu kakor smo zapisovali)
|
||||||
|
SUB #1 .
|
||||||
|
STA bfp .
|
||||||
|
COMP #buffer . Ce smo sli cez buffer, smo sprintali vse, gremo na exit
|
||||||
|
JLT print_exit .
|
||||||
|
J print . Ce nismo sli cez, potem imamo se za sprintat
|
||||||
|
|
||||||
|
|
||||||
|
print_exit LDA #buffer
|
||||||
|
STA bfp . Obnovimo bfp na začetek bufferja za naslednjo zanko
|
||||||
|
RSUB
|
||||||
|
|
||||||
|
|
||||||
|
store COMP #10
|
||||||
|
JLT s_single
|
||||||
|
STA tmp
|
||||||
|
|
||||||
|
. MOD
|
||||||
|
DIV #10
|
||||||
|
MUL #10
|
||||||
|
RMO A, X
|
||||||
|
LDA tmp
|
||||||
|
SUBR X, A
|
||||||
|
. MOD
|
||||||
|
ADD #48
|
||||||
|
+STCH @bfp . Na buffer shranimo char ki je ostanek deljenja
|
||||||
|
LDA bfp . A = bfp
|
||||||
|
ADD #1 . A += 1
|
||||||
|
STA bfp . bfp = bfp + 1, buffer pointer premaknemo naprej
|
||||||
|
LDA tmp . Obnovimo A
|
||||||
|
DIV #10 . A /= 10
|
||||||
|
J store
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
s_single
|
||||||
|
ADD #48
|
||||||
|
+STCH @bfp
|
||||||
|
LDA bfp
|
||||||
|
ADD #1
|
||||||
|
STA bfp
|
||||||
|
LDB #0
|
||||||
|
STB tmp
|
||||||
|
RSUB
|
||||||
|
|
||||||
|
|
||||||
halt J halt
|
halt J halt
|
||||||
|
|
||||||
read RD #0xFA . V A se shrani naslednji prebrani znak
|
read RD #0xFA . V A se shrani naslednji prebrani znak
|
||||||
COMP #0xA
|
COMP #0xA
|
||||||
JEQ rExit . Če preberemo newline gremo na izhod
|
JEQ rExit . Če preberemo newline gremo na izhod
|
||||||
SUB #0x30 . Sicer iz ascii kode dobimo stevko
|
SUB #0x30 . Sicer iz ascii kode dobimo stevko
|
||||||
|
|
@ -51,6 +102,11 @@ faExit JSUB spop
|
||||||
LDL @stkp
|
LDL @stkp
|
||||||
RSUB
|
RSUB
|
||||||
|
|
||||||
|
binit LDA #buffer . V A nalozimo pomnilnisko lokacijo od bufferja
|
||||||
|
STA bfp
|
||||||
|
CLEAR A
|
||||||
|
RSUB
|
||||||
|
|
||||||
|
|
||||||
sinit STA stkA
|
sinit STA stkA
|
||||||
LDA #stk
|
LDA #stk
|
||||||
|
|
@ -74,6 +130,8 @@ spop . stkp--
|
||||||
LDA stkA
|
LDA stkA
|
||||||
RSUB
|
RSUB
|
||||||
|
|
||||||
|
bfp WORD 0 . Pointer na buffer
|
||||||
|
buffer RESB 10 . Buffer zadosti za napisat 10 mestne stevilke
|
||||||
screen WORD 0xb800
|
screen WORD 0xb800
|
||||||
stkp WORD 0
|
stkp WORD 0
|
||||||
stk RESW 1000
|
stk RESW 1000
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue