final hw push

This commit is contained in:
aljazbrodar. 2025-11-15 13:46:22 +01:00
parent 371cfddbde
commit 27b8de1bc2
36 changed files with 1018 additions and 6 deletions

Binary file not shown.

View file

@ -1,6 +0,0 @@
test START 0
LDA #-1
LDS #2
RMO S, A
halt J halt
END test

5
ass1/rekurzija/FA.dev Normal file
View file

@ -0,0 +1,5 @@
1
9
5
10
0

View file

@ -0,0 +1,133 @@
prog START 0
. inicializiraj sklad
JSUB stackinit
. beri stevke do newline (\n = 10), nato evalviraj stevilo
LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e
loop RD device . FA.dev
COMP #10 . newline
JEQ evaluate
SUB #48 . ASCII koda za 0
+STCH stevke, X
TIX #-1 . primerjava TIX tu nima pomena
J loop
evaluate . T zacasno hrani rezultat; na koncu v A
LDT #0
. S hrani potence st. deset
LDS #1
. zmanjsaj X za 1
RMO X, A
SUB #1
RMO A, X
. nalozi stevko, pomnozi s S, shrani oz. pristej rez. v T
loop_e LDCH stevke, X
MULR S, A
ADDR A, T
. povecaj potenco
RMO S, A
MUL #10
RMO A, S
. zmanjsaj X
RMO X, A
SUB #1
RMO A, X
. ce je X = 0, si prebral vse stevke
COMP #0
JGT loop_e
. ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico
RMO T, A
COMP #0
JEQ HALT
JSUB fakulteta_r
. izpisi rezultat na standard output
CLEAR S
JSUB izpis
CLEAR A
J prog
HALT J HALT
END prog
izpis LDX #1
loop_i RMO A, S . kopiraj stevilo v S
. pridobi stevko, z mod 10
DIV #10
MUL #10
RMO A, T . odstevanec gre v T
RMO S, A
SUBR T, A
STCH stevke_r, X
TIX #-1 . primerjava nima pomena
RMO S, A
DIV #10
COMP #0
JGT loop_i
. izpis iz pomnilnika
RMO X, A
SUB #1
RMO A, X
loop_ii LDCH stevke_r, X
ADD #48 . pretvori v ascii
WD #1
RMO X, A
SUB #1
RMO A, X
COMP #0
JGT loop_ii
. izpis newline
LDA #10
WD #1
RSUB
fakulteta_r +STL @stackptr . link reg. na sklad
JSUB stackpush
+STA @stackptr . parameter na sklad
JSUB stackpush
COMP #1 . robni primer n = 1
JEQ exit
SUB #1 . pripravimo podproblem
COMP #1 . zaustavitveni pogoj
JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema
JSUB fakulteta_r
exit RMO A, B . premakni vrednost podroblema v B
JSUB stackpop
+LDA @stackptr . nalozi parameter klicujoce funkcije ("starša")
MULR B, A . pomnozi, shrani v A
JSUB stackpop
+LDL @stackptr
RSUB
stackinit STA oldvalue
CLEAR A
LDA #stack
STA stackptr
CLEAR A
LDA oldvalue
RSUB
stackpush STA oldvalue
CLEAR A
LDA stackptr
ADD #3
STA stackptr
CLEAR A
LDA oldvalue
RSUB
stackpop STA oldvalue
CLEAR A
LDA stackptr
SUB #3
STA stackptr
CLEAR A
LDA oldvalue
RSUB
temp WORD 0
device BYTE X'FA'
stevke BYTE 100
stevke_r BYTE 100
oldvalue WORD 0
stackptr WORD 0
stack RESW 1000

Binary file not shown.

View file

@ -0,0 +1,33 @@
arith START 0
LDA x
ADD y
STA sum
LDA x
SUB y
STA diff
LDA x
MUL y
STA prod
LDA x
DIV y
STA quot
LDA y
MUL quot
STA mod
LDA x
SUB mod
STA mod
HALT J HALT
END arith
x WORD 11
y WORD 5
sum RESW 1
diff RESW 1
prod RESW 1
quot RESW 1
mod RESW 1

View file

@ -0,0 +1,40 @@
arithr START 0
LDS #11
LDT #5
LDA ZERO
ADDR S, A
ADDR T, A
STA sum
LDA ZERO
ADDR S, A
SUBR T, A
STA diff
LDA ZERO
ADDR S, A
MULR T, A
STA prod
LDA ZERO
ADDR S, A
DIVR T, A
STA quot
LDA ZERO
ADDR S, A
LOOP SUBR T, A
COMPR A, T
JGT LOOP
JEQ LOOP
STA mod
HALT J HALT
END arithr
ZERO WORD 0
sum RESW 1
diff RESW 1
prod RESW 1
quot RESW 1
mod RESW 1

View file

@ -0,0 +1,29 @@
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

@ -0,0 +1,15 @@
***** Section <default> *****
Stats: size=39 blocks=39 symbols=4 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 00027 11 3 1
Symbols
name hex dec scope kind type description
HALT 00001E 30 local relative code label
HORNER 000000 0 exported relative code label
res 000024 36 local relative data label
x 000021 33 local relative data label
Literals
label definition
Relocations
address length flag symbol

View file

@ -0,0 +1,29 @@
00000 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
00000 010001 LDA #1
00003 23201B MUL x
00006 190002 ADD #2
00009 232015 MUL x
0000C 190003 ADD #3
0000F 23200F MUL x
00012 190004 ADD #4
00015 232009 MUL x
00018 190005 ADD #5
0001B 0F2006 STA res
0001E 3F2FFD HALT J HALT
00021 END HORNER
00021 000002 x WORD 2
00024 000000 res RESW 1

View file

@ -0,0 +1,4 @@
HHORNER000000000027
T0000001E01000123201B19000223201519000323200F1900042320091900050F2006
T00001E063F2FFD000002
E000000

39
ass1/vaje/osnove/poly.asm Normal file
View file

@ -0,0 +1,39 @@
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

15
ass1/vaje/osnove/poly.log Normal file
View file

@ -0,0 +1,15 @@
***** Section <default> *****
Stats: size=88 blocks=88 symbols=4 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 00058 29 3 1
Symbols
name hex dec scope kind type description
HALT 00004F 79 local relative code label
POLY 000000 0 exported relative code label
res 000055 85 local relative data label
x 000052 82 local relative data label
Literals
label definition
Relocations
address length flag symbol

39
ass1/vaje/osnove/poly.lst Normal file
View file

@ -0,0 +1,39 @@
00000 POLY START 0
. x^4
00000 03204F LDA x
00003 23204C MUL x
00006 232049 MUL x
00009 232046 MUL x
0000C 0F2046 STA res
0000F B400 CLEAR A
. +2x^3
00011 03203E LDA x
00014 23203B MUL x
00017 232038 MUL x
0001A 210002 MUL #2
0001D 1B2035 ADD res
00020 0F2032 STA res
00023 B400 CLEAR A
. +3x^2
00025 03202A LDA x
00028 232027 MUL x
0002B 210003 MUL #3
0002E 1B2024 ADD res
00031 0F2021 STA res
00034 B400 CLEAR A
. +4x
00036 032019 LDA x
00039 210004 MUL #4
0003C 1B2016 ADD res
0003F 0F2013 STA res
00042 B400 CLEAR A
. +5
00044 03200E LDA res
00047 190005 ADD #5
0004A 0F2008 STA res
0004D B400 CLEAR A
0004F 3F2FFD HALT J HALT
00052 END POLY
00052 000002 x WORD 2
00055 000000 res RESW 1

View file

@ -0,0 +1,5 @@
HPOLY 000000000058
T0000001E03204F23204C2320492320460F2046B40003203E23203B2320382100021B
T00001E1E20350F2032B40003202A2320272100031B20240F2021B400032019210004
T00003C191B20160F2013B40003200E1900050F2008B4003F2FFD000002
E000000

View file

@ -0,0 +1,11 @@
primer START 0
. kaj naredi naslednji programček?
first LDA #42
ADD x
STA x
. kaj dela naslednji ukaz
halt J halt
. podatki
x WORD 22
END first

View file

@ -0,0 +1,47 @@
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

@ -0,0 +1,20 @@
***** Section <default> *****
Stats: size=75 blocks=75 symbols=9 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 0004B 23 6 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
MAIN 000000 0 exported relative code label
bytes_len 000000 0 local relative notlabel lasttin-in
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
Literals
label definition
Relocations
address length flag symbol

View file

@ -0,0 +1,49 @@
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
. 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
0001C 3F2FFD HALT J HALT
0001F END MAIN
0001F 010001 HORNER_X LDA #1
00022 23A01D MUL in,X
00025 190002 ADD #2
00028 23A017 MUL in,X
0002B 190003 ADD #3
0002E 23A011 MUL in,X
00031 190004 ADD #4
00034 23A00B MUL in,X
00037 190005 ADD #5
0003A 0FA005 STA in,X
0003D B400 CLEAR A
0003F 4F0000 RSUB
. tabela x-ov polinoma
00042 000002 in WORD 2
. WORD 5
. WORD 42
. WORD 2
. parametri
00045 lastin EQU *
00045 bytes_len EQU lasttin-in
00045 000001 words_len WORD 1
00048 000000 res RESW 1

View file

@ -0,0 +1,5 @@
HMAIN 00000000004B
T0000001E012FFD2500030F203CB4000500003F200E2F203101000398013B2FF23F2F
T00001E1EFD01000123A01D19000223A01719000323A01119000423A00B1900050FA0
T00003C0C05B4004F0000000002000001
E000000

14
ass1/vaje/osnove/test.asm Normal file
View file

@ -0,0 +1,14 @@
PRG START 0
LDA #bytes_len
DIV #3
LDA bytes_len
HALT J HALT
END PRG
tab WORD 1
WORD 2
WORD 3
test EQU *
bytes_len EQU test - tab
tab2 WORD 1

17
ass1/vaje/osnove/test.log Normal file
View file

@ -0,0 +1,17 @@
***** Section <default> *****
Stats: size=24 blocks=24 symbols=6 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 00018 4 8 0
Symbols
name hex dec scope kind type description
HALT 000009 9 local relative code label
PRG 000000 0 exported relative code label
bytes_len 000009 9 local absolute notlabel test-tab
tab 00000C 12 local relative data label
tab2 000015 21 local relative data label
test 000015 21 local absolute notlabel *
Literals
label definition
Relocations
address length flag symbol

14
ass1/vaje/osnove/test.lst Normal file
View file

@ -0,0 +1,14 @@
00000 PRG START 0
00000 010009 LDA #bytes_len
00003 250003 DIV #3
00006 030009 LDA bytes_len
00009 3F2FFD HALT J HALT
0000C END PRG
0000C 000001 tab WORD 1
0000F 000002 WORD 2
00012 000003 WORD 3
00015 test EQU *
00015 bytes_len EQU test-tab
00015 000001 tab2 WORD 1

View file

@ -0,0 +1,3 @@
HPRG 000000000018
T000000180100092500030300093F2FFD000001000002000003000001
E000000

5
ass1/vaje/sklad/FA.dev Normal file
View file

@ -0,0 +1,5 @@
1
9
5
10
0

View file

@ -0,0 +1,133 @@
prog START 0
. inicializiraj sklad
JSUB stackinit
. beri stevke do newline (\n = 10), nato evalviraj stevilo
LDX #1 . zacnemo z 1 za lazje preverjanje pogoja v loop_e
loop RD device . FA.dev
COMP #10 . newline
JEQ evaluate
SUB #48 . ASCII koda za 0
+STCH stevke, X
TIX #-1 . primerjava TIX tu nima pomena
J loop
evaluate . T zacasno hrani rezultat; na koncu v A
LDT #0
. S hrani potence st. deset
LDS #1
. zmanjsaj X za 1
RMO X, A
SUB #1
RMO A, X
. nalozi stevko, pomnozi s S, shrani oz. pristej rez. v T
loop_e LDCH stevke, X
MULR S, A
ADDR A, T
. povecaj potenco
RMO S, A
MUL #10
RMO A, S
. zmanjsaj X
RMO X, A
SUB #1
RMO A, X
. ce je X = 0, si prebral vse stevke
COMP #0
JGT loop_e
. ce je rezultat nic koncaj sicer izracunaj fakulteto in preberi naslednjo vrstico
RMO T, A
COMP #0
JEQ HALT
JSUB fakulteta_r
. izpisi rezultat na standard output
CLEAR S
JSUB izpis
CLEAR A
J prog
HALT J HALT
END prog
izpis LDX #1
loop_i RMO A, S . kopiraj stevilo v S
. pridobi stevko, z mod 10
DIV #10
MUL #10
RMO A, T . odstevanec gre v T
RMO S, A
SUBR T, A
STCH stevke_r, X
TIX #-1 . primerjava nima pomena
RMO S, A
DIV #10
COMP #0
JGT loop_i
. izpis iz pomnilnika
RMO X, A
SUB #1
RMO A, X
loop_ii LDCH stevke_r, X
ADD #48 . pretvori v ascii
WD #1
RMO X, A
SUB #1
RMO A, X
COMP #0
JGT loop_ii
. izpis newline
LDA #10
WD #1
RSUB
fakulteta_r +STL @stackptr . link reg. na sklad
JSUB stackpush
+STA @stackptr . parameter na sklad
JSUB stackpush
COMP #1 . robni primer n = 1
JEQ exit
SUB #1 . pripravimo podproblem
COMP #1 . zaustavitveni pogoj
JEQ exit . ce je z. p. izpolnjen RSUB, v A je vrednost podproblema
JSUB fakulteta_r
exit RMO A, B . premakni vrednost podroblema v B
JSUB stackpop
+LDA @stackptr . nalozi parameter klicujoce funkcije ("starša")
MULR B, A . pomnozi, shrani v A
JSUB stackpop
+LDL @stackptr
RSUB
stackinit STA oldvalue
CLEAR A
LDA #stack
STA stackptr
CLEAR A
LDA oldvalue
RSUB
stackpush STA oldvalue
CLEAR A
LDA stackptr
ADD #3
STA stackptr
CLEAR A
LDA oldvalue
RSUB
stackpop STA oldvalue
CLEAR A
LDA stackptr
SUB #3
STA stackptr
CLEAR A
LDA oldvalue
RSUB
temp WORD 0
device BYTE X'FA'
stevke BYTE 100
stevke_r BYTE 100
oldvalue WORD 0
stackptr WORD 0
stack RESW 1000

17
ass1/vaje/sklad/stack.log Normal file
View file

@ -0,0 +1,17 @@
***** Section <default> *****
Stats: size=3031 blocks=3031 symbols=6 literals=0 relocations=0
Blocks
name start size #ins #dir #sto
<default> 00000 00BD7 9 4 1
Symbols
name hex dec scope kind type description
HALT 000003 3 local relative code label
oldvalue 000019 25 local relative data label
prog 000000 0 exported relative code label
stack 00001F 31 local relative data label
stackinit 000006 6 local relative code label
stackptr 00001C 28 local relative data label
Literals
label definition
Relocations
address length flag symbol

33
ass1/vaje/sklad/stack.lst Normal file
View file

@ -0,0 +1,33 @@
00000 prog START 0
00000 4B2003 JSUB stackinit
00003 3F2FFD HALT J HALT
00006 END prog
00006 0F2010 stackinit STA oldvalue
00009 B400 CLEAR A
0000B 012011 LDA #stack
0000E 0F200B STA stackptr
00011 B400 CLEAR A
00013 032003 LDA oldvalue
00016 4F0000 RSUB
. stackpush
. RSUB
. stackpop
. RSUB
00019 000000 oldvalue WORD 0
0001C 000000 stackptr WORD 0
0001F 00....00 stack RESW 1000

View file

@ -0,0 +1,4 @@
Hprog 000000000BD7
T0000001E4B20033F2FFD0F2010B4000120110F200BB4000320034F00000000000000
T00001E0100
E000000

16
ass1/vaje/sklad/test.asm Normal file
View file

@ -0,0 +1,16 @@
test START 0
RD device
RD device
RD device
RD device
RD device
RD device
RD device
RD device
RD device
halt J halt
END test
device WORD X'FA'

View file

@ -0,0 +1 @@
SIC/XE

View file

@ -0,0 +1,10 @@
CAT START 0
LOOP RD vhod
WD izhod
J LOOP
HALT J HALT
END CAT
vhod BYTE 0
izhod BYTE 1

View file

@ -0,0 +1,103 @@
ECHO START 0
LDA #3643
STA number
JSUB char
JSUB nl
JSUB char
JSUB nl
+LDA #test_niz
JSUB string
JSUB nl
LDA number
JSUB num
JSUB nl
LDA #23
JSUB num
JSUB nl
HALT J HALT
END ECHO
.izpis znaka
char WD #1
RSUB
.izpis newline
nl +STA old_A
CLEAR A
LDCH newline
WD #1
+LDA old_A
RSUB
.izpis niza
string +STA strptr
loop_niz CLEAR A
LDCH @strptr
WD #1
COMP #0
JEQ out
+LDA strptr
ADD #1
+STA strptr
J loop_niz
out RSUB
.desetiski izpis stevila v A iz HEX
.stevke pridobimo z mod 10, shranimo v tabelo, nato tabelo izpisemo v obratnem vrstnem redu
num LDX digits_ix
STA number
DIV #10
STA quot
MUL #10
STA subtrahend
LDA number
SUB subtrahend
STCH digits, X
LDA digits_ix
ADD #1
STA digits_ix
LDA number
DIV #10
COMP #0
JGT num
.shrani stevec za X register in pa mejo len za naslednjo zanko loop_num
LDA digits_ix
STA len
SUB #1
STA digits_ix
.izpis tabele v obratnem vrstnem redu
loop_num LDX digits_ix
LDCH digits, X
ADD #48 .stevke v ascii se zacnejo pri 48
WD #1
LDA digits_ix
SUB #1
STA digits_ix
LDA i
ADD #1
STA i
COMP len
JLT loop_num
LDX #0
LDA #0
STA digits_ix
STA i
STA len
LDA number
RSUB
old_A WORD 0
newline BYTE 10
test_niz BYTE C'hello world'
BYTE 0
strptr WORD 0
quot WORD 0
subtrahend WORD 0
number WORD 0
digits RESB 100
digits_ix WORD 0
i WORD 0
len WORD 0

View file

@ -0,0 +1,25 @@
PRVI START 0
LDX counter
loop LDA niz, X
WD device
LDA counter
ADD #3
STA counter
LDX counter
COMP #bytes_len
JLT loop
HALT J HALT
END PRVI
counter WORD 0
device BYTE X'AA'
niz WORD 83 .S
WORD 73 .I
WORD 67 .C
WORD 47 ./
WORD 88 .X
WORD 69 .E
WORD 10 .newline
lastin EQU *
bytes_len EQU lastin - niz

105
ass1/vaje/zaslon/screen.asm Normal file
View file

@ -0,0 +1,105 @@
SCREEN START 0
LDA #65
JSUB scrfill
JSUB scrclear
LDA #77
JSUB scrfill
JSUB scrclear
LDA #88
JSUB scrfill
JSUB scrclear
LDA #99
STA znak
LDA #25
STA row
LDA #30
STA col
JSUB printch
LDA #30
STA row
JSUB printch
HALT J HALT
END SCREEN
scrfill STA znak
loop_fill LDA y
MUL scrcols
ADD screen
ADD x
STA pix_ptr
LDA znak
STCH @pix_ptr
LDA x
ADD #1
STA x
COMP scrcols
JLT loop_fill
CLEAR A
STA x
LDA y
ADD #1
STA y
COMP scrrows
JLT loop_fill
CLEAR A
STA x
STA y
LDA znak
RSUB
.address = screen + y * scrcols + x
scrclear STA old_val
loop_clear LDA y
MUL scrcols
ADD screen
ADD x
STA pix_ptr
CLEAR A
STCH @pix_ptr
LDA x
ADD #1
STA x
COMP scrcols
JLT loop_clear
CLEAR A
STA x
LDA y
ADD #1
STA y
COMP scrrows
JLT loop_clear
CLEAR A
STA x
STA y
LDA old_val
RSUB
printch STA old_val
LDA row
MUL scrcols
ADD screen
ADD col
STA pix_ptr
LDA znak
STCH @pix_ptr
CLEAR A
LDA old_val
RSUB
row WORD 0
col WORD 0
old_val WORD 0
znak WORD 0
x WORD 0
y WORD 0
pix_ptr WORD 0
screen WORD X'00B800'
scrcols WORD 25
scrrows WORD 80
scrlen WORD 2000