⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fat.lis

📁 diy硬盘mp3的程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01F4           ; ata_read_sector_byte(0, FatSectorNum, FatSectorOffset, 4 , (unsigned char*)&Fat32_Entry); 
 01F4 CE01              movw R24,R28
 01F6 4096              adiw R24,16
 01F8 9F83              std y+7,R25
 01FA 8E83              std y+6,R24
 01FC 84E0              ldi R24,4
 01FE 90E0              ldi R25,0
 0200 9D83              std y+5,R25
 0202 8C83              std y+4,R24
 0204 2484              ldd R2,z+12
 0206 3584              ldd R3,z+13
 0208 3B82              std y+3,R3
 020A 2A82              std y+2,R2
 020C 2084              ldd R2,z+8
 020E 3184              ldd R3,z+9
 0210 4284              ldd R4,z+10
 0212 5384              ldd R5,z+11
 0214 4882              std y+0,R4
 0216 5982              std y+1,R5
 0218 9101              movw R18,R2
 021A 0027              clr R16
 021C 0E940000          xcall _ata_read_sector_byte
 0220                   .dbline 59
 0220           ; 
 0220           ; return(Fat32_Entry & 0x0FFFFFFF);
 0220 4FEF              ldi R20,255
 0222 5FEF              ldi R21,255
 0224 6FEF              ldi R22,255
 0226 7FE0              ldi R23,15
 0228 FE01              movw R30,R28
 022A 2088              ldd R2,z+16
 022C 3188              ldd R3,z+17
 022E 4288              ldd R4,z+18
 0230 5388              ldd R5,z+19
 0232 2422              and R2,R20
 0234 3522              and R3,R21
 0236 4622              and R4,R22
 0238 5722              and R5,R23
 023A 8101              movw R16,R2
 023C 9201              movw R18,R4
 023E                   .dbline -2
 023E           L9:
 023E 6496              adiw R28,20
 0240 0E940000          xcall pop_gset2
 0244 2496              adiw R28,4
 0246                   .dbline 0 ; func end
 0246 0895              ret
 0248                   .dbsym l Fat32_Entry 16 l
 0248                   .dbsym l FatSectorOffset 12 l
 0248                   .dbsym l FatSectorNum 8 l
 0248                   .dbsym l Clust 24 l
 0248                   .dbend
 0248                   .dbfunc e GetDir _GetDir fI
 0248           ;              k -> <dead>
 0248           ;    NextCluster -> y+49
 0248           ;            LBA -> y+45
 0248           ;        LinePtr -> y+44
 0248           ;              i -> y+40
 0248           ;   LongFileName -> R12,R13
 0248           ;          Files -> y+55
 0248           ;         Offset -> y+53
 0248           ;    LongFilePtr -> R10,R11
 0248           ;          Entry -> y+8
 0248           ;              j -> R14,R15
 0248           ;        Display -> y+75
 0248           ;            Qte -> y+73
 0248           ;           From -> y+71
 0248           ;        Cluster -> y+67
                        .even
 0248           _GetDir::
 0248 0E940000          xcall push_arg4
 024C 0E940000          xcall push_gset5
 0250 E997              sbiw R28,57
 0252                   .dbline -1
 0252                   .dbline 67
 0252           ; }
 0252           ; 
 0252           ; //*************************************
 0252           ; // int GetDir(unsigned long Cluster, unsigned int FileWanted, unsigned int Type)
 0252           ; //
 0252           ; //*************************************
 0252           ; int GetDir(unsigned long Cluster, unsigned int From, unsigned int Qte, unsigned int Display)
 0252           ; {
 0252                   .dbline 80
 0252           ; extern unsigned char SectorBuffer[512];
 0252           ; unsigned long LBA,i,NextCluster;
 0252           ; unsigned int Offset,j,k,LongFilePtr,LongFileName,Files;
 0252           ; unsigned char LinePtr;
 0252           ; union FileEntry
 0252           ; {
 0252           ;         struct DirEntry Dir;
 0252           ;         struct WinEntry Win;
 0252           ; };
 0252           ; 
 0252           ; union FileEntry Entry;
 0252           ; 
 0252           ; NextCluster = Cluster;
 0252 FE01              movw R30,R28
 0254 ED5B              subi R30,189  ; addi 67
 0256 FF4F              sbci R31,255
 0258 2080              ldd R2,z+0
 025A 3180              ldd R3,z+1
 025C 4280              ldd R4,z+2
 025E 5380              ldd R5,z+3
 0260 E354              subi R30,67
 0262 F040              sbci R31,0
 0264 21AA              std z+49,R2
 0266 32AA              std z+50,R3
 0268 43AA              std z+51,R4
 026A 54AA              std z+52,R5
 026C                   .dbline 81
 026C           ; Files = 0;
 026C 0024              clr R0
 026E 1124              clr R1
 0270 18AE              std y+56,R1
 0272 0FAA              std y+55,R0
 0274                   .dbline 82
 0274           ; LinePtr = 0;
 0274 2224              clr R2
 0276 2CA6              std y+44,R2
 0278 DEC1              xjmp L16
 027A           L15:
 027A                   .dbline 84
 027A           ; while (1)
 027A           ;         {
 027A                   .dbline 85
 027A           ;         LBA = Clust2LBA(NextCluster);
 027A FE01              movw R30,R28
 027C 01A9              ldd R16,z+49
 027E 12A9              ldd R17,z+50
 0280 23A9              ldd R18,z+51
 0282 34A9              ldd R19,z+52
 0284 27DF              xcall _Clust2LBA
 0286 FE01              movw R30,R28
 0288 05A7              std z+45,R16
 028A 16A7              std z+46,R17
 028C 27A7              std z+47,R18
 028E 30AB              std z+48,R19
 0290                   .dbline 86
 0290           ;         for (i=0;i<Boot.SecPerClust;i++) 
 0290 40E0              ldi R20,0
 0292 50E0              ldi R21,0
 0294 60E0              ldi R22,0
 0296 70E0              ldi R23,0
 0298 40A7              std z+40,R20
 029A 51A7              std z+41,R21
 029C 62A7              std z+42,R22
 029E 73A7              std z+43,R23
 02A0 A2C1              xjmp L21
 02A2           L18:
 02A2                   .dbline 87
 02A2           ;                 {
 02A2                   .dbline 88
 02A2           ;                 ata_read_sector_byte(0, LBA+i, 0, 512, (unsigned char*)&SectorBuffer);
 02A2 80E0              ldi R24,<_SectorBuffer
 02A4 90E0              ldi R25,>_SectorBuffer
 02A6 9F83              std y+7,R25
 02A8 8E83              std y+6,R24
 02AA 80E0              ldi R24,512
 02AC 92E0              ldi R25,2
 02AE 9D83              std y+5,R25
 02B0 8C83              std y+4,R24
 02B2 2224              clr R2
 02B4 3324              clr R3
 02B6 3B82              std y+3,R3
 02B8 2A82              std y+2,R2
 02BA FE01              movw R30,R28
 02BC 20A4              ldd R2,z+40
 02BE 31A4              ldd R3,z+41
 02C0 42A4              ldd R4,z+42
 02C2 53A4              ldd R5,z+43
 02C4 65A4              ldd R6,z+45
 02C6 76A4              ldd R7,z+46
 02C8 87A4              ldd R8,z+47
 02CA 90A8              ldd R9,z+48
 02CC 620C              add R6,R2
 02CE 731C              adc R7,R3
 02D0 841C              adc R8,R4
 02D2 951C              adc R9,R5
 02D4 8882              std y+0,R8
 02D6 9982              std y+1,R9
 02D8 9301              movw R18,R6
 02DA 0027              clr R16
 02DC 0E940000          xcall _ata_read_sector_byte
 02E0                   .dbline 89
 02E0           ;                 for (Offset=0;Offset<Boot.BytesPerSec;Offset=Offset+32) 
 02E0 0024              clr R0
 02E2 1124              clr R1
 02E4 1EAA              std y+54,R1
 02E6 0DAA              std y+53,R0
 02E8 63C1              xjmp L26
 02EA           L23:
 02EA                   .dbline 90
 02EA           ;                         {
 02EA                   .dbline 91
 02EA           ;                         memcpy((unsigned char*)&Entry,(unsigned char*)&SectorBuffer[Offset],sizeof(Entry));
 02EA 80E2              ldi R24,32
 02EC 90E0              ldi R25,0
 02EE 9983              std y+1,R25
 02F0 8883              std y+0,R24
 02F2 80E0              ldi R24,<_SectorBuffer
 02F4 90E0              ldi R25,>_SectorBuffer
 02F6 2DA9              ldd R18,y+53
 02F8 3EA9              ldd R19,y+54
 02FA 280F              add R18,R24
 02FC 391F              adc R19,R25
 02FE 8E01              movw R16,R28
 0300 085F              subi R16,248  ; offset = 8
 0302 1F4F              sbci R17,255
 0304 0E940000          xcall _memcpy
 0308                   .dbline 92
 0308           ;                 if (Entry.Dir.Attributes == ATTR_LONG_FILENAME)
 0308 8B89              ldd R24,y+19
 030A 8F30              cpi R24,15
 030C 09F0              breq X1
 030E 7CC0              xjmp L28
 0310           X1:
 0310                   .dbline 93
 0310           ;                                {
 0310                   .dbline 94
 0310           ;                                LongFileName = TRUE;
 0310 81E0              ldi R24,1
 0312 90E0              ldi R25,0
 0314 6C01              movw R12,R24
 0316                   .dbline 95
 0316           ;                                LongFilePtr = ((Entry.Win.Cnt & 0x3f) * 13) - 13;
 0316 8885              ldd R24,y+8
 0318 8F73              andi R24,63
 031A 9DE0              ldi R25,13
 031C 989F              mul R25,R24
 031E C001              movw R24,R0
 0320 0D97              sbiw R24,13
 0322 5C01              movw R10,R24
 0324                   .dbline 96
 0324 EE24              clr R14
 0326 FF24              clr R15
 0328 19C0              xjmp L34
 032A           L31:
 032A                   .dbline 96
 032A 1501              movw R2,R10
 032C C101              movw R24,R2
 032E 0196              adiw R24,1
 0330 5C01              movw R10,R24
 0332 02E0              ldi R16,2
 0334 10E0              ldi R17,0
 0336 9701              movw R18,R14
 0338 0E940000          xcall empy16s
 033C F801              movw R30,R16
 033E CE01              movw R24,R28
 0340 0996              adiw R24,9
 0342 E80F              add R30,R24
 0344 F91F              adc R31,R25
 0346 4080              ldd R4,z+0
 0348 5180              ldd R5,z+1
 034A 80E0              ldi R24,<_File
 034C 90E0              ldi R25,>_File
 034E F101              movw R30,R2
 0350 E80F              add R30,R24
 0352 F91F              adc R31,R25
 0354 4082              std z+0,R4
 0356           L32:
 0356                   .dbline 96
 0356 C701              movw R24,R14
 0358 0196              adiw R24,1
 035A 7C01              movw R14,R24
 035C           L34:
 035C                   .dbline 96
 035C           ;                                for (j=0;j<5;j++) File.Name[LongFilePtr++] = Entry.Win.Part1[j];
 035C C701              movw R24,R14
 035E 8530              cpi R24,5
 0360 E0E0              ldi R30,0
 0362 9E07              cpc R25,R30
 0364 10F3              brlo L31
 0366                   .dbline 97
 0366 EE24              clr R14
 0368 FF24              clr R15
 036A 19C0              xjmp L39
 036C           L36:
 036C                   .dbline 97
 036C 1501              movw R2,R10
 036E C101              movw R24,R2
 0370 0196              adiw R24,1
 0372 5C01              movw R10,R24
 0374 02E0              ldi R16,2
 0376 10E0              ldi R17,0
 0378 9701              movw R18,R14
 037A 0E940000          xcall empy16s
 037E F801              movw R30,R16
 0380 CE01              movw R24,R28
 0382 4696              adiw R24,22
 0384 E80F              add R30,R24
 0386 F91F              adc R31,R25
 0388 4080              ldd R4,z+0
 038A 5180              ldd R5,z+1
 038C 80E0              ldi R24,<_File
 038E 90E0              ldi R25,>_File
 0390 F101              movw R30,R2
 0392 E80F              add R30,R24

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -