📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\AVR\t1\main.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 8
0000 ; #include<iom128v.h>
0000 ; #include<STDIO.h>
0000 ; #include<STRING.h>
0000 ; #include<stdlib.h>
0000 ; #include<MATH.h>
0000 ; #define xtal 4
0000 ; void delay_1ms(void)
0000 ; {
0000 .dbline 10
0000 ; unsigned int i;
0000 ; for(i=1;i<(unsigned int)(xtal*143-2);i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 xjmp L5
0006 L2:
0006 .dbline 11
0006 L3:
0006 .dbline 10
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 10
000A 0A33 cpi R16,58
000C E2E0 ldi R30,2
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e readfile _readfile fV
0014 ; map -> R0,R1
.even
0014 _readfile::
0014 .dbline -1
0014 .dbline 15
0014 ; ;
0014 ; }
0014 ;
0014 ; void readfile(int map[50][50])
0014 ; {
0014 .dbline 17
0014 ; //加入打开地图
0014 ; ;
0014 .dbline -2
0014 L6:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym l map 0 pA[100:50]I
0016 .dbend
0016 .dbfunc e save _save fV
0016 ; walked -> R0,R1
.even
0016 _save::
0016 .dbline -1
0016 .dbline 22
0016 ;
0016 ; }
0016 ;
0016 ; void save(int walked [50])
0016 ; {
0016 .dbline 24
0016 ; // //保存地图
0016 ; ;
0016 .dbline -2
0016 L7:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbsym l walked 0 pI
0018 .dbend
0018 .dbfunc e judge _judge fI
0018 ; walked -> R0,R1
.even
0018 _judge::
0018 .dbline -1
0018 .dbline 29
0018 ;
0018 ; }
0018 ;
0018 ; int judge(int walked [50])
0018 ; {
0018 .dbline 30
0018 ; ;
0018 .dbline 32
0018 ; //判断部分
0018 ; ;
0018 .dbline -2
0018 L8:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym l walked 0 pI
001A .dbend
001A .dbfunc e renew _renew fV
001A ; walked -> R0,R1
.even
001A _renew::
001A .dbline -1
001A .dbline 36
001A ; }
001A ;
001A ; void renew(int walked [50])
001A ; {
001A .dbline 37
001A ; ;
001A .dbline -2
001A L9:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym l walked 0 pI
001C .dbend
001C .dbfunc e freenode _freenode fV
001C ; H -> R22,R23
001C ; head -> R20,R21
001C ; aa -> R10,R11
001C ; hh -> R16,R17
.even
001C _freenode::
001C 0E940000 xcall push_gset4
0020 .dbline -1
0020 .dbline 43
0020 ; //随机
0020 ; }
0020 ;
0020 ;
0020 ; void freenode(int hh)
0020 ; {
0020 10C0 xjmp L12
0022 L11:
0022 .dbline 46
0022 ; int aa,head,H;
0022 ; while(aa!=head)
0022 ; {
0022 .dbline 47
0022 ; H=aa;
0022 B501 movw R22,R10
0024 .dbline 48
0024 ; aa=aa||head;
0024 6030 cpi R22,0
0026 6707 cpc R22,R23
0028 19F4 brne L16
002A X0:
002A 4030 cpi R20,0
002C 4507 cpc R20,R21
002E 21F0 breq L14
0030 X1:
0030 L16:
0030 81E0 ldi R24,1
0032 90E0 ldi R25,0
0034 6C01 movw R12,R24
0036 02C0 xjmp L15
0038 L14:
0038 CC24 clr R12
003A DD24 clr R13
003C L15:
003C 5601 movw R10,R12
003E .dbline 49
003E 6627 clr R22
0040 7727 clr R23
0042 .dbline 50
0042 L12:
0042 .dbline 45
0042 A416 cp R10,R20
0044 B506 cpc R11,R21
0046 69F7 brne L11
0048 .dbline 50
0048 ; H=0;
0048 ; };
0048 .dbline -2
0048 L10:
0048 0E940000 xcall pop_gset4
004C .dbline 0 ; func end
004C 0895 ret
004E .dbsym r H 22 I
004E .dbsym r head 20 I
004E .dbsym r aa 10 I
004E .dbsym r hh 16 I
004E .dbend
004E .dbfunc e addstack _addstack fV
004E ; flag1 -> R20,R21
004E ; head -> R22,R23
004E ; p -> R16,R17
.even
004E _addstack::
004E 0E940000 xcall push_gset3
0052 .dbline -1
0052 .dbline 55
0052 ; // 节点;
0052 ; }
0052 ;
0052 ; void addstack(int p)
0052 ; {
0052 13C0 xjmp L19
0054 L18:
0054 .dbline 58
0054 ; int head,flag1; //把路径读入数组
0054 ; while(p&&p!=head)
0054 ; {
0054 .dbline 59
0054 ; switch(p=flag1)
0054 8A01 movw R16,R20
0056 5A01 movw R10,R20
0058 4130 cpi R20,1
005A E0E0 ldi R30,0
005C 5E07 cpc R21,R30
005E 69F0 breq L22
0060 4230 cpi R20,2
0062 E0E0 ldi R30,0
0064 5E07 cpc R21,R30
0066 49F0 breq L22
0068 4330 cpi R20,3
006A E0E0 ldi R30,0
006C 5E07 cpc R21,R30
006E 29F0 breq L22
0070 4430 cpi R20,4
0072 E0E0 ldi R30,0
0074 5E07 cpc R21,R30
0076 09F0 breq L22
0078 00C0 xjmp L22
007A X2:
007A .dbline 60
007A ; {
007A .dbline 62
007A ; case 1:
007A ; ;
007A .dbline 64
007A ; case 2:
007A ; ;
007A .dbline 66
007A ; case 3:
007A ; ;
007A .dbline 68
007A ; case 4:
007A ; ;
007A .dbline 70
007A ; default:
007A ; break ;
007A L22:
007A .dbline 72
007A .dbline 73
007A L19:
007A .dbline 57
007A 0030 cpi R16,0
007C 0107 cpc R16,R17
007E 19F0 breq L28
0080 X3:
0080 0617 cp R16,R22
0082 1707 cpc R17,R23
0084 39F7 brne L18
0086 L28:
0086 .dbline -2
0086 L17:
0086 0E940000 xcall pop_gset3
008A .dbline 0 ; func end
008A 0895 ret
008C .dbsym r flag1 20 I
008C .dbsym r head 22 I
008C .dbsym r p 16 I
008C .dbend
008C .dbfunc e judgewalk _judgewalk fV
008C ; p -> <dead>
008C ; i -> <dead>
008C ; f -> R20,R21
008C ; y -> R14,R15
008C ; head -> R22,R23
008C ; flag -> R22,R23
008C ; a -> y+12
008C ; t -> y+10
008C ; start_y -> R10,R11
008C ; start_x -> R12,R13
.even
008C _judgewalk::
008C 0E940000 xcall push_gset5
0090 5901 movw R10,R18
0092 6801 movw R12,R16
0094 .dbline -1
0094 .dbline 78
0094 ; }
0094 ; ;//
0094 ; }
0094 ;
0094 ; }
0094 ;
0094 ; void judgewalk(int start_x,int start_y,int t,int a[50][50]) //判断可以行动否并建立B-树
0094 ; {
0094 .dbline 79
0094 ; int i,f,head=0;
0094 6627 clr R22
0096 7727 clr R23
0098 .dbline 80
0098 ; int flag=0;
0098 .dbline 82
0098 ; int *p;
0098 ; int y=rand()%4;
0098 0E940000 xcall _rand
009C 24E0 ldi R18,4
009E 30E0 ldi R19,0
00A0 0E940000 xcall mod16s
00A4 7801 movw R14,R16
00A6 .dbline 83
00A6 ; if(a[start_x][start_y]!=t) //没有找到灭火器或者着火点 继续找
00A6 04E6 ldi R16,100
00A8 10E0 ldi R17,0
00AA 9601 movw R18,R12
00AC 0E940000 xcall empy16s
00B0 1801 movw R2,R16
00B2 0C84 ldd R0,y+12
00B4 1D84 ldd R1,y+13
00B6 200C add R2,R0
00B8 311C adc R3,R1
00BA 02E0 ldi R16,2
00BC 10E0 ldi R17,0
00BE 9501 movw R18,R10
00C0 0E940000 xcall empy16s
00C4 F801 movw R30,R16
00C6 E20D add R30,R2
00C8 F31D adc R31,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -