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

📄 file.lst

📁 protues仿真
💻 LST
📖 第 1 页 / 共 5 页
字号:
 546               	.LM49:
 547 020a 0097      		sbiw r24,0
 548 020c 71F1      		breq .L53
 260:file.c        **** 	{
 261:file.c        **** 		return ((M_FILE)0);
 262:file.c        **** 	}
 263:file.c        **** 
 264:file.c        **** 	/* 查找是否已存在该文件 */
 265:file.c        **** 	FDTIndex = FindSYSNameRootFDT(Filename, &(fp->fFDT));
 550               	.LM50:
 551 020e BC01      		movw r22,r24
 552 0210 CE01      		movw r24,r28
 553 0212 0196      		adiw r24,1
 554 0214 0E94 0000 		call _Z18FindSYSNameRootFDTPcP4_FDT
 555 0218 7C01      		movw r14,r24
 266:file.c        **** 
 267:file.c        **** 	if (FDTIndex == FDT_NO_FOUND)
 557               	.LM51:
 558 021a 8091 0000 		lds r24,FS_RootEntCnt
 559 021e 9091 0000 		lds r25,(FS_RootEntCnt)+1
 560 0222 E816      		cp r14,r24
 561 0224 F906      		cpc r15,r25
 562 0226 B1F4      		brne .L51
 268:file.c        **** 	{
 269:file.c        **** 		/* 不存在, 则创建 */
 270:file.c        **** 		FDTIndex = _CreateFile(Filename);
 564               	.LM52:
 565 0228 CE01      		movw r24,r28
 566 022a 0196      		adiw r24,1
 567 022c 0E94 0000 		call _Z11_CreateFilePc
 568 0230 7C01      		movw r14,r24
 271:file.c        **** 
 272:file.c        **** 		if (FDTIndex == MAX_FDT_NUM)
 570               	.LM53:
 571 0232 8091 0000 		lds r24,FS_RootEntCnt
 572 0236 9091 0000 		lds r25,(FS_RootEntCnt)+1
 573 023a E816      		cp r14,r24
 574 023c F906      		cpc r15,r25
 575 023e 31F4      		brne .L52
 273:file.c        **** 		{
 274:file.c        **** 			/* 不成功, 则释放文件管理器 */
 275:file.c        **** 			FreeFileMan(fp);
 577               	.LM54:
 578 0240 C801      		movw r24,r16
 579 0242 0E94 0000 		call _Z11FreeFileManP14FileManageInfo
 580               	.L54:
 276:file.c        **** 			return ((M_FILE)0);
 582               	.LM55:
 583 0246 60E0      		ldi r22,lo8(0)
 584 0248 70E0      		ldi r23,hi8(0)
 585 024a 10C0      		rjmp .L47
 586               	.L52:
 277:file.c        **** 		}
 278:file.c        **** 		/* 获得文件信息 */
 279:file.c        **** 		ReadRootFDTInfo(FDTIndex, &(fp->fFDT));
 588               	.LM56:
 589 024c B801      		movw r22,r16
 590 024e C701      		movw r24,r14
 591 0250 0E94 0000 		call _Z15ReadRootFDTInfojP4_FDT
 592               	.L51:
 280:file.c        **** 	}	
 281:file.c        **** 	
 282:file.c        **** 	/* 文件目录项索引 */
 283:file.c        **** 	fp->FdtIndex = FDTIndex;
 594               	.LM57:
 595 0254 F801      		movw r30,r16
 596 0256 E38A      		std Z+19,r14
 597 0258 F48A      		std Z+20,r15
 284:file.c        **** 
 285:file.c        **** 	/* 读写指针所在簇 */
 286:file.c        **** 	fp->CurClus = fp->fFDT.FstClusLO;
 599               	.LM58:
 600 025a 8485      		ldd r24,Z+12
 601 025c 9585      		ldd r25,Z+13
 602 025e 858B      		std Z+21,r24
 603 0260 968B      		std Z+22,r25
 287:file.c        **** 
 288:file.c        **** 	/* 读写指针偏移 */
 289:file.c        **** 	fp->Offset  = 0;
 605               	.LM59:
 606 0262 178A      		std Z+23,__zero_reg__
 607 0264 108E      		std Z+24,__zero_reg__
 608 0266 118E      		std Z+25,__zero_reg__
 609 0268 128E      		std Z+26,__zero_reg__
 610               	.L53:
 290:file.c        **** 
 291:file.c        **** 	return fp;
 612               	.LM60:
 613 026a B801      		movw r22,r16
 614               	.L47:
 615               	.LBE16:
 616               	.LBE15:
 292:file.c        **** }
 618               	.LM61:
 619 026c CB01      		movw r24,r22
 620               	/* epilogue: frame size=11 */
 621 026e 2B96      		adiw r28,11
 622 0270 0FB6      		in __tmp_reg__,__SREG__
 623 0272 F894      		cli
 624 0274 DEBF      		out __SP_H__,r29
 625 0276 0FBE      		out __SREG__,__tmp_reg__
 626 0278 CDBF      		out __SP_L__,r28
 627 027a DF91      		pop r29
 628 027c CF91      		pop r28
 629 027e 1F91      		pop r17
 630 0280 0F91      		pop r16
 631 0282 FF90      		pop r15
 632 0284 EF90      		pop r14
 633 0286 0895      		ret
 634               	/* epilogue end (size=13) */
 635               	/* function FileManageInfo* OpenFile(char*) size 94 (67) */
 644               	.global	_Z9CloseFileP14FileManageInfo
 646               	_Z9CloseFileP14FileManageInfo:
 293:file.c        **** 
 294:file.c        **** /*
 295:file.c        **** ;**************************************************************************************************
 296:file.c        **** ;* 函数名称 : CloseFile
 297:file.c        **** ;* 描    述 : 关闭文件
 298:file.c        **** ;* 输 	 入 : fp: 文件指针
 299:file.c        **** ;*        
 300:file.c        **** ;* 输 	 出 : 文件指针
 301:file.c        **** ;**************************************************************************************************
 302:file.c        **** ;*/
 303:file.c        **** uint8 CloseFile(M_FILE fp)
 304:file.c        **** {
 648               	.LM62:
 649               	/* prologue: frame size=0 */
 650 0288 CF93      		push r28
 651 028a DF93      		push r29
 652               	/* prologue end (size=2) */
 653               	.LBB17:
 305:file.c        **** 	if (!fp)
 655               	.LM63:
 656 028c 0097      		sbiw r24,0
 657 028e 11F4      		brne .L56
 306:file.c        **** 	{
 307:file.c        **** 		return FALSE;
 659               	.LM64:
 660 0290 BC01      		movw r22,r24
 661 0292 16C0      		rjmp .L55
 662               	.L56:
 308:file.c        **** 	}
 309:file.c        **** 
 310:file.c        **** 	/* 文件是否已打开 */
 311:file.c        **** 	fp = _IsFileOpen(fp->fFDT.Name);
 664               	.LM65:
 665 0294 0E94 0000 		call _Z11_IsFileOpenPc
 666 0298 EC01      		movw r28,r24
 312:file.c        **** 	if (fp)
 668               	.LM66:
 669 029a 0097      		sbiw r24,0
 670 029c 79F0      		breq .L57
 313:file.c        **** 	{
 314:file.c        **** 		if (WriteRootFDTInfo(fp->FdtIndex, &(fp->fFDT)))	
 672               	.LM67:
 673 029e BC01      		movw r22,r24
 674 02a0 8B89      		ldd r24,Y+19
 675 02a2 9C89      		ldd r25,Y+20
 676 02a4 0E94 0000 		call _Z16WriteRootFDTInfojP4_FDT
 677 02a8 8823      		tst r24
 678 02aa 41F0      		breq .L57
 315:file.c        **** 		{
 316:file.c        **** 			CacheWriteBack();
 680               	.LM68:
 681 02ac 0E94 0000 		call _Z14CacheWriteBackv
 317:file.c        **** 			FreeFileMan(fp);
 683               	.LM69:
 684 02b0 CE01      		movw r24,r28
 685 02b2 0E94 0000 		call _Z11FreeFileManP14FileManageInfo
 318:file.c        **** 			return TRUE;
 687               	.LM70:
 688 02b6 61E0      		ldi r22,lo8(1)
 689 02b8 70E0      		ldi r23,hi8(1)
 690 02ba 02C0      		rjmp .L55
 691               	.L57:
 319:file.c        **** 		}
 320:file.c        **** 	}
 321:file.c        **** 	return FALSE;
 693               	.LM71:
 694 02bc 60E0      		ldi r22,lo8(0)
 695 02be 70E0      		ldi r23,hi8(0)
 696               	.L55:
 697               	.LBE17:
 322:file.c        **** }
 699               	.LM72:
 700 02c0 CB01      		movw r24,r22
 701               	/* epilogue: frame size=0 */
 702 02c2 DF91      		pop r29
 703 02c4 CF91      		pop r28
 704 02c6 0895      		ret
 705               	/* epilogue end (size=3) */
 706               	/* function uint8 CloseFile(FileManageInfo*) size 32 (27) */
 710               	.global	_Z17GetFristSecOfClusj
 712               	_Z17GetFristSecOfClusj:
 323:file.c        **** 
 324:file.c        **** /*
 325:file.c        **** ;**************************************************************************************************
 326:file.c        **** ;* 函数名称 : GetFristSecOfClus
 327:file.c        **** ;* 描    述 : 获得指定簇的开始扇区号
 328:file.c        **** ;* 输 	 入 : ClusIndex: 簇号
 329:file.c        **** ;*        
 330:file.c        **** ;* 输 	 出 : 簇的开始扇区号
 331:file.c        **** ;**************************************************************************************************
 332:file.c        **** ;*/
 333:file.c        **** uint32 GetFristSecOfClus(uint16 ClusIndex)
 334:file.c        **** {
 714               	.LM73:
 715               	/* prologue: frame size=0 */
 716               	/* prologue end (size=0) */
 717               	.LBB18:
 335:file.c        **** 	return FS_DataStartSec + (ClusIndex - 2) * FS_SecPerClus;
 719               	.LM74:
 720 02c8 9C01      		movw r18,r24
 721 02ca 2250      		subi r18,lo8(-(-2))
 722 02cc 3040      		sbci r19,hi8(-(-2))
 723 02ce 8091 0000 		lds r24,FS_SecPerClus
 724 02d2 9927      		clr r25
 725 02d4 289F      		mul r18,r24
 726 02d6 A001      		movw r20,r0
 727 02d8 299F      		mul r18,r25
 728 02da 500D      		add r21,r0
 729 02dc 389F      		mul r19,r24
 730 02de 500D      		add r21,r0
 731 02e0 1124      		clr r1
 732 02e2 CA01      		movw r24,r20
 733 02e4 9C01      		movw r18,r24
 734 02e6 4427      		clr r20
 735 02e8 5527      		clr r21
 736 02ea 8091 0000 		lds r24,FS_DataStartSec
 737 02ee 9091 0000 		lds r25,(FS_DataStartSec)+1
 738 02f2 A091 0000 		lds r26,(FS_DataStartSec)+2
 739 02f6 B091 0000 		lds r27,(FS_DataStartSec)+3
 740 02fa 820F      		add r24,r18
 741 02fc 931F      		adc r25,r19
 742 02fe A41F      		adc r26,r20
 743 0300 B51F      		adc r27,r21
 744               	.LBE18:
 336:file.c        **** }
 746               	.LM75:
 747 0302 BC01      		movw r22,r24
 748 0304 CD01      		movw r24,r26
 749               	/* epilogue: frame size=0 */
 750 0306 0895      		ret
 751               	/* epilogue end (size=1) */
 752               	/* function uint32 GetFristSecOfClus(uint16) size 32 (31) */
 756               	.global	_Z9GetchFileP14FileManageInfo
 758               	_Z9GetchFileP14FileManageInfo:
 337:file.c        **** 
 338:file.c        **** /*
 339:file.c        **** ;**************************************************************************************************
 340:file.c        **** ;* 函数名称 : GetchFile
 341:file.c        **** ;* 描    述 : 从文件读取一个字节
 342:file.c        **** ;* 输 	 入 : fp: 文件指针
 343:file.c        **** ;*        
 344:file.c        **** ;* 输 	 出 : 文件读取到的一个字节
 345:file.c        **** ;**************************************************************************************************
 346:file.c        **** ;*/
 347:file.c        **** uint8 GetchFile(M_FILE fp)
 348:file.c        **** {
 760               	.LM76:
 761               	/* prologue: frame size=0 */
 762 0308 AF92      		push r10
 763 030a BF92      		push r11
 764 030c CF92      		push r12
 765 030e DF92      		push r13
 766 0310 EF92      		push r14
 767 0312 FF92      		push r15
 768 0314 0F93      		push r16
 769 0316 1F93      		push r17
 770 0318 CF93      		push r28
 771 031a DF93      		push r29
 772               	/* prologue end (size=10) */
 773 031c EC01      		movw r28,r24
 774               	.LBB19:
 775               	.LBB20:
 349:file.c        **** 	uint8 *Buf;
 350:file.c        **** 	uint8 ch;
 351:file.c        **** 	uint32 SecOffset;
 352:file.c        **** 	uint32 SecIndex;
 353:file.c        **** 	uint32 ReadPoint;
 354:file.c        **** 	uint16 ByteOffset;
 355:file.c        **** 
 356:file.c        **** 	/* 参数无效 */
 357:file.c        **** 	if (!fp)
 777               	.LM77:
 778 031e 0097      		sbiw r24,0
 779 0320 29F0      		breq .L68
 358:file.c        **** 	{
 359:file.c        **** 		return '\0';
 360:file.c        **** 	}
 361:file.c        **** 
 362:file.c        **** 	/* 判断文件是否已打开 */
 363:file.c        **** 	fp = IsFileOpen(fp->fFDT.Name);
 781               	.LM78:
 782 0322 0E94 0000 		call _Z10IsFileOpenPc
 783 0326 EC01      		movw r28,r24
 364:file.c        **** 	if (!fp)
 785               	.LM79:
 786 0328 892B      		or r24,r25
 787 032a 11F4      		brne .L62
 788               	.L68:
 365:file.c        **** 	{
 366:file.c        **** 		return '\0';
 790               	.LM80:
 791 032c CE01      		movw r24,r28
 792 032e 5EC0      		rjmp .L60
 793               	.L62:
 367:file.c        **** 	}
 368:file.c        **** 
 369:file.c        **** 	if (fp->fFDT.FileSize == 0)
 795               	.LM81:
 796 0330 8E85      		ldd r24,Y+14
 797 0332 9F85      		ldd r25,Y+15
 798 0334 A889      		ldd r26,Y+16
 799 0336 B989      		ldd r27,Y+17
 800 0338 0097      		sbiw r24,0
 801 033a A105      		cpc r26,__zero_reg__
 802 033c B105      		cpc r27,__zero_reg__
 803 033e 49F0      		breq .L67
 370:file.c        **** 	{
 371:file.c        **** 		return '\0';
 372:file.c        **** 	}

⌨️ 快捷键说明

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