📄 left.lst
字号:
__start:
__text_start:
0047 EFCF LDI R28,0xFF
0048 E1D0 LDI R29,0x10
0049 BFCD OUT 0x3D,R28
004A BFDE OUT 0x3E,R29
004B 51C0 SUBI R28,0x10
004C 40D0 SBCI R29,0
004D EA0A LDI R16,0xAA
004E 8308 STD Y+0,R16
004F 2400 CLR R0
0050 E0E2 LDI R30,2
0051 E0F1 LDI R31,1
0052 E011 LDI R17,1
0053 30E2 CPI R30,2
0054 07F1 CPC R31,R17
0055 F011 BEQ 0x0058
0056 9201 ST R0,Z+
0057 CFFB RJMP 0x0053
0058 8300 STD Z+0,R16
0059 E8EC LDI R30,0x8C
005A E0F0 LDI R31,0
005B E0A0 LDI R26,0
005C E0B1 LDI R27,1
005D E010 LDI R17,0
005E 38EE CPI R30,0x8E
005F 07F1 CPC R31,R17
0060 F021 BEQ 0x0065
0061 95C8 LPM
0062 9631 ADIW R30,1
0063 920D ST R0,X+
0064 CFF9 RJMP 0x005E
0065 940E00DD CALL _main
_exit:
0067 CFFF RJMP _exit
FILE: C:\AVR\t1\main.c
(0001) #include<iom128v.h>
(0002) #include<STDIO.h>
(0003) #include<STRING.h>
(0004) #include<stdlib.h>
(0005) #include<MATH.h>
(0006) #define xtal 4
(0007) void delay_1ms(void)
(0008) {
(0009) unsigned int i;
(0010) for(i=1;i<(unsigned int)(xtal*143-2);i++)
_delay_1ms:
i --> R16
0068 E001 LDI R16,1
0069 E010 LDI R17,0
006A C002 RJMP 0x006D
006B 5F0F SUBI R16,0xFF
006C 4F1F SBCI R17,0xFF
006D 330A CPI R16,0x3A
006E E0E2 LDI R30,2
006F 071E CPC R17,R30
0070 F3D0 BCS 0x006B
0071 9508 RET
(0011) ;
(0012) }
(0013)
(0014) void readfile(int map[50][50])
(0015) {
(0016) //加入打开地图
(0017) ;
_readfile:
map --> Y+0
0072 9508 RET
(0018)
(0019) }
(0020)
(0021) void save(int walked [50])
(0022) {
(0023) // //保存地图
(0024) ;
_save:
walked --> Y+0
0073 9508 RET
(0025)
(0026) }
(0027)
(0028) int judge(int walked [50])
(0029) {
(0030) ;
(0031) //判断部分
(0032) ;
_judge:
walked --> Y+0
0074 9508 RET
(0033) }
(0034)
(0035) void renew(int walked [50])
(0036) {
(0037) ;
_renew:
walked --> Y+0
0075 9508 RET
_freenode:
H --> R22
head --> R20
aa --> R10
hh --> R16
0076 940E02DD CALL push_gset4
(0038) //随机
(0039) }
(0040)
(0041)
(0042) void freenode(int hh)
(0043) {
0078 C010 RJMP 0x0089
(0044) int aa,head,H;
(0045) while(aa!=head)
(0046) {
(0047) H=aa;
0079 01B5 MOVW R22,R10
(0048) aa=aa||head;
007A 3060 CPI R22,0
007B 0767 CPC R22,R23
007C F419 BNE 0x0080
007D 3040 CPI R20,0
007E 0745 CPC R20,R21
007F F021 BEQ 0x0084
0080 E081 LDI R24,1
0081 E090 LDI R25,0
0082 016C MOVW R12,R24
0083 C002 RJMP 0x0086
0084 24CC CLR R12
0085 24DD CLR R13
0086 0156 MOVW R10,R12
(0049) H=0;
0087 2766 CLR R22
0088 2777 CLR R23
0089 16A4 CP R10,R20
008A 06B5 CPC R11,R21
008B F769 BNE 0x0079
(0050) };
008C 940E02D5 CALL pop_gset4
008E 9508 RET
_addstack:
flag1 --> R20
head --> R22
p --> R16
008F 940E02DF CALL push_gset3
(0051) // 节点;
(0052) }
(0053)
(0054) void addstack(int p)
(0055) {
0091 C013 RJMP 0x00A5
(0056) int head,flag1; //把路径读入数组
(0057) while(p&&p!=head)
(0058) {
(0059) switch(p=flag1)
0092 018A MOVW R16,R20
0093 015A MOVW R10,R20
0094 3041 CPI R20,1
0095 E0E0 LDI R30,0
0096 075E CPC R21,R30
0097 F069 BEQ 0x00A5
0098 3042 CPI R20,2
0099 E0E0 LDI R30,0
009A 075E CPC R21,R30
009B F049 BEQ 0x00A5
009C 3043 CPI R20,3
009D E0E0 LDI R30,0
009E 075E CPC R21,R30
009F F029 BEQ 0x00A5
00A0 3044 CPI R20,4
00A1 E0E0 LDI R30,0
00A2 075E CPC R21,R30
00A3 F009 BEQ 0x00A5
00A4 C000 RJMP 0x00A5
00A5 3000 CPI R16,0
00A6 0701 CPC R16,R17
00A7 F019 BEQ 0x00AB
00A8 1706 CP R16,R22
00A9 0717 CPC R17,R23
00AA F739 BNE 0x0092
00AB 940E02D2 CALL pop_gset3
00AD 9508 RET
_judgewalk:
p --> Y+1
i --> Y+1
f --> R20
y --> R14
head --> R22
flag --> R22
a --> Y+12
t --> Y+10
start_y --> R10
start_x --> R12
00AE 940E02DB CALL push_gset5
00B0 0159 MOVW R10,R18
00B1 0168 MOVW R12,R16
(0060) {
(0061) case 1:
(0062) ;
(0063) case 2:
(0064) ;
(0065) case 3:
(0066) ;
(0067) case 4:
(0068) ;
(0069) default:
(0070) break ;
(0071) }
(0072) ;//
(0073) }
(0074)
(0075) }
(0076)
(0077) void judgewalk(int start_x,int start_y,int t,int a[50][50]) //判断可以行动否并建立B-树
(0078) {
(0079) int i,f,head=0;
00B2 2766 CLR R22
00B3 2777 CLR R23
(0080) int flag=0;
(0081) int *p;
(0082) int y=rand()%4;
00B4 940E0313 CALL _rand
00B6 E024 LDI R18,4
00B7 E030 LDI R19,0
00B8 940E0288 CALL mod16s
00BA 0178 MOVW R14,R16
(0083) if(a[start_x][start_y]!=t) //没有找到灭火器或者着火点 继续找
00BB E604 LDI R16,0x64
00BC E010 LDI R17,0
00BD 0196 MOVW R18,R12
00BE 940E02C2 CALL empy16s
00C0 0118 MOVW R2,R16
00C1 840C LDD R0,Y+12
00C2 841D LDD R1,Y+13
00C3 0C20 ADD R2,R0
00C4 1C31 ADC R3,R1
00C5 E002 LDI R16,2
00C6 E010 LDI R17,0
00C7 0195 MOVW R18,R10
00C8 940E02C2 CALL empy16s
00CA 01F8 MOVW R30,R16
00CB 0DE2 ADD R30,R2
00CC 1DF3 ADC R31,R3
00CD 8020 LDD R2,Z+0
00CE 8031 LDD R3,Z+1
00CF 840A LDD R0,Y+10
00D0 841B LDD R1,Y+11
00D1 1420 CP R2,R0
00D2 0431 CPC R3,R1
00D3 F031 BEQ 0x00DA
(0084) {
(0085) if(f==0)
00D4 3040 CPI R20,0
00D5 0745 CPC R20,R21
00D6 F401 BNE 0x00D7
(0086) {
(0087) ;
(0088) };
(0089)
(0090) if(flag==0) //向上
00D7 3060 CPI R22,0
00D8 0767 CPC R22,R23
00D9 F401 BNE 0x00DA
(0091)
(0092) {
(0093) ;
(0094) //左
(0095) }
(0096) ;
(0097) } //右
00DA 940E02D8 CALL pop_gset5
00DC 9508 RET
_main:
h --> Y+5006
start_Y --> Y+5004
start_X --> R12
n --> R10
y1 --> Y+5018
x1 --> Y+5016
q --> Y+5014
sm --> R20
l --> Y+5012
i --> Y+5010
a --> Y+4
k --> R14
j --> R22
00DD 97EF SBIW R28,0x3F
00DE 97EF SBIW R28,0x3F
00DF 97EF SBIW R28,0x3F
00E0 97EF SBIW R28,0x3F
00E1 97EF SBIW R28,0x3F
00E2 97EF SBIW R28,0x3F
00E3 97EF SBIW R28,0x3F
00E4 97EF SBIW R28,0x3F
00E5 97EF SBIW R28,0x3F
00E6 97EF SBIW R28,0x3F
00E7 97EF SBIW R28,0x3F
00E8 97EF SBIW R28,0x3F
00E9 97EF SBIW R28,0x3F
00EA 97EF SBIW R28,0x3F
00EB 97EF SBIW R28,0x3F
00EC 97EF SBIW R28,0x3F
00ED 97EF SBIW R28,0x3F
00EE 97EF SBIW R28,0x3F
00EF 97EF SBIW R28,0x3F
00F0 97EF SBIW R28,0x3F
00F1 97EF SBIW R28,0x3F
00F2 97EF SBIW R28,0x3F
00F3 97EF SBIW R28,0x3F
00F4 97EF SBIW R28,0x3F
00F5 97EF SBIW R28,0x3F
00F6 97EF SBIW R28,0x3F
00F7 97EF SBIW R28,0x3F
00F8 97EF SBIW R28,0x3F
00F9 97EF SBIW R28,0x3F
00FA 97EF SBIW R28,0x3F
00FB 97EF SBIW R28,0x3F
00FC 97EF SBIW R28,0x3F
00FD 97EF SBIW R28,0x3F
00FE 97EF SBIW R28,0x3F
00FF 97EF SBIW R28,0x3F
0100 97EF SBIW R28,0x3F
0101 97EF SBIW R28,0x3F
0102 97EF SBIW R28,0x3F
0103 97EF SBIW R28,0x3F
0104 97EF SBIW R28,0x3F
0105 97EF SBIW R28,0x3F
0106 97EF SBIW R28,0x3F
0107 97EF SBIW R28,0x3F
0108 97EF SBIW R28,0x3F
0109 97EF SBIW R28,0x3F
010A 97EF SBIW R28,0x3F
010B 97EF SBIW R28,0x3F
010C 97EF SBIW R28,0x3F
010D 97EF SBIW R28,0x3F
010E 97EF SBIW R28,0x3F
010F 97EF SBIW R28,0x3F
0110 97EF SBIW R28,0x3F
0111 97EF SBIW R28,0x3F
0112 97EF SBIW R28,0x3F
0113 97EF SBIW R28,0x3F
0114 97EF SBIW R28,0x3F
0115 97EF SBIW R28,0x3F
0116 97EF SBIW R28,0x3F
0117 97EF SBIW R28,0x3F
0118 97EF SBIW R28,0x3F
0119 97EF SBIW R28,0x3F
011A 97EF SBIW R28,0x3F
011B 97EF SBIW R28,0x3F
011C 97EF SBIW R28,0x3F
011D 97EF SBIW R28,0x3F
011E 97EF SBIW R28,0x3F
011F 97EF SBIW R28,0x3F
0120 97EF SBIW R28,0x3F
0121 97EF SBIW R28,0x3F
0122 97EF SBIW R28,0x3F
0123 97EF SBIW R28,0x3F
0124 97EF SBIW R28,0x3F
0125 97EF SBIW R28,0x3F
0126 97EF SBIW R28,0x3F
0127 97EF SBIW R28,0x3F
0128 97EF SBIW R28,0x3F
0129 97EF SBIW R28,0x3F
012A 97EF SBIW R28,0x3F
012B 97EF SBIW R28,0x3F
012C 97AB SBIW R28,0x2B
(0098)
(0099) }
(0100)
(0101)
(0102)
(0103) void main(void)
(0104) {
(0105) //init(); //初始化
(0106) int i,j,k,h,l,q,sm,x1,y1,n,start_X,start_Y;
(0107) int a[50][50];
(0108) delay_1ms();
012D DF3A RCALL _delay_1ms
(0109) // delay(50);
(0110) for(i=0;i<50;i++)
012E 2400 CLR R0
012F 2411 CLR R1
0130 01FE MOVW R30,R28
0131 56EE SUBI R30,0x6E
0132 4EFC SBCI R31,0xEC
0133 8211 STD Z+1,R1
0134 8200 STD Z+0,R0
(0111) for(j=0;j<50;j++)
0135 2766 CLR R22
0136 2777 CLR R23
(0112) {
(0113) a[i][j]=1;
0137 E604 LDI R16,0x64
0138 E010 LDI R17,0
0139 01FE MOVW R30,R28
013A 56EE SUBI R30,0x6E
013B 4EFC SBCI R31,0xEC
013C 8120 LDD R18,Z+0
013D 8131 LDD R19,Z+1
013E 940E02C2 CALL empy16s
0140 0118 MOVW R2,R16
0141 01CE MOVW R24,R28
0142 9604 ADIW R24,4
0143 0E28 ADD R2,R24
0144 1E39 ADC R3,R25
0145 E002 LDI R16,2
0146 E010 LDI R17,0
0147 019B MOVW R18,R22
0148 940E02C2 CALL empy16s
014A 01F8 MOVW R30,R16
014B 0DE2 ADD R30,R2
014C 1DF3 ADC R31,R3
014D E081 LDI R24,1
014E E090 LDI R25,0
014F 8391 STD Z+1,R25
0150 8380 STD Z+0,R24
0151 5F6F SUBI R22,0xFF
0152 4F7F SBCI R23,0xFF
0153 3362 CPI R22,0x32
0154 E0E0 LDI R30,0
0155 077E CPC R23,R30
0156 F304 BLT 0x0137
0157 01FE MOVW R30,R28
0158 56EE SUBI R30,0x6E
0159 4EFC SBCI R31,0xEC
015A 8180 LDD R24,Z+0
015B 8191 LDD R25,Z+1
015C 9601 ADIW R24,1
015D 01FE MOVW R30,R28
015E 56EE SUBI R30,0x6E
015F 4EFC SBCI R31,0xEC
0160 8391 STD Z+1,R25
0161 8380 STD Z+0,R24
0162 3382 CPI R24,0x32
0163 E0E0 LDI R30,0
0164 079E CPC R25,R30
0165 F27C BLT 0x0135
(0114) }
(0115) sm=1;
0166 E041 LDI R20,1
0167 E050 LDI R21,0
(0116) //读MAP;
(0117) n=0;
0168 24AA CLR R10
0169 24BB CLR R11
(0118)
(0119) for(j=0;j<h+1;j++)
016A 2766 CLR R22
016B 2777 CLR R23
016C C03F RJMP 0x01AC
(0120) {
(0121) for(k=0;k<l+1;k++)
016D 24EE CLR R14
016E 24FF CLR R15
016F C030 RJMP 0x01A0
(0122) {
(0123) switch(a[j][k])
0170 E604 LDI R16,0x64
0171 E010 LDI R17,0
0172 019B MOVW R18,R22
0173 940E02C2 CALL empy16s
0175 0118 MOVW R2,R16
0176 01CE MOVW R24,R28
0177 9604 ADIW R24,4
0178 0E28 ADD R2,R24
0179 1E39 ADC R3,R25
017A E002 LDI R16,2
017B E010 LDI R17,0
017C 0197 MOVW R18,R14
017D 940E02C2 CALL empy16s
017F 01F8 MOVW R30,R16
0180 0DE2 ADD R30,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -