disk.lis
来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 1,577 行 · 第 1/5 页
LIS
1,577 行
053E ; if(temp!=0)
053E CC20 tst R12
0540 11F4 brne X4
0542 DD20 tst R13
0544 79F0 breq L68
0546 X4:
0546 ; DiskInfo[i].SecPerDisk=temp ;
0546 8EE2 ldi R24,46
0548 8A9D mul R24,R10
054A F001 movw R30,R0
054C 80E0 ldi R24,<_DiskInfo+12
054E 90E0 ldi R25,>_DiskInfo+12
0550 E80F add R30,R24
0552 F91F adc R31,R25
0554 1601 movw R2,R12
0556 4424 clr R4
0558 5524 clr R5
055A 2082 std z+0,R2
055C 3182 std z+1,R3
055E 4282 std z+2,R4
0560 5382 std z+3,R5
0562 4EC0 xjmp L69
0564 L68:
0564 ; else
0564 ; {
0564 ; DiskInfo[i].SecPerDisk=((INT32U)Buf[33]<<8)+Buf[32];
0564 88E0 ldi R24,8
0566 90E0 ldi R25,0
0568 F701 movw R30,R14
056A 21A0 ldd R2,z+33
056C 3324 clr R3
056E 4424 clr R4
0570 5524 clr R5
0572 8A93 st -y,R24
0574 8101 movw R16,R2
0576 9201 movw R18,R4
0578 0E940000 xcall lsl32
057C 1801 movw R2,R16
057E 2901 movw R4,R18
0580 F701 movw R30,R14
0582 60A0 ldd R6,z+32
0584 7724 clr R7
0586 8824 clr R8
0588 9924 clr R9
058A 260C add R2,R6
058C 371C adc R3,R7
058E 481C adc R4,R8
0590 591C adc R5,R9
0592 8EE2 ldi R24,46
0594 8A9D mul R24,R10
0596 F001 movw R30,R0
0598 80E0 ldi R24,<_DiskInfo+12
059A 90E0 ldi R25,>_DiskInfo+12
059C E80F add R30,R24
059E F91F adc R31,R25
05A0 2082 std z+0,R2
05A2 3182 std z+1,R3
05A4 4282 std z+2,R4
05A6 5382 std z+3,R5
05A8 ; DiskInfo[i].SecPerDisk|=(((INT32U)Buf[34]<<16)+((INT32U)Buf[35]<<24));
05A8 8EE2 ldi R24,46
05AA 8A9D mul R24,R10
05AC 1001 movw R2,R0
05AE 80E0 ldi R24,<_DiskInfo+12
05B0 90E0 ldi R25,>_DiskInfo+12
05B2 280E add R2,R24
05B4 391E adc R3,R25
05B6 88E1 ldi R24,24
05B8 90E0 ldi R25,0
05BA F701 movw R30,R14
05BC 43A0 ldd R4,z+35
05BE 5524 clr R5
05C0 6624 clr R6
05C2 7724 clr R7
05C4 8A93 st -y,R24
05C6 8201 movw R16,R4
05C8 9301 movw R18,R6
05CA 0E940000 xcall lsl32
05CE F701 movw R30,R14
05D0 42A0 ldd R4,z+34
05D2 5524 clr R5
05D4 6624 clr R6
05D6 7724 clr R7
05D8 3201 movw R6,R4
05DA 4424 clr R4
05DC 5524 clr R5
05DE 400E add R4,R16
05E0 511E adc R5,R17
05E2 621E adc R6,R18
05E4 731E adc R7,R19
05E6 F101 movw R30,R2
05E8 4081 ldd R20,z+0
05EA 5181 ldd R21,z+1
05EC 6281 ldd R22,z+2
05EE 7381 ldd R23,z+3
05F0 4429 or R20,R4
05F2 5529 or R21,R5
05F4 6629 or R22,R6
05F6 7729 or R23,R7
05F8 4083 std z+0,R20
05FA 5183 std z+1,R21
05FC 6283 std z+2,R22
05FE 7383 std z+3,R23
0600 ; }
0600 L69:
0600 ; #if FS_DEBUG_EN
0600 ; #if USART1_EN
0600 ; {
0600 ; Uart1_SendString("\n 7.SecPerDisk:");//逻辑盘(卷)占扇区数
0600 00E0 ldi R16,<L73
0602 10E0 ldi R17,>L73
0604 0E940000 xcall _Uart1_SendString
0608 ; PUT_INT32U_DecTOString(DiskInfo[i].SecPerDisk);
0608 8EE2 ldi R24,46
060A 8A9D mul R24,R10
060C F001 movw R30,R0
060E 80E0 ldi R24,<_DiskInfo+12
0610 90E0 ldi R25,>_DiskInfo+12
0612 E80F add R30,R24
0614 F91F adc R31,R25
0616 0081 ldd R16,z+0
0618 1181 ldd R17,z+1
061A 2281 ldd R18,z+2
061C 3381 ldd R19,z+3
061E 0E940000 xcall _PUT_INT32U_DecTOString
0622 ; }
0622 ; #endif
0622 ; #endif
0622 ;
0622 ; DiskInfo[i].PathClusIndex=0 ;/* 当前目录为根目录 */
0622 8EE2 ldi R24,46
0624 8A9D mul R24,R10
0626 F001 movw R30,R0
0628 80E0 ldi R24,<_DiskInfo+36
062A 90E0 ldi R25,>_DiskInfo+36
062C E80F add R30,R24
062E F91F adc R31,R25
0630 40E0 ldi R20,0
0632 50E0 ldi R21,0
0634 60E0 ldi R22,0
0636 70E0 ldi R23,0
0638 4083 std z+0,R20
063A 5183 std z+1,R21
063C 6283 std z+2,R22
063E 7383 std z+3,R23
0640 ;
0640 ; /* 根目录开始扇区号 */
0640 ; DiskInfo[i].RootDirTable=DiskInfo[i].NumFATs*DiskInfo[i].FATSecCnt+DiskInfo[i].FATStartSec ;
0640 8EE2 ldi R24,46
0642 8A9D mul R24,R10
0644 1001 movw R2,R0
0646 80E0 ldi R24,<_DiskInfo+8
0648 90E0 ldi R25,>_DiskInfo+8
064A F101 movw R30,R2
064C E80F add R30,R24
064E F91F adc R31,R25
0650 4080 ldd R4,z+0
0652 5180 ldd R5,z+1
0654 6280 ldd R6,z+2
0656 7380 ldd R7,z+3
0658 80E0 ldi R24,<_DiskInfo+3
065A 90E0 ldi R25,>_DiskInfo+3
065C F101 movw R30,R2
065E E80F add R30,R24
0660 F91F adc R31,R25
0662 4081 ldd R20,z+0
0664 5527 clr R21
0666 6627 clr R22
0668 7727 clr R23
066A 7A92 st -y,R7
066C 6A92 st -y,R6
066E 5A92 st -y,R5
0670 4A92 st -y,R4
0672 8A01 movw R16,R20
0674 9B01 movw R18,R22
0676 0E940000 xcall empy32u
067A 2801 movw R4,R16
067C 3901 movw R6,R18
067E 80E0 ldi R24,<_DiskInfo+4
0680 90E0 ldi R25,>_DiskInfo+4
0682 F101 movw R30,R2
0684 E80F add R30,R24
0686 F91F adc R31,R25
0688 4081 ldd R20,z+0
068A 5181 ldd R21,z+1
068C 6281 ldd R22,z+2
068E 7381 ldd R23,z+3
0690 440E add R4,R20
0692 551E adc R5,R21
0694 661E adc R6,R22
0696 771E adc R7,R23
0698 80E0 ldi R24,<_DiskInfo+20
069A 90E0 ldi R25,>_DiskInfo+20
069C F101 movw R30,R2
069E E80F add R30,R24
06A0 F91F adc R31,R25
06A2 4082 std z+0,R4
06A4 5182 std z+1,R5
06A6 6282 std z+2,R6
06A8 7382 std z+3,R7
06AA ; #if FS_DEBUG_EN
06AA ; #if USART1_EN
06AA ; {
06AA ; Uart1_SendString("\n 8.RootDirTable:");//根目录开始扇区号
06AA 00E0 ldi R16,<L80
06AC 10E0 ldi R17,>L80
06AE 0E940000 xcall _Uart1_SendString
06B2 ; PUT_INT32U_DecTOString(DiskInfo[i].RootDirTable);
06B2 8EE2 ldi R24,46
06B4 8A9D mul R24,R10
06B6 F001 movw R30,R0
06B8 80E0 ldi R24,<_DiskInfo+20
06BA 90E0 ldi R25,>_DiskInfo+20
06BC E80F add R30,R24
06BE F91F adc R31,R25
06C0 0081 ldd R16,z+0
06C2 1181 ldd R17,z+1
06C4 2281 ldd R18,z+2
06C6 3381 ldd R19,z+3
06C8 0E940000 xcall _PUT_INT32U_DecTOString
06CC ; }
06CC ; #endif
06CC ; #endif
06CC ;
06CC ; /* 数据区开始扇区号 */
06CC ; DiskInfo[i].DataStartSec=DiskInfo[i].RootDirTable+DiskInfo[i].RootSecCnt ;
06CC 8EE2 ldi R24,46
06CE 8A9D mul R24,R10
06D0 80E0 ldi R24,<_DiskInfo+24
06D2 90E0 ldi R25,>_DiskInfo+24
06D4 F001 movw R30,R0
06D6 E80F add R30,R24
06D8 F91F adc R31,R25
06DA 2080 ldd R2,z+0
06DC 3180 ldd R3,z+1
06DE 4280 ldd R4,z+2
06E0 5380 ldd R5,z+3
06E2 80E0 ldi R24,<_DiskInfo+20
06E4 90E0 ldi R25,>_DiskInfo+20
06E6 F001 movw R30,R0
06E8 E80F add R30,R24
06EA F91F adc R31,R25
06EC 6080 ldd R6,z+0
06EE 7180 ldd R7,z+1
06F0 8280 ldd R8,z+2
06F2 9380 ldd R9,z+3
06F4 620C add R6,R2
06F6 731C adc R7,R3
06F8 841C adc R8,R4
06FA 951C adc R9,R5
06FC 80E0 ldi R24,<_DiskInfo+28
06FE 90E0 ldi R25,>_DiskInfo+28
0700 F001 movw R30,R0
0702 E80F add R30,R24
0704 F91F adc R31,R25
0706 6082 std z+0,R6
0708 7182 std z+1,R7
070A 8282 std z+2,R8
070C 9382 std z+3,R9
070E ; #if FS_DEBUG_EN
070E ; #if USART1_EN
070E ; {
070E ; Uart1_SendString("\n 9.DataStartSec:");//数据区开始扇区号
070E 00E0 ldi R16,<L85
0710 10E0 ldi R17,>L85
0712 0E940000 xcall _Uart1_SendString
0716 ; PUT_INT32U_DecTOString(DiskInfo[i].DataStartSec);
0716 8EE2 ldi R24,46
0718 8A9D mul R24,R10
071A F001 movw R30,R0
071C 80E0 ldi R24,<_DiskInfo+28
071E 90E0 ldi R25,>_DiskInfo+28
0720 E80F add R30,R24
0722 F91F adc R31,R25
0724 0081 ldd R16,z+0
0726 1181 ldd R17,z+1
0728 2281 ldd R18,z+2
072A 3381 ldd R19,z+3
072C 0E940000 xcall _PUT_INT32U_DecTOString
0730 ; }
0730 ; #endif
0730 ; #endif
0730 ;
0730 ; temp1=DiskInfo[i].SecPerDisk-DiskInfo[i].DataStartSec ;
0730 8EE2 ldi R24,46
0732 8A9D mul R24,R10
0734 80E0 ldi R24,<_DiskInfo+28
0736 90E0 ldi R25,>_DiskInfo+28
0738 F001 movw R30,R0
073A E80F add R30,R24
073C F91F adc R31,R25
073E 2080 ldd R2,z+0
0740 3180 ldd R3,z+1
0742 4280 ldd R4,z+2
0744 5380 ldd R5,z+3
0746 80E0 ldi R24,<_DiskInfo+12
0748 90E0 ldi R25,>_DiskInfo+12
074A F001 movw R30,R0
074C E80F add R30,R24
074E F91F adc R31,R25
0750 6080 ldd R6,z+0
0752 7180 ldd R7,z+1
0754 8280 ldd R8,z+2
0756 9380 ldd R9,z+3
0758 6218 sub R6,R2
075A 7308 sbc R7,R3
075C 8408 sbc R8,R4
075E 9508 sbc R9,R5
0760 FE01 movw R30,R28
0762 6282 std z+2,R6
0764 7382 std z+3,R7
0766 8482 std z+4,R8
0768 9582 std z+5,R9
076A ; temp1=temp1/DiskInfo[i].SecPerClus ;
076A 8EE2 ldi R24,46
076C 8A9D mul R24,R10
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?