⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo.s90

📁 Flashfile system for avr, ICC, IAR compiled with examples. very cool
💻 S90
📖 第 1 页 / 共 5 页
字号:
	LDI	R30,LOW(__Tab)
	LDI	R31,HIGH(__Tab)
	LDI	R19,(__Tab) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
	BST	R12,4
	BRTC	??read_directory_18
	LDI	R30,LOW(__OpenBracket)
	LDI	R31,HIGH(__OpenBracket)
	LDI	R19,(__OpenBracket) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
??read_directory_18:
	LDI	R24,0
	LDI	R25,0
	RJMP	??read_directory_19
??read_directory_20:
	LD	R16,Y
	LDD	R17,Y+1
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	LDI	R17,0
	RCALL	putchar
	ADIW	R25 : R24,1
??read_directory_19:
	CPI	R24,8
	LDI	R16,0
	CPC	R25,R16
	BRCC	??read_directory_21
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	ADD	R16,R24
	ADC	R17,R25
	ST	Y,R16
	STD	Y+1,R17
	LD	R16,Y
	LDD	R17,Y+1
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	CPI	R16,32
	BRNE	??read_directory_20
??read_directory_21:
	BST	R12,4
	BRTC	??read_directory_22
	LDD	R16,Y+4
	LDD	R17,Y+5
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(SC_str)
	LDI	R17,HIGH(SC_str)
	LDI	R18,(SC_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	RJMP	??read_directory_12
??read_directory_22:
	LDI	R30,LOW(__Period)
	LDI	R31,HIGH(__Period)
	LDI	R19,(__Period) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
	LDI	R24,8
	LDI	R25,0
	RJMP	??read_directory_10
??read_directory_13:
	LDI	R16,1
	ADD	R8,R16
	LDI	R16,0
	ADC	R9,R16
	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
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	CP	R16,R20
	CPC	R17,R21
	CPC	R18,R22
	CPC	R19,R23
	BRNE	$+2+2
	RJMP	??read_directory_5
	LDS	R16,BPB_SecPerClus
	LDI	R17,0
	CP	R8,R16
	CPC	R9,R17
	BREQ	$+2+2
	RJMP	??read_directory_5
	LDI	R18,2
	MOVW	R17 : R16,R15 : R14
	RCALL	next_cluster
	MOVW	R9 : R8,R17 : R16
	LDI	R16,255
	CP	R8,R16
	LDI	R16,255
	CPC	R9,R16
	BREQ	$+2+2
	RJMP	??read_directory_6
??read_directory_7:
	LDI	R30,LOW(__CR)
	LDI	R31,HIGH(__CR)
	LDI	R19,(__CR) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
	LDI	R30,LOW(__LF)
	LDI	R31,HIGH(__LF)
	LDI	R19,(__LF) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
??read_directory_1:
	ADIW	R29 : R28,6
	LDI	R30,16
	JMP	?EPILOGUE_B16_L09

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash VolSerialStr[26]
VolSerialStr:
        DB "\015\012	Volume Serial:	[0x%lX]"

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash VolLabelStr[24]
VolLabelStr:
        DB "\015\012	Volume Label:	[%s]\015\012"

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc void GetVolID()
GetVolID:
	LDI	R30,LOW(BS_VolSerial)
	LDI	R31,(BS_VolSerial) >> 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(VolSerialStr)
	LDI	R17,HIGH(VolSerialStr)
	LDI	R18,(VolSerialStr) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	LDI	R16,LOW(BS_VolLab)
	LDI	R17,(BS_VolLab) >> 8
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(VolLabelStr)
	LDI	R17,HIGH(VolLabelStr)
	LDI	R18,(VolLabelStr) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	RET

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned long clust_to_addr(unsigned int)
clust_to_addr:
	CALL	?PROLOGUE4_L09
	CPI	R16,2
	LDI	R18,0
	CPC	R17,R18
	BRCC	??clust_to_addr_0
	LDI	R16,0
	LDI	R17,0
	LDI	R18,0
	LDI	R19,0
	RJMP	??clust_to_addr_1
??clust_to_addr_0:
	SUBI	R16,2
	SBCI	R17,0
	LDS	R18,BPB_SecPerClus
	LDI	R19,0
	LDI	R20,0
	MUL	R17,R19
	MOVW	R27 : R26,R1 : R0
	MUL	R16,R18
	MOVW	R25 : R24,R1 : R0
	MUL	R17,R18
	ADD	R25,R0
	ADC	R26,R1
	ADC	R27,R20
	MUL	R19,R16
	ADD	R25,R0
	ADC	R26,R1
	ADC	R27,R20
	LDI	R30,LOW(FirstDataSector)
	LDI	R31,(FirstDataSector) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDI	R22,0
	LDI	R23,0
	ADD	R20,R24
	ADC	R21,R25
	ADC	R22,R26
	ADC	R23,R27
	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
	ADD	R16,R20
	ADC	R17,R21
	ADC	R18,R22
	ADC	R19,R23
??clust_to_addr_1:
	LDI	R30,4
	JMP	?EPILOGUE_B4_L09

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned int addr_to_clust(unsigned long)
addr_to_clust:
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDI	R22,0
	LDI	R23,0
	CP	R20,R16
	CPC	R21,R17
	CPC	R22,R18
	CPC	R23,R19
	BRCS	??addr_to_clust_0
	LDI	R16,0
	LDI	R17,0
	RET
??addr_to_clust_0:
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 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
	LDI	R30,LOW(FirstDataSector)
	LDI	R31,(FirstDataSector) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDI	R22,0
	LDI	R23,0
	CP	R16,R20
	CPC	R17,R21
	CPC	R18,R22
	CPC	R19,R23
	BRCC	??addr_to_clust_1
	LDI	R16,0
	LDI	R17,0
	RET
??addr_to_clust_1:
	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
	SUBI	R16,254
	SBCI	R17,255
	SBCI	R18,255
	SBCI	R19,255
	CPI	R16,0
	LDI	R20,0
	CPC	R17,R20
	LDI	R20,1
	CPC	R18,R20
	LDI	R20,0
	CPC	R19,R20
	BRCS	??addr_to_clust_2
	LDI	R16,0
	LDI	R17,0
??addr_to_clust_2:
	RET

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned int next_cluster(unsigned int, unsigned char)
next_cluster:
	CALL	?PROLOGUE11_L09
	REQUIRE	?Register_R4_is_cg_reg
	REQUIRE	?Register_R5_is_cg_reg
	REQUIRE	?Register_R6_is_cg_reg
	REQUIRE	?Register_R7_is_cg_reg
	REQUIRE	?Register_R8_is_cg_reg
	REQUIRE	?Register_R9_is_cg_reg
	REQUIRE	?Register_R10_is_cg_reg
	SBIW	R29 : R28,2
	MOVW	R25 : R24,R17 : R16
	MOV	R10,R18
	CPI	R24,2
	LDI	R16,0
	CPC	R25,R16
	BRCC	??next_cluster_0
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_0:
	LDS	R16,BPB_FATType
	CPI	R16,54
	BREQ	$+2+2
	RJMP	??next_cluster_2
	MOVW	R17 : R16,R25 : R24
	MOV	R16,R17
	LDI	R17,0
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R6,Z
	LDD	R7,Z+1
	ADD	R6,R16
	ADC	R7,R17
	CLR	R5
	CLR	R4
	DEC	R4
	AND	R4,R24
	AND	R5,R25
	LSL	R4
	ROL	R5
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R24,Z
	LDD	R25,Z+1
	ADD	R24,R6
	ADC	R25,R7
	LDI	R26,0
	LDI	R27,0
	LDI	R16,2
	CP	R10,R16
	BRNE	??next_cluster_3
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R17 : R16,R25 : R24
	MOVW	R19 : R18,R27 : R26
	RCALL	_FF_read
	TST	R16
	BREQ	$+2+2
	RJMP	??next_cluster_4
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_3:
	LDI	R16,1
	CP	R10,R16
	BREQ	$+2+2
	RJMP	??next_cluster_4
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	CP	R24,R16
	CPC	R25,R17
	CPC	R26,R18
	CPC	R27,R19
	BRNE	$+2+2
	RJMP	??next_cluster_4
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	OR	R16,R17
	OR	R16,R18
	OR	R16,R19
	BREQ	??next_cluster_5
	TST	R10
	BREQ	??next_cluster_5
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	LDI	R30,LOW(_FF_FAT2_ADDR)
	LDI	R31,(_FF_FAT2_ADDR) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	CP	R16,R20
	CPC	R17,R21
	CPC	R18,R22
	CPC	R19,R23
	BRCC	??next_cluster_6
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R0,Z
	LDD	R1,Z+1
	LDD	R2,Z+2
	LDD	R3,Z+3
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	LDI	R19,0
	ADD	R16,R0
	ADC	R17,R1
	ADC	R18,R2
	ADC	R19,R3
	RCALL	_FF_write
	TST	R16
	BRNE	??next_cluster_6
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_6:
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	RCALL	_FF_write
	TST	R16
	BRNE	??next_cluster_5
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_5:
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R17 : R16,R25 : R24
	MOVW	R19 : R18,R27 : R26
	RCALL	_FF_read
	TST	R16
	BRNE	??next_cluster_4
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_4:
	MOVW	R25 : R24,R5 : R4
	ADIW	R25 : R24,1
	MOVW	R31 : R30,R25 : R24
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+1,R16
	MOVW	R31 : R30,R5 : R4
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	ST	Y,R16
??next_cluster_7:
	LD	R16,Y
	LDD	R17,Y+1
??next_cluster_1:
	ADIW	R29 : R28,2
	LDI	R30,11
	JMP	?EPILOGUE_B11_L09
??next_cluster_2:
	LDS	R16,BPB_FATType
	CPI	R16,50
	BREQ	$+2+2
	RJMP	??next_cluster_8
	MOVW	R21 : R20,R25 : R24
	LDI	R16,3
	LDI	R17,0
	CALL	?S_EC_MUL_L02
	MOVW	R5 : R4,R17 : R16
	LSR	R5
	ROR	R4
	MOV	R8,R24
	BST	R8,0
	CLR	R8
	CLR	R9
	BLD	R8,0
	MOVW	R17 : R16,R5 : R4
	MOV	R16,R17
	LDI	R17,0
	LSR	R16
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R6,Z
	LDD	R7,Z+1
	ADD	R6,R16
	ADC	R7,R17
	LDI	R16,255
	AND	R4,R16
	LDI	R16,1
	AND	R5,R16
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R24,Z
	LDD	R25,Z+1
	ADD	R24,R6
	ADC	R25,R7
	LDI	R26,0
	LDI	R27,0
	LDI	R16,2
	CP	R10,R16
	BRNE	??next_cluster_9
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R17 : R16,R25 : R24
	MOVW	R19 : R18,R27 : R26
	RCALL	_FF_read
	TST	R16
	BREQ	$+2+2
	RJMP	??next_cluster_10
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_9:
	LDI	R16,1
	CP	R10,R16
	BREQ	$+2+2
	RJMP	??next_cluster_10
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	CP	R24,R16
	CPC	R25,R17
	CPC	R26,R18
	CPC	R27,R19
	BRNE	$+2+2
	RJMP	??next_cluster_10
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	OR	R16,R17
	OR	R16,R18
	OR	R16,R19
	BREQ	??next_cluster_11
	TST	R10
	BREQ	??next_cluster_11
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	LDI	R30,LOW(_FF_FAT2_ADDR)
	LDI	R31,(_FF_FAT2_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	CP	R20,R16
	CPC	R21,R17
	CPC	R22,R18
	CPC	R23,R19
	BRCC	??next_cluster_12
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R1 : R0,R21 : R20
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 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
	MOVW	R21 : R20,R1 : R0
	RCALL	_FF_write
	TST	R16
	BRNE	??next_cluster_12
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_12:
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	RCALL	_FF_write
	TST	R16
	BRNE	??next_cluster_11
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_11:
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R17 : R16,R25 : R24
	MOVW	R19 : R18,R27 : R26
	RCALL	_FF_read
	TST	R16
	BRNE	??next_cluster_10
	LDI	R16,255
	LDI	R17,255
	RJMP	??next_cluster_1
??next_cluster_10:
	MOVW	R31 : R30,R5 : R4
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	ST	Y,R16
	LDI	R16,255
	CP	R4,R16
	LDI	R16,1
	CPC	R5,R16
	BREQ	$+2+2
	RJMP	??next_cluster_13
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_

⌨️ 快捷键说明

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