From 325f63e78ada9494e37abc975e740b378fdf562e Mon Sep 17 00:00:00 2001 From: "aljazbrodar." Date: Sat, 15 Nov 2025 11:52:25 +0100 Subject: [PATCH] almost done --- ass1/bonus/dijkstra.asm | 114 ++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/ass1/bonus/dijkstra.asm b/ass1/bonus/dijkstra.asm index 65cedfb..0c92e75 100644 --- a/ass1/bonus/dijkstra.asm +++ b/ass1/bonus/dijkstra.asm @@ -6,33 +6,32 @@ dijk START 0 STA PROV, X .zacetno vozlisce nima predhodnika LDA minus_ena - STA PREV, X .neskoncna while zanka WHILE LDS minus_ena . S = -1, hrani vozlisce ki imam min razdaljo v okolici - LDX #0 . stevec = 0 - -FOR1 LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici + LDX #0 . stevec = 0 +FOR1 RMO X, A + STA old_X + LDA PROV, X . nalozi potencialno razdaljo sosednjega vozlisca v okolici COMP minus_ena - JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce + JEQ NEXT . ce ze obiskano=-2 ali neobiskano=-1 preskoci vozlisce COMP minus_dva JEQ NEXT - RMO S, A . sicer S v A - COMP minus_ena . ce S se ni nastavljen ga nastavi prvic - JEQ SET - STA old_X . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S] - LDA PROV, X . nalozi p. razdaljo tren. vozl. - RMO A, T . shrani jo v T reg. - RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje - LDA PROV, X . nalozi trenutno min razdaljo - LDX old_X . obnovi X, vrednost stevca zanke FOR1 - COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET - JEQ NEXT + RMO S, A . sicer S v A + COMP minus_ena . ce S se ni nastavljen ga nastavi prvic + JEQ SET . sicer poglej ali ima trenutno vozl. manjso pot. razdaljo prov[X] < prov[S] + LDA PROV, X . nalozi p. razdaljo tren. vozl. + RMO A, T . shrani jo v T reg. + RMO S, X . premakni trenutni ix min. vozl. v X za ix naslavljanje + LDA PROV, X . nalozi trenutno min razdaljo + LDX old_X . obnovi X, vrednost stevca zanke FOR1 + COMPR T, A . primerjaj vrednosti tj. ce razdalja ni krajsa preskoci, sicer SET + JEQ NEXT JGT NEXT -SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija +SET RMO X, S . S nastavi na ix vozlisca - trenutna iteracija NEXT RMO X, A - COMP table_len ADD #3 RMO A, X + COMP #table_len JLT FOR1 . ce ni vec vozlisc v okolici koncaj @@ -48,44 +47,54 @@ NEXT RMO X, A .nato dodaj vozlisca v okolico oz. posodobi razdalje obstojecih vozlisc v okolici LDX #0 . stevec na 0 -FOR2 LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S +FOR2 RMO X, A + STA old_X + LDA INPUT_X, X . preveri ali je to povezava ki izvira v vozl. S + MUL #3 . pomnozi s 3 da lahko primerjamo s S, ki steje ix WORDa COMPR A, S JGT NEXT2 . ce ni preskoci JLT NEXT2 - .sicer preveri ali je vozlisce ze obiskano - LDA PROV, X - COMP minus_dva - JEQ NEXT2 - COMP minus_ena .se se ni obiskano, nastavi vrednost p. razdalje + .sicer preveri ali je sosednje vozlisce ze obiskano + LDA INPUT_Y, X . nalozi ix soseda + MUL #3 + RMO A, X . premakni v X + LDA PROV, X . nalozi sosedovo potencialno razdaljo + LDX old_X . obnovi X + COMP minus_dva . poglej ce je ze obiskan + JEQ NEXT2 + COMP minus_ena .ce se ni obiskan, nastavi vrednost p. razdalje JEQ SET2 - - RMO X, A - STA old_X . zacasno zamenjaj vrednost X - RMO S, X - LDA D, X . D[S] -> A - RMO A, T . zacasno shrani v T - LDX old_X - LDA INPUT_W, X - ADDR T, A . D[S] + w - RMO A, T . zacasno shrani v T - LDA PROV, X - COMPR A, T - JEQ NEXT2 - JGT NEXT2 -SET2 RMO X, A - STA old_X + .sicer preveri da je nova p. razdalja manjsa od trenutne + . D[S] + w < PROV[Y] RMO S, X LDA D, X - RMO A, T LDX old_X - LDA INPUT_W, X - ADDR T, A + ADD INPUT_W, X + RMO A, T + LDA INPUT_Y, X + MUL #3 + RMO A, X + LDA PROV, X + LDX old_X + COMPR A, T + JEQ NEXT2 + JLT NEXT2 + +SET2 RMO S, X + LDA D, X + LDX old_X + ADD INPUT_W, X + RMO A, T + LDA INPUT_Y, X + MUL #3 + RMO A, X + RMO T, A STA PROV, X - RMO X, A - STA PREV, X -NEXT2 RMO A, X - COMP table_len + LDX old_X +NEXT2 RMO X, A ADD #3 + RMO A, X + COMP #table_len JLT FOR2 J WHILE @@ -148,6 +157,7 @@ INPUT_W WORD 8 .pomozne spremenljivke old_X RESW 1 +old_S RESW 1 minus_ena WORD X'FFFFFF' minus_dva WORD X'FFFFFE' .najkrajse razdalje @@ -160,16 +170,6 @@ D WORD -1 WORD -1 WORD -1 WORD -1 -.prejsnje vozlisce -PREV WORD -1 - WORD -1 - WORD -1 - WORD -1 - WORD -1 - WORD -1 - WORD -1 - WORD -1 - WORD -1 .provisional razdalje (okolica), -2 = done, -1 neobiskan PROV WORD -1 WORD -1