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

📄 fat32openfile.lst

📁 这个是非常不错的mp3源码
💻 LST
📖 第 1 页 / 共 4 页
字号:
 163      =2          DWORD   FATSz;                          //FAT表大小(扇区)
 164      =2          DWORD   FATSec;                         //FAT表开始扇区
C51 COMPILER V8.08   FAT32OPENFILE                                                         06/01/2008 16:21:01 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   FAT32OPENFILE                                                         06/01/2008 16:21:01 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          BYTE FAT32OpenFile(CHAR *filename);
   6          
   7          BYTE FAT32OpenFile(CHAR *filename)
   8          {
   9   1              register BYTE i,j;
  10   1              
  11   1              i=0;
  12   1              while(i<FAT32_MAX_FCB&&FCB[i].FirstCluster) i++;
  13   1      
  14   1              if (i==FAT32_MAX_FCB) return(FAT32_ERR_FILE_OPEN_ERROR);                        //文件控制块已满
  15   1              else
  16   1              {
  17   2                      j=FAT32FindDIREntry(filename);
  18   2                      if (j<16)
  19   2                      {
  20   3                              strcpy((char *)FCB[i].FileName,(char *)filename);
  21   3                              FCB[i].Size=MEMSwap32(sDIR[j].FileSize);
  22   3                              ((WORD *)&FCB[i].FirstCluster)[0]=MEMSwap16(sDIR[j].FstClusHI);
  23   3                              ((WORD *)&FCB[i].FirstCluster)[1]=MEMSwap16(sDIR[j].FstClusLO);
  24   3                              FCB[i].LastCluster=FCB[i].FirstCluster; 
  25   3                              FCB[i].ClusSecCnt=0;
  26   3                              FCB[i].ByteCnt=0;
  27   3                              return(i);
  28   3                      }
  29   2                      else return(FAT32_ERR_FILE_OPEN_ERROR);
  30   2              }
  31   1      }
C51 COMPILER V8.08   FAT32OPENFILE                                                         06/01/2008 16:21:01 PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _FAT32OpenFile (BEGIN)
                                           ; SOURCE LINE # 7
0000 900000      R     MOV     DPTR,#filename
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 # 11
000B E4                CLR     A
000C A3                INC     DPTR
000D F0                MOVX    @DPTR,A
000E         ?C0001:
                                           ; SOURCE LINE # 12
000E 900000      R     MOV     DPTR,#i
0011 E0                MOVX    A,@DPTR
0012 FF                MOV     R7,A
0013 C3                CLR     C
0014 9402              SUBB    A,#02H
0016 5027              JNC     ?C0002
0018 EF                MOV     A,R7
0019 C4                SWAP    A
001A 33                RLC     A
001B 54E0              ANL     A,#0E0H
001D 2400        E     ADD     A,#LOW FCB+010H
001F F582              MOV     DPL,A
0021 E4                CLR     A
0022 3400        E     ADDC    A,#HIGH FCB+010H
0024 F583              MOV     DPH,A
0026 E0                MOVX    A,@DPTR
0027 FC                MOV     R4,A
0028 A3                INC     DPTR
0029 E0                MOVX    A,@DPTR
002A FD                MOV     R5,A
002B A3                INC     DPTR
002C E0                MOVX    A,@DPTR
002D FE                MOV     R6,A
002E A3                INC     DPTR
002F E0                MOVX    A,@DPTR
0030 FF                MOV     R7,A
0031 EC                MOV     A,R4
0032 4D                ORL     A,R5
0033 4E                ORL     A,R6
0034 4F                ORL     A,R7
0035 6008              JZ      ?C0002
0037 900000      R     MOV     DPTR,#i
003A E0                MOVX    A,@DPTR
003B 04                INC     A
003C F0                MOVX    @DPTR,A
003D 80CF              SJMP    ?C0001
003F         ?C0002:
                                           ; SOURCE LINE # 14
003F 900000      R     MOV     DPTR,#i
0042 E0                MOVX    A,@DPTR
0043 B40203            CJNE    A,#02H,?C0003
C51 COMPILER V8.08   FAT32OPENFILE                                                         06/01/2008 16:21:01 PAGE 13  

0046 7F02              MOV     R7,#02H
0048 22                RET     
0049         ?C0003:
                                           ; SOURCE LINE # 16
                                           ; SOURCE LINE # 17
0049 900000      R     MOV     DPTR,#filename
004C E0                MOVX    A,@DPTR
004D FB                MOV     R3,A
004E A3                INC     DPTR
004F E0                MOVX    A,@DPTR
0050 FA                MOV     R2,A
0051 A3                INC     DPTR
0052 E0                MOVX    A,@DPTR
0053 F9                MOV     R1,A
0054 120000      E     LCALL   _FAT32FindDIREntry
0057 900000      R     MOV     DPTR,#j
005A EF                MOV     A,R7
005B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 18
005C C3                CLR     C
005D 9410              SUBB    A,#010H
005F 4003              JC      $ + 5H
0061 020000      R     LJMP    ?C0006
                                           ; SOURCE LINE # 19
                                           ; SOURCE LINE # 20
0064 900000      R     MOV     DPTR,#i
0067 E0                MOVX    A,@DPTR
0068 75F020            MOV     B,#020H
006B A4                MUL     AB
006C 2400        E     ADD     A,#LOW FCB
006E F9                MOV     R1,A
006F 7400        E     MOV     A,#HIGH FCB
0071 35F0              ADDC    A,B
0073 A801              MOV     R0,AR1
0075 FC                MOV     R4,A
0076 7D01              MOV     R5,#01H
0078 900000      R     MOV     DPTR,#filename
007B E0                MOVX    A,@DPTR
007C FB                MOV     R3,A
007D A3                INC     DPTR
007E E0                MOVX    A,@DPTR
007F FA                MOV     R2,A
0080 A3                INC     DPTR
0081 E0                MOVX    A,@DPTR
0082 F9                MOV     R1,A
0083 120000      E     LCALL   ?C?STRCPY
                                           ; SOURCE LINE # 21
0086 900000      R     MOV     DPTR,#j
0089 E0                MOVX    A,@DPTR
008A 75F020            MOV     B,#020H
008D A4                MUL     AB
008E FF                MOV     R7,A
008F 900000      E     MOV     DPTR,#sDIR
0092 E0                MOVX    A,@DPTR
0093 FB                MOV     R3,A
0094 A3                INC     DPTR
0095 E0                MOVX    A,@DPTR
0096 FA                MOV     R2,A
0097 A3                INC     DPTR
0098 E0                MOVX    A,@DPTR
0099 2F                ADD     A,R7
009A F9                MOV     R1,A
C51 COMPILER V8.08   FAT32OPENFILE                                                         06/01/2008 16:21:01 PAGE 14  

009B EA                MOV     A,R2
009C 35F0              ADDC    A,B
009E FA                MOV     R2,A
009F 90001C            MOV     DPTR,#01CH
00A2 120000      E     LCALL   ?C?LLDOPTR
00A5 120000      E     LCALL   _MEMSwap32
00A8 900000      R     MOV     DPTR,#i
00AB E0                MOVX    A,@DPTR
00AC C4                SWAP    A
00AD 33                RLC     A
00AE 54E0              ANL     A,#0E0H
00B0 2400        E     ADD     A,#LOW FCB+0CH
00B2 F582              MOV     DPL,A
00B4 E4                CLR     A
00B5 3400        E     ADDC    A,#HIGH FCB+0CH
00B7 F583              MOV     DPH,A
00B9 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 22
00BC 900000      R     MOV     DPTR,#j
00BF E0                MOVX    A,@DPTR
00C0 75F020            MOV     B,#020H
00C3 A4                MUL     AB
00C4 FF                MOV     R7,A
00C5 900000      E     MOV     DPTR,#sDIR
00C8 E0                MOVX    A,@DPTR
00C9 FB                MOV     R3,A
00CA A3                INC     DPTR
00CB E0                MOVX    A,@DPTR
00CC FA                MOV     R2,A
00CD A3                INC     DPTR
00CE E0                MOVX    A,@DPTR
00CF 2F                ADD     A,R7
00D0 F9                MOV     R1,A
00D1 EA                MOV     A,R2
00D2 35F0              ADDC    A,B
00D4 FA                MOV     R2,A
00D5 900014            MOV     DPTR,#014H
00D8 120000      E     LCALL   ?C?ILDOPTR
00DB FF                MOV     R7,A
00DC AEF0              MOV     R6,B
00DE 120000      E     LCALL   _MEMSwap16
00E1 900000      R     MOV     DPTR,#i
00E4 E0                MOVX    A,@DPTR
00E5 C4                SWAP    A
00E6 33                RLC     A
00E7 54E0              ANL     A,#0E0H
00E9 2400        E     ADD     A,#LOW FCB+010H
00EB F582              MOV     DPL,A
00ED E4                CLR     A
00EE 3400        E     ADDC    A,#HIGH FCB+010H
00F0 F583              MOV     DPH,A
00F2 EE                MOV     A,R6
00F3 F0                MOVX    @DPTR,A
00F4 A3                INC     DPTR
00F5 EF                MOV     A,R7

⌨️ 快捷键说明

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