📄 fat.lis
字号:
0342 3A92 st -y,R3
0344 2A92 st -y,R2
0346 8A01 movw R16,R20
0348 9B01 movw R18,R22
034A 0E940000 xcall empy32u
034E 3695 lsr R19
0350 2795 ror R18
0352 1795 ror R17
0354 0795 ror R16
0356 20901800 lds R2,_BlockSize
035A 30901900 lds R3,_BlockSize+1
035E 4424 clr R4
0360 5524 clr R5
0362 5A92 st -y,R5
0364 4A92 st -y,R4
0366 3A92 st -y,R3
0368 2A92 st -y,R2
036A 0E940000 xcall div32u
036E 1801 movw R2,R16
0370 2901 movw R4,R18
0372 80901600 lds R8,_fat_offset+2
0376 90901700 lds R9,_fat_offset+2+1
037A 60901400 lds R6,_fat_offset
037E 70901500 lds R7,_fat_offset+1
0382 260C add R2,R6
0384 371C adc R3,R7
0386 481C adc R4,R8
0388 591C adc R5,R9
038A 2A82 std y+2,R2
038C 3B82 std y+3,R3
038E 4C82 std y+4,R4
0390 5D82 std y+5,R5
0392 .dbline 101
0392 ; if(FAT_Byte_Addresse == 0x1FF)
0392 C701 movw R24,R14
0394 8F3F cpi R24,255
0396 A1E0 ldi R26,1
0398 9A07 cpc R25,R26
039A 09F0 breq X21
039C 86C0 xjmp L20
039E X21:
039E X11:
039E .dbline 102
039E ; {
039E .dbline 103
039E ; MMC_SD_ReadSingleBlock(FAT_Block_Addresse,TMP_Buffer);
039E D982 std y+1,R13
03A0 C882 std y+0,R12
03A2 0A81 ldd R16,y+2
03A4 1B81 ldd R17,y+3
03A6 2C81 ldd R18,y+4
03A8 3D81 ldd R19,y+5
03AA 0E940000 xcall _MMC_SD_ReadSingleBlock
03AE .dbline 104
03AE ; if((Cluster % 2) == 0)
03AE 2C88 ldd R2,y+20
03B0 3D88 ldd R3,y+21
03B2 4E88 ldd R4,y+22
03B4 5F88 ldd R5,y+23
03B6 022D mov R16,R2
03B8 0170 andi R16,1
03BA 69F4 brne L22
03BC X12:
03BC .dbline 105
03BC ; {
03BC .dbline 106
03BC ; *Block = TMP_Buffer[FAT_Byte_Addresse];
03BC F701 movw R30,R14
03BE EC0D add R30,R12
03C0 FD1D adc R31,R13
03C2 2080 ldd R2,z+0
03C4 3324 clr R3
03C6 4424 clr R4
03C8 5524 clr R5
03CA F501 movw R30,R10
03CC 2082 std z+0,R2
03CE 3182 std z+1,R3
03D0 4282 std z+2,R4
03D2 5382 std z+3,R5
03D4 .dbline 107
03D4 ; }
03D4 18C0 xjmp L23
03D6 L22:
03D6 .dbline 109
03D6 ; else
03D6 ; {
03D6 .dbline 110
03D6 ; *Block = (TMP_Buffer[FAT_Byte_Addresse] >> 4);
03D6 F701 movw R30,R14
03D8 EC0D add R30,R12
03DA FD1D adc R31,R13
03DC 2080 ldd R2,z+0
03DE 3324 clr R3
03E0 3594 asr R3
03E2 2794 ror R2
03E4 3594 asr R3
03E6 2794 ror R2
03E8 3594 asr R3
03EA 2794 ror R2
03EC 3594 asr R3
03EE 2794 ror R2
03F0 4424 clr R4
03F2 37FC sbrc R3,7
03F4 4094 com R4
03F6 5524 clr R5
03F8 47FC sbrc R4,7
03FA 5094 com R5
03FC F501 movw R30,R10
03FE 2082 std z+0,R2
0400 3182 std z+1,R3
0402 4282 std z+2,R4
0404 5382 std z+3,R5
0406 .dbline 111
0406 ; }
0406 L23:
0406 .dbline 112
0406 ; MMC_SD_ReadSingleBlock(FAT_Block_Addresse+1,TMP_Buffer);
0406 D982 std y+1,R13
0408 C882 std y+0,R12
040A 41E0 ldi R20,1
040C 50E0 ldi R21,0
040E 60E0 ldi R22,0
0410 70E0 ldi R23,0
0412 0A81 ldd R16,y+2
0414 1B81 ldd R17,y+3
0416 2C81 ldd R18,y+4
0418 3D81 ldd R19,y+5
041A 040F add R16,R20
041C 151F adc R17,R21
041E 261F adc R18,R22
0420 371F adc R19,R23
0422 0E940000 xcall _MMC_SD_ReadSingleBlock
0426 .dbline 113
0426 ; if((Cluster % 2) == 0)
0426 2C88 ldd R2,y+20
0428 3D88 ldd R3,y+21
042A 4E88 ldd R4,y+22
042C 5F88 ldd R5,y+23
042E 022D mov R16,R2
0430 0170 andi R16,1
0432 E1F4 brne L24
0434 X13:
0434 .dbline 114
0434 ; {
0434 .dbline 115
0434 ; *Block += ((TMP_Buffer[0] & 0x0F) << 8);
0434 F601 movw R30,R12
0436 8081 ldd R24,z+0
0438 9927 clr R25
043A 8F70 andi R24,15
043C 9070 andi R25,0
043E 982F mov R25,R24
0440 8827 clr R24
0442 1C01 movw R2,R24
0444 4424 clr R4
0446 37FC sbrc R3,7
0448 4094 com R4
044A 5524 clr R5
044C 47FC sbrc R4,7
044E 5094 com R5
0450 F501 movw R30,R10
0452 6080 ldd R6,z+0
0454 7180 ldd R7,z+1
0456 8280 ldd R8,z+2
0458 9380 ldd R9,z+3
045A 620C add R6,R2
045C 731C adc R7,R3
045E 841C adc R8,R4
0460 951C adc R9,R5
0462 6082 std z+0,R6
0464 7182 std z+1,R7
0466 8282 std z+2,R8
0468 9382 std z+3,R9
046A .dbline 116
046A ; }
046A 6EC0 xjmp L21
046C L24:
046C .dbline 118
046C ; else
046C ; {
046C .dbline 119
046C ; *Block += (TMP_Buffer[0] << 4);
046C F601 movw R30,R12
046E 2080 ldd R2,z+0
0470 3324 clr R3
0472 220C lsl R2
0474 331C rol R3
0476 220C lsl R2
0478 331C rol R3
047A 220C lsl R2
047C 331C rol R3
047E 220C lsl R2
0480 331C rol R3
0482 4424 clr R4
0484 37FC sbrc R3,7
0486 4094 com R4
0488 5524 clr R5
048A 47FC sbrc R4,7
048C 5094 com R5
048E F501 movw R30,R10
0490 6080 ldd R6,z+0
0492 7180 ldd R7,z+1
0494 8280 ldd R8,z+2
0496 9380 ldd R9,z+3
0498 620C add R6,R2
049A 731C adc R7,R3
049C 841C adc R8,R4
049E 951C adc R9,R5
04A0 6082 std z+0,R6
04A2 7182 std z+1,R7
04A4 8282 std z+2,R8
04A6 9382 std z+3,R9
04A8 .dbline 120
04A8 ; }
04A8 .dbline 121
04A8 ; }
04A8 4FC0 xjmp L21
04AA L20:
04AA .dbline 123
04AA ; else
04AA ; {
04AA .dbline 124
04AA ; MMC_SD_ReadSingleBlock(FAT_Block_Addresse,TMP_Buffer);
04AA D982 std y+1,R13
04AC C882 std y+0,R12
04AE 0A81 ldd R16,y+2
04B0 1B81 ldd R17,y+3
04B2 2C81 ldd R18,y+4
04B4 3D81 ldd R19,y+5
04B6 0E940000 xcall _MMC_SD_ReadSingleBlock
04BA .dbline 125
04BA ; if((Cluster % 2) == 0)
04BA 2C88 ldd R2,y+20
04BC 3D88 ldd R3,y+21
04BE 4E88 ldd R4,y+22
04C0 5F88 ldd R5,y+23
04C2 022D mov R16,R2
04C4 0170 andi R16,1
04C6 B9F4 brne L26
04C8 X14:
04C8 .dbline 126
04C8 ; {
04C8 .dbline 127
04C8 ; *Block = ((TMP_Buffer[FAT_Byte_Addresse + 1] & 0x0F) << 8) + TMP_Buffer[FAT_Byte_Addresse];
04C8 F701 movw R30,R14
04CA EC0D add R30,R12
04CC FD1D adc R31,R13
04CE 2080 ldd R2,z+0
04D0 F701 movw R30,R14
04D2 3196 adiw R30,1
04D4 EC0D add R30,R12
04D6 FD1D adc R31,R13
04D8 8081 ldd R24,z+0
04DA 8F70 andi R24,15
04DC 382E mov R3,R24
04DE 4424 clr R4
04E0 37FC sbrc R3,7
04E2 4094 com R4
04E4 5524 clr R5
04E6 47FC sbrc R4,7
04E8 5094 com R5
04EA F501 movw R30,R10
04EC 2082 std z+0,R2
04EE 3182 std z+1,R3
04F0 4282 std z+2,R4
04F2 5382 std z+3,R5
04F4 .dbline 128
04F4 ; }
04F4 29C0 xjmp L27
04F6 L26:
04F6 .dbline 130
04F6 ; else
04F6 ; {
04F6 .dbline 131
04F6 ; *Block = (TMP_Buffer[FAT_Byte_Addresse + 1] << 4) + (TMP_Buffer[FAT_Byte_Addresse] >> 4);
04F6 F701 movw R30,R14
04F8 EC0D add R30,R12
04FA FD1D adc R31,R13
04FC 2080 ldd R2,z+0
04FE 3324 clr R3
0500 3594 asr R3
0502 2794 ror R2
0504 3594 asr R3
0506 2794 ror R2
0508 3594 asr R3
050A 2794 ror R2
050C 3594 asr R3
050E 2794 ror R2
0510 F701 movw R30,R14
0512 3196 adiw R30,1
0514 EC0D add R30,R12
0516 FD1D adc R31,R13
0518 4080 ldd R4,z+0
051A 5524 clr R5
051C 440C lsl R4
051E 551C rol R5
0520 440C lsl R4
0522 551C rol R5
0524 440C lsl R4
0526 551C rol R5
0528 440C lsl R4
052A 551C rol R5
052C 420C add R4,R2
052E 531C adc R5,R3
0530 1201 movw R2,R4
0532 4424 clr R4
0534 37FC sbrc R3,7
0536 4094 com R4
0538 5524 clr R5
053A 47FC sbrc R4,7
053C 5094 com R5
053E F501 movw R30,R10
0540 2082 std z+0,R2
0542 3182 std z+1,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -