📄 lcd_demo.lst
字号:
0000000C FFF9 BL OUTMD?T ; T=0x0001 (2)
241: }
0000000E BC08 POP {R3}
00000010 4718 BX R3
00000012 ENDP ; 'PutCharL?T'
*** CODE SEGMENT '?PR?DrawBmp?T?Lcd_Demo':
252: void DrawBmp(unsigned layer,uchar width,unsigned char const *bmp)
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C17 MOV R7,R2 ; bmp
00000004 ---- Variable 'bmp' assigned to Register 'R7' ----
00000004 1C0E MOV R6,R1 ; width
00000006 ---- Variable 'width' assigned to Register 'R6' ----
00000006 1C05 MOV R5,R0 ; layer
00000008 ---- Variable 'layer' assigned to Register 'R5' ----
00000008 B083 SUB R13,#0xC
253: {
0000000A ; SCOPE-START
254: uchar x,address,i=0; //address表示显存的物理地址
0000000A 2100 MOV R1,#0x0
0000000C 1C0C MOV R4,R1 ; i
0000000E ---- Variable 'i' assigned to Register 'R4' ----
256: uchar window=0; //window表示左右两页
0000000E A802 ADD R0,R13,#0x8
00000010 7001 STRB R1,[R0,#0x0] ; window
260: for (x=width;x>1;x--)
00000012 1C31 MOV R1,R6 ; width
00000014 A800 ADD R0,R13,#0x0
00000016 7001 STRB R1,[R0,#0x0] ; x
00000018 E0A1 B L_27 ; T=0x0000015E
0000001A L_28:
262: if (i>60) {window=1;address=i%61;}
0000001A 1C20 MOV R0,R4 ; i
0000001C 0600 LSL R0,R0,#0x18 ; i
0000001E 0E00 LSR R0,R0,#0x18
00000020 283C CMP R0,#0x3C
00000022 DD0E BLE L_30 ; T=0x00000042
00000024 2101 MOV R1,#0x1
00000026 A802 ADD R0,R13,#0x8
00000028 7001 STRB R1,[R0,#0x0] ; window
0000002A 1C20 MOV R0,R4 ; i
0000002C 0600 LSL R0,R0,#0x18 ; i
0000002E 0E00 LSR R0,R0,#0x18
00000030 213D MOV R1,#0x3D
00000032 F7FF BL ?C?SDIV?T ; T=0x0001 (1) ; ?C?SDIV?T
00000034 FFE5 BL ?C?SDIV?T ; T=0x0001 (2) ; ?C?SDIV?T
00000036 1C01 MOV R1,R0
00000038 0609 LSL R1,R1,#0x18
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 20
0000003A 0E09 LSR R1,R1,#0x18
0000003C A801 ADD R0,R13,#0x4
0000003E 7001 STRB R1,[R0,#0x0] ; address
00000040 E002 B L_31 ; T=0x00000048
00000042 L_30:
263: else address=i;
00000042 1C21 MOV R1,R4 ; i
00000044 A801 ADD R0,R13,#0x4
00000046 7001 STRB R1,[R0,#0x0] ; address
00000048 L_31:
265: if(layer==0) //显示一行八个字
00000048 1C28 MOV R0,R5 ; layer
0000004A 2800 CMP R0,#0x0 ; layer
0000004C D140 BNE L_32 ; T=0x000000D0
267: SetPage(0,0);
0000004E 2100 MOV R1,#0x0
00000050 1C08 MOV R0,R1
00000052 F7FF BL SetPage?T ; T=0x0001 (1)
00000054 FFD5 BL SetPage?T ; T=0x0001 (2)
268: SetAddress(address,address);
00000056 A801 ADD R0,R13,#0x4
00000058 7801 LDRB R1,[R0,#0x0] ; address
0000005A 1C08 MOV R0,R1
0000005C F7FF BL SetAddress?T ; T=0x0001 (1)
0000005E FFD0 BL SetAddress?T ; T=0x0001 (2)
269: if(window==1)PutCharR(bmp[i]);
00000060 A802 ADD R0,R13,#0x8
00000062 7800 LDRB R0,[R0,#0x0] ; window
00000064 2801 CMP R0,#0x1
00000066 D107 BNE L_33 ; T=0x00000078
00000068 1C20 MOV R0,R4 ; i
0000006A 0601 LSL R1,R0,#0x18 ; i
0000006C 0E09 LSR R1,R1,#0x18
0000006E 1C38 MOV R0,R7 ; bmp
00000070 5C40 LDRB R0,[R0,R1]
00000072 F7FF BL PutCharR?T ; T=0x0001 (1)
00000074 FFC5 BL PutCharR?T ; T=0x0001 (2)
00000076 E006 B L_34 ; T=0x00000086
00000078 L_33:
270: else PutCharL(bmp[i]);
00000078 1C20 MOV R0,R4 ; i
0000007A 0601 LSL R1,R0,#0x18 ; i
0000007C 0E09 LSR R1,R1,#0x18
0000007E 1C38 MOV R0,R7 ; bmp
00000080 5C40 LDRB R0,[R0,R1]
00000082 F7FF BL PutCharL?T ; T=0x0001 (1)
00000084 FFBD BL PutCharL?T ; T=0x0001 (2)
00000086 L_34:
271: SetPage(1,1);
00000086 2101 MOV R1,#0x1
00000088 1C08 MOV R0,R1
0000008A F7FF BL SetPage?T ; T=0x0001 (1)
0000008C FFB9 BL SetPage?T ; T=0x0001 (2)
272: SetAddress(address,address);
0000008E A801 ADD R0,R13,#0x4
00000090 7801 LDRB R1,[R0,#0x0] ; address
00000092 1C08 MOV R0,R1
00000094 F7FF BL SetAddress?T ; T=0x0001 (1)
00000096 FFB4 BL SetAddress?T ; T=0x0001 (2)
273: if(window==1)PutCharR(bmp[i+width]);
00000098 A802 ADD R0,R13,#0x8
0000009A 7800 LDRB R0,[R0,#0x0] ; window
0000009C 2801 CMP R0,#0x1
0000009E D10B BNE L_35 ; T=0x000000B8
000000A0 1C30 MOV R0,R6 ; width
000000A2 0600 LSL R0,R0,#0x18 ; width
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 21
000000A4 0E00 LSR R0,R0,#0x18
000000A6 1C21 MOV R1,R4 ; i
000000A8 0609 LSL R1,R1,#0x18 ; i
000000AA 0E09 LSR R1,R1,#0x18
000000AC 1809 ADD R1,R0
000000AE 1C38 MOV R0,R7 ; bmp
000000B0 5C40 LDRB R0,[R0,R1]
000000B2 F7FF BL PutCharR?T ; T=0x0001 (1)
000000B4 FFA5 BL PutCharR?T ; T=0x0001 (2)
000000B6 E04B B L_37 ; T=0x00000150
000000B8 L_35:
274: else PutCharL(bmp[i+width]);
000000B8 1C30 MOV R0,R6 ; width
000000BA 0600 LSL R0,R0,#0x18 ; width
000000BC 0E00 LSR R0,R0,#0x18
000000BE 1C21 MOV R1,R4 ; i
000000C0 0609 LSL R1,R1,#0x18 ; i
000000C2 0E09 LSR R1,R1,#0x18
000000C4 1809 ADD R1,R0
000000C6 1C38 MOV R0,R7 ; bmp
000000C8 5C40 LDRB R0,[R0,R1]
000000CA F7FF BL PutCharL?T ; T=0x0001 (1)
000000CC FF99 BL PutCharL?T ; T=0x0001 (2)
275: }
000000CE E03F B L_37 ; T=0x00000150
000000D0 L_32:
278: SetPage(2,2);
000000D0 2102 MOV R1,#0x2
000000D2 1C08 MOV R0,R1
000000D4 F7FF BL SetPage?T ; T=0x0001 (1)
000000D6 FF94 BL SetPage?T ; T=0x0001 (2)
279: SetAddress(address,address);
000000D8 A801 ADD R0,R13,#0x4
000000DA 7801 LDRB R1,[R0,#0x0] ; address
000000DC 1C08 MOV R0,R1
000000DE F7FF BL SetAddress?T ; T=0x0001 (1)
000000E0 FF8F BL SetAddress?T ; T=0x0001 (2)
280: if(window==1)PutCharR(bmp[i]);
000000E2 A802 ADD R0,R13,#0x8
000000E4 7800 LDRB R0,[R0,#0x0] ; window
000000E6 2801 CMP R0,#0x1
000000E8 D107 BNE L_38 ; T=0x000000FA
000000EA 1C20 MOV R0,R4 ; i
000000EC 0601 LSL R1,R0,#0x18 ; i
000000EE 0E09 LSR R1,R1,#0x18
000000F0 1C38 MOV R0,R7 ; bmp
000000F2 5C40 LDRB R0,[R0,R1]
000000F4 F7FF BL PutCharR?T ; T=0x0001 (1)
000000F6 FF84 BL PutCharR?T ; T=0x0001 (2)
000000F8 E006 B L_39 ; T=0x00000108
000000FA L_38:
281: else PutCharL(bmp[i]);
000000FA 1C20 MOV R0,R4 ; i
000000FC 0601 LSL R1,R0,#0x18 ; i
000000FE 0E09 LSR R1,R1,#0x18
00000100 1C38 MOV R0,R7 ; bmp
00000102 5C40 LDRB R0,[R0,R1]
00000104 F7FF BL PutCharL?T ; T=0x0001 (1)
00000106 FF7C BL PutCharL?T ; T=0x0001 (2)
00000108 L_39:
282: SetPage(3,3);
00000108 2103 MOV R1,#0x3
0000010A 1C08 MOV R0,R1
0000010C F7FF BL SetPage?T ; T=0x0001 (1)
0000010E FF78 BL SetPage?T ; T=0x0001 (2)
283: SetAddress(address,address);
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 22
00000110 A801 ADD R0,R13,#0x4
00000112 7801 LDRB R1,[R0,#0x0] ; address
00000114 1C08 MOV R0,R1
00000116 F7FF BL SetAddress?T ; T=0x0001 (1)
00000118 FF73 BL SetAddress?T ; T=0x0001 (2)
284: if(window==1)PutCharR(bmp[i+width]);
0000011A A802 ADD R0,R13,#0x8
0000011C 7800 LDRB R0,[R0,#0x0] ; window
0000011E 2801 CMP R0,#0x1
00000120 D10B BNE L_40 ; T=0x0000013A
00000122 1C30 MOV R0,R6 ; width
00000124 0600 LSL R0,R0,#0x18 ; width
00000126 0E00 LSR R0,R0,#0x18
00000128 1C21 MOV R1,R4 ; i
0000012A 0609 LSL R1,R1,#0x18 ; i
0000012C 0E09 LSR R1,R1,#0x18
0000012E 1809 ADD R1,R0
00000130 1C38 MOV R0,R7 ; bmp
00000132 5C40 LDRB R0,[R0,R1]
00000134 F7FF BL PutCharR?T ; T=0x0001 (1)
00000136 FF64 BL PutCharR?T ; T=0x0001 (2)
00000138 E00A B L_37 ; T=0x00000150
0000013A L_40:
285: else PutCharL(bmp[i+width]);
0000013A 1C30 MOV R0,R6 ; width
0000013C 0600 LSL R0,R0,#0x18 ; width
0000013E 0E00 LSR R0,R0,#0x18
00000140 1C21 MOV R1,R4 ; i
00000142 0609 LSL R1,R1,#0x18 ; i
00000144 0E09 LSR R1,R1,#0x18
00000146 1809 ADD R1,R0
00000148 1C38 MOV R0,R7 ; bmp
0000014A 5C40 LDRB R0,[R0,R1]
0000014C F7FF BL PutCharL?T ; T=0x0001 (1)
0000014E FF58 BL PutCharL?T ; T=0x0001 (2)
286: }
00000150 L_37:
287: i++;
00000150 3401 ADD R4,#0x1
00000152 0624 LSL R4,R4,#0x18
00000154 0E24 LSR R4,R4,#0x18
289: }
00000156 A800 ADD R0,R13,#0x0
00000158 7801 LDRB R1,[R0,#0x0] ; x
0000015A 3901 SUB R1,#0x1
0000015C 7001 STRB R1,[R0,#0x0] ; x
0000015E L_27:
0000015E A800 ADD R0,R13,#0x0
00000160 7800 LDRB R0,[R0,#0x0] ; x
00000162 2801 CMP R0,#0x1
00000164 DD00 BGT $+4
00000166 E758 B L_28 ; T=0x0000001A
0000016A ; SCOPE-END
290: }
0000016A B003 ADD R13,#0xC
0000016C BCF0 POP {R4-R7}
0000016E BC08 POP {R3}
00000170 4718 BX R3
00000172 ENDP ; 'DrawBmp?T'
*** CODE SEGMENT '?PR?clrscr?T?Lcd_Demo':
300: void clrscr(void)
00000000 B530 PUSH {R4-R5,LR}
301: {
00000002 ; SCOPE-START
304: for (page=0;page<4;page++)
00000002 2400 MOV R4,#0x0
ARM COMPILER V2.42, Lcd_Demo 05/01/06 14:35:51 PAGE 23
00000004 ---- Variable 'page' assigned to Register 'R4' ----
00000004 E01E B L_44 ; T=0x00000044
00000006 L_45:
306: SetPage(page,page);
00000006 1C20 MOV R0,R4 ; page
00000008 0600 LSL R0,R0,#0x18 ; page
0000000A 0E00 LSR R0,R0,#0x18
0000000C 1C21 MOV R1,R4 ; page
0000000E 0609 LSL R1,R1,#0x18 ; page
00000010 0E09 LSR R1,R1,#0x18
00000012 F7FF BL SetPage?T ; T=0x0001 (1)
00000014 FFF5 BL SetPage?T ; T=0x0001 (2)
307: SetAddress(0,0);
00000016 2100 MOV R1,#0x0
00000018 1C08 MOV R0,R1
0000001A F7FF BL SetAddress?T ; T=0x0001 (1)
0000001C FFF1 BL SetAddress?T ; T=0x0001 (2)
308: for (i=0;i<61;i++){PutCharR(0);PutCharL(0);}
0000001E 2500 MOV R5,#0x0
00000020 ---- Variable 'i' assigned to Register 'R5' ----
00000020 E008 B L_49 ; T=0x00000034
00000022 L_50:
00000022 2000 MOV R0,#0x0
00000024 F7FF BL PutCharR?T ; T=0x0001 (1)
00000026 FFEC BL PutCharR?T ; T=0x0001 (2)
00000028 2000 MOV R0,#0x0
0000002A F7FF BL PutCharL?T ; T=0x0001 (1)
0000002C FFE9 BL PutCharL?T ; T=0x0001 (2)
0000002E 3501 ADD R5,#0x1
00000030 062D LSL R5,R5,#0x18
00000032 0E2D LSR R5,R5,#0x18
00000034 L_49:
00000034 1C28 MOV R0,R5 ; i
00000036 0600 LSL R0,R0,#0x18 ; i
00000038 0E00 LSR R0,R0,#0x18
0000003A 283D CMP R0,#0x3D
0000003C DBF1 BLT L_50 ; T=0x00000022
309: }
0000003E 3401 ADD R4,#0x1
00000040 0624 LSL R4,R4,#0x18
00000042 0E24 LSR R4,R4,#0x18
00000044 L_44:
00000044 1C20 MOV R0,R4 ; page
00000046 0600 LSL R0,R0,#0x18 ; page
00000048 0E00 LSR R0,R0,#0x18
0000004A 2804 CMP R0,#0x4
0000004C DBDB BLT L_45 ; T=0x00000006
0000004E ; SCOPE-END
310: }
0000004E BC30 POP {R4-R5}
00000050 BC08 POP {R3}
00000052 4718 BX R3
00000054 ENDP ; 'clrscr?T'
*** C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -