started up asm

This commit is contained in:
aljazbrodar. 2025-12-18 13:49:58 +01:00
parent ef273790b8
commit acce30cea1
45 changed files with 1167 additions and 728 deletions

View file

@ -1,29 +0,0 @@
HORNER START 0
. Pretvorimo polinom x^4 + 2x^3 + 3x^2 + 4x+5 v Hornerjevo obliko
. b_n = a_n = 1
. b_n-1 = 2 + b_n * x = 2 + 1 * x = 4
. b_n-2 = 3 + b_n-1 * x = 3 + 4 * x = 11
. b_n-3 = 4 + b_n-2 * x = 4 + 11 * x = 26
. b_n-4 = 5 + b_n-3 * x = 5 + 26 * x = 57
. kjer x = 2
LDA #1
MUL x
ADD #2
MUL x
ADD #3
MUL x
ADD #4
MUL x
ADD #5
STA res
HALT J HALT
END HORNER
x WORD 2
res RESW 1

View file

@ -1,39 +0,0 @@
POLY START 0
.x^4
LDA x
MUL x
MUL x
MUL x
STA res
CLEAR A
.+2x^3
LDA x
MUL x
MUL x
MUL #2
ADD res
STA res
CLEAR A
.+3x^2
LDA x
MUL x
MUL #3
ADD res
STA res
CLEAR A
.+4x
LDA x
MUL #4
ADD res
STA res
CLEAR A
.+5
LDA res
ADD #5
STA res
CLEAR A
HALT J HALT
END POLY
x WORD 2
res RESW 1

View file

@ -1,47 +0,0 @@
MAIN START 0
.nastavi X register za prehod cez tabelo
LDX counter
.izracun vrednosti za vsak x v tabeli in
LOOP STA ctx_a
JSUB HORNER_X
LDA counter
ADD #3
STA counter
LDX counter
COMP #bytes_len
JLT LOOP
HALT J HALT
END MAIN
HORNER_X LDA #1
MUL in, X
ADD #2
MUL in, X
ADD #3
MUL in, X
ADD #4
MUL in, X
ADD #5
STA in, X
.povrni kontekst pred skokom v subrutino
LDA ctx_a
RSUB
.tabela x-ov polinoma
in WORD 0
WORD 2
WORD 3
.parametri
lastin EQU *
bytes_len EQU lastin - in
counter WORD 0
.kontest
ctx_a RESW 1

View file

@ -1,19 +1,19 @@
***** Section <default> *****
Stats: size=75 blocks=75 symbols=9 literals=0 relocations=0
Stats: size=81 blocks=81 symbols=9 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 0004B 23 6 1
<default> 00000 00051 22 8 1
Symbols
name hex dec scope kind type description
HALT 00001C 28 local relative code label
HORNER_X 00001F 31 local relative code label
LOOP 00000E 14 local relative code label
HALT 00001B 27 local relative code label
HORNER_X 00001E 30 local relative code label
LOOP 000003 3 local relative code label
MAIN 000000 0 exported relative code label
bytes_len 000000 0 local relative notlabel lasttin-in
bytes_len 000009 9 local absolute notlabel lastin-in
counter 00004B 75 local relative data label
ctx_a 00004E 78 local relative data label
in 000042 66 local relative data label
lastin 000045 69 local absolute notlabel *
res 000048 72 local relative data label
words_len 000045 69 local relative data label
lastin 00004B 75 local absolute notlabel *
Literals
label definition
Relocations

View file

@ -1,49 +1,47 @@
00000 MAIN START 0
. doloci dolzino v word-ih
00000 012FFD LDA #bytes_len
00003 250003 DIV #3
00006 0F203C STA words_len
00009 B400 CLEAR A
. nastavi X register za prehod cez tabelo
0000B 050000 LDX #0
00000 072048 LDX counter
. izracun vrednosti za vsak x v tabeli in
0000E 3F200E LOOP J HORNER_X
00011 2F2031 TIX words_len
00014 010003 LDA #3
00017 9801 MULR A,X
00019 3B2FF2 JLT LOOP
00003 0F2048 LOOP STA ctx_a
00006 4B2015 JSUB HORNER_X
00009 03203F LDA counter
0000C 190003 ADD #3
0000F 0F2039 STA counter
00012 072036 LDX counter
00015 290009 COMP #bytes_len
00018 3B2FE8 JLT LOOP
0001C 3F2FFD HALT J HALT
0001F END MAIN
0001B 3F2FFD HALT J HALT
0001E END MAIN
0001F 010001 HORNER_X LDA #1
0001E 010001 HORNER_X LDA #1
00022 23A01D MUL in,X
00025 190002 ADD #2
00021 23A01E MUL in,X
00024 190002 ADD #2
00028 23A017 MUL in,X
0002B 190003 ADD #3
00027 23A018 MUL in,X
0002A 190003 ADD #3
0002E 23A011 MUL in,X
00031 190004 ADD #4
0002D 23A012 MUL in,X
00030 190004 ADD #4
00034 23A00B MUL in,X
00037 190005 ADD #5
00033 23A00C MUL in,X
00036 190005 ADD #5
0003A 0FA005 STA in,X
00039 0FA006 STA in,X
0003D B400 CLEAR A
. povrni kontekst pred skokom v subrutino
0003C 03200F LDA ctx_a
0003F 4F0000 RSUB
. tabela x-ov polinoma
00042 000002 in WORD 2
. WORD 5
. WORD 42
. WORD 2
00042 000000 in WORD 0
00045 000002 WORD 2
00048 000003 WORD 3
. parametri
00045 lastin EQU *
00045 bytes_len EQU lasttin-in
00045 000001 words_len WORD 1
00048 000000 res RESW 1
0004B lastin EQU *
0004B bytes_len EQU lastin-in
0004B 000000 counter WORD 0
. kontest
0004E 000000 ctx_a RESW 1

View file

@ -1,5 +1,5 @@
HMAIN 00000000004B
T0000001E012FFD2500030F203CB4000500003F200E2F203101000398013B2FF23F2F
T00001E1EFD01000123A01D19000223A01719000323A01119000423A00B1900050FA0
T00003C0C05B4004F0000000002000001
HMAIN 000000000051
T0000001E0720480F20484B201503203F1900030F20390720362900093B2FE83F2FFD
T00001E1E01000123A01E19000223A01819000323A01219000423A00C1900050FA006
T00003C1203200F4F0000000000000002000003000000
E000000

View file

@ -0,0 +1,36 @@
***** Section <default> *****
Stats: size=3292 blocks=3292 symbols=20 literals=0 relocations=5
Blocks
name start size #ins #dir #sto
<default> 00000 00CDC 101 8 1
Symbols
name hex dec scope kind type description
HALT 000059 89 local relative code label
device 00011B 283 local relative data label
evaluate 00001C 28 local relative code label
exit 0000C4 196 local relative code label
fakulteta_r 0000A4 164 local relative code label
izpis 00005C 92 local relative code label
loop 000006 6 local relative code label
loop_e 000029 41 local relative code label
loop_i 00005F 95 local relative code label
loop_ii 000085 133 local relative code label
oldvalue 00011E 286 local relative data label
prog 000000 0 exported relative code label
stack 000124 292 local relative data label
stackinit 0000D9 217 local relative code label
stackpop 000102 258 local relative code label
stackptr 000121 289 local relative data label
stackpush 0000EC 236 local relative code label
stevke 00011C 284 local relative data label
stevke_r 00011D 285 local relative data label
temp 000118 280 local relative data label
Literals
label definition
Relocations
address length flag symbol
00013 5
000A5 5
000AC 5
000CA 5
000D3 5

View file

@ -0,0 +1,132 @@
00000 prog START 0
. inicializiraj sklad
00000 4B20D6 JSUB stackinit
. beri stevke do newline (\n = 10), nato evalviraj stevilo
00003 050001 LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e
00006 DB2112 loop RD device . FA.dev
00009 29000A COMP #10 . newline
0000C 33200D JEQ evaluate
0000F 1D0030 SUB #48 . ASCII koda za 0
00012 5790011C +STCH stevke,X
00016 2D0FFF TIX #-1 . primerjava TIX tu nima pomena
00019 3F2FEA J loop
0001C 750000 evaluate LDT #0
. S hrani potence st. deset
0001F 6D0001 LDS #1
. zmanjsaj X za 1
00022 AC10 RMO X,A
00024 1D0001 SUB #1
00027 AC01 RMO A,X
. nalozi stevko, pomnozi s S, shrani oz. pristej rez. v T
00029 53A0F0 loop_e LDCH stevke,X
0002C 9840 MULR S,A
0002E 9005 ADDR A,T
. povecaj potenco
00030 AC40 RMO S,A
00032 21000A MUL #10
00035 AC04 RMO A,S
. zmanjsaj X
00037 AC10 RMO X,A
00039 1D0001 SUB #1
0003C AC01 RMO A,X
. ce je X = 0, si prebral vse stevke
0003E 290000 COMP #0
00041 372FE5 JGT loop_e
. ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico
00044 AC50 RMO T,A
00046 290000 COMP #0
00049 33200D JEQ HALT
0004C 4B2055 JSUB fakulteta_r
. izpisi rezultat na standard output
0004F B440 CLEAR S
00051 4B2008 JSUB izpis
00054 B400 CLEAR A
00056 3F2FA7 J prog
00059 3F2FFD HALT J HALT
0005C END prog
0005C 050001 izpis LDX #1
0005F AC04 loop_i RMO A,S . kopiraj stevilo v S
. pridobi stevko, z mod 10
00061 25000A DIV #10
00064 21000A MUL #10
00067 AC05 RMO A,T . odstevanec gre v T
00069 AC40 RMO S,A
0006B 9450 SUBR T,A
0006D 57A0AD STCH stevke_r,X
00070 2D0FFF TIX #-1 . primerjava nima pomena
00073 AC40 RMO S,A
00075 25000A DIV #10
00078 290000 COMP #0
0007B 372FE1 JGT loop_i
. izpis iz pomnilnika
0007E AC10 RMO X,A
00080 1D0001 SUB #1
00083 AC01 RMO A,X
00085 53A095 loop_ii LDCH stevke_r,X
00088 190030 ADD #48 . pretvori v ascii
0008B DD0001 WD #1
0008E AC10 RMO X,A
00090 1D0001 SUB #1
00093 AC01 RMO A,X
00095 290000 COMP #0
00098 372FEA JGT loop_ii
. izpis newline
0009B 01000A LDA #10
0009E DD0001 WD #1
000A1 4F0000 RSUB
000A4 16100121 fakulteta_r +STL @stackptr . link reg. na sklad
000A8 4B2041 JSUB stackpush
000AB 0E100121 +STA @stackptr . parameter na sklad
000AF 4B203A JSUB stackpush
000B2 290001 COMP #1 . robni primer n = 1
000B5 33200C JEQ exit
000B8 1D0001 SUB #1 . pripravimo podproblem
000BB 290001 COMP #1 . zaustavitveni pogoj
000BE 332003 JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema
000C1 4B2FE0 JSUB fakulteta_r
000C4 AC03 exit RMO A,B . premakni vrednost podroblema v B
000C6 4B2039 JSUB stackpop
000C9 02100121 +LDA @stackptr . nalozi parameter klicujoce funkcije ("starša")
000CD 9830 MULR B,A . pomnozi, shrani v A
000CF 4B2030 JSUB stackpop
000D2 0A100121 +LDL @stackptr
000D6 4F0000 RSUB
000D9 0F2042 stackinit STA oldvalue
000DC B400 CLEAR A
000DE 012043 LDA #stack
000E1 0F203D STA stackptr
000E4 B400 CLEAR A
000E6 032035 LDA oldvalue
000E9 4F0000 RSUB
000EC 0F202F stackpush STA oldvalue
000EF B400 CLEAR A
000F1 03202D LDA stackptr
000F4 190003 ADD #3
000F7 0F2027 STA stackptr
000FA B400 CLEAR A
000FC 03201F LDA oldvalue
000FF 4F0000 RSUB
00102 0F2019 stackpop STA oldvalue
00105 B400 CLEAR A
00107 032017 LDA stackptr
0010A 1D0003 SUB #3
0010D 0F2011 STA stackptr
00110 B400 CLEAR A
00112 032009 LDA oldvalue
00115 4F0000 RSUB
00118 000000 temp WORD 0
0011B FA device BYTE X'FA'
0011C 64 stevke BYTE 100
0011D 64 stevke_r BYTE 100
0011E 000000 oldvalue WORD 0
00121 000000 stackptr WORD 0
00124 00....00 stack RESW 1000

View file

@ -0,0 +1,17 @@
Hprog 000000000CDC
T0000001E4B20D6050001DB211229000A33200D1D00305790011C2D0FFF3F2FEA7500
T00001E1E006D0001AC101D0001AC0153A0F098409005AC4021000AAC04AC101D0001
T00003C1EAC01290000372FE5AC5029000033200D4B2055B4404B2008B4003F2FA73F
T00005A1E2FFD050001AC0425000A21000AAC05AC40945057A0AD2D0FFFAC4025000A
T0000781E290000372FE1AC101D0001AC0153A095190030DD0001AC101D0001AC0129
T0000961E0000372FEA01000ADD00014F0000161001214B20410E1001214B203A2900
T0000B41E0133200C1D00012900013320034B2FE0AC034B20390210012198304B2030
T0000D21E0A1001214F00000F2042B4000120430F203DB4000320354F00000F202FB4
T0000F01E0003202D1900030F2027B40003201F4F00000F2019B4000320171D00030F
T00010E162011B4000320094F0000000000FA6464000000000000
M00001305
M0000A505
M0000AC05
M0000CA05
M0000D305
E000000

View file

@ -0,0 +1,16 @@
***** Section <default> *****
Stats: size=14 blocks=14 symbols=5 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 0000E 4 4 0
Symbols
name hex dec scope kind type description
CAT 000000 0 exported relative code label
HALT 000009 9 local relative code label
LOOP 000000 0 local relative code label
izhod 00000D 13 local relative data label
vhod 00000C 12 local relative data label
Literals
label definition
Relocations
address length flag symbol

View file

@ -0,0 +1,10 @@
00000 CAT START 0
00000 DB2009 LOOP RD vhod
00003 DF2007 WD izhod
00006 3F2FF7 J LOOP
00009 3F2FFD HALT J HALT
0000C END CAT
0000C 00 vhod BYTE 0
0000D 01 izhod BYTE 1

View file

@ -0,0 +1,3 @@
HCAT 00000000000E
T0000000EDB2009DF20073F2FF73F2FFD0001
E000000

View file

@ -0,0 +1,37 @@
***** Section <default> *****
Stats: size=363 blocks=363 symbols=20 literals=0 relocations=6
Blocks
name start size #ins #dir #sto
<default> 00000 0016B 74 13 1
Symbols
name hex dec scope kind type description
ECHO 000000 0 exported relative code label
HALT 00002E 46 local relative code label
char 000031 49 local relative code label
digits 0000FE 254 local relative data label
digits_ix 000162 354 local relative data label
i 000165 357 local relative data label
len 000168 360 local relative data label
loop_niz 00004E 78 local relative code label
loop_num 0000A9 169 local relative code label
newline 0000E5 229 local relative data label
nl 000037 55 local relative code label
num 00006D 109 local relative code label
number 0000FB 251 local relative data label
old_A 0000E2 226 local relative data label
out 00006A 106 local relative code label
quot 0000F5 245 local relative data label
string 00004A 74 local relative code label
strptr 0000F2 242 local relative data label
subtrahend 0000F8 248 local relative data label
test_niz 0000E6 230 local relative data label
Literals
label definition
Relocations
address length flag symbol
00013 5
00038 5
00044 5
0004B 5
0005D 5
00064 5

View file

@ -0,0 +1,103 @@
00000 ECHO START 0
00000 010E3B LDA #3643
00003 0F20F5 STA number
00006 4B2028 JSUB char
00009 4B202B JSUB nl
0000C 4B2022 JSUB char
0000F 4B2025 JSUB nl
00012 011000E6 +LDA #test_niz
00016 4B2031 JSUB string
00019 4B201B JSUB nl
0001C 0320DC LDA number
0001F 4B204B JSUB num
00022 4B2012 JSUB nl
00025 010017 LDA #23
00028 4B2042 JSUB num
0002B 4B2009 JSUB nl
0002E 3F2FFD HALT J HALT
00031 END ECHO
. izpis znaka
00031 DD0001 char WD #1
00034 4F0000 RSUB
. izpis newline
00037 0F1000E2 nl +STA old_A
0003B B400 CLEAR A
0003D 5320A5 LDCH newline
00040 DD0001 WD #1
00043 031000E2 +LDA old_A
00047 4F0000 RSUB
. izpis niza
0004A 0F1000F2 string +STA strptr
0004E B400 loop_niz CLEAR A
00050 52209F LDCH @strptr
00053 DD0001 WD #1
00056 290000 COMP #0
00059 33200E JEQ out
0005C 031000F2 +LDA strptr
00060 190001 ADD #1
00063 0F1000F2 +STA strptr
00067 3F2FE4 J loop_niz
0006A 4F0000 out RSUB
. desetiski izpis stevila v A iz HEX
. stevke pridobimo z mod 10, shranimo v tabelo, nato tabelo izpisemo v obratnem vrstnem redu
0006D 0720F2 num LDX digits_ix
00070 0F2088 STA number
00073 25000A DIV #10
00076 0F207C STA quot
00079 21000A MUL #10
0007C 0F2079 STA subtrahend
0007F 032079 LDA number
00082 1F2073 SUB subtrahend
00085 57A076 STCH digits,X
00088 0320D7 LDA digits_ix
0008B 190001 ADD #1
0008E 0F20D1 STA digits_ix
00091 032067 LDA number
00094 25000A DIV #10
00097 290000 COMP #0
0009A 372FD0 JGT num
. shrani stevec za X register in pa mejo len za naslednjo zanko loop_num
0009D 0320C2 LDA digits_ix
000A0 0F20C5 STA len
000A3 1D0001 SUB #1
000A6 0F20B9 STA digits_ix
. izpis tabele v obratnem vrstnem redu
000A9 0720B6 loop_num LDX digits_ix
000AC 53A04F LDCH digits,X
000AF 190030 ADD #48 . stevke v ascii se zacnejo pri 48
000B2 DD0001 WD #1
000B5 0320AA LDA digits_ix
000B8 1D0001 SUB #1
000BB 0F20A4 STA digits_ix
000BE 0320A4 LDA i
000C1 190001 ADD #1
000C4 0F209E STA i
000C7 2B209E COMP len
000CA 3B2FDC JLT loop_num
000CD 050000 LDX #0
000D0 010000 LDA #0
000D3 0F208C STA digits_ix
000D6 0F208C STA i
000D9 0F208C STA len
000DC 03201C LDA number
000DF 4F0000 RSUB
000E2 000000 old_A WORD 0
000E5 0A newline BYTE 10
000E6 68....64 test_niz BYTE C'hello world'
000F1 00 BYTE 0
000F2 000000 strptr WORD 0
000F5 000000 quot WORD 0
000F8 000000 subtrahend WORD 0
000FB 000000 number WORD 0
000FE 00....00 digits RESB 100
00162 000000 digits_ix WORD 0
00165 000000 i WORD 0
00168 000000 len WORD 0

View file

@ -0,0 +1,18 @@
HECHO 00000000016B
T0000001E010E3B0F20F54B20284B202B4B20224B2025011000E64B20314B201B0320
T00001E1EDC4B204B4B20120100174B20424B20093F2FFDDD00014F00000F1000E2B4
T00003C1E005320A5DD0001031000E24F00000F1000F2B40052209FDD000129000033
T00005A1E200E031000F21900010F1000F23F2FE44F00000720F20F208825000A0F20
T0000781E7C21000A0F20790320791F207357A0760320D71900010F20D10320672500
T0000961E0A290000372FD00320C20F20C51D00010F20B90720B653A04F190030DD00
T0000B41E010320AA1D00010F20A40320A41900010F209E2B209E3B2FDC0500000100
T0000D21E000F208C0F208C0F208C03201C4F00000000000A68656C6C6F20776F726C
T0000F00E6400000000000000000000000000
T00016209000000000000000000
M00001305
M00003805
M00004405
M00004B05
M00005D05
M00006405
E000000