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