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

📄 fat32readcluster.lst

📁 这个是非常不错的mp3源码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 113      =2  };
 114      =2  
 115      =2  struct FAT32FSInfoStr           //FAT32扩展信息结构
 116      =2  {
 117      =2          DWORD   LeadSig;
 118      =2          BYTE    Reserved1[480];
 119      =2          DWORD   StrucSig;
 120      =2          DWORD   FreeCount;
 121      =2          DWORD   NxtFree;
 122      =2          BYTE    Reserved2[12];
 123      =2          DWORD   TrailSig;
 124      =2  };
 125      =2  
 126      =2  struct FAT32SDirStr                     //FAT目录结构 短文件名
 127      =2  {
 128      =2          CHAR    Name[11];
 129      =2          BYTE    Attr;
 130      =2          BYTE    NTRes;
 131      =2          BYTE    CrtTimeTenth;
 132      =2          WORD    CrtTime;
 133      =2          WORD    CrtDate;
 134      =2          WORD    LstAccDate;
 135      =2          WORD    FstClusHI;
 136      =2          WORD    WrtTime;
 137      =2          WORD    WrtDate;
 138      =2          WORD    FstClusLO;
 139      =2          DWORD   FileSize;
 140      =2  };
 141      =2  
 142      =2  struct FAT32LDirStr                     //FAT目录结构 长文件名
 143      =2  {
 144      =2          BYTE    Ord;
 145      =2          BYTE    Name1[10];
 146      =2          BYTE    Attr;
 147      =2          BYTE    Type;
 148      =2          BYTE    Chksum;
 149      =2          BYTE    Name2[12];
 150      =2          WORD    FstClusLO;
 151      =2          BYTE    Name3[4];
 152      =2  };
 153      =2  
 154      =2  struct FAT32Str                                 //FAT32参数表
 155      =2  {
 156      =2          BYTE    ClusSecCnt;                     //当前簇扇区计数
 157      =2          DWORD   CurrentDirectory;       //当前目录入口(簇号)
 158      =2          BYTE    SecPerClus;                     //每簇扇区数    1 2 4 8 16 32 64 128
 159      =2          WORD    RsvdSecCnt;                     //保留扇区数    0x20
 160      =2          BYTE    NumFATs;                        //FAT表个数             2
 161      =2          DWORD   RootClus;                       //根目录开始的簇
 162      =2          DWORD   ClusSec;                        //簇开始的扇区
 163      =2          DWORD   FATSz;                          //FAT表大小(扇区)
 164      =2          DWORD   FATSec;                         //FAT表开始扇区
C51 COMPILER V8.08   FAT32READCLUSTER                                                      06/01/2008 16:21:02 PAGE 10  

 165      =2          DWORD   FSISec;                         //FSI所在扇区
 166      =2          DWORD   FSIFreeCount;           //空闲簇数
 167      =2          DWORD   FSINxtFree;                     //空闲簇搜索指针
 168      =2  };
 169      =2  
 170      =2  struct FCBStr
 171      =2  {
 172      =2          CHAR    FileName[12];           //文件名
 173      =2          DWORD   Size;                           //文件大小
 174      =2          DWORD   FirstCluster;           //第一个簇
 175      =2          DWORD   LastCluster;            //最近一次读到的簇号
 176      =2          DWORD   ClusSecCnt;                     //当前簇扇区计数
 177      =2          DWORD   ByteCnt;                        //当前字节计数
 178      =2  };
 179      =2  
 180      =2  struct FATStr
 181      =2  {
 182      =2          DWORD   Sector;
 183      =2          DWORD   FAT[128];
 184      =2  };
 185      =2  
 186      =2  #ifndef _LIBRARY_DEFINE
           =2  xdata BYTE DiskBuffer[512];
           =2 
           =2  xdata struct sDPTStr sDPT[4];
           =2  xdata struct FAT32Str FAT32;
           =2  xdata struct FCBStr FCB[FAT32_MAX_FCB];
           =2  xdata CHAR LongFileName[256]; 
           =2  xdata struct FATStr FAT;
           =2  xdata struct DPTStr *DPT;                      //分区表结构指针
           =2  xdata struct BootSecStr *BOOTSEC;              //引导扇区结构指针
           =2  xdata struct FAT32FSInfoStr *FSI;              //FAT32扩展信息
           =2  xdata struct FAT32SDirStr *sDIR;               //FAT目录结构指针
           =2  xdata struct FAT32LDirStr *lDIR;               //FAT目录结构指针
           =2 #endif
 200      =2  #endif
 201      =2  
 202      =2  extern xdata BYTE DiskBuffer[512];
 203      =2  
 204      =2  extern xdata struct sDPTStr sDPT[4];
 205      =2  extern xdata struct FAT32Str FAT32;
 206      =2  extern xdata struct FCBStr FCB[FAT32_MAX_FCB];
 207      =2  extern xdata CHAR LongFileName[256]; 
 208      =2  extern xdata struct FATStr FAT;
 209      =2  extern xdata struct DPTStr *DPT;                //分区表结构指针
 210      =2  extern xdata struct BootSecStr *BOOTSEC;        //引导扇区结构指针
 211      =2  extern xdata struct FAT32FSInfoStr *FSI;        //FAT32扩展信息
 212      =2  extern xdata struct FAT32SDirStr *sDIR;         //FAT目录结构指针
 213      =2  extern xdata struct FAT32LDirStr *lDIR;         //FAT目录结构指针
 214      =2  
 215      =2  extern void FAT32Init(void);
 216      =2  extern BYTE FAT32MountPartition(void);
 217      =2  extern BYTE FAT32MountVolumeID(BYTE Partition);
 218      =2  extern BYTE FAT32GetDirName(WORD SecNum);
 219      =2  extern void FAT32GetPartLongName(struct FAT32LDirStr *ldp,CHAR *name);
 220      =2  extern DWORD FAT32DiskSize(void);
 221      =2  extern DWORD FAT32DiskFreeSize(void);
 222      =2  extern BYTE FAT32FindDIREntry(CHAR *DirName);
 223      =2  extern void FAT32ReadCluster(DWORD *Cluster);
 224      =2  extern BYTE FAT32ChangeDirectory(CHAR *DirName);
 225      =2  extern BYTE FAT32ListDirectory(void);
 226      =2  extern DWORD FAT32NextCluster(DWORD CurrentCluster);
C51 COMPILER V8.08   FAT32READCLUSTER                                                      06/01/2008 16:21:02 PAGE 11  

 227      =2  extern BYTE FAT32OpenFile(CHAR *filename);
 228      =2  extern void FAT32CloseFile(BYTE fp);
 229      =2  extern WORD FAT32ReadFile(BYTE fp);
  11      =1  
  12      =1  
   3          #endif
   4          
   5          void FAT32ReadCluster(DWORD *Cluster);
   6          
   7          void FAT32ReadCluster(DWORD *Cluster)
   8          {
   9   1              if (FAT32.ClusSecCnt==FAT32.SecPerClus)                 //读下一簇
  10   1              {
  11   2                      *Cluster=FAT32NextCluster(*Cluster);
  12   2                      IDEReadSector(ClusterToSector(*Cluster));
  13   2                      FAT32.ClusSecCnt=1;
  14   2              }
  15   1              else if (FAT32.ClusSecCnt==0)                                   //读第一簇
  16   1              {
  17   2                      IDEReadSector(ClusterToSector(*Cluster));
  18   2                      FAT32.ClusSecCnt++;
  19   2              }
  20   1              else                                                                            //读当前簇下一扇区
  21   1              {
  22   2                      IDEReadSector(IDE.CurrentSector+1);
  23   2                      FAT32.ClusSecCnt++;
  24   2              }
  25   1      }
C51 COMPILER V8.08   FAT32READCLUSTER                                                      06/01/2008 16:21:02 PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _FAT32ReadCluster (BEGIN)
                                           ; SOURCE LINE # 7
0000 900000      R     MOV     DPTR,#Cluster
0003 EB                MOV     A,R3
0004 F0                MOVX    @DPTR,A
0005 A3                INC     DPTR
0006 EA                MOV     A,R2
0007 F0                MOVX    @DPTR,A
0008 A3                INC     DPTR
0009 E9                MOV     A,R1
000A F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 8
                                           ; SOURCE LINE # 9
000B 900000      E     MOV     DPTR,#FAT32+05H
000E E0                MOVX    A,@DPTR
000F FF                MOV     R7,A
0010 900000      E     MOV     DPTR,#FAT32
0013 E0                MOVX    A,@DPTR
0014 6F                XRL     A,R7
0015 7071              JNZ     ?C0001
                                           ; SOURCE LINE # 10
                                           ; SOURCE LINE # 11
0017 900000      R     MOV     DPTR,#Cluster
001A E0                MOVX    A,@DPTR
001B FB                MOV     R3,A
001C A3                INC     DPTR
001D E0                MOVX    A,@DPTR
001E FA                MOV     R2,A
001F A3                INC     DPTR
0020 E0                MOVX    A,@DPTR
0021 F9                MOV     R1,A
0022 120000      E     LCALL   ?C?LLDPTR
0025 120000      E     LCALL   _FAT32NextCluster
0028 900000      R     MOV     DPTR,#Cluster
002B E0                MOVX    A,@DPTR
002C FB                MOV     R3,A
002D A3                INC     DPTR
002E E0                MOVX    A,@DPTR
002F FA                MOV     R2,A
0030 A3                INC     DPTR
0031 E0                MOVX    A,@DPTR
0032 F9                MOV     R1,A
0033 120000      E     LCALL   ?C?LSTPTR
                                           ; SOURCE LINE # 12
0036 900000      R     MOV     DPTR,#Cluster
0039 E0                MOVX    A,@DPTR
003A FB                MOV     R3,A
003B A3                INC     DPTR
003C E0                MOVX    A,@DPTR
003D FA                MOV     R2,A
003E A3                INC     DPTR
003F E0                MOVX    A,@DPTR
0040 F9                MOV     R1,A
0041 120000      E     LCALL   ?C?LLDPTR
0044 EF                MOV     A,R7
0045 24FE              ADD     A,#0FEH
0047 FB                MOV     R3,A
0048 EE                MOV     A,R6
0049 34FF              ADDC    A,#0FFH
C51 COMPILER V8.08   FAT32READCLUSTER                                                      06/01/2008 16:21:02 PAGE 13  

004B FA                MOV     R2,A
004C ED                MOV     A,R5
004D 34FF              ADDC    A,#0FFH
004F F9                MOV     R1,A
0050 EC                MOV     A,R4
0051 34FF              ADDC    A,#0FFH
0053 F8                MOV     R0,A
0054 900000      E     MOV     DPTR,#FAT32+05H
0057 E0                MOVX    A,@DPTR
0058 FF                MOV     R7,A
0059 E4                CLR     A
005A FC                MOV     R4,A
005B FD                MOV     R5,A
005C FE                MOV     R6,A
005D 120000      E     LCALL   ?C?LMUL
0060 900000      E     MOV     DPTR,#FAT32+0DH
0063 E0                MOVX    A,@DPTR
0064 F8                MOV     R0,A
0065 A3                INC     DPTR
0066 E0                MOVX    A,@DPTR
0067 F9                MOV     R1,A
0068 A3                INC     DPTR
0069 E0                MOVX    A,@DPTR
006A FA                MOV     R2,A
006B A3                INC     DPTR
006C E0                MOVX    A,@DPTR
006D 2F                ADD     A,R7
006E FF                MOV     R7,A
006F EA                MOV     A,R2
0070 3E                ADDC    A,R6
0071 FE                MOV     R6,A
0072 E9                MOV     A,R1
0073 3D                ADDC    A,R5
0074 FD                MOV     R5,A
0075 E8                MOV     A,R0
0076 3C                ADDC    A,R4
0077 FC                MOV     R4,A
0078 900000      E     MOV     DPTR,#IDE+02H
007B 120000      E     LCALL   ?C?LSTXDATA
007E 120000      E     LCALL   _IDEReadSector
                                           ; SOURCE LINE # 13
0081 900000      E     MOV     DPTR,#FAT32
0084 7401              MOV     A,#01H
0086 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 14
0087 22                RET     
0088         ?C0001:
                                           ; SOURCE LINE # 15
0088 900000      E     MOV     DPTR,#FAT32
008B E0                MOVX    A,@DPTR

⌨️ 快捷键说明

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