?? disk.lst
字號:
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 + -