📄 fat.lis
字号:
0656 7724 clr R7
0658 8824 clr R8
065A 9924 clr R9
065C 2628 or R2,R6
065E 3728 or R3,R7
0660 4828 or R4,R8
0662 5928 or R5,R9
0664 4BE1 ldi R20,27
0666 50E0 ldi R21,0
0668 60E0 ldi R22,0
066A 70E0 ldi R23,0
066C 6A80 ldd R6,y+2
066E 7B80 ldd R7,y+3
0670 8C80 ldd R8,y+4
0672 9D80 ldd R9,y+5
0674 640E add R6,R20
0676 751E adc R7,R21
0678 861E adc R8,R22
067A 971E adc R9,R23
067C F301 movw R30,R6
067E E80F add R30,R24
0680 F91F adc R31,R25
0682 6080 ldd R6,z+0
0684 7724 clr R7
0686 762C mov R7,R6
0688 6624 clr R6
068A 8824 clr R8
068C 77FC sbrc R7,7
068E 8094 com R8
0690 9924 clr R9
0692 87FC sbrc R8,7
0694 9094 com R9
0696 2628 or R2,R6
0698 3728 or R3,R7
069A 4828 or R4,R8
069C 5928 or R5,R9
069E 30924800 sts _SearchFile_Clust+1,R3
06A2 20924700 sts _SearchFile_Clust,R2
06A6 50924A00 sts _SearchFile_Clust+2+1,R5
06AA 40924900 sts _SearchFile_Clust+2,R4
06AE .dbline 154
06AE ; Index_tmp++;
06AE 41E0 ldi R20,1
06B0 50E0 ldi R21,0
06B2 60E0 ldi R22,0
06B4 70E0 ldi R23,0
06B6 2E80 ldd R2,y+6
06B8 3F80 ldd R3,y+7
06BA 4884 ldd R4,y+8
06BC 5984 ldd R5,y+9
06BE 240E add R2,R20
06C0 351E adc R3,R21
06C2 461E adc R4,R22
06C4 571E adc R5,R23
06C6 2E82 std y+6,R2
06C8 3F82 std y+7,R3
06CA 4886 std y+8,R4
06CC 5986 std y+9,R5
06CE .dbline 155
06CE ; break;
06CE 23C0 xjmp L68
06D0 L77:
06D0 .dbline 157
06D0 ; }
06D0 ; }
06D0 L71:
06D0 .dbline 158
06D0 ; }
06D0 .dbline 160
06D0 ;
06D0 ; Index_tmp++;
06D0 41E0 ldi R20,1
06D2 50E0 ldi R21,0
06D4 60E0 ldi R22,0
06D6 70E0 ldi R23,0
06D8 2E80 ldd R2,y+6
06DA 3F80 ldd R3,y+7
06DC 4884 ldd R4,y+8
06DE 5984 ldd R5,y+9
06E0 240E add R2,R20
06E2 351E adc R3,R21
06E4 461E adc R4,R22
06E6 571E adc R5,R23
06E8 2E82 std y+6,R2
06EA 3F82 std y+7,R3
06EC 4886 std y+8,R4
06EE 5986 std y+9,R5
06F0 .dbline 162
06F0 ;
06F0 ; if(Fat_Buffer[tem] == 0) // 等所有文件都已经查询完了
06F0 80E0 ldi R24,<_Fat_Buffer
06F2 90E0 ldi R25,>_Fat_Buffer
06F4 EA81 ldd R30,y+2
06F6 FB81 ldd R31,y+3
06F8 E80F add R30,R24
06FA F91F adc R31,R25
06FC 2080 ldd R2,z+0
06FE 2220 tst R2
0700 49F4 brne L79
0702 X11:
0702 .dbline 163
0702 ; {
0702 .dbline 164
0702 ; Index_tmp=0;
0702 40E0 ldi R20,0
0704 50E0 ldi R21,0
0706 60E0 ldi R22,0
0708 70E0 ldi R23,0
070A 4E83 std y+6,R20
070C 5F83 std y+7,R21
070E 6887 std y+8,R22
0710 7987 std y+9,R23
0712 .dbline 165
0712 ; break;
0712 01C0 xjmp L68
0714 L79:
0714 .dbline 167
0714 ; }
0714 ; }
0714 L67:
0714 .dbline 168
0714 ; while(1);
0714 CACE xjmp L66
0716 L68:
0716 .dbline -2
0716 L65:
0716 .dbline 0 ; func end
0716 2A96 adiw R28,10
0718 0E940000 xcall pop_xgsetF00C
071C 2496 adiw R28,4
071E 0895 ret
0720 .dbsym l Index_tmp 6 l
0720 .dbsym l tem 2 l
0720 .dbsym r i 10 c
0720 .dbsym l File_Name 20 pc
0720 .dbsym l TargetStartSector 16 l
0720 .dbend
0720 .dbfunc e SearchFileOfExt _SearchFileOfExt fV
0720 ; tem -> y+2
0720 ; i -> R10
0720 ; Ext -> y+16
0720 ; TargetStartSector -> y+12
.even
0720 _SearchFileOfExt::
0720 0E940000 xcall push_arg4
0724 0E940000 xcall push_xgsetF00C
0728 2697 sbiw R28,6
072A .dbline -1
072A .dbline 173
072A ; }
072A ;
072A ;
072A ; void SearchFileOfExt(uint32 TargetStartSector,uint8*Ext)
072A ; {
072A L82:
072A .dbline 176
072A ; uint8 i;
072A ; uint32 tem;
072A ; do{
072A .dbline 177
072A ; SD_ReadBlock(TargetStartSector + Index/(BPB_BytesPerSec/32),Fat_Buffer); // 重新读取目录表
072A 80E0 ldi R24,<_Fat_Buffer
072C 90E0 ldi R25,>_Fat_Buffer
072E 9983 std y+1,R25
0730 8883 std y+0,R24
0732 25E0 ldi R18,5
0734 30E0 ldi R19,0
0736 00913900 lds R16,_BPB_BytesPerSec
073A 10913A00 lds R17,_BPB_BytesPerSec+1
073E 0E940000 xcall lsr16
0742 1801 movw R2,R16
0744 4424 clr R4
0746 5524 clr R5
0748 2091F202 lds R18,_Index+2
074C 3091F302 lds R19,_Index+2+1
0750 0091F002 lds R16,_Index
0754 1091F102 lds R17,_Index+1
0758 5A92 st -y,R5
075A 4A92 st -y,R4
075C 3A92 st -y,R3
075E 2A92 st -y,R2
0760 0E940000 xcall div32u
0764 1801 movw R2,R16
0766 2901 movw R4,R18
0768 0C85 ldd R16,y+12
076A 1D85 ldd R17,y+13
076C 2E85 ldd R18,y+14
076E 3F85 ldd R19,y+15
0770 020D add R16,R2
0772 131D adc R17,R3
0774 241D adc R18,R4
0776 351D adc R19,R5
0778 0E940000 xcall _SD_ReadBlock
077C .dbline 179
077C ;
077C ; tem=((Index)*0x20)%BPB_BytesPerSec;
077C 4090F202 lds R4,_Index+2
0780 5090F302 lds R5,_Index+2+1
0784 2090F002 lds R2,_Index
0788 3090F102 lds R3,_Index+1
078C 40E2 ldi R20,32
078E 50E0 ldi R21,0
0790 60E0 ldi R22,0
0792 70E0 ldi R23,0
0794 5A92 st -y,R5
0796 4A92 st -y,R4
0798 3A92 st -y,R3
079A 2A92 st -y,R2
079C 8A01 movw R16,R20
079E 9B01 movw R18,R22
07A0 0E940000 xcall empy32u
07A4 20903900 lds R2,_BPB_BytesPerSec
07A8 30903A00 lds R3,_BPB_BytesPerSec+1
07AC 4424 clr R4
07AE 5524 clr R5
07B0 5A92 st -y,R5
07B2 4A92 st -y,R4
07B4 3A92 st -y,R3
07B6 2A92 st -y,R2
07B8 0E940000 xcall mod32u
07BC 0A83 std y+2,R16
07BE 1B83 std y+3,R17
07C0 2C83 std y+4,R18
07C2 3D83 std y+5,R19
07C4 .dbline 181
07C4 ;
07C4 ; if((Fat_Buffer[tem+11] & ATTR_LONG_FILENAME) != ATTR_LONG_FILENAME); // 是否是长文件名
07C4 4BE0 ldi R20,11
07C6 50E0 ldi R21,0
07C8 60E0 ldi R22,0
07CA 70E0 ldi R23,0
07CC 2A80 ldd R2,y+2
07CE 3B80 ldd R3,y+3
07D0 4C80 ldd R4,y+4
07D2 5D80 ldd R5,y+5
07D4 240E add R2,R20
07D6 351E adc R3,R21
07D8 461E adc R4,R22
07DA 571E adc R5,R23
07DC F101 movw R30,R2
07DE 80E0 ldi R24,<_Fat_Buffer
07E0 90E0 ldi R25,>_Fat_Buffer
07E2 E80F add R30,R24
07E4 F91F adc R31,R25
07E6 8081 ldd R24,z+0
07E8 8F70 andi R24,15
07EA 8F30 cpi R24,15
07EC 01F0 breq L85
07EE X15:
07EE .dbline 181
07EE L85:
07EE .dbline 182
07EE ; {
07EE .dbline 183
07EE ; if((Fat_Buffer[tem] != 0xe5) && (Fat_Buffer[tem] != 0x05)) //文件没有删除
07EE 80E0 ldi R24,<_Fat_Buffer
07F0 90E0 ldi R25,>_Fat_Buffer
07F2 EA81 ldd R30,y+2
07F4 FB81 ldd R31,y+3
07F6 E80F add R30,R24
07F8 F91F adc R31,R25
07FA 2080 ldd R2,z+0
07FC 3324 clr R3
07FE 822D mov R24,R2
0800 853E cpi R24,229
0802 09F4 brne X23
0804 5CC1 xjmp L87
0806 X23:
0806 X16:
0806 8530 cpi R24,5
0808 09F4 brne X24
080A 59C1 xjmp L87
080C X24:
080C X17:
080C .dbline 184
080C ; {
080C .dbline 185
080C ; if((Fat_Buffer[tem+11]&ATTR_DIRECTORY) != ATTR_DIRECTORY) // is it a directory ?
080C 4BE0 ldi R20,11
080E 50E0 ldi R21,0
0810 60E0 ldi R22,0
0812 70E0 ldi R23,0
0814 2A80 ldd R2,y+2
0816 3B80 ldd R3,y+3
0818 4C80 ldd R4,y+4
081A 5D80 ldd R5,y+5
081C 240E add R2,R20
081E 351E adc R3,R21
0820 461E adc R4,R22
0822 571E adc R5,R23
0824 F101 movw R30,R2
0826 80E0 ldi R24,<_Fat_Buffer
0828 90E0 ldi R25,>_Fat_Buffer
082A E80F add R30,R24
082C F91F adc R31,R25
082E 8081 ldd R24,z+0
0830 8071 andi R24,16
0832 8031 cpi R24,16
0834 09F4 brne X25
0836 43C1 xjmp L89
0838 X25:
0838 X18:
0838 .dbline 186
0838 ; {
0838 .dbline 187
0838 ; for(i=0;i<8;i++)
0838 AA24 clr R10
083A 1AC0 xjmp L94
083C L91:
083C .dbline 188
083C ; {
083C .dbline 189
083C ; deName[i]=Fat_Buffer[tem+i];
083C 2A2C mov R2,R10
083E 3324 clr R3
0840 4424 clr R4
0842 5524 clr R5
0844 6A80 ldd R6,y+2
0846 7B80 ldd R7,y+3
0848 8C80 ldd R8,y+4
084A 9D80 ldd R9,y+5
084C 620C add R6,R2
084E 731C adc R7,R3
0850 841C adc R8,R4
0852 951C adc R9,R5
0854 F301 movw R30,R6
0856 80E0 ldi R24,<_Fat_Buffer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -