final hw push
This commit is contained in:
parent
371cfddbde
commit
27b8de1bc2
36 changed files with 1018 additions and 6 deletions
BIN
ass1/bonus/a.out
BIN
ass1/bonus/a.out
Binary file not shown.
|
|
@ -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
5
ass1/rekurzija/FA.dev
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
1
|
||||||
|
9
|
||||||
|
5
|
||||||
|
10
|
||||||
|
0
|
||||||
133
ass1/rekurzija/rekurzija.asm
Normal file
133
ass1/rekurzija/rekurzija.asm
Normal 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
|
||||||
BIN
ass1/vaje/osnove/.sub_rou_horner.asm.swp
Normal file
BIN
ass1/vaje/osnove/.sub_rou_horner.asm.swp
Normal file
Binary file not shown.
33
ass1/vaje/osnove/arith.asm
Normal file
33
ass1/vaje/osnove/arith.asm
Normal 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
|
||||||
40
ass1/vaje/osnove/arithr.asm
Normal file
40
ass1/vaje/osnove/arithr.asm
Normal 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
|
||||||
29
ass1/vaje/osnove/horner.asm
Normal file
29
ass1/vaje/osnove/horner.asm
Normal 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
|
||||||
15
ass1/vaje/osnove/horner.log
Normal file
15
ass1/vaje/osnove/horner.log
Normal 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
|
||||||
29
ass1/vaje/osnove/horner.lst
Normal file
29
ass1/vaje/osnove/horner.lst
Normal 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
|
||||||
4
ass1/vaje/osnove/horner.obj
Normal file
4
ass1/vaje/osnove/horner.obj
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
HHORNER000000000027
|
||||||
|
T0000001E01000123201B19000223201519000323200F1900042320091900050F2006
|
||||||
|
T00001E063F2FFD000002
|
||||||
|
E000000
|
||||||
39
ass1/vaje/osnove/poly.asm
Normal file
39
ass1/vaje/osnove/poly.asm
Normal 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
15
ass1/vaje/osnove/poly.log
Normal 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
39
ass1/vaje/osnove/poly.lst
Normal 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
|
||||||
5
ass1/vaje/osnove/poly.obj
Normal file
5
ass1/vaje/osnove/poly.obj
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
HPOLY 000000000058
|
||||||
|
T0000001E03204F23204C2320492320460F2046B40003203E23203B2320382100021B
|
||||||
|
T00001E1E20350F2032B40003202A2320272100031B20240F2021B400032019210004
|
||||||
|
T00003C191B20160F2013B40003200E1900050F2008B4003F2FFD000002
|
||||||
|
E000000
|
||||||
11
ass1/vaje/osnove/primer.asm
Normal file
11
ass1/vaje/osnove/primer.asm
Normal 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
|
||||||
|
|
||||||
47
ass1/vaje/osnove/sub_rou_horner.asm
Normal file
47
ass1/vaje/osnove/sub_rou_horner.asm
Normal 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
|
||||||
20
ass1/vaje/osnove/sub_rou_horner.log
Normal file
20
ass1/vaje/osnove/sub_rou_horner.log
Normal 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
|
||||||
49
ass1/vaje/osnove/sub_rou_horner.lst
Normal file
49
ass1/vaje/osnove/sub_rou_horner.lst
Normal 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
|
||||||
5
ass1/vaje/osnove/sub_rou_horner.obj
Normal file
5
ass1/vaje/osnove/sub_rou_horner.obj
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
HMAIN 00000000004B
|
||||||
|
T0000001E012FFD2500030F203CB4000500003F200E2F203101000398013B2FF23F2F
|
||||||
|
T00001E1EFD01000123A01D19000223A01719000323A01119000423A00B1900050FA0
|
||||||
|
T00003C0C05B4004F0000000002000001
|
||||||
|
E000000
|
||||||
14
ass1/vaje/osnove/test.asm
Normal file
14
ass1/vaje/osnove/test.asm
Normal 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
17
ass1/vaje/osnove/test.log
Normal 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
14
ass1/vaje/osnove/test.lst
Normal 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
|
||||||
3
ass1/vaje/osnove/test.obj
Normal file
3
ass1/vaje/osnove/test.obj
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
HPRG 000000000018
|
||||||
|
T000000180100092500030300093F2FFD000001000002000003000001
|
||||||
|
E000000
|
||||||
5
ass1/vaje/sklad/FA.dev
Normal file
5
ass1/vaje/sklad/FA.dev
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
1
|
||||||
|
9
|
||||||
|
5
|
||||||
|
10
|
||||||
|
0
|
||||||
133
ass1/vaje/sklad/rekurzija.asm
Normal file
133
ass1/vaje/sklad/rekurzija.asm
Normal 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
17
ass1/vaje/sklad/stack.log
Normal 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
33
ass1/vaje/sklad/stack.lst
Normal 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
|
||||||
4
ass1/vaje/sklad/stack.obj
Normal file
4
ass1/vaje/sklad/stack.obj
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
Hprog 000000000BD7
|
||||||
|
T0000001E4B20033F2FFD0F2010B4000120110F200BB4000320034F00000000000000
|
||||||
|
T00001E0100
|
||||||
|
E000000
|
||||||
16
ass1/vaje/sklad/test.asm
Normal file
16
ass1/vaje/sklad/test.asm
Normal 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'
|
||||||
1
ass1/vaje/vhod_izhod/AA.dev
Normal file
1
ass1/vaje/vhod_izhod/AA.dev
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
SIC/XE
|
||||||
10
ass1/vaje/vhod_izhod/cat.asm
Normal file
10
ass1/vaje/vhod_izhod/cat.asm
Normal 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
|
||||||
|
|
||||||
103
ass1/vaje/vhod_izhod/echo.asm
Normal file
103
ass1/vaje/vhod_izhod/echo.asm
Normal 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
|
||||||
25
ass1/vaje/vhod_izhod/print.asm
Normal file
25
ass1/vaje/vhod_izhod/print.asm
Normal 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
105
ass1/vaje/zaslon/screen.asm
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue