disk.lis

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

LIS
1,577
字号
 0318 4424              clr R4
 031A 5524              clr R5
 031C 2082              std z+0,R2
 031E 3182              std z+1,R3
 0320 4282              std z+2,R4
 0322 5382              std z+3,R5
 0324           ;                               #if FS_DEBUG_EN
 0324           ;                               #if USART1_EN
 0324           ;                       {
 0324           ;                       Uart1_SendString("\n 3.FATStartSec:");//调试用 ,FAT开始扇区号
 0324 00E0              ldi R16,<L51
 0326 10E0              ldi R17,>L51
 0328 0E940000          xcall _Uart1_SendString
 032C           ;                       PUT_INT32U_DecTOString(DiskInfo[i].FATStartSec);
 032C 8EE2              ldi R24,46
 032E 8A9D              mul R24,R10
 0330 F001              movw R30,R0
 0332 80E0              ldi R24,<_DiskInfo+4
 0334 90E0              ldi R25,>_DiskInfo+4
 0336 E80F              add R30,R24
 0338 F91F              adc R31,R25
 033A 0081              ldd R16,z+0
 033C 1181              ldd R17,z+1
 033E 2281              ldd R18,z+2
 0340 3381              ldd R19,z+3
 0342 0E940000          xcall _PUT_INT32U_DecTOString
 0346           ;                       }
 0346           ;                       #endif
 0346           ;                               #endif
 0346           ;                 
 0346           ;                /* FAT表占用扇区数 */
 0346           ;                 temp=((INT32U)Buf[23]<<8)+Buf[22];
 0346 88E0              ldi R24,8
 0348 90E0              ldi R25,0
 034A F701              movw R30,R14
 034C 2788              ldd R2,z+23
 034E 3324              clr R3
 0350 4424              clr R4
 0352 5524              clr R5
 0354 8A93              st -y,R24
 0356 8101              movw R16,R2
 0358 9201              movw R18,R4
 035A 0E940000          xcall lsl32
 035E 1801              movw R2,R16
 0360 2901              movw R4,R18
 0362 F701              movw R30,R14
 0364 6688              ldd R6,z+22
 0366 7724              clr R7
 0368 8824              clr R8
 036A 9924              clr R9
 036C 260C              add R2,R6
 036E 371C              adc R3,R7
 0370 481C              adc R4,R8
 0372 591C              adc R5,R9
 0374 6101              movw R12,R2
 0376           ;                 if(temp!=0)
 0376 2220              tst R2
 0378 11F4              brne X3
 037A 3320              tst R3
 037C 79F0              breq L53
 037E           X3:
 037E           ;                     DiskInfo[i].FATSecCnt=temp ;
 037E 8EE2              ldi R24,46
 0380 8A9D              mul R24,R10
 0382 F001              movw R30,R0
 0384 80E0              ldi R24,<_DiskInfo+8
 0386 90E0              ldi R25,>_DiskInfo+8
 0388 E80F              add R30,R24
 038A F91F              adc R31,R25
 038C 1601              movw R2,R12
 038E 4424              clr R4
 0390 5524              clr R5
 0392 2082              std z+0,R2
 0394 3182              std z+1,R3
 0396 4282              std z+2,R4
 0398 5382              std z+3,R5
 039A 4EC0              xjmp L54
 039C           L53:
 039C           ;                 else 
 039C           ;                 {
 039C           ;                     DiskInfo[i].FATSecCnt=((INT32U)Buf[37]<<8)+Buf[36];
 039C 88E0              ldi R24,8
 039E 90E0              ldi R25,0
 03A0 F701              movw R30,R14
 03A2 25A0              ldd R2,z+37
 03A4 3324              clr R3
 03A6 4424              clr R4
 03A8 5524              clr R5
 03AA 8A93              st -y,R24
 03AC 8101              movw R16,R2
 03AE 9201              movw R18,R4
 03B0 0E940000          xcall lsl32
 03B4 1801              movw R2,R16
 03B6 2901              movw R4,R18
 03B8 F701              movw R30,R14
 03BA 64A0              ldd R6,z+36
 03BC 7724              clr R7
 03BE 8824              clr R8
 03C0 9924              clr R9
 03C2 260C              add R2,R6
 03C4 371C              adc R3,R7
 03C6 481C              adc R4,R8
 03C8 591C              adc R5,R9
 03CA 8EE2              ldi R24,46
 03CC 8A9D              mul R24,R10
 03CE F001              movw R30,R0
 03D0 80E0              ldi R24,<_DiskInfo+8
 03D2 90E0              ldi R25,>_DiskInfo+8
 03D4 E80F              add R30,R24
 03D6 F91F              adc R31,R25
 03D8 2082              std z+0,R2
 03DA 3182              std z+1,R3
 03DC 4282              std z+2,R4
 03DE 5382              std z+3,R5
 03E0           ;                     DiskInfo[i].FATSecCnt|=(((INT32U)Buf[38]<<16)+((INT32U)Buf[39]<<24));
 03E0 8EE2              ldi R24,46
 03E2 8A9D              mul R24,R10
 03E4 1001              movw R2,R0
 03E6 80E0              ldi R24,<_DiskInfo+8
 03E8 90E0              ldi R25,>_DiskInfo+8
 03EA 280E              add R2,R24
 03EC 391E              adc R3,R25
 03EE 88E1              ldi R24,24
 03F0 90E0              ldi R25,0
 03F2 F701              movw R30,R14
 03F4 47A0              ldd R4,z+39
 03F6 5524              clr R5
 03F8 6624              clr R6
 03FA 7724              clr R7
 03FC 8A93              st -y,R24
 03FE 8201              movw R16,R4
 0400 9301              movw R18,R6
 0402 0E940000          xcall lsl32
 0406 F701              movw R30,R14
 0408 46A0              ldd R4,z+38
 040A 5524              clr R5
 040C 6624              clr R6
 040E 7724              clr R7
 0410 3201              movw R6,R4
 0412 4424              clr R4
 0414 5524              clr R5
 0416 400E              add R4,R16
 0418 511E              adc R5,R17
 041A 621E              adc R6,R18
 041C 731E              adc R7,R19
 041E F101              movw R30,R2
 0420 4081              ldd R20,z+0
 0422 5181              ldd R21,z+1
 0424 6281              ldd R22,z+2
 0426 7381              ldd R23,z+3
 0428 4429              or R20,R4
 042A 5529              or R21,R5
 042C 6629              or R22,R6
 042E 7729              or R23,R7
 0430 4083              std z+0,R20
 0432 5183              std z+1,R21
 0434 6283              std z+2,R22
 0436 7383              std z+3,R23
 0438           ;                 }
 0438           L54:
 0438           ; 		#if FS_DEBUG_EN
 0438           ; 		#if USART1_EN
 0438           ; 	        {
 0438           ; 	            Uart1_SendString("\n 4.FATSecCnt:");//FAT表占用扇区数
 0438 00E0              ldi R16,<L58
 043A 10E0              ldi R17,>L58
 043C 0E940000          xcall _Uart1_SendString
 0440           ;                   PUT_INT32U_DecTOString(DiskInfo[i].FATSecCnt);
 0440 8EE2              ldi R24,46
 0442 8A9D              mul R24,R10
 0444 F001              movw R30,R0
 0446 80E0              ldi R24,<_DiskInfo+8
 0448 90E0              ldi R25,>_DiskInfo+8
 044A E80F              add R30,R24
 044C F91F              adc R31,R25
 044E 0081              ldd R16,z+0
 0450 1181              ldd R17,z+1
 0452 2281              ldd R18,z+2
 0454 3381              ldd R19,z+3
 0456 0E940000          xcall _PUT_INT32U_DecTOString
 045A           ;               }
 045A           ;               #endif
 045A           ;               #endif
 045A           ;               
 045A           ;               /* FAT表个数 */
 045A           ;                 DiskInfo[i].NumFATs=Buf[16];
 045A 8EE2              ldi R24,46
 045C 8A9D              mul R24,R10
 045E F001              movw R30,R0
 0460 80E0              ldi R24,<_DiskInfo+3
 0462 90E0              ldi R25,>_DiskInfo+3
 0464 E80F              add R30,R24
 0466 F91F              adc R31,R25
 0468 D701              movw R26,R14
 046A 5096              adiw R26,16
 046C 2C90              ld R2,x
 046E 2082              std z+0,R2
 0470           ;               #if FS_DEBUG_EN
 0470           ;               #if USART1_EN
 0470           ;               {
 0470           ;                   Uart1_SendString("\n 5.NumFATs:");//调试用 ,FAT表个数
 0470 00E0              ldi R16,<L61
 0472 10E0              ldi R17,>L61
 0474 0E940000          xcall _Uart1_SendString
 0478           ;                   PUT_INT32U_DecTOString(DiskInfo[i].NumFATs);
 0478 8EE2              ldi R24,46
 047A 8A9D              mul R24,R10
 047C F001              movw R30,R0
 047E 80E0              ldi R24,<_DiskInfo+3
 0480 90E0              ldi R25,>_DiskInfo+3
 0482 E80F              add R30,R24
 0484 F91F              adc R31,R25
 0486 2080              ldd R2,z+0
 0488 3324              clr R3
 048A 4424              clr R4
 048C 5524              clr R5
 048E 8101              movw R16,R2
 0490 9201              movw R18,R4
 0492 0E940000          xcall _PUT_INT32U_DecTOString
 0496           ;               }
 0496           ;               #endif
 0496           ;               #endif
 0496           ;                 
 0496           ;               /* 根目录占扇区数 */
 0496           ;                 DiskInfo[i].RootSecCnt=((((INT16U)Buf[18]<<8)+Buf[17])*32+DiskInfo[i].BytsPerSec-1)/DiskInfo[i].BytsPerSec ;
 0496 8EE2              ldi R24,46
 0498 8A9D              mul R24,R10
 049A 1001              movw R2,R0
 049C F701              movw R30,R14
 049E 4188              ldd R4,z+17
 04A0 F701              movw R30,R14
 04A2 5288              ldd R5,z+18
 04A4 352D              mov R19,R5
 04A6 242D              mov R18,R4
 04A8 00E2              ldi R16,32
 04AA 10E0              ldi R17,0
 04AC 0E940000          xcall empy16s
 04B0 2801              movw R4,R16
 04B2 6624              clr R6
 04B4 7724              clr R7
 04B6 80E0              ldi R24,<_DiskInfo+16
 04B8 90E0              ldi R25,>_DiskInfo+16
 04BA F101              movw R30,R2
 04BC E80F              add R30,R24
 04BE F91F              adc R31,R25
 04C0 4081              ldd R20,z+0
 04C2 5181              ldd R21,z+1
 04C4 6281              ldd R22,z+2
 04C6 7381              ldd R23,z+3
 04C8 440E              add R4,R20
 04CA 551E              adc R5,R21
 04CC 661E              adc R6,R22
 04CE 771E              adc R7,R23
 04D0 41E0              ldi R20,1
 04D2 50E0              ldi R21,0
 04D4 60E0              ldi R22,0
 04D6 70E0              ldi R23,0
 04D8 441A              sub R4,R20
 04DA 550A              sbc R5,R21
 04DC 660A              sbc R6,R22
 04DE 770A              sbc R7,R23
 04E0 F101              movw R30,R2
 04E2 E80F              add R30,R24
 04E4 F91F              adc R31,R25
 04E6 4081              ldd R20,z+0
 04E8 5181              ldd R21,z+1
 04EA 6281              ldd R22,z+2
 04EC 7381              ldd R23,z+3
 04EE 7A93              st -y,R23
 04F0 6A93              st -y,R22
 04F2 5A93              st -y,R21
 04F4 4A93              st -y,R20
 04F6 8201              movw R16,R4
 04F8 9301              movw R18,R6
 04FA 0E940000          xcall div32u
 04FE 80E0              ldi R24,<_DiskInfo+24
 0500 90E0              ldi R25,>_DiskInfo+24
 0502 F101              movw R30,R2
 0504 E80F              add R30,R24
 0506 F91F              adc R31,R25
 0508 0083              std z+0,R16
 050A 1183              std z+1,R17
 050C 2283              std z+2,R18
 050E 3383              std z+3,R19
 0510           ;               #if FS_DEBUG_EN
 0510           ;               #if USART1_EN
 0510           ;               {
 0510           ;                   Uart1_SendString("\n 6.RootSecCnt:");//根目录占扇区数
 0510 00E0              ldi R16,<L66
 0512 10E0              ldi R17,>L66
 0514 0E940000          xcall _Uart1_SendString
 0518           ;                   PUT_INT32U_DecTOString(DiskInfo[i].RootSecCnt);
 0518 8EE2              ldi R24,46
 051A 8A9D              mul R24,R10
 051C F001              movw R30,R0
 051E 80E0              ldi R24,<_DiskInfo+24
 0520 90E0              ldi R25,>_DiskInfo+24
 0522 E80F              add R30,R24
 0524 F91F              adc R31,R25
 0526 0081              ldd R16,z+0
 0528 1181              ldd R17,z+1
 052A 2281              ldd R18,z+2
 052C 3381              ldd R19,z+3
 052E 0E940000          xcall _PUT_INT32U_DecTOString
 0532           ;               }
 0532           ;               #endif
 0532           ;               #endif
 0532           ;               
 0532           ;                 /* 逻辑盘(卷)占扇区数 */
 0532           ;                 temp=((INT16U)Buf[20]<<8)+Buf[19];
 0532 F701              movw R30,R14
 0534 2388              ldd R2,z+19
 0536 F701              movw R30,R14
 0538 3488              ldd R3,z+20
 053A D32C              mov R13,R3
 053C C22C              mov R12,R2

⌨️ 快捷键说明

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