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

📄 disk.lst

📁 protues仿真
💻 LST
📖 第 1 页 / 共 2 页
字号:
 242 0108 8827      		clr r24
 243 010a 082B      		or r16,r24
 244 010c 192B      		or r17,r25
 245 010e 1093 0000 		sts (FS_RootEntCnt)+1,r17
 246 0112 0093 0000 		sts FS_RootEntCnt,r16
  78:Disk.c        **** 
  79:Disk.c        **** 	/* 根目录开始扇区 */
  80:Disk.c        **** 	FS_RootDirStartSec	= FS_FATStartSec + FATSz * NumFATs;
 248               	.LM13:
 249 0116 242F      		mov r18,r20
 250 0118 3327      		clr r19
 251 011a 4427      		clr r20
 252 011c 5527      		clr r21
 253 011e C501      		movw r24,r10
 254 0120 B401      		movw r22,r8
 255 0122 0E94 0000 		call __mulsi3
 256 0126 DC01      		movw r26,r24
 257 0128 CB01      		movw r24,r22
 258 012a 9C01      		movw r18,r24
 259 012c 2D0D      		add r18,r13
 260 012e 311D      		adc r19,__zero_reg__
 261 0130 3093 0000 		sts (FS_RootDirStartSec)+1,r19
 262 0134 2093 0000 		sts FS_RootDirStartSec,r18
  81:Disk.c        **** 
  82:Disk.c        **** 	/* 根目录占扇区数 */
  83:Disk.c        **** 	RootSecCnt			= (FS_RootEntCnt * 32 + 511) / 512; 
 264               	.LM14:
 265 0138 95E0      		ldi r25,5
 266 013a 000F      	1:	lsl r16
 267 013c 111F      		rol r17
 268 013e 9A95      		dec r25
 269 0140 E1F7      		brne 1b
 270 0142 0150      		subi r16,lo8(-(511))
 271 0144 1E4F      		sbci r17,hi8(-(511))
 272 0146 012F      		mov r16,r17
 273 0148 1127      		clr r17
 274 014a 0695      		lsr r16
 275 014c C801      		movw r24,r16
 276 014e AA27      		clr r26
 277 0150 BB27      		clr r27
  84:Disk.c        **** 
  85:Disk.c        **** 	/* 数据区开始扇区 */
  86:Disk.c        **** 	FS_DataStartSec		= FS_RootDirStartSec + RootSecCnt;
 279               	.LM15:
 280 0152 A901      		movw r20,r18
 281 0154 6627      		clr r22
 282 0156 7727      		clr r23
 283 0158 480F      		add r20,r24
 284 015a 591F      		adc r21,r25
 285 015c 6A1F      		adc r22,r26
 286 015e 7B1F      		adc r23,r27
 287 0160 4093 0000 		sts FS_DataStartSec,r20
 288 0164 5093 0000 		sts (FS_DataStartSec)+1,r21
 289 0168 6093 0000 		sts (FS_DataStartSec)+2,r22
 290 016c 7093 0000 		sts (FS_DataStartSec)+3,r23
  87:Disk.c        **** 
  88:Disk.c        **** 	/* 总扇区数 */
  89:Disk.c        **** 	TotSec				= GET_UINT16(Buf, BPB_TotSec16);
 292               	.LM16:
 293 0170 F701      		movw r30,r14
 294 0172 8389      		ldd r24,Z+19
 295 0174 282F      		mov r18,r24
 296 0176 3327      		clr r19
 297 0178 8489      		ldd r24,Z+20
 298 017a 9927      		clr r25
 299 017c 982F      		mov r25,r24
 300 017e 8827      		clr r24
 301 0180 282B      		or r18,r24
 302 0182 392B      		or r19,r25
 303 0184 4901      		movw r8,r18
 304 0186 AA24      		clr r10
 305 0188 BB24      		clr r11
  90:Disk.c        **** 	if (TotSec == 0)
 307               	.LM17:
 308 018a 8114      		cp r8,__zero_reg__
 309 018c 9104      		cpc r9,__zero_reg__
 310 018e A104      		cpc r10,__zero_reg__
 311 0190 B104      		cpc r11,__zero_reg__
 312 0192 41F5      		brne .L7
  91:Disk.c        **** 	TotSec				= GET_UINT32(Buf, BPB_TotSec32);
 314               	.LM18:
 315 0194 80A1      		ldd r24,Z+32
 316 0196 882E      		mov r8,r24
 317 0198 9924      		clr r9
 318 019a AA24      		clr r10
 319 019c BB24      		clr r11
 320 019e 81A1      		ldd r24,Z+33
 321 01a0 9927      		clr r25
 322 01a2 AA27      		clr r26
 323 01a4 BB27      		clr r27
 324 01a6 BA2F      		mov r27,r26
 325 01a8 A92F      		mov r26,r25
 326 01aa 982F      		mov r25,r24
 327 01ac 8827      		clr r24
 328 01ae 882A      		or r8,r24
 329 01b0 992A      		or r9,r25
 330 01b2 AA2A      		or r10,r26
 331 01b4 BB2A      		or r11,r27
 332 01b6 82A1      		ldd r24,Z+34
 333 01b8 9927      		clr r25
 334 01ba AA27      		clr r26
 335 01bc BB27      		clr r27
 336 01be DC01      		movw r26,r24
 337 01c0 9927      		clr r25
 338 01c2 8827      		clr r24
 339 01c4 882A      		or r8,r24
 340 01c6 992A      		or r9,r25
 341 01c8 AA2A      		or r10,r26
 342 01ca BB2A      		or r11,r27
 343 01cc 83A1      		ldd r24,Z+35
 344 01ce 9927      		clr r25
 345 01d0 AA27      		clr r26
 346 01d2 BB27      		clr r27
 347 01d4 B82F      		mov r27,r24
 348 01d6 AA27      		clr r26
 349 01d8 9927      		clr r25
 350 01da 8827      		clr r24
 351 01dc 882A      		or r8,r24
 352 01de 992A      		or r9,r25
 353 01e0 AA2A      		or r10,r26
 354 01e2 BB2A      		or r11,r27
 355               	.L7:
  92:Disk.c        **** 
  93:Disk.c        **** 	/* 每簇扇区数 */
  94:Disk.c        **** 	FS_SecPerClus		= Buf[BPB_SecPerClus];
 357               	.LM19:
 358 01e4 F701      		movw r30,r14
 359 01e6 8585      		ldd r24,Z+13
 360 01e8 8093 0000 		sts FS_SecPerClus,r24
  95:Disk.c        **** 
  96:Disk.c        **** 	/* 数据区簇数 */
  97:Disk.c        **** 	FS_MaxClus = (TotSec - FS_DataStartSec)/FS_SecPerClus;
 362               	.LM20:
 363 01ec 841A      		sub r8,r20
 364 01ee 950A      		sbc r9,r21
 365 01f0 A60A      		sbc r10,r22
 366 01f2 B70A      		sbc r11,r23
 367 01f4 282F      		mov r18,r24
 368 01f6 3327      		clr r19
 369 01f8 4427      		clr r20
 370 01fa 5527      		clr r21
 371 01fc C501      		movw r24,r10
 372 01fe B401      		movw r22,r8
 373 0200 0E94 0000 		call __udivmodsi4
 374 0204 DA01      		movw r26,r20
 375 0206 C901      		movw r24,r18
 376 0208 3093 0000 		sts (FS_MaxClus)+1,r19
 377 020c 2093 0000 		sts FS_MaxClus,r18
  98:Disk.c        **** 
  99:Disk.c        **** #ifdef WINDOWS
 100:Disk.c        **** 	printf("FS INFO:\n");
 101:Disk.c        **** 	printf("FS_FATStartSec      = 0x%x\n", FS_FATStartSec);
 102:Disk.c        **** 	printf("NumFATs             = 0x%x\n", NumFATs);
 103:Disk.c        **** 	printf("FATSz               = 0x%x\n", FATSz);
 104:Disk.c        **** 	printf("FS_RootEntCnt       = 0x%x\n", FS_RootEntCnt);
 105:Disk.c        **** 	printf("FS_RootDirStartSec  = 0x%x\n", FS_RootDirStartSec);
 106:Disk.c        **** 	printf("RootSecCnt          = 0x%x\n", RootSecCnt);
 107:Disk.c        **** 	printf("FS_DataStartSec     = 0x%x\n", FS_DataStartSec);
 108:Disk.c        **** 	printf("TotSec              = 0x%x\n", TotSec);
 109:Disk.c        **** 	printf("FS_SecPerClus       = 0x%x\n", FS_SecPerClus);
 110:Disk.c        **** 	printf("FS_MaxClus          = 0x%x\n", FS_MaxClus);
 111:Disk.c        **** #endif
 112:Disk.c        **** 
 113:Disk.c        **** 	if (FS_MaxClus < 4085 || FS_MaxClus >= 65525)	/* 不支持FAT12和FAT32 */
 379               	.LM21:
 380 0210 855F      		subi r24,lo8(-(-4085))
 381 0212 9F40      		sbci r25,hi8(-(-4085))
 382 0214 8050      		subi r24,lo8(-4096)
 383 0216 904F      		sbci r25,hi8(-4096)
 384 0218 18F0      		brlo .L8
 385               	.L9:
 114:Disk.c        **** 	{
 115:Disk.c        **** #ifdef WINDOWS
 116:Disk.c        **** 	printf("FS TYPE	IS NOT FAT16!\n");
 117:Disk.c        **** #endif
 118:Disk.c        **** 		return FALSE;
 387               	.LM22:
 388 021a 80E0      		ldi r24,lo8(0)
 389 021c 90E0      		ldi r25,hi8(0)
 390 021e 02C0      		rjmp .L1
 391               	.L8:
 119:Disk.c        **** 	}
 120:Disk.c        **** #ifdef WINDOWS
 121:Disk.c        **** 	printf("FS TYPE	IS FAT16\n");
 122:Disk.c        **** #endif
 123:Disk.c        **** 
 124:Disk.c        **** 	return TRUE;
 393               	.LM23:
 394 0220 81E0      		ldi r24,lo8(1)
 395 0222 90E0      		ldi r25,hi8(1)
 396               	.L1:
 397               	.LBE3:
 398               	.LBE2:
 399               	/* epilogue: frame size=0 */
 400 0224 DF91      		pop r29
 401 0226 CF91      		pop r28
 402 0228 1F91      		pop r17
 403 022a 0F91      		pop r16
 404 022c FF90      		pop r15
 405 022e EF90      		pop r14
 406 0230 DF90      		pop r13
 407 0232 BF90      		pop r11
 408 0234 AF90      		pop r10
 409 0236 9F90      		pop r9
 410 0238 8F90      		pop r8
 411 023a 0895      		ret
 412               	/* epilogue end (size=12) */
 413               	/* function uint8 Disk_Init() size 289 (266) */
 422               		.text
 424               	Letext:
 425               	/* File "Disk.c": code  289 = 0x0121 ( 266), prologues  11, epilogues  12 */
DEFINED SYMBOLS
                            *ABS*:00000000 Disk.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/ccIVaaaa.s:83     .text:00000000 _Z9Disk_Initv
C:\Users\ADMINI~1\AppData\Local\Temp/ccIVaaaa.s:424    .text:0000023c Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
_Z8Init_IDEv
_Z10OpenSectorm
FS_FATStartSec
FS_RootEntCnt
__mulsi3
FS_RootDirStartSec
FS_DataStartSec
FS_SecPerClus
__udivmodsi4
FS_MaxClus

⌨️ 快捷键说明

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