📄 fat.s
字号:
ldi R18,<L78
ldi R19,>L78
movw R16,R28
subi R16,238 ; offset = 18
sbci R17,255
xcall _FileExt_Compare
tst R16
brne X8
xjmp L71
X8:
.dbline 127
; {
.dbline 128
; for(i=0;;i++) //将文件名赋值给音乐列表的文件名项
clr R0
clr R1
std y+24,R1
std y+23,R0
L79:
.dbline 129
; {
.dbline 130
; if(Fat_Buffer[tem+i] == 0x20 || i>=8)
ldd R2,y+23
ldd R3,y+24
clr R4
clr R5
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R6
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,32
breq L85
movw R24,R2
cpi R24,8
ldi R30,0
cpc R25,R30
brsh X9
xjmp L83
X9:
L85:
.dbline 131
; {
.dbline 132
; MusicInfoList[LocalOfMusic].FileName[i] = '.';
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R2,R16
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
ldd R30,y+23
ldd R31,y+24
add R30,R2
adc R31,R3
ldi R24,46
std z+0,R24
.dbline 133
; MusicInfoList[LocalOfMusic].FileName[i+1] = 'm';
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R2,R16
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
ldd R30,y+23
ldd R31,y+24
adiw R30,1
add R30,R2
adc R31,R3
ldi R24,109
std z+0,R24
.dbline 134
; MusicInfoList[LocalOfMusic].FileName[i+2] = 'p';
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R2,R16
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
ldd R30,y+23
ldd R31,y+24
adiw R30,2
add R30,R2
adc R31,R3
ldi R24,112
std z+0,R24
.dbline 135
; MusicInfoList[LocalOfMusic].FileName[i+3] = '3';
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R2,R16
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
ldd R30,y+23
ldd R31,y+24
adiw R30,3
add R30,R2
adc R31,R3
ldi R24,51
std z+0,R24
.dbline 136
; break;
xjmp L81
L83:
.dbline 138
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R2,R16
ldi R24,<_MusicInfoList
ldi R25,>_MusicInfoList
add R2,R24
adc R3,R25
ldd R30,y+23
ldd R31,y+24
add R30,R2
adc R31,R3
ldd R2,y+23
ldd R3,y+24
clr R4
clr R5
movw R26,R28
adiw R26,2
ld R6,x+
ld R7,x+
ld R8,x+
ld R9,x
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R26,R6
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R26,R24
adc R27,R25
ld R2,x
std z+0,R2
.dbline 139
L80:
.dbline 128
ldd R24,y+23
ldd R25,y+24
adiw R24,1
std y+24,R25
std y+23,R24
.dbline 128
xjmp L79
L81:
.dbline 141
; }
; MusicInfoList[LocalOfMusic].FileName[i]=Fat_Buffer[tem+i];
; }
; //将文件的起始簇号赋值给音乐列表的起始簇号项
; MusicInfoList[LocalOfMusic].FileStartClustor = Fat_Buffer[tem+0x1A]|Fat_Buffer[tem+0x1B]<<8|((uint32)Fat_Buffer[tem+0x14]<<16) | ((uint32)Fat_Buffer[tem+0x15]<<24) ;
ldi R20,27
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R2
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R3,R2
clr R2
ldi R20,26
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+2
ldd R5,z+3
ldd R6,z+4
ldd R7,z+5
add R4,R20
adc R5,R21
adc R6,R22
adc R7,R23
movw R30,R4
add R30,R24
adc R31,R25
ldd R4,z+0
clr R5
or R4,R2
or R5,R3
movw R2,R4
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
ldi R20,20
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
movw R8,R6
clr R6
clr R7
or R2,R6
or R3,R7
or R4,R8
or R5,R9
ldi R20,21
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
ldi R24,24
ldi R25,0
st -y,R24
movw R16,R6
movw R18,R8
xcall lsl32
or R2,R16
or R3,R17
or R4,R18
or R5,R19
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R30,R16
ldi R24,<_MusicInfoList+33
ldi R25,>_MusicInfoList+33
add R30,R24
adc R31,R25
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 142
; MusicInfoList[LocalOfMusic].FileLength = Fat_Buffer[tem+0x1C]|(Fat_Buffer[tem+0x1D]<<8)|((uint32)Fat_Buffer[tem+0x1E]<<16)|((uint32)Fat_Buffer[tem+0x1F]<<24);
ldi R20,29
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R2
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R3,R2
clr R2
ldi R20,28
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+2
ldd R5,z+3
ldd R6,z+4
ldd R7,z+5
add R4,R20
adc R5,R21
adc R6,R22
adc R7,R23
movw R30,R4
add R30,R24
adc R31,R25
ldd R4,z+0
clr R5
or R4,R2
or R5,R3
movw R2,R4
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
ldi R20,30
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
movw R8,R6
clr R6
clr R7
or R2,R6
or R3,R7
or R4,R8
or R5,R9
ldi R20,31
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
ldi R24,24
ldi R25,0
st -y,R24
movw R16,R6
movw R18,R8
xcall lsl32
or R2,R16
or R3,R17
or R4,R18
or R5,R19
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R30,R16
ldi R24,<_MusicInfoList+37
ldi R25,>_MusicInfoList+37
add R30,R24
adc R31,R25
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 143
; LocalOfMusic++; //开始下一个音乐文件的记录
ldd R24,y+27
ldd R25,y+28
adiw R24,1
std y+28,R25
std y+27,R24
.dbline 144
; }
.dbline 145
; }
xjmp L71
L70:
.dbline 147
; else
; {
.dbline 148
; LocalOfFirstLFN = Index_tmp;
movw R30,R28
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
movw R30,R28
std z+14,R2
std z+15,R3
std z+16,R4
std z+17,R5
xjmp L89
L88:
.dbline 150
; while(1)
; {
.dbline 151
; Index_tmp++;
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+10,R2
std z+11,R3
std z+12,R4
std z+13,R5
.dbline 152
; n = DiskFATInfo.FDT_LBA+(Index_tmp/(DiskFATInfo.BytesPerSector/32));
ldi R18,5
ldi R19,0
lds R16,_DiskFATInfo+15
lds R17,_DiskFATInfo+15+1
xcall lsr16
movw R2,R16
clr R4
clr R5
movw R30,R28
ldd R6,z+10
ldd R7,z+11
ldd R8,z+12
ldd R9,z+13
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R6
movw R18,R8
xcall div32u
lds R4,_DiskFATInfo+4+2
lds R5,_DiskFATInfo+4+2+1
lds R2,_DiskFATInfo+4
lds R3,_DiskFATInfo+4+1
add R2,R16
adc R3,R17
adc R4,R18
adc R5,R19
movw R30,R28
std z+6,R2
std z+7,R3
std z+8,R4
std z+9,R5
.dbline 154
; //读取FDT的相应扇区位置的内容
; SD_ReadBlock(n,Fat_Buffer);
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
std y+1,R25
std y+0,R24
movw R30,R28
ldd R16,z+6
ldd R17,z+7
ldd R18,z+8
ldd R19,z+9
xcall _SD_ReadBlock
.dbline 155
; tem = ((Index_tmp)*32)%DiskFATInfo.BytesPerSector;
movw R30,R28
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
ldi R20,32
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
lds R2,_DiskFATInfo+15
lds R3,_DiskFATInfo+15+1
clr R4
clr R5
st -y,R5
st -y,R4
st -y,R3
st -y,R2
xcall mod32u
movw R30,R28
std z+2,R16
std z+3,R17
std z+4,R18
std z+5,R19
.dbline 156
; if(Fat_Buffer[tem+11]!= 0x0F)
ldi R20,11
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R2
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,15
brne X10
xjmp L94
X10:
.dbline 157
; {
.dbline 158
; MusicInfoList[LocalOfMusic].FileStartClustor = Fat_Buffer[tem+0x1A]|Fat_Buffer[tem+0x1B]<<8|((uint32)Fat_Buffer[tem+0x14]<<16) | ((uint32)Fat_Buffer[tem+0x15]<<24) ;
ldi R20,27
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R2
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R3,R2
clr R2
ldi R20,26
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+2
ldd R5,z+3
ldd R6,z+4
ldd R7,z+5
add R4,R20
adc R5,R21
adc R6,R22
adc R7,R23
movw R30,R4
add R30,R24
adc R31,R25
ldd R4,z+0
clr R5
or R4,R2
or R5,R3
movw R2,R4
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
ldi R20,20
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
movw R8,R6
clr R6
clr R7
or R2,R6
or R3,R7
or R4,R8
or R5,R9
ldi R20,21
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
ldi R24,24
ldi R25,0
st -y,R24
movw R16,R6
movw R18,R8
xcall lsl32
or R2,R16
or R3,R17
or R4,R18
or R5,R19
ldi R16,41
ldi R17,0
ldd R18,y+27
ldd R19,y+28
xcall empy16s
movw R30,R16
ldi R24,<_MusicInfoList+33
ldi R25,>_MusicInfoList+33
add R30,R24
adc R31,R25
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 159
; MusicInfoList[LocalOfMusic].FileLength = Fat_Buffer[tem+0x1C]|(Fat_Buffer[tem+0x1D]<<8)|((uint32)Fat_Buffer[tem+0x1E]<<16)|((uint32)Fat_Buffer[tem+0x1F]<<24);
ldi R20,29
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+2
ldd R3,z+3
ldd R4,z+4
ldd R5,z+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R2
ldi R24,<_Fat_Buffer
ldi R25,>_Fat_Buffer
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R3,R2
clr R2
ldi R20,28
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R4,z+2
ldd R5,z+3
ldd R6,z+4
ldd R7,z+5
add R4,R20
adc R5,R21
adc R6,R22
adc R7,R23
movw R30,R4
add R30,R24
adc R31,R25
ldd R4,z+0
clr R5
or R4,R2
or R5,R3
movw R2,R4
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
ldi R20,30
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
ldd R6,z+0
clr R7
clr R8
clr R9
movw R8,R6
clr R6
clr R7
or R2,R6
or R3,R7
or R4,R8
or R5,R9
ldi R20,31
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R6,z+2
ldd R7,z+3
ldd R8,z+4
ldd R9,z+5
add R6,R20
adc R7,R21
adc R8,R22
adc R9,R23
movw R30,R6
add R30,R24
adc R31,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -