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

📄 fat.lis

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

⌨️ 快捷键说明

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