📄 fat.s
字号:
brne L65
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L66
L65:
clr R10
clr R11
L66:
ldd R2,y+13
ldd R3,y+14
and R2,R14
and R3,R15
and R2,R12
and R3,R13
and R2,R10
and R3,R11
tst R2
brne X3
tst R3
brne X11
xjmp L53
X11:
X3:
.dbline 127
; counter--;
ldd R0,y+12
dec R0
std y+12,R0
.dbline 128
; }
xjmp L53
L52:
.dbline 129
; else if((buffer[0]!=0XE5)&(buffer[11]==0x0f)&(buffer[12]==0x00))
lds R24,_buffer
cpi R24,229
breq L71
ldi R24,1
ldi R25,0
movw R14,R24
xjmp L72
L71:
clr R14
clr R15
L72:
lds R24,_buffer+11
cpi R24,15
brne L73
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L74
L73:
clr R12
clr R13
L74:
lds R2,_buffer+12
tst R2
brne L75
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L76
L75:
clr R10
clr R11
L76:
movw R2,R14
and R2,R12
and R3,R13
and R2,R10
and R3,R11
tst R2
brne X4
tst R3
brne X12
xjmp L67
X12:
X4:
.dbline 130
; {i=buffer[0]-0x40;
.dbline 130
lds R24,_buffer
subi R24,64
std y+11,R24
.dbline 131
; for(j=0;j<i;j++)
clr R0
std y+10,R0
xjmp L80
L77:
.dbline 132
.dbline 133
ldi R24,32
ldi R25,0
std y+3,R25
std y+2,R24
ldi R18,5
ldi R19,0
ldd R16,y+10
clr R17
subi R16,255 ; offset = 1
sbci R17,255
xcall lsl16
movw R2,R16
ldi R24,<_buffer
ldi R25,>_buffer
add R2,R24
adc R3,R25
std y+1,R3
std y+0,R2
ldd R2,y+8
ldd R3,y+9
movw R24,R2
adiw R24,1
std y+9,R25
std y+8,R24
ldi R24,5
ldi R25,0
clr R4
clr R5
st -y,R24
movw R16,R2
movw R18,R4
xcall lsl32
movw R30,R28
ldd R2,z+4
ldd R3,z+5
ldd R4,z+6
ldd R5,z+7
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R16,R2
movw R18,R4
xcall _SD_read_sector2
.dbline 135
L78:
.dbline 131
ldd R0,y+10
inc R0
std y+10,R0
L80:
.dbline 131
ldd R0,y+10
ldd R16,y+11
cp R0,R16
brsh X13
xjmp L77
X13:
.dbline 136
; {
; SD_read_sector2(mulu_Clus_number+((long)(Read_number++)<<5),buffer+(((int)j+1)<<5),32);
;
; }
; if((buffer[((int)i<<5)+8]==0x4D)&(buffer[((int)i<<5)+9]==0x50)&(buffer[((int)i<<5)+10]==0x33))
ldi R18,5
ldi R19,0
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+8
ldi R25,>_buffer+8
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,77
brne L86
ldi R24,1
ldi R25,0
movw R14,R24
xjmp L87
L86:
clr R14
clr R15
L87:
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+9
ldi R25,>_buffer+9
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,80
brne L88
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L89
L88:
clr R12
clr R13
L89:
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+10
ldi R25,>_buffer+10
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,51
brne L90
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L91
L90:
clr R10
clr R11
L91:
movw R2,R14
and R2,R12
and R3,R13
and R2,R10
and R3,R11
tst R2
brne X5
tst R3
brne X14
xjmp L68
X14:
X5:
.dbline 137
; { //处理数据了。
.dbline 138
; mp3_info.DIR_FstClusL[0]=buffer[((int)i<<5)+26];
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+26
ldi R25,>_buffer+26
add R30,R24
adc R31,R25
ldd R2,z+0
sts _mp3_info+53,R2
.dbline 139
; mp3_info.DIR_FstClusL[1]=buffer[((int)i<<5)+27];
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+27
ldi R25,>_buffer+27
add R30,R24
adc R31,R25
ldd R2,z+0
sts _mp3_info+53+1,R2
.dbline 142
;
; //mp3_info.DIR_Filesize[0]=buffer[32*i+28];
; mp3_info.DIR_Filesize[0]=buffer[((int)i<<5)+29];
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+29
ldi R25,>_buffer+29
add R30,R24
adc R31,R25
ldd R2,z+0
sts _mp3_info+55,R2
.dbline 143
; mp3_info.DIR_Filesize[1]=buffer[((int)i<<5)+30];
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldi R24,<_buffer+30
ldi R25,>_buffer+30
add R30,R24
adc R31,R25
ldd R2,z+0
sts _mp3_info+55+1,R2
.dbline 147
; //mp3_info.DIR_Filesize[3]=buffer[32*i+31];
;
;
; if((UNICODE_point>0)&(CHINALIB_point>0))
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_UNICODE_point+2
lds R5,_UNICODE_point+2+1
lds R2,_UNICODE_point
lds R3,_UNICODE_point+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
breq L104
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L105
L104:
clr R12
clr R13
L105:
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_CHINALIB_point+2
lds R5,_CHINALIB_point+2+1
lds R2,_CHINALIB_point
lds R3,_CHINALIB_point+1
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
breq L106
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L107
L106:
clr R10
clr R11
L107:
movw R2,R12
and R2,R10
and R3,R11
tst R2
brne X6
tst R3
brne X15
xjmp L102
X15:
X6:
.dbline 148
; {Read_number=0;
.dbline 148
clr R0
clr R1
std y+9,R1
std y+8,R0
xjmp L109
L108:
.dbline 150
; while(i--)
; {
.dbline 151
; for(j=0;j<10;j++)
clr R0
std y+10,R0
xjmp L114
L111:
.dbline 152
ldd R2,y+8
ldd R3,y+9
movw R24,R2
adiw R24,1
std y+9,R25
std y+8,R24
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldd R4,y+10
clr R5
add R30,R4
adc R31,R5
ldi R24,<_buffer+1
ldi R25,>_buffer+1
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,<_buffer
ldi R25,>_buffer
movw R30,R2
subi R30,212 ; offset = 300
sbci R31,254
add R30,R24
adc R31,R25
std z+0,R4
L112:
.dbline 151
ldd R0,y+10
inc R0
std y+10,R0
L114:
.dbline 151
ldd R24,y+10
cpi R24,10
brlo L111
.dbline 153
; buffer[300+Read_number++]=buffer[((int)i<<5)+j+1];
; for(j=0;j<12;j++)
clr R0
std y+10,R0
xjmp L119
L116:
.dbline 154
ldd R2,y+8
ldd R3,y+9
movw R24,R2
adiw R24,1
std y+9,R25
std y+8,R24
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldd R4,y+10
clr R5
add R30,R4
adc R31,R5
ldi R24,<_buffer+14
ldi R25,>_buffer+14
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,<_buffer
ldi R25,>_buffer
movw R30,R2
subi R30,212 ; offset = 300
sbci R31,254
add R30,R24
adc R31,R25
std z+0,R4
L117:
.dbline 153
ldd R0,y+10
inc R0
std y+10,R0
L119:
.dbline 153
ldd R24,y+10
cpi R24,12
brlo L116
.dbline 155
; buffer[300+Read_number++]=buffer[((int)i<<5)+j+14];
; for(j=0;j<4;j++)
clr R0
std y+10,R0
xjmp L124
L121:
.dbline 156
ldd R2,y+8
ldd R3,y+9
movw R24,R2
adiw R24,1
std y+9,R25
std y+8,R24
ldi R18,5
ldi R19,0
ldd R16,y+11
clr R17
xcall lsl16
movw R30,R16
ldd R4,y+10
clr R5
add R30,R4
adc R31,R5
ldi R24,<_buffer+28
ldi R25,>_buffer+28
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,<_buffer
ldi R25,>_buffer
movw R30,R2
subi R30,212 ; offset = 300
sbci R31,254
add R30,R24
adc R31,R25
std z+0,R4
L122:
.dbline 155
ldd R0,y+10
inc R0
std y+10,R0
L124:
.dbline 155
ldd R24,y+10
cpi R24,4
brlo L121
.dbline 157
L109:
.dbline 149
ldd R2,y+11
clr R3
mov R24,R2
subi R24,1
std y+11,R24
tst R2
breq X16
xjmp L108
X16:
.dbline 158
; buffer[300+Read_number++]=buffer[((int)i<<5)+j+28];
; }
; mp3_info.Name_number=MAX_NAME_LENGTH;
ldi R24,26
sts _mp3_info+52,R24
.dbline 160
;
; for(j=0;j<mp3_info.Name_number;j++)
clr R0
std y+10,R0
xjmp L130
L127:
.dbline 161
; {
.dbline 162
; if((buffer[300+j*2]==0x2E)&(buffer[300+j*2+6]==0x33))
ldi R24,2
ldd R0,y+10
mul R24,R0
movw R30,R0
ldi R24,<_buffer+300
ldi R25,>_buffer+300
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,46
brne L136
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L137
L136:
clr R12
clr R13
L137:
ldi R24,2
ldd R0,y+10
mul R24,R0
movw R30,R0
ldi R24,<_buffer+306
ldi R25,>_buffer+306
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,51
brne L138
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L139
L138:
clr R10
clr R11
L139:
movw R2,R12
and R2,R10
and R3,R11
tst R2
brne X7
tst R3
breq L132
X7:
.dbline 163
; mp3_info.Name_number=j;
ldd R0,y+10
sts _mp3_info+52,R0
L132:
.dbline 164
; for(i=0;i<31;i++)
clr R0
std y+11,R0
xjmp L144
L141:
.dbline 165
; {
.dbline 166
; SD_read_sector2(UNICODE_point+((int)i<<8),buffer,256);
ldi R24,256
ldi R25,1
std y+3,R25
std y+2,R24
ldi R24,<_buffer
ldi R25,>_buffer
std y+1,R25
std y+0,R24
ldd R2,y+11
clr R3
mov R3,R2
clr R2
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
lds R8,_UNICODE_point+2
lds R9,_UNICODE_point+2+1
lds R6,_UNICODE_point
lds R7,_UNICODE_point+1
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R16,R6
movw R18,R8
xcall _SD_read_sector2
.dbline 167
; for(Read_number=0;Read_number<128;Read_number++)
clr R0
clr R1
std y+9,R1
std y+8,R0
xjmp L148
L145:
.dbline 168
; {
.dbline 169
; if((buffer[Read_number<<1]==buffer[300+j*2])&(buffer[(Read_number<<1)+1]==buffer[300+j*2+1]))
ldi R24,2
ldd R0,y+10
mul R24,R0
movw R30,R0
ldi R24,<_buffer+300
ldi R25,>_buffer+300
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_buffer
ldi R25,>_buffer
ldd R30,y+8
ldd R31,y+9
lsl R30
rol R31
add R30,R24
adc R31,R25
ldd R3,z+0
cp R3,R2
brne L153
ldi R24,1
ldi R25,0
movw R12,R24
xjmp L154
L153:
clr R12
clr R13
L154:
ldi R24,2
ldd R0,y+10
mul R24,R0
movw R30,R0
ldi R24,<_buffer+301
ldi R25,>_buffer+301
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_buffer
ldi R25,>_buffer
ldd R30,y+8
ldd R31,y+9
lsl R30
rol R31
adiw R30,1
add R30,R24
adc R31,R25
ldd R3,z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -