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

📄 lcd_gbk.txt

📁 mp3量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 TXT
📖 第 1 页 / 共 3 页
字号:
000268  2e737973          DCB      ".sys"
00026c  00000000          DCB      "\0\0\0\0"
                  |L1.624|
000270  00000000          DCD      FirstDataSector
                  |L1.628|
000274  00000000          DCD      SectorsPerClust
                  |L1.632|
000278  00000000          DCD      BytesPerSector
                  |L1.636|
00027c  00000000          DCD      FAT_ReadSector
                  |L1.640|
000280  00000000          DCD      ||.bss||
                          ENDP

                  Read_One_GBK16 PROC
;;;99     uint8 Read_One_GBK16(uint8 *ch)
;;;100    {
000284  e92d4010          PUSH     {r4,lr}
;;;101    	uint16  temp1;
;;;102    	uint8 temp2;
;;;103    	uint16  sector_offset;//扇区偏移
;;;104    	uint16  byte_offset;//字节偏移
;;;105    	uint8 buffer[512];
;;;106    	temp1=*ch;
000288  e5d01000          LDRB     r1,[r0,#0]
;;;107    	temp2=*(ch+1);
00028c  e5d00001          LDRB     r0,[r0,#1]
000290  e24ddc02          SUB      sp,sp,#0x200          ;100
;;;108    	if(temp1<0x81||temp2<0x40)return 1;//不合法的汉字
000294  e3510081          CMP      r1,#0x81
000298  23500040          CMPCS    r0,#0x40
00029c  3a00001b          BCC      |L1.784|
;;;109    	temp1-=0x81;//的到类似于2312的区号
0002a0  e2411081          SUB      r1,r1,#0x81
0002a4  e1a01801          LSL      r1,r1,#16
0002a8  e1a01821          LSR      r1,r1,#16
;;;110    	temp2-=0x40;//位号
0002ac  e2400040          SUB      r0,r0,#0x40
;;;111    	temp1*=192;//xx7f and xxff are included
0002b0  e0811081          ADD      r1,r1,r1,LSL #1
0002b4  e3e028ff          MVN      r2,#0xff0000
0002b8  e20000ff          AND      r0,r0,#0xff           ;110
0002bc  e0021301          AND      r1,r2,r1,LSL #6
;;;112    	temp1+=temp2;//得到偏移
0002c0  e0800001          ADD      r0,r0,r1
;;;113    	//temp1*=24;
;;;114    	sector_offset = temp1/(BytesPerSector/32);//算出要读哪个扇区
0002c4  e51f1054          LDR      r1,|L1.632|
0002c8  e3c00801          BIC      r0,r0,#0x10000        ;112
0002cc  e1d110b0          LDRH     r1,[r1,#0]  ; BytesPerSector
0002d0  e1a012a1          LSR      r1,r1,#5
0002d4  ebfffffe          BL       __aeabi_uidivmod
;;;115    	byte_offset = (temp1%(BytesPerSector/32))*32;//算出要读扇区的哪个字节
0002d8  e3e0281f          MVN      r2,#0x1f0000
0002dc  e0024281          AND      r4,r2,r1,LSL #5
;;;116    	if(FAT_ReadSector(GBK16 + sector_offset,buffer))return 1;//读要读的扇区
0002e0  e51f108c          LDR      r1,|L1.604|
0002e4  e51f2070          LDR      r2,|L1.636|
0002e8  e5911004          LDR      r1,[r1,#4]  ; GBK16
0002ec  e5922000          LDR      r2,[r2,#0]  ; FAT_ReadSector
0002f0  e0800001          ADD      r0,r0,r1
0002f4  e28d1000          ADD      r1,sp,#0
0002f8  e1a0e00f          MOV      lr,pc
0002fc  e12fff12          BX       r2
000300  e3500000          CMP      r0,#0
000304  051f108c          LDREQ    r1,|L1.640|
000308  028d2000          ADDEQ    r2,sp,#0
00030c  0a000003          BEQ      |L1.800|
                  |L1.784|
000310  e3a00001          MOV      r0,#1
                  |L1.788|
000314  e28ddc02          ADD      sp,sp,#0x200
000318  e8bd4010          POP      {r4,lr}
;;;117    	for(temp2 = 0,temp1 = byte_offset;temp2<32;temp2++,temp1++)GBK_Buffer[temp2] = buffer[temp1];//复制要复制的数据
;;;118    	return 0;
;;;119    }
00031c  e12fff1e          BX       lr
                  |L1.800|
000320  e7d23004          LDRB     r3,[r2,r4]            ;117
000324  e7c13000          STRB     r3,[r1,r0]            ;117
000328  e2800001          ADD      r0,r0,#1              ;117
00032c  e20000ff          AND      r0,r0,#0xff           ;117
000330  e2843001          ADD      r3,r4,#1              ;117
000334  e3500020          CMP      r0,#0x20              ;117
000338  e3c34801          BIC      r4,r3,#0x10000        ;117
00033c  3afffff7          BCC      |L1.800|
000340  e3a00000          MOV      r0,#0                 ;118
000344  eafffff2          B        |L1.788|
;;;120    
                          ENDP

                  Dis_GBK12_fast PROC
;;;121    uint8 Dis_GBK12_fast(uint16 x,uint16 y,uint8 *ch)
;;;122    {
000348  e92d4070          PUSH     {r4-r6,lr}
00034c  e1a04000          MOV      r4,r0
000350  e1a00001          MOV      r0,r1
000354  e1a06002          MOV      r6,r2
;;;123    	uint16 i,j;
;;;124    	uint8 temp;
;;;125    
;;;126           extern uint8 disBuf[504];
;;;127    // disBuf[(y/8)*84 + x +i] = temp;
;;;128            j = y/12;
000358  e3a0100c          MOV      r1,#0xc
00035c  ebfffffe          BL       __aeabi_uidivmod
000360  e1a05000          MOV      r5,r0
;;;129            if(Read_One_GBK12(ch))return 1;
000364  e1a00006          MOV      r0,r6
000368  ebfffffe          BL       Read_One_GBK12
00036c  e3500000          CMP      r0,#0
000370  13a00001          MOVNE    r0,#1
000374  1a000077          BNE      |L1.1368|
000378  e51f3100          LDR      r3,|L1.640|
00037c  e59f2384          LDR      r2,|L1.1800|
;;;130    
;;;131            if(j==0)
000380  e3550000          CMP      r5,#0
000384  e284e054          ADD      lr,r4,#0x54           ;129
000388  e2841060          ADD      r1,r4,#0x60           ;129
00038c  1a000016          BNE      |L1.1004|
;;;132                {
;;;133                    for(i=x;i<x+12;i++)
000390  e1a00004          MOV      r0,r4
000394  e284500c          ADD      r5,r4,#0xc
                  |L1.920|
000398  e1500005          CMP      r0,r5
;;;134                        {
;;;135                            temp = GBK_Buffer[i-x];
00039c  3040c004          SUBCC    r12,r0,r4
0003a0  37d3c00c          LDRBCC   r12,[r3,r12]
;;;136                            disBuf[i] = temp;
0003a4  37c2c000          STRBCC   r12,[r2,r0]
0003a8  32800001          ADDCC    r0,r0,#1              ;133
0003ac  33c00801          BICCC    r0,r0,#0x10000        ;133
0003b0  3afffff8          BCC      |L1.920|
;;;137                        }
;;;138                    for(i=x+84;i<x+84+12;i++)
0003b4  e3ce0801          BIC      r0,lr,#0x10000
                  |L1.952|
0003b8  e1500001          CMP      r0,r1
0003bc  2a000064          BCS      |L1.1364|
;;;139                        {
;;;140                            temp = GBK_Buffer[i-x-84+12];
0003c0  e040c004          SUB      r12,r0,r4
0003c4  e08cc003          ADD      r12,r12,r3
0003c8  e55ce048          LDRB     lr,[r12,#-0x48]
;;;141                            disBuf[i] &= 0xf0;
0003cc  e7d2c000          LDRB     r12,[r2,r0]
;;;142                            disBuf[i] |= (temp & 0x0f);
0003d0  e20ee00f          AND      lr,lr,#0xf
0003d4  e20cc0f0          AND      r12,r12,#0xf0         ;141
0003d8  e18cc00e          ORR      r12,r12,lr
0003dc  e7c2c000          STRB     r12,[r2,r0]
0003e0  e2800001          ADD      r0,r0,#1              ;138
0003e4  e3c00801          BIC      r0,r0,#0x10000        ;138
0003e8  eafffff2          B        |L1.952|
                  |L1.1004|
;;;143                        }
;;;144                }
;;;145            else if(j==1)
0003ec  e3550001          CMP      r5,#1
0003f0  e3a060f0          MOV      r6,#0xf0              ;138
0003f4  1a00001b          BNE      |L1.1128|
;;;146                {
;;;147                     for(i=x+84;i<x+84+12;i++)
0003f8  e3ce0801          BIC      r0,lr,#0x10000
                  |L1.1020|
0003fc  e1500001          CMP      r0,r1
;;;148                        {
;;;149                            temp = GBK_Buffer[i-x-84];
000400  3040c004          SUBCC    r12,r0,r4
000404  308cc003          ADDCC    r12,r12,r3
000408  355ce054          LDRBCC   lr,[r12,#-0x54]
;;;150                            disBuf[i] &= 0x0f;
00040c  37d2c000          LDRBCC   r12,[r2,r0]
;;;151                            disBuf[i] |= ((temp<<4) & 0xf0);
000410  3006e20e          ANDCC    lr,r6,lr,LSL #4
000414  320cc00f          ANDCC    r12,r12,#0xf          ;150
000418  318cc00e          ORRCC    r12,r12,lr
00041c  37c2c000          STRBCC   r12,[r2,r0]
000420  32800001          ADDCC    r0,r0,#1              ;147
000424  33c00801          BICCC    r0,r0,#0x10000        ;147
000428  3afffff3          BCC      |L1.1020|
;;;152                        }
;;;153                    for(i=x+168;i<x+168+12;i++)
00042c  e28400a8          ADD      r0,r4,#0xa8
000430  e3c00801          BIC      r0,r0,#0x10000
000434  e284c0b4          ADD      r12,r4,#0xb4
                  |L1.1080|
000438  e150000c          CMP      r0,r12
00043c  2a000044          BCS      |L1.1364|
;;;154                        {
;;;155                            temp = GBK_Buffer[i-x-168]>>4;
000440  e0401004          SUB      r1,r0,r4
000444  e0811003          ADD      r1,r1,r3
000448  e55150a8          LDRB     r5,[r1,#-0xa8]
;;;156                            temp += GBK_Buffer[i-x+12-168]<<4;
00044c  e551e09c          LDRB     lr,[r1,#-0x9c]
000450  e1a01225          LSR      r1,r5,#4              ;155
000454  e081120e          ADD      r1,r1,lr,LSL #4
;;;157                            disBuf[i] = temp;
000458  e7c21000          STRB     r1,[r2,r0]
00045c  e2800001          ADD      r0,r0,#1              ;153
000460  e3c00801          BIC      r0,r0,#0x10000        ;153
000464  eafffff3          B        |L1.1080|
                  |L1.1128|
;;;158                        }
;;;159                }
;;;160            else if(j==2)
000468  e3550002          CMP      r5,#2
00046c  e284ee15          ADD      lr,r4,#0x150          ;153
000470  e2841f57          ADD      r1,r4,#0x15c          ;153
000474  1a000018          BNE      |L1.1244|
;;;161               {
;;;162                    for(i=x+252;i<x+12+252;i++)
000478  e28400fc          ADD      r0,r4,#0xfc
00047c  e3c00801          BIC      r0,r0,#0x10000
000480  e2845f42          ADD      r5,r4,#0x108
                  |L1.1156|
000484  e1500005          CMP      r0,r5
;;;163                        {
;;;164                            temp = GBK_Buffer[i-x-252];
000488  3040c004          SUBCC    r12,r0,r4
00048c  308cc003          ADDCC    r12,r12,r3
000490  355cc0fc          LDRBCC   r12,[r12,#-0xfc]
;;;165                            disBuf[i] = temp;
000494  37c2c000          STRBCC   r12,[r2,r0]
000498  32800001          ADDCC    r0,r0,#1              ;162
00049c  33c00801          BICCC    r0,r0,#0x10000        ;162
0004a0  3afffff7          BCC      |L1.1156|
;;;166                        }
;;;167                    for(i=x+336;i<x+336+12;i++)
0004a4  e3ce0801          BIC      r0,lr,#0x10000
                  |L1.1192|
0004a8  e1500001          CMP      r0,r1
0004ac  2a000028          BCS      |L1.1364|
;;;168                        {
;;;169                            temp = GBK_Buffer[i-x+12-336];
0004b0  e040c004          SUB      r12,r0,r4
0004b4  e08cc003          ADD      r12,r12,r3
0004b8  e55ce144          LDRB     lr,[r12,#-0x144]
;;;170                            disBuf[i] &= 0xf0;
0004bc  e7d2c000          LDRB     r12,[r2,r0]
;;;171                            disBuf[i] |= (temp & 0x0f);
0004c0  e20ee00f          AND      lr,lr,#0xf
0004c4  e20cc0f0          AND      r12,r12,#0xf0         ;170
0004c8  e18cc00e          ORR      r12,r12,lr
0004cc  e7c2c000          STRB     r12,[r2,r0]
0004d0  e2800001          ADD      r0,r0,#1              ;167
0004d4  e3c00801          BIC      r0,r0,#0x10000        ;167
0004d8  eafffff2          B        |L1.1192|

⌨️ 快捷键说明

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