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

📄 fdt.lst

📁 AT89C51 MP3源程序AT89C51 MP3源程序 SD AT89C51 MP3源程序AT89C51 MP3源程序 SD
💻 LST
📖 第 1 页 / 共 3 页
字号:
 297 0128 8A8F      		std Y+26,r24
 298 012a 8485      		ldd r24,Z+12
 299 012c 9585      		ldd r25,Z+13
 300 012e 892F      		mov r24,r25
 301 0130 9927      		clr r25
 302 0132 8B8F      		std Y+27,r24
  96:fdt.c         **** 
  97:fdt.c         **** 	SET_UINT16(Buf, 28, pFDT->FileSize);		/* 大小 */
 304               	.LM25:
 305 0134 8685      		ldd r24,Z+14
 306 0136 8C8F      		std Y+28,r24
 307 0138 8685      		ldd r24,Z+14
 308 013a 9785      		ldd r25,Z+15
 309 013c A089      		ldd r26,Z+16
 310 013e B189      		ldd r27,Z+17
 311 0140 892F      		mov r24,r25
 312 0142 9A2F      		mov r25,r26
 313 0144 AB2F      		mov r26,r27
 314 0146 BB27      		clr r27
 315 0148 8D8F      		std Y+29,r24
  98:fdt.c         **** 	 
  99:fdt.c         **** 	WriteSector();								/* 写扇区 */
 317               	.LM26:
 318 014a 0E94 0000 		call _Z11WriteSectorv
 100:fdt.c         **** 
 101:fdt.c         **** 	return TRUE;
 320               	.LM27:
 321 014e 81E0      		ldi r24,lo8(1)
 322 0150 90E0      		ldi r25,hi8(1)
 323               	.L4:
 324               	.LBE5:
 325               	.LBE4:
 326               	/* epilogue: frame size=0 */
 327 0152 DF91      		pop r29
 328 0154 CF91      		pop r28
 329 0156 1F91      		pop r17
 330 0158 0F91      		pop r16
 331 015a FF90      		pop r15
 332 015c EF90      		pop r14
 333 015e 0895      		ret
 334               	/* epilogue end (size=7) */
 335               	/* function uint8 WriteRootFDTInfo(uint16, FDT*) size 84 (71) */
 341               	.global	_Z14GetFreeRootFDTv
 343               	_Z14GetFreeRootFDTv:
 102:fdt.c         **** }
 103:fdt.c         **** 
 104:fdt.c         **** /*
 105:fdt.c         **** ;**************************************************************************************************
 106:fdt.c         **** ;* 函数名称 : GetFreeRootFDT
 107:fdt.c         **** ;* 描    述 : 分配一个空闲根目录项
 108:fdt.c         **** ;* 输 	 入 : 无
 109:fdt.c         **** ;*        
 110:fdt.c         **** ;* 输 	 出 : 目录项索引
 111:fdt.c         **** ;**************************************************************************************************
 112:fdt.c         **** ;*/
 113:fdt.c         **** uint16 GetFreeRootFDT(void)
 114:fdt.c         **** {
 345               	.LM28:
 346               	/* prologue: frame size=18 */
 347 0160 0F93      		push r16
 348 0162 1F93      		push r17
 349 0164 CF93      		push r28
 350 0166 DF93      		push r29
 351 0168 CDB7      		in r28,__SP_L__
 352 016a DEB7      		in r29,__SP_H__
 353 016c 6297      		sbiw r28,18
 354 016e 0FB6      		in __tmp_reg__,__SREG__
 355 0170 F894      		cli
 356 0172 DEBF      		out __SP_H__,r29
 357 0174 0FBE      		out __SREG__,__tmp_reg__
 358 0176 CDBF      		out __SP_L__,r28
 359               	/* prologue end (size=12) */
 360               	.LBB6:
 361               	.LBB7:
 115:fdt.c         **** 	uint16 i;
 116:fdt.c         **** 	FDT pFDT;
 117:fdt.c         **** 
 118:fdt.c         **** 	for (i = 0; i < MAX_FDT_NUM; i++)
 363               	.LM29:
 364 0178 00E0      		ldi r16,lo8(0)
 365 017a 10E0      		ldi r17,hi8(0)
 366               	.L15:
 368               	.LM30:
 369 017c 8091 0000 		lds r24,FS_RootEntCnt
 370 0180 9091 0000 		lds r25,(FS_RootEntCnt)+1
 371 0184 0817      		cp r16,r24
 372 0186 1907      		cpc r17,r25
 373 0188 70F4      		brsh .L9
 119:fdt.c         **** 	{
 120:fdt.c         **** 		ReadRootFDTInfo(i, &pFDT);				/* 读取第i个根目录项 */
 375               	.LM31:
 376 018a BE01      		movw r22,r28
 377 018c 6F5F      		subi r22,lo8(-(1))
 378 018e 7F4F      		sbci r23,hi8(-(1))
 379 0190 C801      		movw r24,r16
 380 0192 0E94 0000 		call _Z15ReadRootFDTInfojP4_FDT
 121:fdt.c         **** 		if (pFDT.Name[0] == 0xE5 || pFDT.Name[0] == 0x00)	 /* 空闲 */
 382               	.LM32:
 383 0196 8981      		ldd r24,Y+1
 384 0198 853E      		cpi r24,lo8(-27)
 385 019a 29F0      		breq .L9
 386 019c 8823      		tst r24
 387 019e 19F0      		breq .L9
 389               	.LM33:
 390 01a0 0F5F      		subi r16,lo8(-(1))
 391 01a2 1F4F      		sbci r17,hi8(-(1))
 392 01a4 EBCF      		rjmp .L15
 393               	.L9:
 394               	.LBE7:
 395               	.LBE6:
 122:fdt.c         **** 		{
 123:fdt.c         **** 			break;
 124:fdt.c         **** 		}
 125:fdt.c         **** 	}
 126:fdt.c         **** 	return i;									/* 返回目录项索引 */
 127:fdt.c         **** }
 397               	.LM34:
 398 01a6 C801      		movw r24,r16
 399               	/* epilogue: frame size=18 */
 400 01a8 6296      		adiw r28,18
 401 01aa 0FB6      		in __tmp_reg__,__SREG__
 402 01ac F894      		cli
 403 01ae DEBF      		out __SP_H__,r29
 404 01b0 0FBE      		out __SREG__,__tmp_reg__
 405 01b2 CDBF      		out __SP_L__,r28
 406 01b4 DF91      		pop r29
 407 01b6 CF91      		pop r28
 408 01b8 1F91      		pop r17
 409 01ba 0F91      		pop r16
 410 01bc 0895      		ret
 411               	/* epilogue end (size=11) */
 412               	/* function uint16 GetFreeRootFDT() size 47 (24) */
 421               	.global	_Z14FileNameChangePcS_
 423               	_Z14FileNameChangePcS_:
 128:fdt.c         **** 
 129:fdt.c         **** /*
 130:fdt.c         **** ;**************************************************************************************************
 131:fdt.c         **** ;* 函数名称 : FileNameChange
 132:fdt.c         **** ;* 描    述 : 将外部文件名转化为内部文件名
 133:fdt.c         **** ;* 输 	 入 : NameStr: 外部文件名, Filename: 内部文件名
 134:fdt.c         **** ;*        
 135:fdt.c         **** ;* 输 	 出 : TRUE OR FALSE
 136:fdt.c         **** ;**************************************************************************************************
 137:fdt.c         **** ;*/
 138:fdt.c         **** uint8 FileNameChange(char *NameStr, char Filename[11])
 139:fdt.c         **** {
 425               	.LM35:
 426               	/* prologue: frame size=0 */
 427               	/* prologue end (size=0) */
 428 01be DC01      		movw r26,r24
 429               	.LBB8:
 430               	.LBB9:
 140:fdt.c         **** 	uint8 i, z;
 141:fdt.c         **** 	uint8 extp = 0, len= 0;
 432               	.LM36:
 433 01c0 30E0      		ldi r19,lo8(0)
 434 01c2 432F      		mov r20,r19
 142:fdt.c         **** 	uint8 ch;
 143:fdt.c         **** 
 144:fdt.c         **** 	if (NameStr == NULL)
 436               	.LM37:
 437 01c4 0097      		sbiw r24,0
 438 01c6 09F4      		brne .L17
 145:fdt.c         **** 	{
 146:fdt.c         **** 		return FALSE;
 440               	.LM38:
 441 01c8 0895      		ret
 442               	.L17:
 147:fdt.c         **** 	}
 148:fdt.c         **** 
 149:fdt.c         **** 	/* 名首不能为空格和'.'及空 */
 150:fdt.c         **** 	ch = *NameStr;
 444               	.LM39:
 445 01ca 2C91      		ld r18,X
 151:fdt.c         **** 	if (ch == ' ' || ch == '.' || ch == '\0')
 447               	.LM40:
 448 01cc 2032      		cpi r18,lo8(32)
 449 01ce 01F1      		breq .L35
 450 01d0 2E32      		cpi r18,lo8(46)
 451 01d2 F1F0      		breq .L35
 452 01d4 2223      		tst r18
 453 01d6 E1F0      		breq .L35
 454               	.L39:
 152:fdt.c         **** 	{
 153:fdt.c         **** 		return FALSE;
 154:fdt.c         **** 	}
 155:fdt.c         **** 
 156:fdt.c         **** 	while ( (len < 11) && ((ch = *NameStr) != '\0') )
 157:fdt.c         **** 	{
 158:fdt.c         **** 		switch (ch)
 456               	.LM41:
 457 01d8 822F      		mov r24,r18
 458 01da 9927      		clr r25
 459 01dc 8F32      		cpi r24,47
 460 01de 9105      		cpc r25,__zero_reg__
 461 01e0 B9F0      		breq .L35
 462 01e2 8033      		cpi r24,48
 463 01e4 9105      		cpc r25,__zero_reg__
 464 01e6 54F4      		brge .L36
 465 01e8 8232      		cpi r24,34
 466 01ea 9105      		cpc r25,__zero_reg__
 467 01ec 89F0      		breq .L35
 468 01ee 8232      		cpi r24,34
 469 01f0 9105      		cpc r25,__zero_reg__
 470 01f2 8CF0      		brlt .L22
 471 01f4 8A97      		sbiw r24,42
 472 01f6 0397      		sbiw r24,3
 473 01f8 70F4      		brsh .L22
 474 01fa 0AC0      		rjmp .L35
 475               	.L36:
 476 01fc 8A33      		cpi r24,58
 477 01fe 9105      		cpc r25,__zero_reg__
 478 0200 54F0      		brlt .L22
 479 0202 8034      		cpi r24,64
 480 0204 9105      		cpc r25,__zero_reg__
 481 0206 24F0      		brlt .L35
 482 0208 8B55      		subi r24,lo8(-(-91))
 483 020a 9040      		sbci r25,hi8(-(-91))
 484 020c 0297      		sbiw r24,2
 485 020e 18F4      		brsh .L22
 486               	.L35:
 159:fdt.c         **** 		{
 160:fdt.c         **** 		case 0x22:
 161:fdt.c         **** 		case 0x2A:
 162:fdt.c         **** 		case 0x2B:
 163:fdt.c         **** 		case 0x2C:
 164:fdt.c         **** 		case 0x2F:
 165:fdt.c         **** 		case 0x3A:
 166:fdt.c         **** 		case 0x3B:
 167:fdt.c         **** 		case 0x3C:
 168:fdt.c         **** 		case 0x3D:
 169:fdt.c         **** 		case 0x3E:
 170:fdt.c         **** 		case 0x3F:
 171:fdt.c         **** 		case 0x5B:
 172:fdt.c         **** 		case 0x5C:
 173:fdt.c         **** 			return FALSE;
 488               	.LM42:
 489 0210 80E0      		ldi r24,lo8(0)
 490 0212 90E0      		ldi r25,hi8(0)
 491 0214 0895      		ret
 492               	.L22:
 174:fdt.c         **** 		}
 175:fdt.c         **** 		/* 小写转大写 */
 176:fdt.c         **** 		if (ch >= 'a' && ch <= 'z')
 494               	.LM43:
 495 0216 822F      		mov r24,r18
 496 0218 8156      		subi r24,lo8(-(-97))
 497 021a 8A31      		cpi r24,lo8(26)
 498 021c 08F4      		brsh .L37
 177:fdt.c         **** 		{
 178:fdt.c         **** 			ch -= 'a' - 'A';
 500               	.LM44:
 501 021e 2052      		subi r18,lo8(-(-32))
 502               	.L37:
 179:fdt.c         **** 		}
 180:fdt.c         **** 		/* 找到第一个扩展名标识'.' */
 181:fdt.c         **** 		if (ch == '.' && extp == 0)
 504               	.LM45:
 505 0220 2E32      		cpi r18,lo8(46)
 506 0222 19F4      		brne .L38
 507 0224 4423      		tst r20
 508 0226 09F4      		brne .L38
 182:fdt.c         **** 		{
 183:fdt.c         **** 			extp = len;			/* 记下它的位置 */
 510               	.LM46:
 511 0228 432F      		mov r20,r19
 512               	.L38:
 184:fdt.c         **** 		}
 185:fdt.c         **** 		Filename[len] = ch;		/* 记录 */
 514               	.LM47:
 515 022a FB01      		movw r30,r22
 516 022c E30F      		add r30,r19
 517 022e F11D      		adc r31,__zero_reg__
 518 0230 2083      		st Z,r18
 186:fdt.c         **** 		len++;
 520               	.LM48:
 521 0232 3F5F      		subi r19,lo8(-(1))
 187:fdt.c         **** 		NameStr++;
 523               	.LM49:
 524 0234 1196      		adiw r26,1
 525 0236 3B30      		cpi r19,lo8(11)
 526 0238 18F4      		brsh .L21
 527 023a 2C91      		ld r18,X
 528 023c 2223      		tst r18
 529 023e 61F6      		brne .L39
 530               	.L21:
 188:fdt.c         **** 	}

⌨️ 快捷键说明

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