📄 fat.lis
字号:
0214 1127 clr R17
0216 2227 clr R18
0218 3327 clr R19
021A 8A93 st -y,R24
021C 0E940000 xcall lsl32
0220 202A or R2,R16
0222 312A or R3,R17
0224 422A or R4,R18
0226 532A or R5,R19
0228 30922300 sts _BPB_TotSec32+1,R3
022C 20922200 sts _BPB_TotSec32,R2
0230 50922500 sts _BPB_TotSec32+2+1,R5
0234 40922400 sts _BPB_TotSec32+2,R4
0238 .dbline 85
0238 ; BPB_FATSz32 = Fat_Buffer[36] | (Fat_Buffer[37] << 8) | ((uint32)Fat_Buffer[38] << 16) | ((uint32)Fat_Buffer[39] << 24);
0238 20907000 lds R2,_Fat_Buffer+37
023C 3324 clr R3
023E 322C mov R3,R2
0240 2224 clr R2
0242 40906F00 lds R4,_Fat_Buffer+36
0246 5524 clr R5
0248 4228 or R4,R2
024A 5328 or R5,R3
024C 1201 movw R2,R4
024E 4424 clr R4
0250 37FC sbrc R3,7
0252 4094 com R4
0254 5524 clr R5
0256 47FC sbrc R4,7
0258 5094 com R5
025A 60907100 lds R6,_Fat_Buffer+38
025E 7724 clr R7
0260 8824 clr R8
0262 9924 clr R9
0264 4301 movw R8,R6
0266 6624 clr R6
0268 7724 clr R7
026A 2628 or R2,R6
026C 3728 or R3,R7
026E 4828 or R4,R8
0270 5928 or R5,R9
0272 88E1 ldi R24,24
0274 90E0 ldi R25,0
0276 00917200 lds R16,_Fat_Buffer+39
027A 1127 clr R17
027C 2227 clr R18
027E 3327 clr R19
0280 8A93 st -y,R24
0282 0E940000 xcall lsl32
0286 202A or R2,R16
0288 312A or R3,R17
028A 422A or R4,R18
028C 532A or R5,R19
028E 30921F00 sts _BPB_FATSz32+1,R3
0292 20921E00 sts _BPB_FATSz32,R2
0296 50922100 sts _BPB_FATSz32+2+1,R5
029A 40922000 sts _BPB_FATSz32+2,R4
029E .dbline 86
029E ; BPB_ExtFlags = Fat_Buffer[40] | (Fat_Buffer[41] << 8);
029E 20907400 lds R2,_Fat_Buffer+41
02A2 3324 clr R3
02A4 322C mov R3,R2
02A6 2224 clr R2
02A8 40907300 lds R4,_Fat_Buffer+40
02AC 5524 clr R5
02AE 4228 or R4,R2
02B0 5328 or R5,R3
02B2 50921D00 sts _BPB_ExtFlags+1,R5
02B6 40921C00 sts _BPB_ExtFlags,R4
02BA .dbline 87
02BA ; BPB_FSVer = Fat_Buffer[42] | (Fat_Buffer[43] << 8);
02BA 20907600 lds R2,_Fat_Buffer+43
02BE 3324 clr R3
02C0 322C mov R3,R2
02C2 2224 clr R2
02C4 40907500 lds R4,_Fat_Buffer+42
02C8 5524 clr R5
02CA 4228 or R4,R2
02CC 5328 or R5,R3
02CE 50921B00 sts _BPB_FSVer+1,R5
02D2 40921A00 sts _BPB_FSVer,R4
02D6 .dbline 88
02D6 ; BPB_RootClus = Fat_Buffer[44] | (Fat_Buffer[45] << 8) | ((uint32)Fat_Buffer[46] << 16) | ((uint32)Fat_Buffer[47] << 24);
02D6 20907800 lds R2,_Fat_Buffer+45
02DA 3324 clr R3
02DC 322C mov R3,R2
02DE 2224 clr R2
02E0 40907700 lds R4,_Fat_Buffer+44
02E4 5524 clr R5
02E6 4228 or R4,R2
02E8 5328 or R5,R3
02EA 1201 movw R2,R4
02EC 4424 clr R4
02EE 37FC sbrc R3,7
02F0 4094 com R4
02F2 5524 clr R5
02F4 47FC sbrc R4,7
02F6 5094 com R5
02F8 60907900 lds R6,_Fat_Buffer+46
02FC 7724 clr R7
02FE 8824 clr R8
0300 9924 clr R9
0302 4301 movw R8,R6
0304 6624 clr R6
0306 7724 clr R7
0308 2628 or R2,R6
030A 3728 or R3,R7
030C 4828 or R4,R8
030E 5928 or R5,R9
0310 88E1 ldi R24,24
0312 90E0 ldi R25,0
0314 00917A00 lds R16,_Fat_Buffer+47
0318 1127 clr R17
031A 2227 clr R18
031C 3327 clr R19
031E 8A93 st -y,R24
0320 0E940000 xcall lsl32
0324 202A or R2,R16
0326 312A or R3,R17
0328 422A or R4,R18
032A 532A or R5,R19
032C 30921700 sts _BPB_RootClus+1,R3
0330 20921600 sts _BPB_RootClus,R2
0334 50921900 sts _BPB_RootClus+2+1,R5
0338 40921800 sts _BPB_RootClus+2,R4
033C .dbline 89
033C ; BPB_FSInfo = Fat_Buffer[48] | (Fat_Buffer[49] << 8);
033C 20907C00 lds R2,_Fat_Buffer+49
0340 3324 clr R3
0342 322C mov R3,R2
0344 2224 clr R2
0346 40907B00 lds R4,_Fat_Buffer+48
034A 5524 clr R5
034C 4228 or R4,R2
034E 5328 or R5,R3
0350 50921500 sts _BPB_FSInfo+1,R5
0354 40921400 sts _BPB_FSInfo,R4
0358 .dbline 90
0358 ; BPB_BKBootSec = Fat_Buffer[50] | (Fat_Buffer[51] << 8);
0358 20907E00 lds R2,_Fat_Buffer+51
035C 3324 clr R3
035E 322C mov R3,R2
0360 2224 clr R2
0362 40907D00 lds R4,_Fat_Buffer+50
0366 5524 clr R5
0368 4228 or R4,R2
036A 5328 or R5,R3
036C 50921300 sts _BPB_BKBootSec+1,R5
0370 40921200 sts _BPB_BKBootSec,R4
0374 .dbline 92
0374 ;
0374 ; FAT_MASK = FAT32_MASK; //0x0fffffff
0374 4FEF ldi R20,255
0376 5FEF ldi R21,255
0378 6FEF ldi R22,255
037A 7FE0 ldi R23,15
037C 50930300 sts _FAT_MASK+1,R21
0380 40930200 sts _FAT_MASK,R20
0384 70930500 sts _FAT_MASK+2+1,R23
0388 60930400 sts _FAT_MASK+2,R22
038C .dbline 93
038C ; Clust = BPB_RootClus;
038C 40901800 lds R4,_BPB_RootClus+2
0390 50901900 lds R5,_BPB_RootClus+2+1
0394 20901600 lds R2,_BPB_RootClus
0398 30901700 lds R3,_BPB_RootClus+1
039C 3092F702 sts _Clust+1,R3
03A0 2092F602 sts _Clust,R2
03A4 5092F902 sts _Clust+2+1,R5
03A8 4092F802 sts _Clust+2,R4
03AC .dbline 94
03AC ; FAT1Sec = BPB_RsvdSecCnt+Partition_StartLBA;
03AC 40903D00 lds R4,_Partition_StartLBA+2
03B0 50903E00 lds R5,_Partition_StartLBA+2+1
03B4 20903B00 lds R2,_Partition_StartLBA
03B8 30903C00 lds R3,_Partition_StartLBA+1
03BC 60903600 lds R6,_BPB_RsvdSecCnt
03C0 70903700 lds R7,_BPB_RsvdSecCnt+1
03C4 8824 clr R8
03C6 9924 clr R9
03C8 620C add R6,R2
03CA 731C adc R7,R3
03CC 841C adc R8,R4
03CE 951C adc R9,R5
03D0 70920F00 sts _FAT1Sec+1,R7
03D4 60920E00 sts _FAT1Sec,R6
03D8 90921100 sts _FAT1Sec+2+1,R9
03DC 80921000 sts _FAT1Sec+2,R8
03E0 .dbline 95
03E0 ; FAT2Sec = FAT1Sec+BPB_FATSz32;
03E0 40902000 lds R4,_BPB_FATSz32+2
03E4 50902100 lds R5,_BPB_FATSz32+2+1
03E8 20901E00 lds R2,_BPB_FATSz32
03EC 30901F00 lds R3,_BPB_FATSz32+1
03F0 620C add R6,R2
03F2 731C adc R7,R3
03F4 841C adc R8,R4
03F6 951C adc R9,R5
03F8 70920B00 sts _FAT2Sec+1,R7
03FC 60920A00 sts _FAT2Sec,R6
0400 90920D00 sts _FAT2Sec+2+1,R9
0404 80920C00 sts _FAT2Sec+2,R8
0408 .dbline 96
0408 ; FirstDataSector = FAT2Sec+BPB_FATSz32;
0408 620C add R6,R2
040A 731C adc R7,R3
040C 841C adc R8,R4
040E 951C adc R9,R5
0410 70920603 sts _FirstDataSector+1,R7
0414 60920503 sts _FirstDataSector,R6
0418 90920803 sts _FirstDataSector+2+1,R9
041C 80920703 sts _FirstDataSector+2,R8
0420 .dbline 97
0420 ; return 1;
0420 01E0 ldi R16,1
0422 .dbline -2
0422 L1:
0422 .dbline 0 ; func end
0422 2696 adiw R28,6
0424 0C940000 xjmp pop_xgsetF00C
0428 .dbsym l temp 2 l
0428 .dbend
0428 .dbfunc e FileExt_Compare _FileExt_Compare fc
0428 ; i -> R20
0428 ; strExt2 -> R18,R19
0428 ; strExt1 -> R16,R17
.even
0428 _FileExt_Compare::
0428 4A93 st -y,R20
042A .dbline -1
042A .dbline 104
042A ; }
042A ;
042A ;
042A ;
042A ;
042A ; uint8 FileExt_Compare(uint8 *strExt1,uint8 *strExt2)
042A ; {
042A .dbline 107
042A ; uint8 i;
042A ;
042A ; for(i=0; i<3; i++)
042A 4427 clr R20
042C 0EC0 xjmp L51
042E L48:
042E .dbline 108
042E ; {
042E .dbline 109
042E ; if(strExt1[i]!= strExt2[i]) break;
042E E42F mov R30,R20
0430 FF27 clr R31
0432 E20F add R30,R18
0434 F31F adc R31,R19
0436 2080 ldd R2,z+0
0438 E42F mov R30,R20
043A FF27 clr R31
043C E00F add R30,R16
043E F11F adc R31,R17
0440 3080 ldd R3,z+0
0442 3214 cp R3,R2
0444 09F0 breq L52
0446 X0:
0446 .dbline 109
0446 03C0 xjmp L50
0448 L52:
0448 .dbline 110
0448 ; }
0448 L49:
0448 .dbline 107
0448 4395 inc R20
044A L51:
044A .dbline 107
044A 4330 cpi R20,3
044C 80F3 brlo L48
044E X1:
044E L50:
044E .dbline 111
044E ; if(i == 3) return 1;
044E 4330 cpi R20,3
0450 11F4 brne L54
0452 X2:
0452 .dbline 111
0452 01E0 ldi R16,1
0454 01C0 xjmp L47
0456 L54:
0456 .dbline 113
0456 ;
0456 ; return 0;
0456 0027 clr R16
0458 .dbline -2
0458 L47:
0458 .dbline 0 ; func end
0458 4991 ld R20,y+
045A 0895 ret
045C .dbsym r i 20 c
045C .dbsym r strExt2 18 pc
045C .dbsym r strExt1 16 pc
045C .dbend
045C .dbfunc e FileName_Compare _FileName_Compare fc
045C ; i -> R20
045C ; strName2 -> R18,R19
045C ; strName1 -> R16,R17
.even
045C _FileName_Compare::
045C 4A93 st -y,R20
045E .dbline -1
045E .dbline 118
045E ; }
045E ;
045E ;
045E ; uint8 FileName_Compare(uint8 *strName1,uint8 *strName2)
045E ; {
045E .dbline 121
045E ; uint8 i;
045E ;
045E ; for(i=0; i<4; i++)
045E 4427 clr R20
0460 0EC0 xjmp L60
0462 L57:
0462 .dbline 122
0462 ; {
0462 .dbline 123
0462 ; if(strName1[i]!= strName2[i]) break;
0462 E42F mov R30,R20
0464 FF27 clr R31
0466 E20F add R30,R18
0468 F31F adc R31,R19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -