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

📄 output.lss

📁 protues仿真
💻 LSS
📖 第 1 页 / 共 5 页
字号:
	CopyNbyte(Buf, pFDT->Name, 11);				/* 名字 */
     6a8:	4b e0       	ldi	r20, 0x0B	; 11
     6aa:	50 e0       	ldi	r21, 0x00	; 0
     6ac:	b7 01       	movw	r22, r14
     6ae:	ce 01       	movw	r24, r28
     6b0:	0e 94 30 09 	call	0x1260

	SET_UINT16(Buf, 26, pFDT->FstClusLO);		/* 首簇号 */	
     6b4:	f7 01       	movw	r30, r14
     6b6:	84 85       	ldd	r24, Z+12	; 0x0c
     6b8:	8a 8f       	std	Y+26, r24	; 0x1a
     6ba:	84 85       	ldd	r24, Z+12	; 0x0c
     6bc:	95 85       	ldd	r25, Z+13	; 0x0d
     6be:	89 2f       	mov	r24, r25
     6c0:	99 27       	eor	r25, r25
     6c2:	8b 8f       	std	Y+27, r24	; 0x1b

	SET_UINT16(Buf, 28, pFDT->FileSize);		/* 大小 */
     6c4:	86 85       	ldd	r24, Z+14	; 0x0e
     6c6:	8c 8f       	std	Y+28, r24	; 0x1c
     6c8:	86 85       	ldd	r24, Z+14	; 0x0e
     6ca:	97 85       	ldd	r25, Z+15	; 0x0f
     6cc:	a0 89       	ldd	r26, Z+16	; 0x10
     6ce:	b1 89       	ldd	r27, Z+17	; 0x11
     6d0:	89 2f       	mov	r24, r25
     6d2:	9a 2f       	mov	r25, r26
     6d4:	ab 2f       	mov	r26, r27
     6d6:	bb 27       	eor	r27, r27
     6d8:	8d 8f       	std	Y+29, r24	; 0x1d
	 
	WriteSector();								/* 写扇区 */
     6da:	0e 94 bf 00 	call	0x17e

	return TRUE;
     6de:	81 e0       	ldi	r24, 0x01	; 1
     6e0:	90 e0       	ldi	r25, 0x00	; 0
     6e2:	df 91       	pop	r29
     6e4:	cf 91       	pop	r28
     6e6:	1f 91       	pop	r17
     6e8:	0f 91       	pop	r16
     6ea:	ff 90       	pop	r15
     6ec:	ef 90       	pop	r14
     6ee:	08 95       	ret

000006f0 <_Z14GetFreeRootFDTv>:
}

/*
;*****************************************************************************************************
;* 函数名称 : GetFreeRootFDT
;* 描    述 : 分配一个空闲根目录项
;* 输 	 入 : 无
;*        
;* 输 	 出 : 目录项索引
;*****************************************************************************************************
;*/
uint16 GetFreeRootFDT(void)
{
     6f0:	0f 93       	push	r16
     6f2:	1f 93       	push	r17
     6f4:	cf 93       	push	r28
     6f6:	df 93       	push	r29
     6f8:	cd b7       	in	r28, 0x3d	; 61
     6fa:	de b7       	in	r29, 0x3e	; 62
     6fc:	62 97       	sbiw	r28, 0x12	; 18
     6fe:	0f b6       	in	r0, 0x3f	; 63
     700:	f8 94       	cli
     702:	de bf       	out	0x3e, r29	; 62
     704:	0f be       	out	0x3f, r0	; 63
     706:	cd bf       	out	0x3d, r28	; 61
	uint16 i;
	FDT pFDT;

	for (i = 0; i < MAX_FDT_NUM; i++)
     708:	00 e0       	ldi	r16, 0x00	; 0
     70a:	10 e0       	ldi	r17, 0x00	; 0
     70c:	80 91 c9 03 	lds	r24, 0x03C9
     710:	90 91 ca 03 	lds	r25, 0x03CA
     714:	08 17       	cp	r16, r24
     716:	19 07       	cpc	r17, r25
     718:	70 f4       	brcc	.+28     	; 0x736
	{
		ReadRootFDTInfo(i, &pFDT);				/* 读取第i个根目录项 */
     71a:	be 01       	movw	r22, r28
     71c:	6f 5f       	subi	r22, 0xFF	; 255
     71e:	7f 4f       	sbci	r23, 0xFF	; 255
     720:	c8 01       	movw	r24, r16
     722:	0e 94 c8 02 	call	0x590
		if (pFDT.Name[0] == 0xE5 || pFDT.Name[0] == 0x00)	 /* 空闲 */
     726:	89 81       	ldd	r24, Y+1	; 0x01
     728:	85 3e       	cpi	r24, 0xE5	; 229
     72a:	29 f0       	breq	.+10     	; 0x736
     72c:	88 23       	and	r24, r24
     72e:	19 f0       	breq	.+6      	; 0x736
     730:	0f 5f       	subi	r16, 0xFF	; 255
     732:	1f 4f       	sbci	r17, 0xFF	; 255
     734:	eb cf       	rjmp	.-42     	; 0x70c
		{
			break;
		}
	}
	return i;									/* 返回目录项索引 */
}
     736:	c8 01       	movw	r24, r16
     738:	62 96       	adiw	r28, 0x12	; 18
     73a:	0f b6       	in	r0, 0x3f	; 63
     73c:	f8 94       	cli
     73e:	de bf       	out	0x3e, r29	; 62
     740:	0f be       	out	0x3f, r0	; 63
     742:	cd bf       	out	0x3d, r28	; 61
     744:	df 91       	pop	r29
     746:	cf 91       	pop	r28
     748:	1f 91       	pop	r17
     74a:	0f 91       	pop	r16
     74c:	08 95       	ret

0000074e <_Z14FileNameChangePcS_>:

/*
;*****************************************************************************************************
;* 函数名称 : FileNameChange
;* 描    述 : 将外部文件名转化为内部文件名
;* 输 	 入 : NameStr: 外部文件名, Filename: 内部文件名
;*        
;* 输 	 出 : TRUE OR FALSE
;*****************************************************************************************************
;*/
uint8 FileNameChange(char *NameStr, char Filename[11])
{
     74e:	dc 01       	movw	r26, r24
	uint8 i, z;
	uint8 extp = 0, len= 0;
     750:	30 e0       	ldi	r19, 0x00	; 0
     752:	43 2f       	mov	r20, r19
	uint8 ch;

	if (NameStr == NULL)
     754:	00 97       	sbiw	r24, 0x00	; 0
     756:	09 f4       	brne	.+2      	; 0x75a
	{
		return FALSE;
     758:	08 95       	ret
	}

	/* 名首不能为空格和'.'及空 */
	ch = *NameStr;
     75a:	2c 91       	ld	r18, X
	if (ch == ' ' || ch == '.' || ch == '\0')
     75c:	20 32       	cpi	r18, 0x20	; 32
     75e:	01 f1       	breq	.+64     	; 0x7a0
     760:	2e 32       	cpi	r18, 0x2E	; 46
     762:	f1 f0       	breq	.+60     	; 0x7a0
     764:	22 23       	and	r18, r18
     766:	e1 f0       	breq	.+56     	; 0x7a0
	{
		return FALSE;
	}

	while ( (len < 11) && ((ch = *NameStr) != '\0') )
	{
		switch (ch)
     768:	82 2f       	mov	r24, r18
     76a:	99 27       	eor	r25, r25
     76c:	8f 32       	cpi	r24, 0x2F	; 47
     76e:	91 05       	cpc	r25, r1
     770:	b9 f0       	breq	.+46     	; 0x7a0
     772:	80 33       	cpi	r24, 0x30	; 48
     774:	91 05       	cpc	r25, r1
     776:	54 f4       	brge	.+20     	; 0x78c
     778:	82 32       	cpi	r24, 0x22	; 34
     77a:	91 05       	cpc	r25, r1
     77c:	89 f0       	breq	.+34     	; 0x7a0
     77e:	82 32       	cpi	r24, 0x22	; 34
     780:	91 05       	cpc	r25, r1
     782:	8c f0       	brlt	.+34     	; 0x7a6
     784:	8a 97       	sbiw	r24, 0x2a	; 42
     786:	03 97       	sbiw	r24, 0x03	; 3
     788:	70 f4       	brcc	.+28     	; 0x7a6
     78a:	0a c0       	rjmp	.+20     	; 0x7a0
     78c:	8a 33       	cpi	r24, 0x3A	; 58
     78e:	91 05       	cpc	r25, r1
     790:	54 f0       	brlt	.+20     	; 0x7a6
     792:	80 34       	cpi	r24, 0x40	; 64
     794:	91 05       	cpc	r25, r1
     796:	24 f0       	brlt	.+8      	; 0x7a0
     798:	8b 55       	subi	r24, 0x5B	; 91
     79a:	90 40       	sbci	r25, 0x00	; 0
     79c:	02 97       	sbiw	r24, 0x02	; 2
     79e:	18 f4       	brcc	.+6      	; 0x7a6
		{
		case 0x22:
		case 0x2A:
		case 0x2B:
		case 0x2C:
		case 0x2F:
		case 0x3A:
		case 0x3B:
		case 0x3C:
		case 0x3D:
		case 0x3E:
		case 0x3F:
		case 0x5B:
		case 0x5C:
			return FALSE;
     7a0:	80 e0       	ldi	r24, 0x00	; 0
     7a2:	90 e0       	ldi	r25, 0x00	; 0
     7a4:	08 95       	ret
		}
		/* 小写转大写 */
		if (ch >= 'a' && ch <= 'z')
     7a6:	82 2f       	mov	r24, r18
     7a8:	81 56       	subi	r24, 0x61	; 97
     7aa:	8a 31       	cpi	r24, 0x1A	; 26
     7ac:	08 f4       	brcc	.+2      	; 0x7b0
		{
			ch -= 'a' - 'A';
     7ae:	20 52       	subi	r18, 0x20	; 32
		}
		/* 找到第一个扩展名标识'.' */
		if (ch == '.' && extp == 0)
     7b0:	2e 32       	cpi	r18, 0x2E	; 46
     7b2:	19 f4       	brne	.+6      	; 0x7ba
     7b4:	44 23       	and	r20, r20
     7b6:	09 f4       	brne	.+2      	; 0x7ba
		{
			extp = len;			/* 记下它的位置 */
     7b8:	43 2f       	mov	r20, r19
		}
		Filename[len] = ch;		/* 记录 */
     7ba:	fb 01       	movw	r30, r22
     7bc:	e3 0f       	add	r30, r19
     7be:	f1 1d       	adc	r31, r1
     7c0:	20 83       	st	Z, r18
		len++;
     7c2:	3f 5f       	subi	r19, 0xFF	; 255
		NameStr++;
     7c4:	11 96       	adiw	r26, 0x01	; 1
     7c6:	3b 30       	cpi	r19, 0x0B	; 11
     7c8:	18 f4       	brcc	.+6      	; 0x7d0
     7ca:	2c 91       	ld	r18, X
     7cc:	22 23       	and	r18, r18
     7ce:	61 f6       	brne	.-104    	; 0x768
	}

	if (extp != 0)				/* 有扩展名 */
     7d0:	44 23       	and	r20, r20
     7d2:	e9 f0       	breq	.+58     	; 0x80e
	{
		i = len - 1;			/* 名字末字节位置 */
     7d4:	93 2f       	mov	r25, r19
     7d6:	91 50       	subi	r25, 0x01	; 1
		/* 将扩展名移到最后 */
		for (z = 10; i > extp; i--, z--)
     7d8:	2a e0       	ldi	r18, 0x0A	; 10
     7da:	49 17       	cp	r20, r25
     7dc:	68 f4       	brcc	.+26     	; 0x7f8
     7de:	db 01       	movw	r26, r22
     7e0:	a9 0f       	add	r26, r25
     7e2:	b1 1d       	adc	r27, r1
		{
			Filename[z] = Filename[i];
     7e4:	fb 01       	movw	r30, r22
     7e6:	e2 0f       	add	r30, r18
     7e8:	f1 1d       	adc	r31, r1
     7ea:	8c 91       	ld	r24, X
     7ec:	11 97       	sbiw	r26, 0x01	; 1
     7ee:	80 83       	st	Z, r24
     7f0:	91 50       	subi	r25, 0x01	; 1
     7f2:	21 50       	subi	r18, 0x01	; 1
     7f4:	49 17       	cp	r20, r25
     7f6:	b0 f3       	brcs	.-20     	; 0x7e4
		}
		/* 中间填入空格 */
		for (; z >= extp; z--)
     7f8:	24 17       	cp	r18, r20
     7fa:	a0 f0       	brcs	.+40     	; 0x824
     7fc:	80 e2       	ldi	r24, 0x20	; 32
		{
			Filename[z] = ' ';
     7fe:	fb 01       	movw	r30, r22
     800:	e2 0f       	add	r30, r18
     802:	f1 1d       	adc	r31, r1
     804:	80 83       	st	Z, r24
     806:	21 50       	subi	r18, 0x01	; 1
     808:	24 17       	cp	r18, r20
     80a:	c8 f7       	brcc	.-14     	; 0x7fe
     80c:	0b c0       	rjmp	.+22     	; 0x824
		}
	}
	else						/* 无扩展名 */
	{
		i = len;				/* 名字后的位置 */	
     80e:	93 2f       	mov	r25, r19
		for (; i < 11; i++)		/* 余下的空间填入空格 */
     810:	3b 30       	cpi	r19, 0x0B	; 11
     812:	40 f4       	brcc	.+16     	; 0x824
     814:	80 e2       	ldi	r24, 0x20	; 32
     816:	fb 01       	movw	r30, r22
     818:	e3 0f       	add	r30, r19
     81a:	f1 1d       	adc	r31, r1
		{
			Filename[i] = ' ';
     81c:	81 93       	st	Z+, r24
     81e:	9f 5f       	subi	r25, 0xFF	; 255
     820:	9b 30       	cpi	r25, 0x0B	; 11
     822:	e0 f3       	brcs	.-8      	; 0x81c
		}
	}
	return TRUE;
     824:	81 e0       	ldi	r24, 0x01	; 1
     826:	90 e0       	ldi	r25, 0x00	; 0
}
     828:	08 95       	ret
     82a:	08 95       	ret

0000082c <_Z18FindSYSNameRootFDTPcP4_FDT>:

/*
;*****************************************************************************************************
;* 函数名称 : FindSYSNameRootFDT
;* 描    述 : 查找指定内部名字的根目录项
;* 输 	 入 : Filename[11]: 内部文件名
;*        
;* 输 	 出 : 目录项索引
;*****************************************************************************************************
;*/
uint16 FindSYSNameRootFDT(char Filename[11], FDT *pFDT)
{
     82c:	ef 92       	push	r14
     82e:	ff 92       	push	r15
     830:	0f 93       	push	r16
     832:	1f 93       	push	r17
     834:	cf 93       	push	r28
     836:	df 93       	push	r29
     838:	7c 01       	movw	r14, r24
     83a:	8b 01       	movw	r16, r22
	uint16 i;

	for (i = 0; i < MAX_FDT_NUM; i++)
     83c:	c0 e0       	ldi	r28, 0x00	; 0
     83e:	d0 e0       	ldi	r29, 0x00	; 0
     840:	80 91 c9 03 	lds	r24, 0x03C9
     844:	90 91 ca 03 	lds	r25, 0x03CA
     848:	c8 17       	cp	r28, r24
     84a:	d9 07       	cpc	r29, r25
     84c:	a8 f4       	brcc	.+42     	; 0x878
	{
		if (!ReadRootFDTInfo(i, pFDT))			/* 读取第i号根目录项 */
     84e:	b8 01       	movw	r22, r16
     850:	ce 01       	movw	r24, r28
     852:	0e 94 c8 02 	call	0x590
     856:	88 23       	and	r24, r24
     858:	29 f4       	brne	.+10     	; 0x864
		{
			return FDT_NO_FOUND;
     85a:	80 91 c9 03 	lds	r24, 0x03C9
     85e:	90 91 ca 03 	lds	r25, 0x03CA
     862:	0b c0       	rjmp	.+22     	; 0x87a
		}
		if (IsEqual(Filename, pFDT->Name, 11))	/* 同名,找到 */
     864:	4b e0       	ldi	r20, 0x0B	; 11
     866:	50 e0       	ldi	r21, 0x00	; 0
     868:	b8 01       	movw	r22, r16
     86a:	c7 01       	movw	r24, r14
     86c:	0e 94 3b 09 	call	0x1276
     870:	88 23       	and	r24, r24
     872:	11 f4       	brne	.+4      	; 0x878
     874:	21 96       	adiw	r28, 0x01	; 1
     876:	e4 cf       	rjmp	.-56     	; 0x840
		{
			break;
		}
	}
	return i;
     878:	ce 01       	movw	r24, r28
     87a:	df 91       	pop	r29
     87c:	cf 91       	pop	r28
     87e:	1f 91       	pop	r17
     880:	0f 91       	pop	r16
     882:	ff 90       	pop	r15
     884:	ef 90       	pop	r14
     886:	08 95       	ret

00000888 <_Z19FindUSERNameRootFDTPcP4_FDT>:
}

/*
;*****************************************************************************************************
;* 函数名称 : FindUSERNameRootFDT
;* 描    述 : 查找指定外部名字的根目录项
;* 输 	 入 : NameStr[11]: 外部文件名
;*        
;* 输 	 出 : 目录项索引
;*****************************************************************************************************
;*/
uint16 FindUSERNameRootFDT(char NameStr[11], FDT *pFDT)

⌨️ 快捷键说明

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