137 lines
No EOL
1.8 KiB
NASM
137 lines
No EOL
1.8 KiB
NASM
echo START 0
|
|
start .LDCH txt
|
|
.JSUB char
|
|
.JSUB nl
|
|
.LDA #txt
|
|
.JSUB string
|
|
.JSUB nl
|
|
|
|
LDCH #12
|
|
JSUB num
|
|
|
|
halt J halt
|
|
|
|
.char
|
|
char STB regB
|
|
STT regT
|
|
.STL regL
|
|
STS regS .shranimo registre
|
|
|
|
WD #1
|
|
.obnovimo registre
|
|
LDB regB
|
|
LDT regT
|
|
.LDL regL
|
|
LDS regS
|
|
|
|
RSUB
|
|
|
|
.nl
|
|
nl STB regB
|
|
STT regT
|
|
STS regS .shranimo registre
|
|
|
|
LDCH newline
|
|
WD #1
|
|
LDX #1
|
|
LDCH newline, X
|
|
WD #1
|
|
|
|
.obnovimo registre
|
|
LDB regB
|
|
LDT regT
|
|
LDS regS
|
|
|
|
RSUB
|
|
|
|
.string
|
|
string STA regA
|
|
STB regB
|
|
STT regT
|
|
.STL regL
|
|
STS regS .shranimo registre
|
|
|
|
loop LDB #1
|
|
CLEAR A .da lahko comparamo z 0
|
|
LDCH @regA
|
|
COMP #0
|
|
WD #1
|
|
.add +1 to regA
|
|
LDA regA
|
|
ADD #1
|
|
STA regA
|
|
JGT loop
|
|
|
|
LDA regA .obnovimo registre
|
|
LDB regB
|
|
LDT regT
|
|
.LDL regL
|
|
LDS regS
|
|
|
|
RSUB
|
|
.izpiše število zapisano v A na std izhod
|
|
num STA regA
|
|
STB regB
|
|
STT regT
|
|
STL regL
|
|
STS regS .shranimo registre
|
|
|
|
LDX #4 .X steje stevke, 4 je zadnji index arraya velikosti 5
|
|
LDS #10 .za množenje/deljenje
|
|
LDT #0x30 .za pretvorbo v ascii
|
|
|
|
loop2 RMO A, B
|
|
DIVR S, B .B = B/10
|
|
MULR S, B .B= B*10
|
|
SUBR B, A .A = ostanek
|
|
ADDR T, A .pretvorimo A v ascii
|
|
STCH digs, X .shranimo ascii ostanek
|
|
|
|
.zmanjšamo X in primerjamo z #5
|
|
RMO X, A
|
|
SUB #1
|
|
RMO A, X
|
|
LDA #0
|
|
COMPR X, A
|
|
|
|
RMO B, A .premaknemo kar je še potrebno izračunati v A
|
|
DIVR S, A .A je sedaj naslednja števka
|
|
|
|
JEQ loop2
|
|
JGT loop2
|
|
|
|
.kličemo string za izpis
|
|
LDA #digs
|
|
JSUB string
|
|
JSUB nl
|
|
|
|
LDA regA .obnovimo registre
|
|
LDB regB
|
|
LDT regT
|
|
LDL regL
|
|
LDS regS
|
|
|
|
RSUB
|
|
|
|
|
|
.digits za num
|
|
digs RESB 5 .0 bo prazna za lazje izpisovanje
|
|
BYTE 0 .konec števke
|
|
|
|
.txt
|
|
txt BYTE C'hi'
|
|
BYTE 0
|
|
|
|
.constante
|
|
newline BYTE 0x0D
|
|
BYTE 0x0A
|
|
|
|
.registri
|
|
regA RESW 1
|
|
regB RESW 1
|
|
regT RESW 1
|
|
regS RESW 1
|
|
regL RESW 1
|
|
|
|
|
|
END start |