disk.lis

来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 1,577 行 · 第 1/5 页

LIS
1,577
字号
 076E F001              movw R30,R0
 0770 80E0              ldi R24,<_DiskInfo+2
 0772 90E0              ldi R25,>_DiskInfo+2
 0774 E80F              add R30,R24
 0776 F91F              adc R31,R25
 0778 2080              ldd R2,z+0
 077A 3324              clr R3
 077C 4424              clr R4
 077E 5524              clr R5
 0780 FE01              movw R30,R28
 0782 6280              ldd R6,z+2
 0784 7380              ldd R7,z+3
 0786 8480              ldd R8,z+4
 0788 9580              ldd R9,z+5
 078A 5A92              st -y,R5
 078C 4A92              st -y,R4
 078E 3A92              st -y,R3
 0790 2A92              st -y,R2
 0792 8301              movw R16,R6
 0794 9401              movw R18,R8
 0796 0E940000          xcall div32u
 079A FE01              movw R30,R28
 079C 0283              std z+2,R16
 079E 1383              std z+3,R17
 07A0 2483              std z+4,R18
 07A2 3583              std z+5,R19
 07A4           ;                 DiskInfo[i].ClusPerData=temp1 ;
 07A4 8EE2              ldi R24,46
 07A6 8A9D              mul R24,R10
 07A8 F001              movw R30,R0
 07AA 80E0              ldi R24,<_DiskInfo+32
 07AC 90E0              ldi R25,>_DiskInfo+32
 07AE E80F              add R30,R24
 07B0 F91F              adc R31,R25
 07B2 DE01              movw R26,R28
 07B4 1296              adiw R26,2
 07B6 2D90              ld R2,x+
 07B8 3D90              ld R3,x+
 07BA 4D90              ld R4,x+
 07BC 5C90              ld R5,x
 07BE 2082              std z+0,R2
 07C0 3182              std z+1,R3
 07C2 4282              std z+2,R4
 07C4 5382              std z+3,R5
 07C6           ;            
 07C6           ;               /* 判断是FAT12、FAT16还是FAT32 */
 07C6           ;                 if(temp1<4085)
 07C6 45EF              ldi R20,245
 07C8 5FE0              ldi R21,15
 07CA 60E0              ldi R22,0
 07CC 70E0              ldi R23,0
 07CE FE01              movw R30,R28
 07D0 2280              ldd R2,z+2
 07D2 3380              ldd R3,z+3
 07D4 4480              ldd R4,z+4
 07D6 5580              ldd R5,z+5
 07D8 2416              cp R2,R20
 07DA 3506              cpc R3,R21
 07DC 4606              cpc R4,R22
 07DE 5706              cpc R5,R23
 07E0 70F4              brsh L91
 07E2           ;                 {
 07E2           ;                   DiskInfo[i].FATType=FAT12 ;
 07E2 8EE2              ldi R24,46
 07E4 8A9D              mul R24,R10
 07E6 F001              movw R30,R0
 07E8 80E0              ldi R24,<_DiskInfo+1
 07EA 90E0              ldi R25,>_DiskInfo+1
 07EC E80F              add R30,R24
 07EE F91F              adc R31,R25
 07F0 2224              clr R2
 07F2 2082              std z+0,R2
 07F4           ;                   #if FS_DEBUG_EN
 07F4           ;                   #if USART1_EN
 07F4           ;                       Uart1_SendString("\n10.File System is FAT12\n");//调试用 
 07F4 00E0              ldi R16,<L94
 07F6 10E0              ldi R17,>L94
 07F8 0E940000          xcall _Uart1_SendString
 07FC           ;                   #endif
 07FC           ;                   #endif
 07FC           ;                 }
 07FC 8BC0              xjmp L92
 07FE           L91:
 07FE           ;                 else if(temp1<65525)
 07FE 45EF              ldi R20,245
 0800 5FEF              ldi R21,255
 0802 60E0              ldi R22,0
 0804 70E0              ldi R23,0
 0806 FE01              movw R30,R28
 0808 2280              ldd R2,z+2
 080A 3380              ldd R3,z+3
 080C 4480              ldd R4,z+4
 080E 5580              ldd R5,z+5
 0810 2416              cp R2,R20
 0812 3506              cpc R3,R21
 0814 4606              cpc R4,R22
 0816 5706              cpc R5,R23
 0818 70F4              brsh L95
 081A           ;                 {
 081A           ;                   DiskInfo[i].FATType=FAT16 ;
 081A 8EE2              ldi R24,46
 081C 8A9D              mul R24,R10
 081E F001              movw R30,R0
 0820 80E0              ldi R24,<_DiskInfo+1
 0822 90E0              ldi R25,>_DiskInfo+1
 0824 E80F              add R30,R24
 0826 F91F              adc R31,R25
 0828 81E0              ldi R24,1
 082A 8083              std z+0,R24
 082C           ;                   #if FS_DEBUG_EN
 082C           ;                   #if USART1_EN
 082C           ;                       Uart1_SendString("\n10.File System is FAT16\n");//调试用 
 082C 00E0              ldi R16,<L98
 082E 10E0              ldi R17,>L98
 0830 0E940000          xcall _Uart1_SendString
 0834           ;                   #endif 
 0834           ;                   #endif
 0834           ;                 }
 0834 6FC0              xjmp L96
 0836           L95:
 0836           ;                 else 
 0836           ;                 {
 0836           ; 	            DiskInfo[i].FATType=FAT32 ;
 0836 8EE2              ldi R24,46
 0838 8A9D              mul R24,R10
 083A F001              movw R30,R0
 083C 80E0              ldi R24,<_DiskInfo+1
 083E 90E0              ldi R25,>_DiskInfo+1
 0840 E80F              add R30,R24
 0842 F91F              adc R31,R25
 0844 82E0              ldi R24,2
 0846 8083              std z+0,R24
 0848           ;                   #if FS_DEBUG_EN
 0848           ;                   //#if USART1_EN
 0848           ;                       Uart1_SendString("\n10.File System is FAT32\n");//调试用 
 0848 00E0              ldi R16,<L100
 084A 10E0              ldi R17,>L100
 084C 0E940000          xcall _Uart1_SendString
 0850           ;                   //#endif
 0850           ;                   #endif
 0850           ;       
 0850           ;                     /* FAT32 RootDirTable为开始簇号 */
 0850           ;                     DiskInfo[i].RootDirTable= ((INT32U)Buf[45]<<8)+Buf[44];
 0850 88E0              ldi R24,8
 0852 90E0              ldi R25,0
 0854 F701              movw R30,R14
 0856 25A4              ldd R2,z+45
 0858 3324              clr R3
 085A 4424              clr R4
 085C 5524              clr R5
 085E 8A93              st -y,R24
 0860 8101              movw R16,R2
 0862 9201              movw R18,R4
 0864 0E940000          xcall lsl32
 0868 1801              movw R2,R16
 086A 2901              movw R4,R18
 086C F701              movw R30,R14
 086E 64A4              ldd R6,z+44
 0870 7724              clr R7
 0872 8824              clr R8
 0874 9924              clr R9
 0876 260C              add R2,R6
 0878 371C              adc R3,R7
 087A 481C              adc R4,R8
 087C 591C              adc R5,R9
 087E 8EE2              ldi R24,46
 0880 8A9D              mul R24,R10
 0882 F001              movw R30,R0
 0884 80E0              ldi R24,<_DiskInfo+20
 0886 90E0              ldi R25,>_DiskInfo+20
 0888 E80F              add R30,R24
 088A F91F              adc R31,R25
 088C 2082              std z+0,R2
 088E 3182              std z+1,R3
 0890 4282              std z+2,R4
 0892 5382              std z+3,R5
 0894           ;                     DiskInfo[i].RootDirTable|=(((INT32U)Buf[46]<<16)+((INT32U)Buf[47]<<24));
 0894 8EE2              ldi R24,46
 0896 8A9D              mul R24,R10
 0898 1001              movw R2,R0
 089A 80E0              ldi R24,<_DiskInfo+20
 089C 90E0              ldi R25,>_DiskInfo+20
 089E 280E              add R2,R24
 08A0 391E              adc R3,R25
 08A2 88E1              ldi R24,24
 08A4 90E0              ldi R25,0
 08A6 F701              movw R30,R14
 08A8 47A4              ldd R4,z+47
 08AA 5524              clr R5
 08AC 6624              clr R6
 08AE 7724              clr R7
 08B0 8A93              st -y,R24
 08B2 8201              movw R16,R4
 08B4 9301              movw R18,R6
 08B6 0E940000          xcall lsl32
 08BA F701              movw R30,R14
 08BC 46A4              ldd R4,z+46
 08BE 5524              clr R5
 08C0 6624              clr R6
 08C2 7724              clr R7
 08C4 3201              movw R6,R4
 08C6 4424              clr R4
 08C8 5524              clr R5
 08CA 400E              add R4,R16
 08CC 511E              adc R5,R17
 08CE 621E              adc R6,R18
 08D0 731E              adc R7,R19
 08D2 F101              movw R30,R2
 08D4 4081              ldd R20,z+0
 08D6 5181              ldd R21,z+1
 08D8 6281              ldd R22,z+2
 08DA 7381              ldd R23,z+3
 08DC 4429              or R20,R4
 08DE 5529              or R21,R5
 08E0 6629              or R22,R6
 08E2 7729              or R23,R7
 08E4 4083              std z+0,R20
 08E6 5183              std z+1,R21
 08E8 6283              std z+2,R22
 08EA 7383              std z+3,R23
 08EC           ;                     DiskInfo[i].PathClusIndex=DiskInfo[i].RootDirTable ;
 08EC 8EE2              ldi R24,46
 08EE 8A9D              mul R24,R10
 08F0 80E0              ldi R24,<_DiskInfo+20
 08F2 90E0              ldi R25,>_DiskInfo+20
 08F4 F001              movw R30,R0
 08F6 E80F              add R30,R24
 08F8 F91F              adc R31,R25
 08FA 2080              ldd R2,z+0
 08FC 3180              ldd R3,z+1
 08FE 4280              ldd R4,z+2
 0900 5380              ldd R5,z+3
 0902 80E0              ldi R24,<_DiskInfo+36
 0904 90E0              ldi R25,>_DiskInfo+36
 0906 F001              movw R30,R0
 0908 E80F              add R30,R24
 090A F91F              adc R31,R25
 090C 2082              std z+0,R2
 090E 3182              std z+1,R3
 0910 4282              std z+2,R4
 0912 5382              std z+3,R5
 0914           ;                 }
 0914           L96:
 0914           L92:
 0914           ; 	    }    
 0914           L42:
 0914           ;             CloseSec(DiskInfo[i].Drive,0);/* 关闭扇区 */
 0914 40E0              ldi R20,0
 0916 50E0              ldi R21,0
 0918 60E0              ldi R22,0
 091A 70E0              ldi R23,0
 091C 6883              std y+0,R22
 091E 7983              std y+1,R23
 0920 9A01              movw R18,R20
 0922 8EE2              ldi R24,46
 0924 8A9D              mul R24,R10
 0926 F001              movw R30,R0
 0928 80E0              ldi R24,<_DiskInfo
 092A 90E0              ldi R25,>_DiskInfo
 092C E80F              add R30,R24
 092E F91F              adc R31,R25
 0930 0081              ldd R16,z+0
 0932 0E940000          xcall _CloseSec
 0936           ;         }
 0936           L40:
 0936           L37:
 0936 A394              inc R10
 0938           L39:
 0938 8A2D              mov R24,R10
 093A 8130              cpi R24,1
 093C 08F4              brsh X7
 093E 6ACC              xjmp L36
 0940           X7:
 0940           L30:
 0940 2696              adiw R28,6
 0942 0E940000          xcall pop_gset5
 0946                   .dbline 0 ; func end
 0946 0895              ret
 0948           ;             Pa -> y+0
 0948           ;          Drive -> R10
                        .even
 0948           _RemoveFileDriver::
 0948 0E940000          xcall push_gset3
 094C A02E              mov R10,R16
 094E 2B97              sbiw R28,11
 0950           ;     }
 0950           ; }
 0950           ; 
 0950           ; /*********************************************************************************************************
 0950           ; ** 函数名称: RemoveFileDriver
 0950           ; ** 功能描述: 删除一个底层驱动程序
 0950           ; ** 输   入: Drive:逻辑驱动器号
 0950           ; ** 输   出: 无
 0950           ; ** 全局变量: DiskInfo
 0950           ; ** 调用模块: 无
 0950           ; ** 作   者: 陈明计
 0950           ; ** 日   期: 2003年9月5日
 0950           ; **-------------------------------------------------------------------------------------------------------
 0950           ; ** 修 改 人: 陈明计
 0950           ; ** 日   期: 2004年4月10日
 0950           ; **------------------------------------------------------------------------------------------------------
 0950           ; ********************************************************************************************************/
 0950           ; void RemoveFileDriver(INT8U Drive)
 0950           ; {
 0950           ;     Disk_RW_Parameter Pa ;
 0950           ;     
 0950           ;     if(Drive<MAX_DRIVES)
 0950 8A2D              mov R24,R10
 0952 8130              cpi R24,1
 0954 08F0              brlo X8
 0956 D1C0              xjmp L106
 0958           X8:
 0958           ;     if(DiskInfo[Drive].Drive!=EMPTY_DRIVE

⌨️ 快捷键说明

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