From a363fd84033814adeb4193a301f6f4a4e3122566 Mon Sep 17 00:00:00 2001 From: Timon Date: Mon, 27 Oct 2025 14:28:45 +0100 Subject: [PATCH] Poskus hornerjevega algoritma s subrutino, ma pomoje neki ne dela --- ass1/Polinom/poly_sub.asm | 54 +++++++++++++++++++++++++++++++++++++++ ass1/Polinom/poly_sub.log | 26 +++++++++++++++++++ ass1/Polinom/poly_sub.lst | 53 ++++++++++++++++++++++++++++++++++++++ ass1/Polinom/poly_sub.obj | 6 +++++ 4 files changed, 139 insertions(+) create mode 100644 ass1/Polinom/poly_sub.asm create mode 100644 ass1/Polinom/poly_sub.log create mode 100644 ass1/Polinom/poly_sub.lst create mode 100644 ass1/Polinom/poly_sub.obj diff --git a/ass1/Polinom/poly_sub.asm b/ass1/Polinom/poly_sub.asm new file mode 100644 index 0000000..6daca4e --- /dev/null +++ b/ass1/Polinom/poly_sub.asm @@ -0,0 +1,54 @@ +. Racunanje polinoma s subrutino ki vsebuje loop +ps START 0 + LDX #0 . X je idx za tocke + LDL #3 + LDF len +outer_loop + LDT in, X . V T je trenutno obravnavana tocka + LDA a4 . V A bomo računali z vmesnimi rezultati + STA temp . V temp vmesni rezultati + LDB #0 . B bo idx za koeficiente + LDS a3 . Z S se bomo pomikali po koeficientih + +inner_loop + LDA temp + MULR T, A + SUBR B, S + ADDR S, A . V prvem loopu je B=0, pol B=3, pol B=6 itd + STA temp + + ADDR L, B + COMPR B, F + JLT inner_loop + + STA poly, X + ADDR L, X + COMPR X, F + JLT outer_loop + + RSUB + +halt J halt + END ps + +. Tocke +in WORD 1 + WORD 2 + WORD 3 + WORD 4 + WORD 5 + +lastin EQU * +len EQU lastin - in . Stevilo tock v bajtih + +. Rezultat +poly RESW 5 +temp RESW 1 + + +. Koeficienti +a0 WORD 5 +a1 WORD 4 +a2 WORD 3 +a3 WORD 2 +a4 WORD 1 \ No newline at end of file diff --git a/ass1/Polinom/poly_sub.log b/ass1/Polinom/poly_sub.log new file mode 100644 index 0000000..918872a --- /dev/null +++ b/ass1/Polinom/poly_sub.log @@ -0,0 +1,26 @@ +***** Section ***** +Stats: size=110 blocks=110 symbols=15 literals=0 relocations=0 +Blocks + name start size #ins #dir #sto + 00000 0006E 22 15 2 +Symbols + name hex dec scope kind type description + a0 00005F 95 local relative data label + a1 000062 98 local relative data label + a2 000065 101 local relative data label + a3 000068 104 local relative data label + a4 00006B 107 local relative data label + halt 000038 56 local relative code label + in 00003B 59 local relative data label + inner_loop 000018 24 local relative code label + lastin 00004A 74 local absolute notlabel * + len 00000F 15 local absolute notlabel lastin-in + outer_loop 000009 9 local relative code label + poly 00004D 77 local relative data label + ps 000000 0 exported relative code label + st_poly 00004A 74 local relative data label + temp 00005C 92 local relative data label +Literals + label definition +Relocations + address length flag symbol diff --git a/ass1/Polinom/poly_sub.lst b/ass1/Polinom/poly_sub.lst new file mode 100644 index 0000000..cab4f1f --- /dev/null +++ b/ass1/Polinom/poly_sub.lst @@ -0,0 +1,53 @@ + . Racunanje polinoma s subrutino ki vsebuje loop +00000 ps START 0 +00000 050000 LDX #0 . X je idx za tocke +00003 090003 LDL #3 +00006 73000F LDF len +00009 77A02F outer_loop LDT in,X . V T je trenutno obravnavana tocka +0000C 03205C LDA a4 . V A bomo računali z vmesnimi rezultati +0000F 0F204A STA temp . V temp vmesni rezultati +00012 690000 LDB #0 . B bo idx za koeficiente +00015 6F2050 LDS a3 . Z S se bomo pomikali po koeficientih + +00018 032041 inner_loop LDA temp +0001B 9850 MULR T,A +0001D 9434 SUBR B,S +0001F 9040 ADDR S,A . V prvem loopu je B=0, pol B=3, pol B=6 itd +00021 0F2038 STA temp + +00024 9023 ADDR L,B +00026 A036 COMPR B,F +00028 3B2FED JLT inner_loop + +0002B 0FA01F STA poly,X +0002E 9021 ADDR L,X +00030 A016 COMPR X,F +00032 3B2FD4 JLT outer_loop + +00035 4F0000 RSUB + +00038 3F2FFD halt J halt +0003B END ps + + . Tocke +0003B 000001 in WORD 1 +0003E 000002 WORD 2 +00041 000003 WORD 3 +00044 000004 WORD 4 +00047 000005 WORD 5 + +0004A lastin EQU * +0004A len EQU lastin-in . Stevilo tock +0004A 00000C st_poly WORD 12 . Stopnja polinoma + + . Rezultat +0004D 00....00 poly RESW 5 +0005C 000000 temp RESW 1 + + + . Koeficienti +0005F 000005 a0 WORD 5 +00062 000004 a1 WORD 4 +00065 000003 a2 WORD 3 +00068 000002 a3 WORD 2 +0006B 000001 a4 WORD 1 diff --git a/ass1/Polinom/poly_sub.obj b/ass1/Polinom/poly_sub.obj new file mode 100644 index 0000000..2465895 --- /dev/null +++ b/ass1/Polinom/poly_sub.obj @@ -0,0 +1,6 @@ +Hps 00000000006E +T0000001E05000009000373000F77A02F03205C0F204A6900006F2050032041985094 +T00001E1E3490400F20389023A0363B2FED0FA01F9021A0163B2FD44F00003F2FFD00 +T00003C11000100000200000300000400000500000C +T00005F0F000005000004000003000002000001 +E000000