📄 demo.s90
字号:
TST R16
BREQ ??initialize_media_12
LDS R16,(_FF_buff + 503)
STD Y+1,R16
LDS R16,(_FF_buff + 502)
ST Y,R16
RJMP ??initialize_media_8
??initialize_media_12:
LDS R16,(_FF_buff + 455)
STD Y+1,R16
LDS R16,(_FF_buff + 454)
ST Y,R16
??initialize_media_8:
LD R16,Y
LDD R17,Y+1
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
ST Z,R16
STD Z+1,R17
LD R16,Y
LDD R17,Y+1
OR R16,R17
BREQ ??initialize_media_13
LDI R20,LOW(_FF_buff)
LDI R21,(_FF_buff) >> 8
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDI R18,0
LDI R19,0
RCALL _FF_read
TST R16
BRNE ??initialize_media_14
LDI R16,LOW(_FF_RErr_str)
LDI R17,HIGH(_FF_RErr_str)
LDI R18,(_FF_RErr_str) >> 16
CALL printf_P
LDI R16,1
STS _FF_error,R16
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_14:
LDS R16,(_FF_buff + 510)
CPI R16,85
BRNE ??initialize_media_15
LDS R16,(_FF_buff + 511)
CPI R16,170
BRNE ??initialize_media_15
LDS R16,_FF_buff
CPI R16,235
BRNE ??initialize_media_16
LDS R16,(_FF_buff + 2)
CPI R16,144
BREQ ??initialize_media_13
??initialize_media_16:
LDS R16,_FF_buff
CPI R16,233
BREQ ??initialize_media_13
??initialize_media_15:
LDI R16,LOW(_FF_InvParTbl_str)
LDI R17,HIGH(_FF_InvParTbl_str)
LDI R18,(_FF_InvParTbl_str) >> 16
CALL printf_P
LDI R16,18
STS _FF_error,R16
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_13:
LDS R16,(_FF_buff + 511)
LDI R17,0
ST -Y,R17
ST -Y,R16
LDS R16,(_FF_buff + 510)
LDI R17,0
ST -Y,R17
ST -Y,R16
LDS R16,(_FF_buff + 2)
LDI R17,0
ST -Y,R17
ST -Y,R16
LDS R16,(_FF_buff + 1)
LDI R17,0
ST -Y,R17
ST -Y,R16
LDS R16,_FF_buff
LDI R17,0
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BSec_str)
LDI R17,HIGH(_FF_BSec_str)
LDI R18,(_FF_BSec_str) >> 16
CALL printf_P
ADIW R29 : R28,10
LDS R16,(_FF_buff + 12)
CPI R16,2
BRNE ??initialize_media_17
LDS R16,(_FF_buff + 11)
TST R16
BREQ ??initialize_media_18
??initialize_media_17:
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_18:
LDS R16,(_FF_buff + 13)
STS BPB_SecPerClus,R16
LDS R16,(_FF_buff + 14)
STS BPB_RsvdSecCnt,R16
LDS R16,(_FF_buff + 15)
STS (BPB_RsvdSecCnt + 1),R16
LDS R4,(_FF_buff + 16)
LDS R16,(_FF_buff + 17)
STS BPB_RootEntCnt,R16
LDS R16,(_FF_buff + 18)
STS (BPB_RootEntCnt + 1),R16
LDS R16,(_FF_buff + 22)
STS BPB_FATSz16,R16
LDS R16,(_FF_buff + 23)
STS (BPB_FATSz16 + 1),R16
LDI R16,0
LDI R17,0
STD Y+4,R16
STD Y+5,R17
LDS R16,(_FF_buff + 19)
STD Y+2,R16
LDS R16,(_FF_buff + 20)
STD Y+3,R16
LDD R16,Y+2
LDD R17,Y+3
LDD R18,Y+4
LDD R19,Y+5
OR R16,R17
OR R16,R18
OR R16,R19
BRNE ??initialize_media_19
LDS R16,(_FF_buff + 32)
STD Y+2,R16
LDS R16,(_FF_buff + 33)
STD Y+3,R16
LDS R16,(_FF_buff + 34)
STD Y+4,R16
LDS R16,(_FF_buff + 35)
STD Y+5,R16
??initialize_media_19:
LDS R16,(_FF_buff + 39)
STS BS_VolSerial,R16
LDS R16,(_FF_buff + 40)
STS (BS_VolSerial + 1),R16
LDS R16,(_FF_buff + 41)
STS (BS_VolSerial + 2),R16
LDS R16,(_FF_buff + 42)
STS (BS_VolSerial + 3),R16
LDI R16,0
RJMP ??initialize_media_20
??initialize_media_21:
MOV R24,R16
LDI R25,0
ADIW R25 : R24,43
MOVW R31 : R30,R25 : R24
SUBI R30,LOW((-(_FF_buff) & 0xFFFF))
SBCI R31,(-(_FF_buff) & 0xFFFF) >> 8
LD R18,Z
LDI R17,0
MOVW R31 : R30,R17 : R16
SUBI R30,LOW((-(BS_VolLab) & 0xFFFF))
SBCI R31,(-(BS_VolLab) & 0xFFFF) >> 8
ST Z,R18
INC R16
??initialize_media_20:
CPI R16,11
BRCS ??initialize_media_21
LDI R16,0
STS (BS_VolLab + 11),R16
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDI R30,LOW(BPB_RsvdSecCnt)
LDI R31,(BPB_RsvdSecCnt) >> 8
LD R18,Z
LDD R19,Z+1
ADD R18,R16
ADC R19,R17
LDI R30,LOW(_FF_FAT1_ADDR)
LDI R31,(_FF_FAT1_ADDR) >> 8
ST Z,R18
STD Z+1,R19
LDI R30,LOW(_FF_FAT1_ADDR)
LDI R31,(_FF_FAT1_ADDR) >> 8
LD R18,Z
LDD R19,Z+1
LDI R30,LOW(BPB_FATSz16)
LDI R31,(BPB_FATSz16) >> 8
LD R16,Z
LDD R17,Z+1
ADD R16,R18
ADC R17,R19
LDI R18,0
LDI R19,0
LDI R30,LOW(_FF_FAT2_ADDR)
LDI R31,(_FF_FAT2_ADDR) >> 8
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
CLR R5
LDI R30,LOW(BPB_FATSz16)
LDI R31,(BPB_FATSz16) >> 8
LD R16,Z
LDD R17,Z+1
LDI R18,0
MUL R5,R17
MOVW R23 : R22,R1 : R0
MUL R4,R16
MOVW R21 : R20,R1 : R0
MUL R5,R16
ADD R21,R0
ADC R22,R1
ADC R23,R18
MUL R17,R4
ADD R21,R0
ADC R22,R1
ADC R23,R18
LDI R30,LOW(BPB_RsvdSecCnt)
LDI R31,(BPB_RsvdSecCnt) >> 8
LD R16,Z
LDD R17,Z+1
LDI R18,0
LDI R19,0
ADD R16,R20
ADC R17,R21
ADC R18,R22
ADC R19,R23
LDI R30,LOW(_FF_ROOT_ADDR)
LDI R31,(_FF_ROOT_ADDR) >> 8
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDI R18,0
LDI R19,0
LDI R30,LOW(_FF_ROOT_ADDR)
LDI R31,(_FF_ROOT_ADDR) >> 8
LD R20,Z
LDD R21,Z+1
LDD R22,Z+2
LDD R23,Z+3
ADD R20,R16
ADC R21,R17
ADC R22,R18
ADC R23,R19
ST Z,R20
STD Z+1,R21
STD Z+2,R22
STD Z+3,R23
LDI R30,LOW(BPB_RootEntCnt)
LDI R31,(BPB_RootEntCnt) >> 8
LD R16,Z
LDD R17,Z+1
LDI R18,0
LDI R19,0
LDI R20,5
CALL ?L_SHL_L03
MOVW R25 : R24,R17 : R16
MOVW R27 : R26,R19 : R18
SUBI R24,1
SBCI R25,254
SBCI R26,255
SBCI R27,255
MOV R24,R25
MOV R25,R26
MOV R26,R27
LDI R27,0
LSR R26
ROR R25
ROR R24
MOV R20,R4
LDI R21,0
LDI R30,LOW(BPB_FATSz16)
LDI R31,(BPB_FATSz16) >> 8
LD R16,Z
LDD R17,Z+1
CALL ?S_EC_MUL_L02
LDI R30,LOW(BPB_RsvdSecCnt)
LDI R31,(BPB_RsvdSecCnt) >> 8
LD R18,Z
LDD R19,Z+1
ADD R18,R16
ADC R19,R17
MOVW R17 : R16,R25 : R24
ADD R16,R18
ADC R17,R19
LDI R30,LOW(FirstDataSector)
LDI R31,(FirstDataSector) >> 8
ST Z,R16
STD Z+1,R17
LDD R16,Y+2
LDD R17,Y+3
LDD R18,Y+4
LDD R19,Y+5
LDI R30,LOW(FirstDataSector)
LDI R31,(FirstDataSector) >> 8
LD R20,Z
LDD R21,Z+1
LDI R22,0
LDI R23,0
SUB R16,R20
SBC R17,R21
SBC R18,R22
SBC R19,R23
LDS R20,BPB_SecPerClus
LDI R21,0
LDI R22,0
LDI R23,0
CALL ?UL_DIVMOD_L03
LDI R30,LOW(DataClusTot)
LDI R31,(DataClusTot) >> 8
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
LDI R16,0
LDI R17,0
LDI R30,LOW(clus_0_addr)
LDI R31,(clus_0_addr) >> 8
ST Z,R16
STD Z+1,R17
LDI R16,1
LDI R17,0
LDI R30,LOW(c_counter)
LDI R31,(c_counter) >> 8
ST Z,R16
STD Z+1,R17
LDI R16,0
LDI R17,0
LDI R18,0
LDI R19,0
LDI R30,LOW(_FF_buff_addr)
LDI R31,(_FF_buff_addr) >> 8
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
LDI R30,LOW(DataClusTot)
LDI R31,(DataClusTot) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
LDD R19,Z+3
CPI R16,245
LDI R20,15
CPC R17,R20
LDI R20,0
CPC R18,R20
LDI R20,0
CPC R19,R20
BRCS $+2+2
RJMP ??initialize_media_22
LDI R16,50
STS BPB_FATType,R16
??initialize_media_23:
LDI R30,LOW(_FF_ROOT_ADDR)
LDI R31,(_FF_ROOT_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
LDD R19,Z+3
LDI R30,LOW(_FF_DIR_ADDR)
LDI R31,(_FF_DIR_ADDR) >> 8
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
LDI R16,92
STS _FF_FULL_PATH,R16
LDI R16,0
STS (_FF_FULL_PATH + 1),R16
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
LD R16,Z
MOV R17,R16
LDI R16,0
LSL R17
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BS_PA_str)
LDI R17,HIGH(_FF_BS_PA_str)
LDI R18,(_FF_BS_PA_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R16,0
LDI R17,2
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_BPS_str)
LDI R17,HIGH(_FF_BPB_BPS_str)
LDI R18,(_FF_BPB_BPS_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDS R16,BPB_SecPerClus
LDI R17,0
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_SPC_str)
LDI R17,HIGH(_FF_BPB_SPC_str)
LDI R18,(_FF_BPB_SPC_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R30,LOW(BPB_RsvdSecCnt)
LDI R31,(BPB_RsvdSecCnt) >> 8
LD R16,Z
LDD R17,Z+1
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_RSC_str)
LDI R17,HIGH(_FF_BPB_RSC_str)
LDI R18,(_FF_BPB_RSC_str) >> 16
CALL printf_P
ADIW R29 : R28,2
CLR R5
ST -Y,R5
ST -Y,R4
LDI R16,LOW(_FF_BPB_NFAT_str)
LDI R17,HIGH(_FF_BPB_NFAT_str)
LDI R18,(_FF_BPB_NFAT_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R30,LOW(BPB_RootEntCnt)
LDI R31,(BPB_RootEntCnt) >> 8
LD R16,Z
LDD R17,Z+1
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_REC_str)
LDI R17,HIGH(_FF_BPB_REC_str)
LDI R18,(_FF_BPB_REC_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R30,LOW(BPB_FATSz16)
LDI R31,(BPB_FATSz16) >> 8
LD R16,Z
LDD R17,Z+1
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_Fz16_str)
LDI R17,HIGH(_FF_BPB_Fz16_str)
LDI R18,(_FF_BPB_Fz16_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDD R16,Y+2
LDD R17,Y+3
LDD R18,Y+4
LDD R19,Y+5
ST -Y,R19
ST -Y,R18
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_BPB_TS16_str)
LDI R17,HIGH(_FF_BPB_TS16_str)
LDI R18,(_FF_BPB_TS16_str) >> 16
CALL printf_P
ADIW R29 : R28,4
LDI R16,LOW(_FF_BPB_FT_str)
LDI R17,HIGH(_FF_BPB_FT_str)
LDI R18,(_FF_BPB_FT_str) >> 16
CALL printf_P
LDS R16,BPB_FATType
CPI R16,50
BREQ ??initialize_media_24
LDS R16,BPB_FATType
CPI R16,54
BREQ ??initialize_media_24
LDI R16,LOW(_FF_ERR_str)
LDI R17,HIGH(_FF_ERR_str)
LDI R18,(_FF_ERR_str) >> 16
CALL printf_P
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_22:
LDI R30,LOW(DataClusTot)
LDI R31,(DataClusTot) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
LDD R19,Z+3
CPI R16,245
LDI R20,255
CPC R17,R20
LDI R20,0
CPC R18,R20
LDI R20,0
CPC R19,R20
BRCC ??initialize_media_25
LDI R16,54
STS BPB_FATType,R16
RJMP ??initialize_media_23
??initialize_media_25:
LDI R16,0
STS BPB_FATType,R16
LDI R16,12
STS _FF_error,R16
LDI R16,0
RJMP ??initialize_media_1
??initialize_media_24:
LDS R16,BPB_FATType
LDI R17,0
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_1C_str)
LDI R17,HIGH(_FF_1C_str)
LDI R18,(_FF_1C_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R30,LOW(DataClusTot)
LDI R31,(DataClusTot) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
LDD R19,Z+3
ST -Y,R19
ST -Y,R18
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_CCnt_str)
LDI R17,HIGH(_FF_CCnt_str)
LDI R18,(_FF_CCnt_str) >> 16
CALL printf_P
ADIW R29 : R28,4
LDI R30,LOW(_FF_ROOT_ADDR)
LDI R31,(_FF_ROOT_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
MOV R19,R18
MOV R18,R17
MOV R17,R16
LDI R16,0
LSL R17
ROL R18
ROL R19
ST -Y,R19
ST -Y,R18
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_RAddr_str)
LDI R17,HIGH(_FF_RAddr_str)
LDI R18,(_FF_RAddr_str) >> 16
CALL printf_P
ADIW R29 : R28,4
LDI R30,LOW(_FF_FAT2_ADDR)
LDI R31,(_FF_FAT2_ADDR) >> 8
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
MOV R19,R18
MOV R18,R17
MOV R17,R16
LDI R16,0
LSL R17
ROL R18
ROL R19
ST -Y,R19
ST -Y,R18
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_F2Addr_str)
LDI R17,HIGH(_FF_F2Addr_str)
LDI R18,(_FF_F2Addr_str) >> 16
CALL printf_P
ADIW R29 : R28,4
ST -Y,R27
ST -Y,R26
ST -Y,R25
ST -Y,R24
LDI R16,LOW(_FF_RDSec_str)
LDI R17,HIGH(_FF_RDSec_str)
LDI R18,(_FF_RDSec_str) >> 16
CALL printf_P
ADIW R29 : R28,4
LDI R30,LOW(FirstDataSector)
LDI R31,(FirstDataSector) >> 8
LD R16,Z
LDD R17,Z+1
ST -Y,R17
ST -Y,R16
LDI R16,LOW(_FF_FDSec_str)
LDI R17,HIGH(_FF_FDSec_str)
LDI R18,(_FF_FDSec_str) >> 16
CALL printf_P
ADIW R29 : R28,2
LDI R16,1
??initialize_media_1:
ADIW R29 : R28,6
LDI R30,6
JMP ?EPILOGUE_B6_L09
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __CRLF[3]
__CRLF:
DB "\015\012"
RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __Xstr[6]
__Xstr:
DB "%02X "
RSEG CODE:CODE:NOROOT(1)
// __nearfunc void _FF_read_disp(unsigned long)
_FF_read_disp:
ST -Y,R25
ST -Y,R24
LDI R20,LOW(_FF_buff)
LDI R21,(_FF_buff) >> 8
RCALL _FF_read
TST R16
BRNE ??_FF_read_disp_0
LDI R16,LOW(_FF_RErr_str)
LDI R17,HIGH(_FF_RErr_str)
LDI R18,(_FF_RErr_str) >> 16
CALL printf_P
RJMP ??_FF_read_disp_1
??_FF_read_disp_0:
LDI R24,0
LDI R25,0
RJMP ??_FF_read_disp_2
??_FF_read_disp_3:
MOV R16,R24
ANDI R16,0x0F
TST R16
BRNE ??_FF_read_disp_4
LDI R16,LOW(__CRLF)
LDI R17,HIGH(__CRLF)
LDI R18,(__CRLF) >> 16
CALL printf_P
??_FF_read_disp_4:
MOVW R31 : R30,R25 : R24
SUBI R30,LOW((-(_FF_buff) & 0xFFFF))
SBCI R31,(-(_FF_buff) & 0xFFFF) >> 8
LD R16,Z
LDI R17,0
ST -Y,R17
ST -Y,R16
LDI R16,LOW(__Xstr)
LDI R17,HIGH(__Xstr)
LDI R18,(__Xstr) >> 16
CALL printf_P
ADIW R29 : R28,2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -