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

📄 fat32mountvolumeid.lst

📁 C51实现的FAT32文件系统
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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          BYTE FAT32MountVolumeID(BYTE Partition);
   6          
   7          BYTE FAT32MountVolumeID(BYTE Partition)
   8          {
   9   1              register BYTE i;
  10   1      
  11   1              #ifdef DEBUG
                              printf("Mount FAT32 volume ID...%bd\n",Partition);
                      #endif
  14   1      
  15   1              if (Partition>=HDD.TotalPartitions) return(FAT32_ERR_PARTITION_NOT_FOUND);      //没找到指定扇区
  16   1      
  17   1              IDEReadSector(sDPT[Partition].LBABegin);                //读FAT32 VolumeID扇区
  18   1              //检查VolumeID扇区标记
  19   1              if (DiskBuffer[510] != 0x55||DiskBuffer[511] != 0xaa)
C51 COMPILER V6.23a  FAT32MOUNTVOLUMEID                                                    12/24/2004 00:11:02 PAGE 11  

  20   1                      return(FAT32_ERR_MBR_FLAG);                     //不正常的引导扇区标志
  21   1      
  22   1              //检查分区类型
  23   1              HDD.CurrentPartition = Partition;                                                       //当前分区号
  24   1      //      HDD.BytesPerSec = BOOTSEC->BPB_BytesPerSec;                                     //每扇区字节数
  25   1              FAT32.SecPerClus = BOOTSEC->BPB_SecPerClus;                                     //每簇扇区数
  26   1              FAT32.RsvdSecCnt = MEMSwap16(BOOTSEC->BPB_RsvdSecCnt);          //保留扇区数
  27   1              FAT32.NumFATs = BOOTSEC->BPB_NumFATs;                                           //FAT表个数
  28   1              FAT32.FATSz = MEMSwap32(BOOTSEC->FAT.F32.BPB_FATSz32);          //FAT表达小(扇区)
  29   1              FAT32.RootClus = MEMSwap32(BOOTSEC->FAT.F32.BPB_RootClus);      //根目录簇号
  30   1              FAT32.CurrentDirectory = FAT32.RootClus;                                        //当前目录入口(簇号)
  31   1              FAT32.FATSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt;          //FAT表开始的扇区号
  32   1              FAT32.ClusSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt + (FAT32.NumFATs * FAT32.FATSz);         
             -//簇开始的扇区
  33   1              FAT32.FSISec = MEMSwap16(BOOTSEC->FAT.F32.BPB_FSInfo) + sDPT[Partition].LBABegin;               //FAT32扩展信息扇区号
  34   1      
  35   1              //加载第一个FAT表
  36   1              IDEReadSector(FAT32.FATSec);
  37   1              for(i=0;i<128;i++)                              
  38   1                      FAT.FAT[i]=((DWORD *)&DiskBuffer)[i];
  39   1              FAT.Sector=0;
  40   1              return(0);
  41   1      }
C51 COMPILER V6.23a  FAT32MOUNTVOLUMEID                                                    12/24/2004 00:11:02 PAGE 12  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _FAT32MountVolumeID (BEGIN)
                                           ; SOURCE LINE # 7
0000 900000      R     MOV     DPTR,#Partition
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 8
                                           ; SOURCE LINE # 15
0005 900000      E     MOV     DPTR,#HDD
0008 E0                MOVX    A,@DPTR
0009 FE                MOV     R6,A
000A EF                MOV     A,R7
000B C3                CLR     C
000C 9E                SUBB    A,R6
000D 4003              JC      ?C0001
000F 7F02              MOV     R7,#02H
0011 22                RET     
0012         ?C0001:
                                           ; SOURCE LINE # 17
0012 900000      R     MOV     DPTR,#Partition
0015 E0                MOVX    A,@DPTR
0016 75F009            MOV     B,#09H
0019 A4                MUL     AB
001A 2400        E     ADD     A,#LOW sDPT+01H
001C F582              MOV     DPL,A
001E E4                CLR     A
001F 3400        E     ADDC    A,#HIGH sDPT+01H
0021 F583              MOV     DPH,A
0023 E0                MOVX    A,@DPTR
0024 FC                MOV     R4,A
0025 A3                INC     DPTR
0026 E0                MOVX    A,@DPTR
0027 FD                MOV     R5,A
0028 A3                INC     DPTR
0029 E0                MOVX    A,@DPTR
002A FE                MOV     R6,A
002B A3                INC     DPTR
002C E0                MOVX    A,@DPTR
002D FF                MOV     R7,A
002E 900000      E     MOV     DPTR,#IDE+02H
0031 120000      E     LCALL   ?C?LSTXDATA
0034 120000      E     LCALL   _IDEReadSector
                                           ; SOURCE LINE # 19
0037 900000      E     MOV     DPTR,#DiskBuffer+01FEH
003A E0                MOVX    A,@DPTR
003B B45506            CJNE    A,#055H,?C0004
003E A3                INC     DPTR
003F E0                MOVX    A,@DPTR
0040 64AA              XRL     A,#0AAH
0042 6003              JZ      ?C0003
0044         ?C0004:
                                           ; SOURCE LINE # 20
0044 7F01              MOV     R7,#01H
0046 22                RET     
0047         ?C0003:
                                           ; SOURCE LINE # 23
0047 900000      R     MOV     DPTR,#Partition
004A E0                MOVX    A,@DPTR
004B 900000      E     MOV     DPTR,#HDD+01H
004E F0                MOVX    @DPTR,A
C51 COMPILER V6.23a  FAT32MOUNTVOLUMEID                                                    12/24/2004 00:11:02 PAGE 13  

                                           ; SOURCE LINE # 25
004F 900000      E     MOV     DPTR,#BOOTSEC
0052 E0                MOVX    A,@DPTR
0053 FB                MOV     R3,A
0054 A3                INC     DPTR
0055 E0                MOVX    A,@DPTR
0056 FA                MOV     R2,A
0057 A3                INC     DPTR
0058 E0                MOVX    A,@DPTR
0059 F9                MOV     R1,A
005A 90000D            MOV     DPTR,#0DH
005D 120000      E     LCALL   ?C?CLDOPTR
0060 900000      E     MOV     DPTR,#FAT32+05H
0063 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 26
0064 90000E            MOV     DPTR,#0EH
0067 120000      E     LCALL   ?C?ILDOPTR
006A FF                MOV     R7,A
006B AEF0              MOV     R6,B
006D 120000      E     LCALL   _MEMSwap16
0070 900000      E     MOV     DPTR,#FAT32+06H
0073 EE                MOV     A,R6
0074 F0                MOVX    @DPTR,A
0075 A3                INC     DPTR
0076 EF                MOV     A,R7
0077 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 27
0078 900000      E     MOV     DPTR,#BOOTSEC
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 900010            MOV     DPTR,#010H
0086 120000      E     LCALL   ?C?CLDOPTR
0089 900000      E     MOV     DPTR,#FAT32+08H
008C F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 28
008D 900024            MOV     DPTR,#024H
0090 120000      E     LCALL   ?C?LLDOPTR
0093 120000      E     LCALL   _MEMSwap32
0096 900000      E     MOV     DPTR,#FAT32+011H
0099 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 29
009C 900000      E     MOV     DPTR,#BOOTSEC
009F E0                MOVX    A,@DPTR
00A0 FB                MOV     R3,A
00A1 A3                INC     DPTR
00A2 E0                MOVX    A,@DPTR
00A3 FA                MOV     R2,A
00A4 A3                INC     DPTR
00A5 E0                MOVX    A,@DPTR
00A6 F9                MOV     R1,A
00A7 90002C            MOV     DPTR,#02CH
00AA 120000      E     LCALL   ?C?LLDOPTR
00AD 120000      E     LCALL   _MEMSwap32
00B0 900000      E     MOV     DPTR,#FAT32+09H
00B3 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 30
C51 COMPILER V6.23a  FAT32MOUNTVOLUMEID                                                    12/24/2004 00:11:02 PAGE 14  

00B6 900000      E     MOV     DPTR,#FAT32+09H
00B9 E0                MOVX    A,@DPTR
00BA FC                MOV     R4,A
00BB A3                INC     DPTR
00BC E0                MOVX    A,@DPTR
00BD FD                MOV     R5,A
00BE A3                INC     DPTR
00BF E0                MOVX    A,@DPTR
00C0 FE                MOV     R6,A
00C1 A3                INC     DPTR
00C2 E0                MOVX    A,@DPTR
00C3 FF                MOV     R7,A
00C4 900000      E     MOV     DPTR,#FAT32+01H
00C7 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 31
00CA 900000      E     MOV     DPTR,#FAT32+06H
00CD E0                MOVX    A,@DPTR
00CE FE                MOV     R6,A
00CF A3                INC     DPTR
00D0 E0                MOVX    A,@DPTR
00D1 FF                MOV     R7,A
00D2 E4                CLR     A
00D3 FC                MOV     R4,A
00D4 FD                MOV     R5,A
00D5 900000      E     MOV     DPTR,#HDD+01H
00D8 E0                MOVX    A,@DPTR
00D9 75F009            MOV     B,#09H
00DC A4                MUL     AB
00DD 2400        E     ADD     A,#LOW sDPT+01H
00DF F582              MOV     DPL,A
00E1 E4                CLR     A
00E2 3400        E     ADDC    A,#HIGH sDPT+01H
00E4 F583              MOV     DPH,A
00E6 E0                MOVX    A,@DPTR
00E7 F8                MOV     R0,A
00E8 A3                INC     DPTR
00E9 E0                MOVX    A,@DPTR
00EA F9                MOV     R1,A
00EB A3                INC     DPTR
00EC E0                MOVX    A,@DPTR
00ED FA                MOV     R2,A
00EE A3                INC     DPTR
00EF E0                MOVX    A,@DPTR
00F0 2F                ADD     A,R7
00F1 FF                MOV     R7,A
00F2 EA                MOV     A,R2
00F3 3E                ADDC    A,R6
00F4 FE                MOV     R6,A
00F5 ED                MOV     A,R5
00F6 39                ADDC    A,R1
00F7 FD                MOV     R5,A
00F8 EC                MOV     A,R4
00F9 38                ADDC    A,R0
00FA FC                MOV     R4,A
00FB 900000      E     MOV     DPTR,#FAT32+015H
00FE 120000      E     LCALL   ?C?LSTXDATA
                                           ; SOURCE LINE # 32
0101 900000      E     MOV     DPTR,#FAT32+08H
0104 E0                MOVX    A,@DPTR
0105 FF                MOV     R7,A
0106 E4                CLR     A
0107 FC                MOV     R4,A
C51 COMPILER V6.23a  FAT32MOUNTVOLUMEID                                                    12/24/2004 00:11:02 PAGE 15  

0108 FD                MOV     R5,A
0109 FE                MOV     R6,A
010A 900000      E     MOV     DPTR,#FAT32+011H
010D E0                MOVX    A,@DPTR
010E F8                MOV     R0,A
010F A3                INC     DPTR
0110 E0                MOVX    A,@DPTR
0111 F9                MOV     R1,A
0112 A3                INC     DPTR
0113 E0                MOVX    A,@DPTR
0114 FA                MOV     R2,A
0115 A3                INC     DPTR
0116 E0                MOVX    A,@DPTR
0117 FB                MOV     R3,A
0118 120000      E     LCALL   ?C?LMUL
011B C004              PUSH    AR4
011D C005              PUSH    AR5
011F C006              PUSH    AR6
0121 AB07              MOV     R3,AR7
0123 900000      E     MOV     DPTR,#FAT32+06H
0126 E0                MOVX    A,@DPTR
0127 FE                MOV     R6,A
0128 A3                INC     DPTR
0129 E0                MOVX    A,@DPTR
012A FF                MOV     R7,A
012B E4                CLR     A
012C FC                MOV     R4,A
012D FD                MOV     R5,A
012E 900000      E     MOV     DPTR,#HDD+01H
0131 E0                MOVX    A,@DPTR
0132 75F009            MOV     B,#09H
0135 A4                MUL     AB
0136 2400        E     ADD     A,#LOW sDPT+01H
0138 F582              MOV     DPL,A
013A E4                CLR     A
013B 3400        E     ADDC    A,#HIGH sDPT+01H
013D F583              MOV     DPH,A
013F E0                MOVX    A,@DPTR
0140 F8                MOV     R0,A
0141 A3                INC     DPTR
0142 E0                MOVX    A,@DPTR
0143 F9                MOV     R1,A
0144 A3                INC     DPTR
0145 E0                MOVX    A,@DPTR
0146 FA                MOV     R2,A
0147 A3                INC     DPTR
0148 E0                MOVX    A,@DPTR
0149 2F                ADD     A,R7
014A FF                MOV     R7,A
014B EA                MOV     A,R2
014C 3E                ADDC    A,R6
014D FE                MOV     R6,A
014E ED                MOV     A,R5
014F 39                ADDC    A,R1
0150 FD                MOV     R5,A
0151 EC                MOV     A,R4
0152 38                ADDC    A,R0
0153 FC                MOV     R4,A
0154 D002              POP     AR2

⌨️ 快捷键说明

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