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

📄 mp3.lst

📁 diy硬盘mp3的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0470 1C84      ADC	R8,R4
    0471 1C95      ADC	R9,R5
    0472 0E60      ADD	R6,R16
    0473 1E71      ADC	R7,R17
    0474 1E82      ADC	R8,R18
    0475 1E93      ADC	R9,R19
    0476 92700167  STS	_FirstDataSector+1,R7
    0478 92600166  STS	_FirstDataSector,R6
    047A 92900169  STS	_FirstDataSector+3,R9
    047C 92800168  STS	_FirstDataSector+2,R8
(0027) }
    047E 9628      ADIW	R28,0x8
    047F 940E1528  CALL	pop_gset2
    0481 9508      RET
_Clust2LBA:
  clust                --> Y+4
    0482 940E1438  CALL	push_arg4
    0484 940E154B  CALL	push_gset2
(0028) 
(0029) //*************************************
(0030) // unsigned long clust2LBA(unsigned long clust)
(0031) //*************************************
(0032) unsigned long Clust2LBA(unsigned long clust)
(0033) {
(0034) return ((clust-2) * Boot.SecPerClust) + FirstDataSector;
    0486 E042      LDI	R20,2
    0487 E050      LDI	R21,0
    0488 E060      LDI	R22,0
    0489 E070      LDI	R23,0
    048A 01FE      MOVW	R30,R28
    048B 8024      LDD	R2,Z+4
    048C 8035      LDD	R3,Z+5
    048D 8046      LDD	R4,Z+6
    048E 8057      LDD	R5,Z+7
    048F 1A24      SUB	R2,R20
    0490 0A35      SBC	R3,R21
    0491 0A46      SBC	R4,R22
    0492 0A57      SBC	R5,R23
    0493 90600283  LDS	R6,0x283
    0495 2477      CLR	R7
    0496 2488      CLR	R8
    0497 2499      CLR	R9
    0498 929A      ST	R9,-Y
    0499 928A      ST	R8,-Y
    049A 927A      ST	R7,-Y
    049B 926A      ST	R6,-Y
    049C 0181      MOVW	R16,R2
    049D 0192      MOVW	R18,R4
    049E 940E14F8  CALL	empy32s
    04A0 0118      MOVW	R2,R16
    04A1 0129      MOVW	R4,R18
    04A2 90800168  LDS	R8,_FirstDataSector+2
    04A4 90900169  LDS	R9,_FirstDataSector+3
    04A6 90600166  LDS	R6,_FirstDataSector
    04A8 90700167  LDS	R7,_FirstDataSector+1
    04AA 0C26      ADD	R2,R6
    04AB 1C37      ADC	R3,R7
    04AC 1C48      ADC	R4,R8
    04AD 1C59      ADC	R5,R9
    04AE 0181      MOVW	R16,R2
    04AF 0192      MOVW	R18,R4
    04B0 940E1528  CALL	pop_gset2
    04B2 9624      ADIW	R28,4
    04B3 9508      RET
_GetNextCluster:
  Fat32_Entry          --> Y+16
  FatSectorOffset      --> Y+12
  FatSectorNum         --> Y+8
  Clust                --> Y+24
    04B4 940E1438  CALL	push_arg4
    04B6 940E154B  CALL	push_gset2
    04B8 9764      SBIW	R28,0x14
(0035) }
(0036) 
(0037) //****************************************************************
(0038) // unsigned long GetNextCluster(unsigned long Clust)
(0039) // 
(0040) // Description: 
(0041) // Returns the FAT32 Entry for the given Cluster Number. 
(0042) // The FAT32 Entry is the next cluster number of the cluster 
(0043) // chain. **May return a termination 
(0044) // 
(0045) // if Fat32_Entry >= 0x0FFFFFF8 EOC (End of Chain) 
(0046) // if Fat32_Entry == 0x0FFFFFF7 Bad Cluster 
(0047) //****************************************************************
(0048) unsigned long GetNextCluster(unsigned long Clust)
(0049) {
(0050) unsigned long FatSectorNum;
(0051) unsigned long FatSectorOffset;
(0052) unsigned long Fat32_Entry;
(0053) 
(0054) FatSectorNum = Part.StartLBA + Boot.ResSectors + ((Clust * 4) / Boot.BytesPerSec);;
    04B9 01FE      MOVW	R30,R28
    04BA 8C20      LDD	R2,Z+24
    04BB 8C31      LDD	R3,Z+25
    04BC 8C42      LDD	R4,Z+26
    04BD 8C53      LDD	R5,Z+27
    04BE E044      LDI	R20,4
    04BF E050      LDI	R21,0
    04C0 E060      LDI	R22,0
    04C1 E070      LDI	R23,0
    04C2 925A      ST	R5,-Y
    04C3 924A      ST	R4,-Y
    04C4 923A      ST	R3,-Y
    04C5 922A      ST	R2,-Y
    04C6 018A      MOVW	R16,R20
    04C7 019B      MOVW	R18,R22
    04C8 940E14F8  CALL	empy32s
    04CA 90200281  LDS	R2,0x281
    04CC 90300282  LDS	R3,0x282
    04CE 2444      CLR	R4
    04CF 2455      CLR	R5
    04D0 925A      ST	R5,-Y
    04D1 924A      ST	R4,-Y
    04D2 923A      ST	R3,-Y
    04D3 922A      ST	R2,-Y
    04D4 940E1477  CALL	div32u
    04D6 90200284  LDS	R2,0x284
    04D8 90300285  LDS	R3,0x285
    04DA 2444      CLR	R4
    04DB 2455      CLR	R5
    04DC 908002B4  LDS	R8,0x2B4
    04DE 909002B5  LDS	R9,0x2B5
    04E0 906002B2  LDS	R6,0x2B2
    04E2 907002B3  LDS	R7,0x2B3
    04E4 0C62      ADD	R6,R2
    04E5 1C73      ADC	R7,R3
    04E6 1C84      ADC	R8,R4
    04E7 1C95      ADC	R9,R5
    04E8 0E60      ADD	R6,R16
    04E9 1E71      ADC	R7,R17
    04EA 1E82      ADC	R8,R18
    04EB 1E93      ADC	R9,R19
    04EC 01FE      MOVW	R30,R28
    04ED 8660      STD	Z+8,R6
    04EE 8671      STD	Z+9,R7
    04EF 8682      STD	Z+10,R8
    04F0 8693      STD	Z+11,R9
(0055) FatSectorOffset = (Clust * 4) % Boot.BytesPerSec;
    04F1 8C20      LDD	R2,Z+24
    04F2 8C31      LDD	R3,Z+25
    04F3 8C42      LDD	R4,Z+26
    04F4 8C53      LDD	R5,Z+27
    04F5 E044      LDI	R20,4
    04F6 E050      LDI	R21,0
    04F7 E060      LDI	R22,0
    04F8 E070      LDI	R23,0
    04F9 925A      ST	R5,-Y
    04FA 924A      ST	R4,-Y
    04FB 923A      ST	R3,-Y
    04FC 922A      ST	R2,-Y
    04FD 018A      MOVW	R16,R20
    04FE 019B      MOVW	R18,R22
    04FF 940E14F8  CALL	empy32s
    0501 90200281  LDS	R2,0x281
    0503 90300282  LDS	R3,0x282
    0505 2444      CLR	R4
    0506 2455      CLR	R5
    0507 925A      ST	R5,-Y
    0508 924A      ST	R4,-Y
    0509 923A      ST	R3,-Y
    050A 922A      ST	R2,-Y
    050B 940E1479  CALL	mod32u
    050D 01FE      MOVW	R30,R28
    050E 8704      STD	Z+12,R16
    050F 8715      STD	Z+13,R17
    0510 8726      STD	Z+14,R18
    0511 8737      STD	Z+15,R19
(0056) 
(0057) ata_read_sector_byte(0, FatSectorNum, FatSectorOffset, 4 , (unsigned char*)&Fat32_Entry); 
    0512 01CE      MOVW	R24,R28
    0513 9640      ADIW	R24,0x10
    0514 839F      STD	Y+7,R25
    0515 838E      STD	Y+6,R24
    0516 E084      LDI	R24,4
    0517 E090      LDI	R25,0
    0518 839D      STD	Y+5,R25
    0519 838C      STD	Y+4,R24
    051A 8424      LDD	R2,Z+12
    051B 8435      LDD	R3,Z+13
    051C 823B      STD	Y+3,R3
    051D 822A      STD	Y+2,R2
    051E 8420      LDD	R2,Z+8
    051F 8431      LDD	R3,Z+9
    0520 8442      LDD	R4,Z+10
    0521 8453      LDD	R5,Z+11
    0522 8248      STD	Y+0,R4
    0523 8259      STD	Y+1,R5
    0524 0191      MOVW	R18,R2
    0525 2700      CLR	R16
    0526 940E025B  CALL	_ata_read_sector_byte
(0058) 
(0059) return(Fat32_Entry & 0x0FFFFFFF);
    0528 EF4F      LDI	R20,0xFF
    0529 EF5F      LDI	R21,0xFF
    052A EF6F      LDI	R22,0xFF
    052B E07F      LDI	R23,0xF
    052C 01FE      MOVW	R30,R28
    052D 8820      LDD	R2,Z+16
    052E 8831      LDD	R3,Z+17
    052F 8842      LDD	R4,Z+18
    0530 8853      LDD	R5,Z+19
    0531 2224      AND	R2,R20
    0532 2235      AND	R3,R21
    0533 2246      AND	R4,R22
    0534 2257      AND	R5,R23
    0535 0181      MOVW	R16,R2
    0536 0192      MOVW	R18,R4
    0537 9664      ADIW	R28,0x14
    0538 940E1528  CALL	pop_gset2
    053A 9624      ADIW	R28,4
    053B 9508      RET
_GetDir:
  k                    --> Y+9
  NextCluster          --> Y+49
  LBA                  --> Y+45
  LinePtr              --> Y+44
  i                    --> Y+40
  LongFileName         --> R12
  Files                --> Y+55
  Offset               --> Y+53
  LongFilePtr          --> R10
  Entry                --> Y+8
  j                    --> R14
  Display              --> Y+75
  Qte                  --> Y+73
  From                 --> Y+71
  Cluster              --> Y+67
    053C 940E1438  CALL	push_arg4
    053E 940E1557  CALL	push_gset5
    0540 97E9      SBIW	R28,0x39
(0060) }
(0061) 
(0062) //*************************************
(0063) // int GetDir(unsigned long Cluster, unsigned int FileWanted, unsigned int Type)
(0064) //
(0065) //*************************************
(0066) int GetDir(unsigned long Cluster, unsigned int From, unsigned int Qte, unsigned int Display)
(0067) {
(0068) extern unsigned char SectorBuffer[512];
(0069) unsigned long LBA,i,NextCluster;
(0070) unsigned int Offset,j,k,LongFilePtr,LongFileName,Files;
(0071) unsigned char LinePtr;
(0072) union FileEntry
(0073) {
(0074)  	  struct DirEntry Dir;
(0075) 	  struct WinEntry Win;
(0076) };
(0077) 
(0078) union FileEntry Entry;
(0079) 
(0080) NextCluster = Cluster;
    0541 01FE      MOVW	R30,R28
    0542 5BED      SUBI	R30,0xBD
    0543 4FFF      SBCI	R31,0xFF
    0544 8020      LDD	R2,Z+0
    0545 8031      LDD	R3,Z+1
    0546 8042      LDD	R4,Z+2
    0547 8053      LDD	R5,Z+3
    0548 54E3      SUBI	R30,0x43
    0549 40F0      SBCI	R31,0
    054A AA21      STD	Z+49,R2
    054B AA32      STD	Z+50,R3
    054C AA43      STD	Z+51,R4
    054D AA54      STD	Z+52,R5
(0081) Files = 0;
    054E 2400      CLR	R0
    054F 2411      CLR	R1
    0550 AE18      STD	Y+56,R1
    0551 AA0F      STD	Y+55,R0
(0082) LinePtr = 0;
    0552 2422      CLR	R2
    0553 A62C      STD	Y+44,R2
    0554 C1DE      RJMP	0x0733
(0083) while (1)
(0084)  	  {
(0085) 	  LBA = Clust2LBA(NextCluster);
    0555 01FE      MOVW	R30,R28
    0556 A901      LDD	R16,Z+49
    0557 A912      LDD	R17,Z+50
    0558 A923      LDD	R18,Z+51
    0559 A934      LDD	R19,Z+52
    055A DF27      RCALL	_Clust2LBA
    055B 01FE      MOVW	R30,R28
    055C A705      STD	Z+45,R16
    055D A716      STD	Z+46,R17
    055E A727      STD	Z+47,R18
    055F AB30      STD	Z+48,R19
(0086) 	  for (i=0;i<Boot.SecPerClust;i++) 
    0560 E040      LDI	R20,0
    0561 E050      LDI	R21,0
    0562 E060      LDI	R22,0
    0563 E070      LDI	R23,0
    0564 A740      STD	Z+40,R20
    0565 A751      STD	Z+41,R21
    0566 A762      STD	Z+42,R22
    0567 A773      STD	Z+43,R23
    0568 C1A2      RJMP	0x070B
(0087) 	  	  {
(0088) 		  ata_read_sector_byte(0, LBA+i, 0, 512, (unsigned char*)&SectorBuffer);
    0569 E882      LDI	R24,0x82
    056A E093      LDI	R25,3
    056B 839F      STD	Y+7,R25
    056C 838E      STD	Y+6,R24
    056D E080      LDI	R24,0
    056E E092      LDI	R25,2
    056F 839D      STD	Y+5,R25
    0570 838C      STD	Y+4,R24
    0571 2422      CLR	R2
    0572 2433      CLR	R3
    0573 823B      STD	Y+3,R3
    0574 822A      STD	Y+2,R2
    0575 01FE      MOVW	R30,R28
    0576 A420      LDD	R2,Z+40
    0577 A431      LDD	R3,Z+41
    0578 A442      LDD	R4,Z+42
    0579 A453      LDD	R5,Z+43
    057A A465      LDD	R6,Z+45
    057B A476      LDD	R7,Z+46
    057C A487      LDD	R8,Z+47
    057D A890      LDD	R9,Z+48
    057E 0C62      ADD	R6,R2
    057F 1C73      ADC	R7,R3
    0580 1C84      ADC	R8,R4
    0581 1C95      ADC	R9,R5
    0582 8288      STD	Y+0,R8
    0583 8299      STD	Y+1,R9
    0584 0193      MOVW	R18,R6
    0585 2700      CLR	R16
    0586 940E025B  CALL	_ata_read_sector_byte
(0089) 		  for (Offset=0;Offset<Boot.BytesPerSec;Offset=Offset+32) 
    0588 2400      CLR	R0
    0589 2411      CLR	R1
    058A AA1E      STD	Y+54,R1
    058B AA0D      STD	Y+53,R0
    058C C163      RJMP	0x06F0
(0090) 		  	  {
(0091) 			  memcpy((unsigned char*)&Entry,(unsigned char*)&SectorBuffer[Offset],sizeof(Entry));
    058D E280      LDI	R24,0x20
    058E E090      LDI	R25,0
    058F 8399      STD	Y+1,R25
    0590 8388      STD	Y+0,R24
    0591 E882      LDI	R24,0x82
    0592 E093      LDI	R25,3
    0593 A92D      LDD	R18,Y+53
    0594 A93E      LDD	R19,Y+54
    0595 0F28      ADD	R18,R24
    0596 1F39      ADC	R19,R25
    0597 018E      MOVW	R16,R28
    0598 5F08      SUBI	R16,0xF8
    0599 4F1F      SBCI	R17,0xFF
    059A 940E13FF  CALL	_memcpy
(0092)     		  if (Entry.Dir.Attributes == ATTR_LONG_FILENAME)
    059C 898B      LDD	R24,Y+19
    059D 308F      CPI	R24,0xF
    059E F009      BEQ	0x05A0
    059F C07C      RJMP	0x061C
(0093) 			  	 {
(0094) 				 LongFileName = TRUE;
    05A0 E081      LDI	R24,1
    05A1 E090      LDI	R25,0
    05A2 016C      MOVW	R12,R24
(0095) 				 LongFilePtr = ((Entry.Win.Cnt & 0x3f) * 13) - 13;
    05A3 8588      LDD	R24,Y+8
    05A4 738F      ANDI	R24,0x3F
    05A5 E09D      LDI	R25,0xD
    05A6 9F98      MUL	R25,R24
    05A7 01C0      MOVW	R24,R0
    05A8 970D      SBIW	R24,0xD
    05A9 015C      MOVW	R10,R24
(0096) 				 for (j=0;j<5;j++) File.Name[LongFilePtr++] = Entry.Win.Part1[j];
    05AA 24EE      CLR	R14
    05AB 24FF      CLR	R15
    05AC C019      RJMP	0x05C6
    05AD 0115      MOVW	R2,R10
    05AE 01C1      MOVW	R24,R2
    05AF 9601      ADIW	R24,1
    05B0 015C      MOVW	R10,R24
    05B1 E002      LDI	R16,2
    05B2 E010      LDI	R17,0
    05B3 0197      MOVW	R18,R14
    05B4 940E14E8  CALL	empy16s
    05B6 01F8      MOVW	R30,R16
    05B7 01CE      MOVW	R24,R28
    05B8 9609      ADIW	R24,0x9
    05B9 0FE8      ADD	R30,R24
    05BA 1FF9      ADC	R31,R25
    05BB 8040      LDD	R4,Z+0
    05BC 8051      LDD	R5,Z+1
    05BD E68A      LDI	R24,0x6A
    05BE E091      LDI	R25,1
    05BF 01F1      MOVW	R30,R2
    05C0 0FE8      ADD	R30,R24
    05C1 1FF9      ADC	R31,R25
    05C2 8240      STD	Z+0,R4
    05C3 01C7      MOVW	R24,R14
    05C4 9601      ADIW	R24,1
    05C5 017C      MOVW	R14,R24
    05C6 01C7      MOVW	R24,R14
    05C7 3085      CPI	R24,5

⌨️ 快捷键说明

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