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
|
||||
JSUB sinit
|
||||
JSUB binit
|
||||
LDT #10
|
||||
|
||||
|
||||
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
|
||||
JSUB fa . Sicer izračunamo (A)!
|
||||
+STCH @screen
|
||||
LDA screen
|
||||
ADD #1
|
||||
STA screen
|
||||
JSUB store . Shranimo znake na buffer
|
||||
JSUB print . Printamo iz bufferja
|
||||
|
||||
CLEAR B
|
||||
CLEAR A
|
||||
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
|
||||
|
||||
read RD #0xFA . V A se shrani naslednji prebrani znak
|
||||
read RD #0xFA . V A se shrani naslednji prebrani znak
|
||||
COMP #0xA
|
||||
JEQ rExit . Če preberemo newline gremo na izhod
|
||||
SUB #0x30 . Sicer iz ascii kode dobimo stevko
|
||||
|
|
@ -51,6 +102,11 @@ faExit JSUB spop
|
|||
LDL @stkp
|
||||
RSUB
|
||||
|
||||
binit LDA #buffer . V A nalozimo pomnilnisko lokacijo od bufferja
|
||||
STA bfp
|
||||
CLEAR A
|
||||
RSUB
|
||||
|
||||
|
||||
sinit STA stkA
|
||||
LDA #stk
|
||||
|
|
@ -74,6 +130,8 @@ spop . stkp--
|
|||
LDA stkA
|
||||
RSUB
|
||||
|
||||
bfp WORD 0 . Pointer na buffer
|
||||
buffer RESB 10 . Buffer zadosti za napisat 10 mestne stevilke
|
||||
screen WORD 0xb800
|
||||
stkp WORD 0
|
||||
stk RESW 1000
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue