?? 8.4.2利用鄰接表的圖最短路徑算法.txt
字號:
GRAPH EQU 20H
TREE EQU 21H
QUEUE EQU 1FH
NODE EQU 30H
FG EQU 40H
POINT EQU 80H
LENGTH EQU 40H
D EQU 05H
F DATA 3CH
R DATA 3DH
N DATA 3EH
K DATA 3FH
TST:
MOV SP,#5FH
MOV DPTR,#GRA
MOV P2,#GRAPH
MOV R0,#0
MOV R2,#4AH
CPY:
CLR A
MOVC A,@A+DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R2,CPY
MOV P2,#GRAPH
MOV R0,#NODE
MOVX A,@R0
JZ STOP
INC A
MOV N,A
MOV K,#1
TST1:
MOV DPH,#TREE
MOV DPL,#0
MOV R2,#0
CLR A
CLEAR:
MOVX @DPTR,A
INC DPTR
DJNZ R2,CLEAR
MOV P2,#GRAPH
MOV R0,#NODE
MOV DPH,#TREE
MOV DPL,#0
MOVX A,@R0
MOVX @DPTR,A
INC DPTR
MOV R7,A
MOV R0,#FG
INC R0
CLRF:
CLR A
MOVX @R0,A
INC R0
DJNZ R7,CLRF
LCALL SETNULL
MOV A,#0
LCALL DATAIN
MOV A,#0
LCALL DATAIN
MOV A,K
LCALL DATAIN
LCALL BTREE
INC K
MOV A,K
CJNE A,N,TEST1
STOP: LJMP STOP
BTREE:
MOV A,F
XRL A,R
JZ BFSEND
LCALL DATAOUT
MOV R4,A
LCALL DATAOUT
MOV R5,A
LCALL DATAOUT
MOV R2,A
ADD A,#NODE
MOV R0,A
MOVX A,@R0
MOVX @DPTR,A
MOV A,DPL
CPL ACC.7
MOV DPL,A
MOV A,R4
MOVX @DPTR,A
MOV A,DPL
CPL ACC.7
CPL ACC.6
MOV DPL,A
MOV A,R5
MOVX @DPTR,A
MOV A,DPL
CPL ACC.6
MOV DPL,A
INC DPTR
MOV A,R2
ADD A,#FG
MOV R1,A
MOV A,#0FFH
MOVX @R1,A
MOV A,R2
DEC A
MOV B,#D
MUL AB
MOV R1,A ;開始查鄰接子表
LOOP:
MOVX A,@R1
JZ BTREE
MOV R3,A
ADD A,#FG
MOV R0,A
MOVX A,@R0
JNZ LOOPE
MOV A,R2
LCALL DATAIN
MOV A,R5
INC A
LCALL DATAIN
MOV A,R3
LCALL DATAIN
MOV A,#1
MOVX @R0,A
LOOPE:
INC R1
LJMP LOOP
BFSEND:
RET
SETNULL:
MOV A,#0FFH
MOV F,A
MOV R,A
RET
DATAIN:
PUSH DPH
PUSH DPL
INC R
MOV DPL,R
MOV DPH,#QUEUE
MOVX @DPTR,A
POP DPL
POP DPH
RET
DATAOUT:
PUSH DPH
PUSH DPL
INC F
MOV DPL,F
MOV DPH,#QUEUE
MOVX A,@DPTR
POP DPL
POP DPH
RET
;2000H: 02 08 00 00 00
;2005H: 01 03 09 00 00
;200AH: 02 04 06 00 00
;200FH: 03 05 00 00 00
;2014H: 04 06 07 00 00
;2019H: 03 05 07 09 00
;201EH: 05 06 08 00 00
;2023H: 01 07 09 00 00
;2028H: 02 06 08 00 00
;2030H: 09 41 42 43 44 45 46 47 48 49
;2040H: 00 00 00 00 00 00 00 00 00 00
GRA:
DB 02H,08H,00H,00H
DB 00H,01H,03H,09H
DB 00H,00H,02H,04H
DB 06H,00H,00H,03H
DB 05H,00H,00H,00H
DB 04H,06H,07H,00H
DB 00H,03H,05H,07H
DB 09H,00H,05H,06H
DB 08H,00H,00H,01H
DB 07H,09H,00H,00H
DB 02H,06H,08H,00H
DB 00H,00H,00H,00H
DB 09H,41H,42H,43H
DB 44H,45H,46H,47H
DB 48H,49H,00H,00H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -