📄 fat.lis
字号:
.module Fat.c
.area text(rom, con, rel)
0000 .dbfile D:\AvrUSB\Fat.c
0000 .dbfunc e BPB_Local _BPB_Local fi
0000 ; NumFATs -> R10
0000 ; FATSz16 -> R20,R21
0000 ; RootEntCnt -> R22,R23
0000 ; BytsPerSec -> R12,R13
0000 ; value -> R20,R21
.even
0000 _BPB_Local::
0000 0E940000 xcall push_gset4
0004 2297 sbiw R28,2
0006 .dbline -1
0006 .dbline 11
0006 ; #include <iom162v.h>
0006 ; #include <macros.h>
0006 ; #include <stdio.h>
0006 ; #include <string.h>
0006 ;
0006 ; #include "Flash.h"
0006 ; #include "Fat.h"
0006 ;
0006 ; extern unsigned char PageBuf[512];
0006 ; unsigned int BPB_Local()
0006 ; {
0006 .dbline 14
0006 ; unsigned int BytsPerSec,RootEntCnt, FATSz16,value;
0006 ; unsigned char NumFATs;
0006 ; ReadPage(0,0,PageBuf);
0006 80E0 ldi R24,<_PageBuf
0008 90E0 ldi R25,>_PageBuf
000A 9983 std y+1,R25
000C 8883 std y+0,R24
000E 2227 clr R18
0010 3327 clr R19
0012 0027 clr R16
0014 1127 clr R17
0016 0E940000 xcall _ReadPage
001A .dbline 15
001A ; if(PageBuf[510]!=0x55&&PageBuf[511]!=0xAA)return 16;
001A 8091FE01 lds R24,_PageBuf+510
001E 8535 cpi R24,85
0020 39F0 breq L2
0022 8091FF01 lds R24,_PageBuf+511
0026 8A3A cpi R24,170
0028 19F0 breq L2
002A .dbline 15
002A 00E1 ldi R16,16
002C 10E0 ldi R17,0
002E 4AC0 xjmp L1
0030 L2:
0030 .dbline 16
0030 ; BytsPerSec=PageBuf[12]*256+PageBuf[11];
0030 20910C00 lds R18,_PageBuf+12
0034 3327 clr R19
0036 00E0 ldi R16,256
0038 11E0 ldi R17,1
003A 0E940000 xcall empy16s
003E 6801 movw R12,R16
0040 20900B00 lds R2,_PageBuf+11
0044 3324 clr R3
0046 C20C add R12,R2
0048 D31C adc R13,R3
004A .dbline 17
004A ; NumFATs=PageBuf[16];
004A A0901000 lds R10,_PageBuf+16
004E .dbline 18
004E ; RootEntCnt=PageBuf[18]*256+PageBuf[17];
004E 20911200 lds R18,_PageBuf+18
0052 3327 clr R19
0054 00E0 ldi R16,256
0056 11E0 ldi R17,1
0058 0E940000 xcall empy16s
005C B801 movw R22,R16
005E 20901100 lds R2,_PageBuf+17
0062 3324 clr R3
0064 620D add R22,R2
0066 731D adc R23,R3
0068 .dbline 19
0068 ; FATSz16=PageBuf[23]*256+PageBuf[22];
0068 20911700 lds R18,_PageBuf+23
006C 3327 clr R19
006E 00E0 ldi R16,256
0070 11E0 ldi R17,1
0072 0E940000 xcall empy16s
0076 A801 movw R20,R16
0078 20901600 lds R2,_PageBuf+22
007C 3324 clr R3
007E 420D add R20,R2
0080 531D adc R21,R3
0082 .dbline 20
0082 ; value=FATSz16*NumFATs*(BytsPerSec/512);
0082 29E0 ldi R18,9
0084 30E0 ldi R19,0
0086 8601 movw R16,R12
0088 0E940000 xcall lsr16
008C 1801 movw R2,R16
008E 2A2D mov R18,R10
0090 3327 clr R19
0092 8A01 movw R16,R20
0094 0E940000 xcall empy16s
0098 9101 movw R18,R2
009A 0E940000 xcall empy16s
009E A801 movw R20,R16
00A0 .dbline 21
00A0 ; value+=RootEntCnt/16;//(32/512)
00A0 1B01 movw R2,R22
00A2 3694 lsr R3
00A4 2794 ror R2
00A6 3694 lsr R3
00A8 2794 ror R2
00AA 3694 lsr R3
00AC 2794 ror R2
00AE 3694 lsr R3
00B0 2794 ror R2
00B2 420D add R20,R2
00B4 531D adc R21,R3
00B6 .dbline 22
00B6 ; return (value+1)/32;
00B6 25E0 ldi R18,5
00B8 30E0 ldi R19,0
00BA 8A01 movw R16,R20
00BC 0F5F subi R16,255 ; offset = 1
00BE 1F4F sbci R17,255
00C0 0E940000 xcall lsr16
00C4 .dbline -2
00C4 L1:
00C4 2296 adiw R28,2
00C6 0E940000 xcall pop_gset4
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym r NumFATs 10 c
00CC .dbsym r FATSz16 20 i
00CC .dbsym r RootEntCnt 22 i
00CC .dbsym r BytsPerSec 12 i
00CC .dbsym r value 20 i
00CC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -