📄 fat.lis
字号:
046A 2080 ldd R2,z+0
046C E42F mov R30,R20
046E FF27 clr R31
0470 E00F add R30,R16
0472 F11F adc R31,R17
0474 3080 ldd R3,z+0
0476 3214 cp R3,R2
0478 09F0 breq L61
047A X3:
047A .dbline 123
047A 03C0 xjmp L59
047C L61:
047C .dbline 124
047C ; }
047C L58:
047C .dbline 121
047C 4395 inc R20
047E L60:
047E .dbline 121
047E 4430 cpi R20,4
0480 80F3 brlo L57
0482 X4:
0482 L59:
0482 .dbline 125
0482 ; if(i == 4) return 1;
0482 4430 cpi R20,4
0484 11F4 brne L63
0486 X5:
0486 .dbline 125
0486 01E0 ldi R16,1
0488 01C0 xjmp L56
048A L63:
048A .dbline 127
048A ;
048A ; return 0;
048A 0027 clr R16
048C .dbline -2
048C L56:
048C .dbline 0 ; func end
048C 4991 ld R20,y+
048E 0895 ret
0490 .dbsym r i 20 c
0490 .dbsym r strName2 18 pc
0490 .dbsym r strName1 16 pc
0490 .dbend
0490 .dbfunc e SearchFileOfName _SearchFileOfName fV
0490 ; Index_tmp -> y+6
0490 ; tem -> y+2
0490 ; i -> R10
0490 ; File_Name -> y+20
0490 ; TargetStartSector -> y+16
.even
0490 _SearchFileOfName::
0490 0E940000 xcall push_arg4
0494 0E940000 xcall push_xgsetF00C
0498 2A97 sbiw R28,10
049A .dbline -1
049A .dbline 132
049A ; }
049A ;
049A ;
049A ; void SearchFileOfName(uint32 TargetStartSector,uint8 *File_Name)
049A ; {
049A .dbline 135
049A ; uint8 i;
049A ; uint32 tem;
049A ; uint32 Index_tmp=0;
049A 40E0 ldi R20,0
049C 50E0 ldi R21,0
049E 60E0 ldi R22,0
04A0 70E0 ldi R23,0
04A2 4E83 std y+6,R20
04A4 5F83 std y+7,R21
04A6 6887 std y+8,R22
04A8 7987 std y+9,R23
04AA L66:
04AA .dbline 137
04AA ;
04AA ; do{
04AA .dbline 138
04AA ; SD_ReadBlock(TargetStartSector + Index_tmp/(BPB_BytesPerSec/32),Fat_Buffer); // 重新读取目录表
04AA 80E0 ldi R24,<_Fat_Buffer
04AC 90E0 ldi R25,>_Fat_Buffer
04AE 9983 std y+1,R25
04B0 8883 std y+0,R24
04B2 25E0 ldi R18,5
04B4 30E0 ldi R19,0
04B6 00913900 lds R16,_BPB_BytesPerSec
04BA 10913A00 lds R17,_BPB_BytesPerSec+1
04BE 0E940000 xcall lsr16
04C2 1801 movw R2,R16
04C4 4424 clr R4
04C6 5524 clr R5
04C8 0E81 ldd R16,y+6
04CA 1F81 ldd R17,y+7
04CC 2885 ldd R18,y+8
04CE 3985 ldd R19,y+9
04D0 5A92 st -y,R5
04D2 4A92 st -y,R4
04D4 3A92 st -y,R3
04D6 2A92 st -y,R2
04D8 0E940000 xcall div32u
04DC 1801 movw R2,R16
04DE 2901 movw R4,R18
04E0 0889 ldd R16,y+16
04E2 1989 ldd R17,y+17
04E4 2A89 ldd R18,y+18
04E6 3B89 ldd R19,y+19
04E8 020D add R16,R2
04EA 131D adc R17,R3
04EC 241D adc R18,R4
04EE 351D adc R19,R5
04F0 0E940000 xcall _SD_ReadBlock
04F4 .dbline 140
04F4 ;
04F4 ; tem=((Index_tmp)*32)%BPB_BytesPerSec;
04F4 2E80 ldd R2,y+6
04F6 3F80 ldd R3,y+7
04F8 4884 ldd R4,y+8
04FA 5984 ldd R5,y+9
04FC 40E2 ldi R20,32
04FE 50E0 ldi R21,0
0500 60E0 ldi R22,0
0502 70E0 ldi R23,0
0504 5A92 st -y,R5
0506 4A92 st -y,R4
0508 3A92 st -y,R3
050A 2A92 st -y,R2
050C 8A01 movw R16,R20
050E 9B01 movw R18,R22
0510 0E940000 xcall empy32u
0514 20903900 lds R2,_BPB_BytesPerSec
0518 30903A00 lds R3,_BPB_BytesPerSec+1
051C 4424 clr R4
051E 5524 clr R5
0520 5A92 st -y,R5
0522 4A92 st -y,R4
0524 3A92 st -y,R3
0526 2A92 st -y,R2
0528 0E940000 xcall mod32u
052C 0A83 std y+2,R16
052E 1B83 std y+3,R17
0530 2C83 std y+4,R18
0532 3D83 std y+5,R19
0534 .dbline 142
0534 ;
0534 ; if((Fat_Buffer[tem+11] & ATTR_LONG_FILENAME) != ATTR_LONG_FILENAME); // 是否是长文件名
0534 4BE0 ldi R20,11
0536 50E0 ldi R21,0
0538 60E0 ldi R22,0
053A 70E0 ldi R23,0
053C 2A80 ldd R2,y+2
053E 3B80 ldd R3,y+3
0540 4C80 ldd R4,y+4
0542 5D80 ldd R5,y+5
0544 240E add R2,R20
0546 351E adc R3,R21
0548 461E adc R4,R22
054A 571E adc R5,R23
054C F101 movw R30,R2
054E 80E0 ldi R24,<_Fat_Buffer
0550 90E0 ldi R25,>_Fat_Buffer
0552 E80F add R30,R24
0554 F91F adc R31,R25
0556 8081 ldd R24,z+0
0558 8F70 andi R24,15
055A 8F30 cpi R24,15
055C 01F0 breq L69
055E X6:
055E .dbline 142
055E L69:
055E .dbline 143
055E ; {
055E .dbline 144
055E ; if((Fat_Buffer[tem] != 0xe5) && (Fat_Buffer[tem] != 0x05)) //文件没有删除
055E 80E0 ldi R24,<_Fat_Buffer
0560 90E0 ldi R25,>_Fat_Buffer
0562 EA81 ldd R30,y+2
0564 FB81 ldd R31,y+3
0566 E80F add R30,R24
0568 F91F adc R31,R25
056A 2080 ldd R2,z+0
056C 3324 clr R3
056E 822D mov R24,R2
0570 853E cpi R24,229
0572 09F4 brne X12
0574 ADC0 xjmp L71
0576 X12:
0576 X7:
0576 8530 cpi R24,5
0578 09F4 brne X13
057A AAC0 xjmp L71
057C X13:
057C X8:
057C .dbline 145
057C ; {
057C .dbline 146
057C ; for(i=0;i<8;i++)
057C AA24 clr R10
057E 1AC0 xjmp L76
0580 L73:
0580 .dbline 147
0580 ; {
0580 .dbline 148
0580 ; deName[i]=Fat_Buffer[tem+i];
0580 2A2C mov R2,R10
0582 3324 clr R3
0584 4424 clr R4
0586 5524 clr R5
0588 6A80 ldd R6,y+2
058A 7B80 ldd R7,y+3
058C 8C80 ldd R8,y+4
058E 9D80 ldd R9,y+5
0590 620C add R6,R2
0592 731C adc R7,R3
0594 841C adc R8,R4
0596 951C adc R9,R5
0598 F301 movw R30,R6
059A 80E0 ldi R24,<_Fat_Buffer
059C 90E0 ldi R25,>_Fat_Buffer
059E E80F add R30,R24
05A0 F91F adc R31,R25
05A2 2080 ldd R2,z+0
05A4 80E0 ldi R24,<_deName
05A6 90E0 ldi R25,>_deName
05A8 EA2D mov R30,R10
05AA FF27 clr R31
05AC E80F add R30,R24
05AE F91F adc R31,R25
05B0 2082 std z+0,R2
05B2 .dbline 149
05B2 ; }
05B2 L74:
05B2 .dbline 146
05B2 A394 inc R10
05B4 L76:
05B4 .dbline 146
05B4 8A2D mov R24,R10
05B6 8830 cpi R24,8
05B8 18F3 brlo L73
05BA X9:
05BA .dbline 151
05BA ;
05BA ; if(FileName_Compare(File_Name,deName))
05BA 20E0 ldi R18,<_deName
05BC 30E0 ldi R19,>_deName
05BE 0C89 ldd R16,y+20
05C0 1D89 ldd R17,y+21
05C2 4CDF xcall _FileName_Compare
05C4 0023 tst R16
05C6 09F4 brne X14
05C8 83C0 xjmp L77
05CA X14:
05CA X10:
05CA .dbline 152
05CA ; {
05CA .dbline 153
05CA ; SearchFile_Clust = ((uint32)Fat_Buffer[tem+20]<<16) | ((uint32)Fat_Buffer[tem+21]<<24) | (Fat_Buffer[tem+26]) | (Fat_Buffer[tem+27]<<8);
05CA 45E1 ldi R20,21
05CC 50E0 ldi R21,0
05CE 60E0 ldi R22,0
05D0 70E0 ldi R23,0
05D2 2A80 ldd R2,y+2
05D4 3B80 ldd R3,y+3
05D6 4C80 ldd R4,y+4
05D8 5D80 ldd R5,y+5
05DA 240E add R2,R20
05DC 351E adc R3,R21
05DE 461E adc R4,R22
05E0 571E adc R5,R23
05E2 F101 movw R30,R2
05E4 80E0 ldi R24,<_Fat_Buffer
05E6 90E0 ldi R25,>_Fat_Buffer
05E8 E80F add R30,R24
05EA F91F adc R31,R25
05EC 0081 ldd R16,z+0
05EE 1127 clr R17
05F0 2227 clr R18
05F2 3327 clr R19
05F4 88E1 ldi R24,24
05F6 90E0 ldi R25,0
05F8 8A93 st -y,R24
05FA 0E940000 xcall lsl32
05FE 44E1 ldi R20,20
0600 50E0 ldi R21,0
0602 60E0 ldi R22,0
0604 70E0 ldi R23,0
0606 2A80 ldd R2,y+2
0608 3B80 ldd R3,y+3
060A 4C80 ldd R4,y+4
060C 5D80 ldd R5,y+5
060E 240E add R2,R20
0610 351E adc R3,R21
0612 461E adc R4,R22
0614 571E adc R5,R23
0616 F101 movw R30,R2
0618 80E0 ldi R24,<_Fat_Buffer
061A 90E0 ldi R25,>_Fat_Buffer
061C E80F add R30,R24
061E F91F adc R31,R25
0620 2080 ldd R2,z+0
0622 3324 clr R3
0624 4424 clr R4
0626 5524 clr R5
0628 2101 movw R4,R2
062A 2224 clr R2
062C 3324 clr R3
062E 202A or R2,R16
0630 312A or R3,R17
0632 422A or R4,R18
0634 532A or R5,R19
0636 4AE1 ldi R20,26
0638 50E0 ldi R21,0
063A 60E0 ldi R22,0
063C 70E0 ldi R23,0
063E 6A80 ldd R6,y+2
0640 7B80 ldd R7,y+3
0642 8C80 ldd R8,y+4
0644 9D80 ldd R9,y+5
0646 640E add R6,R20
0648 751E adc R7,R21
064A 861E adc R8,R22
064C 971E adc R9,R23
064E F301 movw R30,R6
0650 E80F add R30,R24
0652 F91F adc R31,R25
0654 6080 ldd R6,z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -