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

📄 fat16.lst

📁 AT89C51 MP3源程序AT89C51 MP3源程序 SD AT89C51 MP3源程序AT89C51 MP3源程序 SD
💻 LST
📖 第 1 页 / 共 2 页
字号:
  97:fat16.c       **** ;* 函数名称 : AddNewClus
  98:fat16.c       **** ;* 描    述 : 为指定簇链增加一个簇
  99:fat16.c       **** ;* 输 	 入 : ClusIndex: 簇号
 100:fat16.c       **** ;*        
 101:fat16.c       **** ;* 输 	 出 : 下一簇号
 102:fat16.c       **** ;**************************************************************************************************
 103:fat16.c       **** ;*/
 104:fat16.c       **** uint16 AddNewClus(uint16 ClusIndex)
 105:fat16.c       **** {
 297               	.LM21:
 298               	/* prologue: frame size=0 */
 299 00c2 0F93      		push r16
 300 00c4 1F93      		push r17
 301 00c6 CF93      		push r28
 302 00c8 DF93      		push r29
 303               	/* prologue end (size=4) */
 304 00ca EC01      		movw r28,r24
 305               	.LBB6:
 306               	.LBB7:
 106:fat16.c       **** 	uint16 NextClus, i;
 107:fat16.c       **** 
 108:fat16.c       **** 	if (ClusIndex >= FS_MaxClus)					/* 簇号无效 */
 308               	.LM22:
 309 00cc 8091 0000 		lds r24,FS_MaxClus
 310 00d0 9091 0000 		lds r25,(FS_MaxClus)+1
 311 00d4 C817      		cp r28,r24
 312 00d6 D907      		cpc r29,r25
 313 00d8 98F5      		brsh .L24
 109:fat16.c       **** 	{
 110:fat16.c       **** 		return BAD_CLUS;
 111:fat16.c       **** 	}
 112:fat16.c       **** 
 113:fat16.c       **** 	if (ClusIndex > EMPTY_CLUS_1)					/* 追加簇链 */
 315               	.LM23:
 316 00da C230      		cpi r28,2
 317 00dc D105      		cpc r29,__zero_reg__
 318 00de 80F0      		brlo .L11
 319               	.L12:
 114:fat16.c       **** 	{
 115:fat16.c       **** 		/* 查找簇链尾 */
 116:fat16.c       **** 		do 
 117:fat16.c       **** 		{	
 118:fat16.c       **** 			NextClus = GetNextClus(ClusIndex);		/* 下一簇号 */
 321               	.LM24:
 322 00e0 CE01      		movw r24,r28
 323 00e2 0E94 0000 		call _Z11GetNextClusj
 324 00e6 9C01      		movw r18,r24
 119:fat16.c       **** 
 120:fat16.c       **** 			if (NextClus == BAD_CLUS)				/* 当前簇为坏簇 */
 326               	.LM25:
 327 00e8 4FEF      		ldi r20,hi8(-9)
 328 00ea 873F      		cpi r24,lo8(-9)
 329 00ec 9407      		cpc r25,r20
 330 00ee 31F0      		breq .L25
 121:fat16.c       **** 			{
 122:fat16.c       **** 				return BAD_CLUS;
 123:fat16.c       **** 			}
 124:fat16.c       **** 			/* 到达簇链尾 */
 125:fat16.c       **** 			if (NextClus >= EOF_CLUS_1 || NextClus <= EMPTY_CLUS_1)
 332               	.LM26:
 333 00f0 0297      		sbiw r24,2
 334 00f2 865F      		subi r24,lo8(-10)
 335 00f4 9F4F      		sbci r25,hi8(-10)
 336 00f6 30F4      		brsh .L16
 126:fat16.c       **** 			{
 127:fat16.c       **** 				break;
 128:fat16.c       **** 			}
 129:fat16.c       **** 			ClusIndex = NextClus;
 338               	.LM27:
 339 00f8 E901      		movw r28,r18
 130:fat16.c       **** 		} while (1);
 341               	.LM28:
 342 00fa F2CF      		rjmp .L12
 343               	.L25:
 345               	.LM29:
 346 00fc BC01      		movw r22,r24
 347 00fe 22C0      		rjmp .L9
 348               	.L11:
 131:fat16.c       **** 	}
 132:fat16.c       **** 	else											/* 新建一个簇 */
 133:fat16.c       **** 	{
 134:fat16.c       **** 		ClusIndex = NEW_CLUS_CHAIN;
 350               	.LM30:
 351 0100 C0E0      		ldi r28,lo8(0)
 352 0102 D0E0      		ldi r29,hi8(0)
 353               	.L16:
 135:fat16.c       **** 	}
 136:fat16.c       **** 
 137:fat16.c       **** 	/* 查找一个空闲簇 */
 138:fat16.c       **** 	for (i = EMPTY_CLUS_1 + 1; i < FS_MaxClus; i++)
 355               	.LM31:
 356 0104 02E0      		ldi r16,lo8(2)
 357 0106 10E0      		ldi r17,hi8(2)
 358               	.L26:
 359 0108 8091 0000 		lds r24,FS_MaxClus
 360 010c 9091 0000 		lds r25,(FS_MaxClus)+1
 361 0110 0817      		cp r16,r24
 362 0112 1907      		cpc r17,r25
 363 0114 A8F4      		brsh .L24
 139:fat16.c       **** 	{
 140:fat16.c       **** 		if (GetNextClus(i) == EMPTY_CLUS)			/* 找到空闲簇 */
 365               	.LM32:
 366 0116 C801      		movw r24,r16
 367 0118 0E94 0000 		call _Z11GetNextClusj
 368 011c 892B      		or r24,r25
 369 011e 69F4      		brne .L19
 141:fat16.c       **** 		{
 142:fat16.c       **** 			if (ClusIndex != NEW_CLUS_CHAIN)		/* 追加簇链 */
 371               	.LM33:
 372 0120 2097      		sbiw r28,0
 373 0122 21F0      		breq .L21
 143:fat16.c       **** 			{
 144:fat16.c       **** 				SetNextClus(ClusIndex, i);
 375               	.LM34:
 376 0124 B801      		movw r22,r16
 377 0126 CE01      		movw r24,r28
 378 0128 0E94 0000 		call _Z11SetNextClusjj
 379               	.L21:
 145:fat16.c       **** 			}
 146:fat16.c       **** 			SetNextClus(i, EOF_CLUS_END);			/* 簇链尾 */
 381               	.LM35:
 382 012c 6FEF      		ldi r22,lo8(-1)
 383 012e 7FEF      		ldi r23,hi8(-1)
 384 0130 C801      		movw r24,r16
 385 0132 0E94 0000 		call _Z11SetNextClusjj
 147:fat16.c       **** 			return i;
 387               	.LM36:
 388 0136 B801      		movw r22,r16
 389 0138 05C0      		rjmp .L9
 390               	.L19:
 392               	.LM37:
 393 013a 0F5F      		subi r16,lo8(-(1))
 394 013c 1F4F      		sbci r17,hi8(-(1))
 395 013e E4CF      		rjmp .L26
 396               	.L24:
 148:fat16.c       **** 		}
 149:fat16.c       **** 	}
 150:fat16.c       **** 	return BAD_CLUS;
 398               	.LM38:
 399 0140 67EF      		ldi r22,lo8(-9)
 400 0142 7FEF      		ldi r23,hi8(-9)
 401               	.L9:
 402               	.LBE7:
 403               	.LBE6:
 151:fat16.c       **** }
 405               	.LM39:
 406 0144 CB01      		movw r24,r22
 407               	/* epilogue: frame size=0 */
 408 0146 DF91      		pop r29
 409 0148 CF91      		pop r28
 410 014a 1F91      		pop r17
 411 014c 0F91      		pop r16
 412 014e 0895      		ret
 413               	/* epilogue end (size=5) */
 414               	/* function uint16 AddNewClus(uint16) size 72 (63) */
 422               	.global	_Z12DelClusChainj
 424               	_Z12DelClusChainj:
 152:fat16.c       **** 
 153:fat16.c       **** /*
 154:fat16.c       **** ;**************************************************************************************************
 155:fat16.c       **** ;* 函数名称 : DelClusChain
 156:fat16.c       **** ;* 描    述 : 删除簇链
 157:fat16.c       **** ;* 输 	 入 : ClusIndex: 簇号
 158:fat16.c       **** ;*        
 159:fat16.c       **** ;* 输 	 出 : 无
 160:fat16.c       **** ;**************************************************************************************************
 161:fat16.c       **** ;*/
 162:fat16.c       **** void DelClusChain(uint16 CurClus)
 163:fat16.c       **** {
 426               	.LM40:
 427               	/* prologue: frame size=0 */
 428 0150 0F93      		push r16
 429 0152 1F93      		push r17
 430 0154 CF93      		push r28
 431 0156 DF93      		push r29
 432               	/* prologue end (size=4) */
 433 0158 8C01      		movw r16,r24
 434               	.LBB8:
 435               	.LBB9:
 164:fat16.c       **** 	uint16 NextClus;
 165:fat16.c       **** 
 166:fat16.c       **** 	/* 簇号无效	*/
 167:fat16.c       **** 	if (CurClus >= FS_MaxClus)
 437               	.LM41:
 438 015a 8091 0000 		lds r24,FS_MaxClus
 439 015e 9091 0000 		lds r25,(FS_MaxClus)+1
 440 0162 0817      		cp r16,r24
 441 0164 1907      		cpc r17,r25
 442 0166 98F4      		brsh .L27
 443               	.L29:
 168:fat16.c       **** 	{
 169:fat16.c       **** 		return;
 170:fat16.c       **** 	}
 171:fat16.c       **** 
 172:fat16.c       **** 	while (1)
 173:fat16.c       **** 	{
 174:fat16.c       **** 		NextClus = GetNextClus(CurClus);						/* 获得当前簇的下一簇号	*/
 445               	.LM42:
 446 0168 C801      		movw r24,r16
 447 016a 0E94 0000 		call _Z11GetNextClusj
 448 016e EC01      		movw r28,r24
 175:fat16.c       **** 		if (NextClus == BAD_CLUS)								/* 当前簇为坏簇			*/
 450               	.LM43:
 451 0170 875F      		subi r24,lo8(-9)
 452 0172 9F4F      		sbci r25,hi8(-9)
 453 0174 61F0      		breq .L27
 176:fat16.c       **** 		{
 177:fat16.c       **** 			break;
 178:fat16.c       **** 		}	
 179:fat16.c       **** 		
 180:fat16.c       **** 		SetNextClus(CurClus, EMPTY_CLUS);						/* 释放当前簇			*/
 455               	.LM44:
 456 0176 60E0      		ldi r22,lo8(0)
 457 0178 70E0      		ldi r23,hi8(0)
 458 017a C801      		movw r24,r16
 459 017c 0E94 0000 		call _Z11SetNextClusjj
 181:fat16.c       **** 
 182:fat16.c       **** 		if (NextClus >= EOF_CLUS_1 || NextClus <= EMPTY_CLUS_1)	/* 结束或保留簇			*/
 461               	.LM45:
 462 0180 CE01      		movw r24,r28
 463 0182 0297      		sbiw r24,2
 464 0184 865F      		subi r24,lo8(-10)
 465 0186 9F4F      		sbci r25,hi8(-10)
 466 0188 10F4      		brsh .L27
 183:fat16.c       **** 		{
 184:fat16.c       **** 			break;
 185:fat16.c       **** 		}
 186:fat16.c       **** 		CurClus = NextClus;
 468               	.LM46:
 469 018a 8E01      		movw r16,r28
 470 018c EDCF      		rjmp .L29
 471               	.L27:
 472               	.LBE9:
 473               	.LBE8:
 474               	/* epilogue: frame size=0 */
 475 018e DF91      		pop r29
 476 0190 CF91      		pop r28
 477 0192 1F91      		pop r17
 478 0194 0F91      		pop r16
 479 0196 0895      		ret
 480               	/* epilogue end (size=5) */
 481               	/* function void DelClusChain(uint16) size 38 (29) */
 492               		.text
 494               	Letext:
 495               	/* File "fat16.c": code  209 = 0x00d1 ( 177), prologues  14, epilogues  18 */
DEFINED SYMBOLS
                            *ABS*:00000000 fat16.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:85     .bss:00000000 FS_DataStartSec
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:91     .bss:00000004 FS_RootDirStartSec
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:97     .bss:00000006 FS_RootEntCnt
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:103    .bss:00000008 FS_MaxClus
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:109    .bss:0000000a FS_FATStartSec
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:115    .bss:0000000b FS_SecPerClus
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:122    .text:00000000 _Z11GetNextClusj
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:206    .text:0000005e _Z11SetNextClusjj
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:295    .text:000000c2 _Z10AddNewClusj
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:424    .text:00000150 _Z12DelClusChainj
C:\Users\ADMINI~1\AppData\Local\Temp/ccmyaaaa.s:494    .text:00000198 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
_Z10OpenSectorm
_Z11WriteSectorv

⌨️ 快捷键说明

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