65 lines
1.2 KiB
NASM
65 lines
1.2 KiB
NASM
DIJKSTRA START 0
|
|
.zacetna inicializacija
|
|
LDA #0
|
|
STA RAZDALJE, START
|
|
STA PROV, START
|
|
LDA #-1
|
|
STA PREV, START
|
|
WHILE LDS #-1
|
|
LDX #0
|
|
FOR1 LDA PROV, X
|
|
CMP #0
|
|
JLT NEXT
|
|
RMO S, A
|
|
CMP #-1
|
|
JEQ SET
|
|
STA old_X
|
|
LDA PROV, X
|
|
RMO A, T
|
|
RMO S, X
|
|
LDA PROV, X
|
|
LDX old_X
|
|
COMPR A, T . A-> PROV[Y] T -> PROV[X]
|
|
JGT NEXT
|
|
JEQ NEXT
|
|
SET RMO X, S
|
|
|
|
RMO S, A
|
|
COMP #-1
|
|
JEQ HALT
|
|
|
|
RMO S, X
|
|
LDA PROV, X
|
|
STA D, X
|
|
LDA #-2
|
|
STA PROV, X
|
|
|
|
LDX #0
|
|
FOR2
|
|
|
|
TIX INPUT_E
|
|
JLT FOR2
|
|
|
|
NEXT TIX INPUT_V
|
|
J FOR1
|
|
HALT J HALT
|
|
END DIJKSTRA
|
|
|
|
|
|
.vhodni parametri
|
|
INPUT_V = 9
|
|
INPUT_E = 16
|
|
INPUT_X RESW 100
|
|
INPUT_Y RESW 100
|
|
INPUT_W RESW 100
|
|
|
|
.pomozne spremenljivke
|
|
old_X RESW 1
|
|
.najkrajse razdalje
|
|
D RESW 9
|
|
.prejsnje vozlisce
|
|
PREV RESW 9
|
|
.provisional razdalje (okolica), -2 = done, -1 neobiskan
|
|
PROV RESW 9
|
|
.indeks zacetnega vozlisca
|
|
START WORD 0
|