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

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

53
ass1/vaje/sklad/stack.asm Normal file
View file

@ -0,0 +1,53 @@
prog START 0
+JSUB stackinit
LDA #5
+STA @stackptr
JSUB stackpush
LDA #6
+STA @stackptr
JSUB stackpush
JSUB stackpop
+LDA @stackptr
JSUB stackpop
+LDA @stackptr
HALT J HALT
END prog
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
RSUB
exit JSUB stackpop
+LDB @stackptr
JSUB stackpop
+LDL @stackptr
RSUB
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'