diff --git a/ass1/bonus/a.out b/ass1/bonus/a.out deleted file mode 100755 index 1c5668f..0000000 Binary files a/ass1/bonus/a.out and /dev/null differ diff --git a/ass1/bonus/test.asm b/ass1/bonus/test.asm deleted file mode 100644 index ecd1951..0000000 --- a/ass1/bonus/test.asm +++ /dev/null @@ -1,6 +0,0 @@ -test START 0 - LDA #-1 - LDS #2 - RMO S, A -halt J halt - END test diff --git a/ass1/rekurzija/FA.dev b/ass1/rekurzija/FA.dev new file mode 100644 index 0000000..cb3856f --- /dev/null +++ b/ass1/rekurzija/FA.dev @@ -0,0 +1,5 @@ +1 +9 +5 +10 +0 diff --git a/ass1/rekurzija/rekurzija.asm b/ass1/rekurzija/rekurzija.asm new file mode 100644 index 0000000..c7f7447 --- /dev/null +++ b/ass1/rekurzija/rekurzija.asm @@ -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 diff --git a/ass1/vaje/osnove/.sub_rou_horner.asm.swp b/ass1/vaje/osnove/.sub_rou_horner.asm.swp new file mode 100644 index 0000000..d2f12c2 Binary files /dev/null and b/ass1/vaje/osnove/.sub_rou_horner.asm.swp differ diff --git a/ass1/vaje/osnove/arith.asm b/ass1/vaje/osnove/arith.asm new file mode 100644 index 0000000..eb0d6c0 --- /dev/null +++ b/ass1/vaje/osnove/arith.asm @@ -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 diff --git a/ass1/vaje/osnove/arithr.asm b/ass1/vaje/osnove/arithr.asm new file mode 100644 index 0000000..6b5ab46 --- /dev/null +++ b/ass1/vaje/osnove/arithr.asm @@ -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 diff --git a/ass1/vaje/osnove/horner.asm b/ass1/vaje/osnove/horner.asm new file mode 100644 index 0000000..993946d --- /dev/null +++ b/ass1/vaje/osnove/horner.asm @@ -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 diff --git a/ass1/vaje/osnove/horner.log b/ass1/vaje/osnove/horner.log new file mode 100644 index 0000000..75cbf53 --- /dev/null +++ b/ass1/vaje/osnove/horner.log @@ -0,0 +1,15 @@ +***** Section ***** +Stats: size=39 blocks=39 symbols=4 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 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 diff --git a/ass1/vaje/osnove/horner.lst b/ass1/vaje/osnove/horner.lst new file mode 100644 index 0000000..63134ed --- /dev/null +++ b/ass1/vaje/osnove/horner.lst @@ -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 diff --git a/ass1/vaje/osnove/horner.obj b/ass1/vaje/osnove/horner.obj new file mode 100644 index 0000000..84c6af5 --- /dev/null +++ b/ass1/vaje/osnove/horner.obj @@ -0,0 +1,4 @@ +HHORNER000000000027 +T0000001E01000123201B19000223201519000323200F1900042320091900050F2006 +T00001E063F2FFD000002 +E000000 diff --git a/ass1/vaje/osnove/poly.asm b/ass1/vaje/osnove/poly.asm new file mode 100644 index 0000000..b0df1e4 --- /dev/null +++ b/ass1/vaje/osnove/poly.asm @@ -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 diff --git a/ass1/vaje/osnove/poly.log b/ass1/vaje/osnove/poly.log new file mode 100644 index 0000000..1025c0a --- /dev/null +++ b/ass1/vaje/osnove/poly.log @@ -0,0 +1,15 @@ +***** Section ***** +Stats: size=88 blocks=88 symbols=4 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 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 diff --git a/ass1/vaje/osnove/poly.lst b/ass1/vaje/osnove/poly.lst new file mode 100644 index 0000000..289f5bd --- /dev/null +++ b/ass1/vaje/osnove/poly.lst @@ -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 diff --git a/ass1/vaje/osnove/poly.obj b/ass1/vaje/osnove/poly.obj new file mode 100644 index 0000000..85921f8 --- /dev/null +++ b/ass1/vaje/osnove/poly.obj @@ -0,0 +1,5 @@ +HPOLY 000000000058 +T0000001E03204F23204C2320492320460F2046B40003203E23203B2320382100021B +T00001E1E20350F2032B40003202A2320272100031B20240F2021B400032019210004 +T00003C191B20160F2013B40003200E1900050F2008B4003F2FFD000002 +E000000 diff --git a/ass1/vaje/osnove/primer.asm b/ass1/vaje/osnove/primer.asm new file mode 100644 index 0000000..b35a406 --- /dev/null +++ b/ass1/vaje/osnove/primer.asm @@ -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 + diff --git a/ass1/vaje/osnove/sub_rou_horner.asm b/ass1/vaje/osnove/sub_rou_horner.asm new file mode 100644 index 0000000..2a5dea1 --- /dev/null +++ b/ass1/vaje/osnove/sub_rou_horner.asm @@ -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 diff --git a/ass1/vaje/osnove/sub_rou_horner.log b/ass1/vaje/osnove/sub_rou_horner.log new file mode 100644 index 0000000..b272c91 --- /dev/null +++ b/ass1/vaje/osnove/sub_rou_horner.log @@ -0,0 +1,20 @@ +***** Section ***** +Stats: size=75 blocks=75 symbols=9 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 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 diff --git a/ass1/vaje/osnove/sub_rou_horner.lst b/ass1/vaje/osnove/sub_rou_horner.lst new file mode 100644 index 0000000..13d1256 --- /dev/null +++ b/ass1/vaje/osnove/sub_rou_horner.lst @@ -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 diff --git a/ass1/vaje/osnove/sub_rou_horner.obj b/ass1/vaje/osnove/sub_rou_horner.obj new file mode 100644 index 0000000..d612bf6 --- /dev/null +++ b/ass1/vaje/osnove/sub_rou_horner.obj @@ -0,0 +1,5 @@ +HMAIN 00000000004B +T0000001E012FFD2500030F203CB4000500003F200E2F203101000398013B2FF23F2F +T00001E1EFD01000123A01D19000223A01719000323A01119000423A00B1900050FA0 +T00003C0C05B4004F0000000002000001 +E000000 diff --git a/ass1/vaje/osnove/test.asm b/ass1/vaje/osnove/test.asm new file mode 100644 index 0000000..98be971 --- /dev/null +++ b/ass1/vaje/osnove/test.asm @@ -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 diff --git a/ass1/vaje/osnove/test.log b/ass1/vaje/osnove/test.log new file mode 100644 index 0000000..569956b --- /dev/null +++ b/ass1/vaje/osnove/test.log @@ -0,0 +1,17 @@ +***** Section ***** +Stats: size=24 blocks=24 symbols=6 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 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 diff --git a/ass1/vaje/osnove/test.lst b/ass1/vaje/osnove/test.lst new file mode 100644 index 0000000..536c85e --- /dev/null +++ b/ass1/vaje/osnove/test.lst @@ -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 diff --git a/ass1/vaje/osnove/test.obj b/ass1/vaje/osnove/test.obj new file mode 100644 index 0000000..2b85359 --- /dev/null +++ b/ass1/vaje/osnove/test.obj @@ -0,0 +1,3 @@ +HPRG 000000000018 +T000000180100092500030300093F2FFD000001000002000003000001 +E000000 diff --git a/ass1/vaje/sklad/FA.dev b/ass1/vaje/sklad/FA.dev new file mode 100644 index 0000000..cb3856f --- /dev/null +++ b/ass1/vaje/sklad/FA.dev @@ -0,0 +1,5 @@ +1 +9 +5 +10 +0 diff --git a/ass1/vaje/sklad/rekurzija.asm b/ass1/vaje/sklad/rekurzija.asm new file mode 100644 index 0000000..c7f7447 --- /dev/null +++ b/ass1/vaje/sklad/rekurzija.asm @@ -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 diff --git a/ass1/vaje/stack.asm b/ass1/vaje/sklad/stack.asm similarity index 100% rename from ass1/vaje/stack.asm rename to ass1/vaje/sklad/stack.asm diff --git a/ass1/vaje/sklad/stack.log b/ass1/vaje/sklad/stack.log new file mode 100644 index 0000000..d9f8cde --- /dev/null +++ b/ass1/vaje/sklad/stack.log @@ -0,0 +1,17 @@ +***** Section ***** +Stats: size=3031 blocks=3031 symbols=6 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 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 diff --git a/ass1/vaje/sklad/stack.lst b/ass1/vaje/sklad/stack.lst new file mode 100644 index 0000000..f43395a --- /dev/null +++ b/ass1/vaje/sklad/stack.lst @@ -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 diff --git a/ass1/vaje/sklad/stack.obj b/ass1/vaje/sklad/stack.obj new file mode 100644 index 0000000..5f5ef5f --- /dev/null +++ b/ass1/vaje/sklad/stack.obj @@ -0,0 +1,4 @@ +Hprog 000000000BD7 +T0000001E4B20033F2FFD0F2010B4000120110F200BB4000320034F00000000000000 +T00001E0100 +E000000 diff --git a/ass1/vaje/sklad/test.asm b/ass1/vaje/sklad/test.asm new file mode 100644 index 0000000..69e78c7 --- /dev/null +++ b/ass1/vaje/sklad/test.asm @@ -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' diff --git a/ass1/vaje/vhod_izhod/AA.dev b/ass1/vaje/vhod_izhod/AA.dev new file mode 100644 index 0000000..4aceb7d --- /dev/null +++ b/ass1/vaje/vhod_izhod/AA.dev @@ -0,0 +1 @@ +SIC/XE diff --git a/ass1/vaje/vhod_izhod/cat.asm b/ass1/vaje/vhod_izhod/cat.asm new file mode 100644 index 0000000..4de8e68 --- /dev/null +++ b/ass1/vaje/vhod_izhod/cat.asm @@ -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 + diff --git a/ass1/vaje/vhod_izhod/echo.asm b/ass1/vaje/vhod_izhod/echo.asm new file mode 100644 index 0000000..193d922 --- /dev/null +++ b/ass1/vaje/vhod_izhod/echo.asm @@ -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 diff --git a/ass1/vaje/vhod_izhod/print.asm b/ass1/vaje/vhod_izhod/print.asm new file mode 100644 index 0000000..6bd04ba --- /dev/null +++ b/ass1/vaje/vhod_izhod/print.asm @@ -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 diff --git a/ass1/vaje/zaslon/screen.asm b/ass1/vaje/zaslon/screen.asm new file mode 100644 index 0000000..92321d3 --- /dev/null +++ b/ass1/vaje/zaslon/screen.asm @@ -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