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

📄 fat32readfile.lst

📁 C51实现的FAT32文件系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
           =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);
 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          WORD FAT32ReadFile(BYTE fp);
   6          
   7          WORD FAT32ReadFile(BYTE fp)
   8          {
   9   1              register WORD tmp;
  10   1      
  11   1              if (FCB[fp].ByteCnt==FCB[fp].Size) return(0);
  12   1              else
  13   1              {
  14   2                      FCB[fp].ByteCnt+=IDE.BytesPerSec;
  15   2                      if (FCB[fp].ByteCnt<=FCB[fp].Size) tmp=IDE.BytesPerSec;
  16   2                      else
  17   2                      {
  18   3                              FCB[fp].ByteCnt-=IDE.BytesPerSec;
  19   3                              tmp=FCB[fp].Size-FCB[fp].ByteCnt;
C51 COMPILER V6.23a  FAT32READFILE                                                         12/24/2004 00:11:04 PAGE 11  

  20   3                              FCB[fp].ByteCnt=FCB[fp].Size;
  21   3                      }
  22   2      
  23   2                      if (FCB[fp].ClusSecCnt==FAT32.SecPerClus)                       //读下一簇
  24   2                      {
  25   3                              FCB[fp].LastCluster=FAT32NextCluster(FCB[fp].LastCluster);
  26   3                              if (FCB[fp].LastCluster==0x0fffffff) return(0);
  27   3                              IDEReadSector(ClusterToSector(FCB[fp].LastCluster));
  28   3                              FCB[fp].ClusSecCnt=1;
  29   3                      }
  30   2                      else if (FCB[fp].ClusSecCnt==0)                                 //读第一簇
  31   2                      {
  32   3                              IDEReadSector(ClusterToSector(FCB[fp].LastCluster));
  33   3                              FCB[fp].ClusSecCnt++;
  34   3                      }
  35   2                      else                                                                            //读当前簇下一扇区
  36   2                      {
  37   3                              IDEReadSector(ClusterToSector(FCB[fp].LastCluster)+FCB[fp].ClusSecCnt);
  38   3                              FCB[fp].ClusSecCnt++;
  39   3                      }
  40   2              }
  41   1              return(tmp);
  42   1      }
C51 COMPILER V6.23a  FAT32READFILE                                                         12/24/2004 00:11:04 PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _FAT32ReadFile (BEGIN)
                                           ; SOURCE LINE # 7
0000 900000      R     MOV     DPTR,#fp
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 8
                                           ; SOURCE LINE # 11
0005 C4                SWAP    A
0006 33                RLC     A
0007 54E0              ANL     A,#0E0H
0009 2400        E     ADD     A,#LOW FCB+0CH
000B F582              MOV     DPL,A
000D E4                CLR     A
000E 3400        E     ADDC    A,#HIGH FCB+0CH
0010 F583              MOV     DPH,A
0012 E0                MOVX    A,@DPTR
0013 F8                MOV     R0,A
0014 A3                INC     DPTR
0015 E0                MOVX    A,@DPTR
0016 F9                MOV     R1,A
0017 A3                INC     DPTR
0018 E0                MOVX    A,@DPTR
0019 FA                MOV     R2,A
001A A3                INC     DPTR
001B E0                MOVX    A,@DPTR
001C FB                MOV     R3,A
001D EF                MOV     A,R7
001E C4                SWAP    A
001F 33                RLC     A
0020 54E0              ANL     A,#0E0H
0022 2400        E     ADD     A,#LOW FCB+01CH
0024 F582              MOV     DPL,A
0026 E4                CLR     A
0027 3400        E     ADDC    A,#HIGH FCB+01CH
0029 F583              MOV     DPH,A
002B E0                MOVX    A,@DPTR
002C FC                MOV     R4,A
002D A3                INC     DPTR
002E E0                MOVX    A,@DPTR
002F FD                MOV     R5,A
0030 A3                INC     DPTR
0031 E0                MOVX    A,@DPTR
0032 FE                MOV     R6,A
0033 A3                INC     DPTR
0034 E0                MOVX    A,@DPTR
0035 FF                MOV     R7,A
0036 C3                CLR     C
0037 120000      E     LCALL   ?C?ULCMP
003A 7003              JNZ     ?C0001
003C FE                MOV     R6,A
003D FF                MOV     R7,A
003E 22                RET     
003F         ?C0001:
                                           ; SOURCE LINE # 13
                                           ; SOURCE LINE # 14
003F 900000      R     MOV     DPTR,#fp
0042 E0                MOVX    A,@DPTR
0043 C4                SWAP    A
0044 33                RLC     A
C51 COMPILER V6.23a  FAT32READFILE                                                         12/24/2004 00:11:04 PAGE 13  

0045 54E0              ANL     A,#0E0H
0047 2400        E     ADD     A,#LOW FCB+01CH
0049 F582              MOV     DPL,A
004B E4                CLR     A
004C 3400        E     ADDC    A,#HIGH FCB+01CH
004E F583              MOV     DPH,A
0050 C083              PUSH    DPH
0052 C082              PUSH    DPL
0054 E0                MOVX    A,@DPTR
0055 F8                MOV     R0,A
0056 A3                INC     DPTR
0057 E0                MOVX    A,@DPTR
0058 F9                MOV     R1,A
0059 A3                INC     DPTR
005A E0                MOVX    A,@DPTR
005B FA                MOV     R2,A
005C A3                INC     DPTR
005D E0                MOVX    A,@DPTR
005E FB                MOV     R3,A
005F 900000      E     MOV     DPTR,#IDE+06H
0062 E0                MOVX    A,@DPTR
0063 FE                MOV     R6,A
0064 A3                INC     DPTR
0065 E0                MOVX    A,@DPTR
0066 FF                MOV     R7,A
0067 E4                CLR     A
0068 FC                MOV     R4,A
0069 FD                MOV     R5,A
006A EB                MOV     A,R3
006B 2F                ADD     A,R7
006C FF                MOV     R7,A
006D EA                MOV     A,R2
006E 3E                ADDC    A,R6
006F FE                MOV     R6,A
0070 ED                MOV     A,R5
0071 39                ADDC    A,R1
0072 FD                MOV     R5,A
0073 EC                MOV     A,R4
0074 38                ADDC    A,R0
0075 FC                MOV     R4,A
0076 D082              POP     DPL
0078 D083              POP     DPH
007A 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 15
007D 900000      R     MOV     DPTR,#fp
0080 E0                MOVX    A,@DPTR
0081 FF                MOV     R7,A
0082 C4                SWAP    A
0083 33                RLC     A
0084 54E0              ANL     A,#0E0H
0086 2400        E     ADD     A,#LOW FCB+0CH
0088 F582              MOV     DPL,A
008A E4                CLR     A
008B 3400        E     ADDC    A,#HIGH FCB+0CH
008D F583              MOV     DPH,A
008F E0                MOVX    A,@DPTR
0090 F8                MOV     R0,A
0091 A3                INC     DPTR
0092 E0                MOVX    A,@DPTR
0093 F9                MOV     R1,A
0094 A3                INC     DPTR
0095 E0                MOVX    A,@DPTR
C51 COMPILER V6.23a  FAT32READFILE                                                         12/24/2004 00:11:04 PAGE 14  

0096 FA                MOV     R2,A
0097 A3                INC     DPTR
0098 E0                MOVX    A,@DPTR
0099 FB                MOV     R3,A
009A EF                MOV     A,R7
009B C4                SWAP    A
009C 33                RLC     A
009D 54E0              ANL     A,#0E0H
009F 2400        E     ADD     A,#LOW FCB+01CH
00A1 F582              MOV     DPL,A
00A3 E4                CLR     A
00A4 3400        E     ADDC    A,#HIGH FCB+01CH
00A6 F583              MOV     DPH,A
00A8 E0                MOVX    A,@DPTR
00A9 FC                MOV     R4,A
00AA A3                INC     DPTR
00AB E0                MOVX    A,@DPTR
00AC FD                MOV     R5,A
00AD A3                INC     DPTR
00AE E0                MOVX    A,@DPTR
00AF FE                MOV     R6,A
00B0 A3                INC     DPTR
00B1 E0                MOVX    A,@DPTR
00B2 FF                MOV     R7,A
00B3 C3                CLR     C
00B4 120000      E     LCALL   ?C?ULCMP
00B7 4012              JC      ?C0004
00B9 900000      E     MOV     DPTR,#IDE+06H
00BC E0                MOVX    A,@DPTR
00BD FF                MOV     R7,A
00BE A3                INC     DPTR
00BF E0                MOVX    A,@DPTR
00C0 900000      R     MOV     DPTR,#tmp
00C3 CF                XCH     A,R7
00C4 F0                MOVX    @DPTR,A
00C5 A3                INC     DPTR
00C6 EF                MOV     A,R7
00C7 F0                MOVX    @DPTR,A
00C8 020000      R     LJMP    ?C0005
00CB         ?C0004:
                                           ; SOURCE LINE # 17
                                           ; SOURCE LINE # 18
00CB 900000      R     MOV     DPTR,#fp
00CE E0                MOVX    A,@DPTR
00CF C4                SWAP    A
00D0 33                RLC     A
00D1 54E0              ANL     A,#0E0H
00D3 2400        E     ADD     A,#LOW FCB+01CH
00D5 F582              MOV     DPL,A
00D7 E4                CLR     A
00D8 3400        E     ADDC    A,#HIGH FCB+01CH
00DA F583              MOV     DPH,A
00DC C083              PUSH    DPH
00DE C082              PUSH    DPL
00E0 E0                MOVX    A,@DPTR
00E1 FC                MOV     R4,A
00E2 A3                INC     DPTR
00E3 E0                MOVX    A,@DPTR
00E4 FD                MOV     R5,A
00E5 A3                INC     DPTR
00E6 E0                MOVX    A,@DPTR
00E7 FE                MOV     R6,A
C51 COMPILER V6.23a  FAT32READFILE                                                         12/24/2004 00:11:04 PAGE 15  

00E8 A3                INC     DPTR
00E9 E0                MOVX    A,@DPTR
00EA FF                MOV     R7,A
00EB C004              PUSH    AR4
00ED C005              PUSH    AR5
00EF C006              PUSH    AR6
00F1 C007              PUSH    AR7
00F3 900000      E     MOV     DPTR,#IDE+06H
00F6 E0                MOVX    A,@DPTR
00F7 FE                MOV     R6,A
00F8 A3                INC     DPTR

⌨️ 快捷键说明

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