repo update
This commit is contained in:
parent
5591686517
commit
c56b6c92db
25 changed files with 194 additions and 252 deletions
132
ass1/rekurzija/rekurzija.lst
Normal file
132
ass1/rekurzija/rekurzija.lst
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue