📄 fat.lis
字号:
084C 511E adc R5,R17
084E 82E0 ldi R24,2
0850 0A84 ldd R0,y+10
0852 809D mul R24,R0
0854 F001 movw R30,R0
0856 80E0 ldi R24,<_mp3_info
0858 90E0 ldi R25,>_mp3_info
085A E80F add R30,R24
085C F91F adc R31,R25
085E 5182 std z+1,R5
0860 4082 std z+0,R4
0862 .dbline 172
0862 ; i=40;
0862 88E2 ldi R24,40
0864 8B87 std y+11,R24
0866 .dbline 173
0866 ; break;
0866 0CC0 xjmp L147
0868 L149:
0868 .dbline 175
0868 L146:
0868 .dbline 167
0868 8885 ldd R24,y+8
086A 9985 ldd R25,y+9
086C 0196 adiw R24,1
086E 9987 std y+9,R25
0870 8887 std y+8,R24
0872 L148:
0872 .dbline 167
0872 8885 ldd R24,y+8
0874 9985 ldd R25,y+9
0876 8038 cpi R24,128
0878 E0E0 ldi R30,0
087A 9E07 cpc R25,R30
087C 08F4 brsh X17
087E A1CF xjmp L145
0880 X17:
0880 L147:
0880 .dbline 176
0880 L142:
0880 .dbline 164
0880 0B84 ldd R0,y+11
0882 0394 inc R0
0884 0B86 std y+11,R0
0886 L144:
0886 .dbline 164
0886 8B85 ldd R24,y+11
0888 8F31 cpi R24,31
088A 08F4 brsh X18
088C 73CF xjmp L141
088E X18:
088E .dbline 177
088E ; }
088E ; }
088E ; }
088E ; if(i!=41)
088E 8932 cpi R24,41
0890 61F0 breq L157
0892 .dbline 178
0892 ; mp3_info.NAME[j]=0x000A; //OFFSET.0x3e是*
0892 82E0 ldi R24,2
0894 0A84 ldd R0,y+10
0896 809D mul R24,R0
0898 F001 movw R30,R0
089A 80E0 ldi R24,<_mp3_info
089C 90E0 ldi R25,>_mp3_info
089E E80F add R30,R24
08A0 F91F adc R31,R25
08A2 8AE0 ldi R24,10
08A4 90E0 ldi R25,0
08A6 9183 std z+1,R25
08A8 8083 std z+0,R24
08AA L157:
08AA .dbline 179
08AA L128:
08AA .dbline 160
08AA 0A84 ldd R0,y+10
08AC 0394 inc R0
08AE 0A86 std y+10,R0
08B0 L130:
08B0 .dbline 160
08B0 20903400 lds R2,_mp3_info+52
08B4 0A84 ldd R0,y+10
08B6 0214 cp R0,R2
08B8 08F4 brsh X19
08BA 2DCF xjmp L127
08BC X19:
08BC .dbline 180
08BC ; }
08BC ; }
08BC L102:
08BC .dbline 181
08BC ; counter--;
08BC 0C84 ldd R0,y+12
08BE 0A94 dec R0
08C0 0C86 std y+12,R0
08C2 .dbline 182
08C2 ; }
08C2 .dbline 183
08C2 ; }
08C2 4AC0 xjmp L68
08C4 L67:
08C4 .dbline 184
08C4 ; else if((buffer[0]!=0XE5)&(buffer[8]==0x4D)&(buffer[9]==0x50)&(buffer[10]==0x33))
08C4 80910000 lds R24,_buffer
08C8 853E cpi R24,229
08CA 29F0 breq L164
08CC 81E0 ldi R24,1
08CE 90E0 ldi R25,0
08D0 988B std y+16,R25
08D2 8F87 std y+15,R24
08D4 04C0 xjmp L165
08D6 L164:
08D6 0024 clr R0
08D8 1124 clr R1
08DA 188A std y+16,R1
08DC 0F86 std y+15,R0
08DE L165:
08DE 80910800 lds R24,_buffer+8
08E2 8D34 cpi R24,77
08E4 21F4 brne L166
08E6 81E0 ldi R24,1
08E8 90E0 ldi R25,0
08EA 7C01 movw R14,R24
08EC 02C0 xjmp L167
08EE L166:
08EE EE24 clr R14
08F0 FF24 clr R15
08F2 L167:
08F2 80910900 lds R24,_buffer+9
08F6 8035 cpi R24,80
08F8 21F4 brne L168
08FA 81E0 ldi R24,1
08FC 90E0 ldi R25,0
08FE 5C01 movw R10,R24
0900 02C0 xjmp L169
0902 L168:
0902 AA24 clr R10
0904 BB24 clr R11
0906 L169:
0906 80910A00 lds R24,_buffer+10
090A 8333 cpi R24,51
090C 21F4 brne L170
090E 81E0 ldi R24,1
0910 90E0 ldi R25,0
0912 6C01 movw R12,R24
0914 02C0 xjmp L171
0916 L170:
0916 CC24 clr R12
0918 DD24 clr R13
091A L171:
091A 2F84 ldd R2,y+15
091C 3888 ldd R3,y+16
091E 2E20 and R2,R14
0920 3F20 and R3,R15
0922 2A20 and R2,R10
0924 3B20 and R3,R11
0926 2C20 and R2,R12
0928 3D20 and R3,R13
092A 2220 tst R2
092C 11F4 brne X9
092E 3320 tst R3
0930 99F0 breq L159
0932 X9:
0932 .dbline 185
0932 ; {//处理数据了。
0932 .dbline 188
0932 ; //mp3_info.Name_number=0;
0932 ;
0932 ; mp3_info.DIR_FstClusL[0]=buffer[26];
0932 20901A00 lds R2,_buffer+26
0936 20923500 sts _mp3_info+53,R2
093A .dbline 189
093A ; mp3_info.DIR_FstClusL[1]=buffer[27];
093A 20901B00 lds R2,_buffer+27
093E 20923600 sts _mp3_info+53+1,R2
0942 .dbline 192
0942 ;
0942 ; //mp3_info.DIR_Filesize[0]=buffer[28];
0942 ; mp3_info.DIR_Filesize[0]=buffer[29];
0942 20901D00 lds R2,_buffer+29
0946 20923700 sts _mp3_info+55,R2
094A .dbline 193
094A ; mp3_info.DIR_Filesize[1]=buffer[30];
094A 20901E00 lds R2,_buffer+30
094E 20923800 sts _mp3_info+55+1,R2
0952 .dbline 196
0952 ; //mp3_info.DIR_Filesize[3]=buffer[31];
0952 ;
0952 ; counter--;
0952 0C84 ldd R0,y+12
0954 0A94 dec R0
0956 0C86 std y+12,R0
0958 .dbline 197
0958 ; }
0958 L159:
0958 L68:
0958 L53:
0958 .dbline 199
0958 L50:
0958 .dbline 121
0958 0C84 ldd R0,y+12
095A 0020 tst R0
095C 09F0 breq X20
095E D5CC xjmp L49
0960 X20:
0960 .dbline -2
0960 L46:
0960 6196 adiw R28,17
0962 0E940000 xcall pop_gset5
0966 .dbline 0 ; func end
0966 0895 ret
0968 .dbsym l counter 12 c
0968 .dbsym l mulu_Clus_number 4 l
0968 .dbsym l i 11 c
0968 .dbsym l j 10 c
0968 .dbsym l Read_number 8 i
0968 .dbsym r number 10 c
0968 .dbend
0968 .dbfunc e DAT_Directory _DAT_Directory fV
0968 ; Read_number -> y+8
0968 ; mulu_Clus_number -> y+4
.even
0968 _DAT_Directory::
0968 0E940000 xcall push_gset5
096C 2C97 sbiw R28,12
096E .dbline -1
096E .dbline 205
096E ;
096E ; }
096E ;
096E ; }
096E ;
096E ; //=======================================================================
096E ; void DAT_Directory(void)
096E ; {
096E .dbline 210
096E ;
096E ; uint16 Read_number;
096E ; uint32 mulu_Clus_number;
096E ;
096E ; Read_number=0;
096E 0024 clr R0
0970 1124 clr R1
0972 1986 std y+9,R1
0974 0886 std y+8,R0
0976 .dbline 211
0976 ; mulu_Clus_number=fat_info.Firstgengmulu;
0976 20900300 lds R2,_fat_info+3
097A 30900400 lds R3,_fat_info+3+1
097E 4424 clr R4
0980 5524 clr R5
0982 FE01 movw R30,R28
0984 2482 std z+4,R2
0986 3582 std z+5,R3
0988 4682 std z+6,R4
098A 5782 std z+7,R5
098C .dbline 212
098C ; mulu_Clus_number<<=9;
098C 89E0 ldi R24,9
098E 90E0 ldi R25,0
0990 FE01 movw R30,R28
0992 2480 ldd R2,z+4
0994 3580 ldd R3,z+5
0996 4680 ldd R4,z+6
0998 5780 ldd R5,z+7
099A 8A93 st -y,R24
099C 8101 movw R16,R2
099E 9201 movw R18,R4
09A0 0E940000 xcall lsl32
09A4 FE01 movw R30,R28
09A6 0483 std z+4,R16
09A8 1583 std z+5,R17
09AA 2683 std z+6,R18
09AC 3783 std z+7,R19
09AE 50C1 xjmp L185
09B0 L184:
09B0 .dbline 215
09B0 ;
09B0 ; while(1)
09B0 ; {
09B0 .dbline 216
09B0 ; SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer,32);
09B0 80E2 ldi R24,32
09B2 90E0 ldi R25,0
09B4 9B83 std y+3,R25
09B6 8A83 std y+2,R24
09B8 80E0 ldi R24,<_buffer
09BA 90E0 ldi R25,>_buffer
09BC 9983 std y+1,R25
09BE 8883 std y+0,R24
09C0 2884 ldd R2,y+8
09C2 3984 ldd R3,y+9
09C4 C101 movw R24,R2
09C6 0196 adiw R24,1
09C8 9987 std y+9,R25
09CA 8887 std y+8,R24
09CC 85E0 ldi R24,5
09CE 90E0 ldi R25,0
09D0 4424 clr R4
09D2 5524 clr R5
09D4 8A93 st -y,R24
09D6 8101 movw R16,R2
09D8 9201 movw R18,R4
09DA 0E940000 xcall lsl32
09DE FE01 movw R30,R28
09E0 2480 ldd R2,z+4
09E2 3580 ldd R3,z+5
09E4 4680 ldd R4,z+6
09E6 5780 ldd R5,z+7
09E8 200E add R2,R16
09EA 311E adc R3,R17
09EC 421E adc R4,R18
09EE 531E adc R5,R19
09F0 8101 movw R16,R2
09F2 9201 movw R18,R4
09F4 0E940000 xcall _SD_read_sector2
09F8 .dbline 217
09F8 ; if((buffer[0]!=0XE5)&(buffer[8]==0x44)&(buffer[9]==0x41)&(buffer[10]==0x54))
09F8 80910000 lds R24,_buffer
09FC 853E cpi R24,229
09FE 29F0 breq L192
0A00 81E0 ldi R24,1
0A02 90E0 ldi R25,0
0A04 9B87 std y+11,R25
0A06 8A87 std y+10,R24
0A08 04C0 xjmp L193
0A0A L192:
0A0A 0024 clr R0
0A0C 1124 clr R1
0A0E 1B86 std y+11,R1
0A10 0A86 std y+10,R0
0A12 L193:
0A12 80910800 lds R24,_buffer+8
0A16 8434 cpi R24,68
0A18 21F4 brne L194
0A1A 81E0 ldi R24,1
0A1C 90E0 ldi R25,0
0A1E 7C01 movw R14,R24
0A20 02C0 xjmp L195
0A22 L194:
0A22 EE24 clr R14
0A24 FF24 clr R15
0A26 L195:
0A26
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -