📄 windows.txt
字号:
0001dc e2866006 ADD r6,r6,#6 ;50
|L1.480|
0001e0 eafffff1 B |L1.428| ;45
|L1.484|
0001e4 e1a00000 MOV r0,r0 ;46
|L1.488|
0001e8 e5940014 LDR r0,[r4,#0x14] ;56
0001ec e3500000 CMP r0,#0 ;56
0001f0 0a00002e BEQ |L1.688| ;56
0001f4 e594000c LDR r0,[r4,#0xc] ;57
0001f8 e350003c CMP r0,#0x3c ;57
0001fc 2a000001 BCS |L1.520| ;57
000200 e3a00000 MOV r0,#0 ;57
000204 eaffff86 B |L1.36| ;57
|L1.520|
000208 e5943000 LDR r3,[r4,#0] ;59
00020c e594c008 LDR r12,[r4,#8] ;59
000210 e083300c ADD r3,r3,r12 ;59
000214 e2433001 SUB r3,r3,#1 ;59
000218 e20320ff AND r2,r3,#0xff ;59
00021c e5943004 LDR r3,[r4,#4] ;59
000220 e594c00c LDR r12,[r4,#0xc] ;59
000224 e083300c ADD r3,r3,r12 ;59
000228 e243300b SUB r3,r3,#0xb ;59
00022c e20310ff AND r1,r3,#0xff ;59
000230 e5943000 LDR r3,[r4,#0] ;59
000234 e20300ff AND r0,r3,#0xff ;59
000238 e59f31b8 LDR r3,|L1.1016| ;59
00023c e5d33000 LDRB r3,[r3,#0] ;59 ; disp_color
000240 ebfffffe BL GUI_HLine ;59
000244 e5945014 LDR r5,[r4,#0x14] ;61
000248 e5940000 LDR r0,[r4,#0] ;62
00024c e2806003 ADD r6,r0,#3 ;62
000250 e5940004 LDR r0,[r4,#4] ;63
000254 e594100c LDR r1,[r4,#0xc] ;63
000258 e0800001 ADD r0,r0,r1 ;63
00025c e2407009 SUB r7,r0,#9 ;63
000260 e5940000 LDR r0,[r4,#0] ;64
000264 e5941008 LDR r1,[r4,#8] ;64
000268 e0800001 ADD r0,r0,r1 ;64
00026c e2408001 SUB r8,r0,#1 ;64
000270 ea00000c B |L1.680| ;66
|L1.628|
000274 e2860008 ADD r0,r6,#8 ;67
000278 e1500008 CMP r0,r8 ;67
00027c da000000 BLE |L1.644| ;67
000280 ea000009 B |L1.684| ;67
|L1.644|
000284 e5d50000 LDRB r0,[r5,#0] ;68
000288 e3500000 CMP r0,#0 ;68
00028c 1a000000 BNE |L1.660| ;68
000290 ea000005 B |L1.684| ;68
|L1.660|
000294 e4d52001 LDRB r2,[r5],#1 ;70
000298 e1a01007 MOV r1,r7 ;70
00029c e1a00006 MOV r0,r6 ;70
0002a0 ebfffffe BL GUI_PutChar ;70
0002a4 e2866006 ADD r6,r6,#6 ;71
|L1.680|
0002a8 eafffff1 B |L1.628| ;66
|L1.684|
0002ac e1a00000 MOV r0,r0 ;67
|L1.688|
0002b0 e3a00001 MOV r0,#1 ;75
0002b4 eaffff5a B |L1.36| ;75
ENDP
GUI_WindowsHide PROC
;;;86 uint8 GUI_WindowsHide(WINDOWS *win)
;;;87 { /* 参数过滤,若窗口起出范围,则返回0 */
0002b8 e92d4038 PUSH {r3-r5,lr}
0002bc e1a04000 MOV r4,r0
;;;88 if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0); // 宽度、高度检查,限制最小窗口
0002c0 e5940008 LDR r0,[r4,#8]
0002c4 e3500014 CMP r0,#0x14
0002c8 3a000002 BCC |L1.728|
0002cc e594000c LDR r0,[r4,#0xc]
0002d0 e3500014 CMP r0,#0x14
0002d4 2a000002 BCS |L1.740|
|L1.728|
0002d8 e3a00000 MOV r0,#0
|L1.732|
0002dc e8bd4038 POP {r3-r5,lr}
;;;89 if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0); // 窗口宽度是否溢出
;;;90 if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0); // 窗口高度是否溢出
;;;91
;;;92 /* 消隐窗口 */
;;;93 GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, back_color);
;;;94 return(1);
;;;95 }
0002e0 e12fff1e BX lr
|L1.740|
0002e4 e5940000 LDR r0,[r4,#0] ;89
0002e8 e5941008 LDR r1,[r4,#8] ;89
0002ec e0800001 ADD r0,r0,r1 ;89
0002f0 e3500054 CMP r0,#0x54 ;89
0002f4 9a000001 BLS |L1.768| ;89
0002f8 e3a00000 MOV r0,#0 ;89
0002fc eafffff6 B |L1.732| ;89
|L1.768|
000300 e5940004 LDR r0,[r4,#4] ;90
000304 e594100c LDR r1,[r4,#0xc] ;90
000308 e0800001 ADD r0,r0,r1 ;90
00030c e3500030 CMP r0,#0x30 ;90
000310 9a000001 BLS |L1.796| ;90
000314 e3a00000 MOV r0,#0 ;90
000318 eaffffef B |L1.732| ;90
|L1.796|
00031c e59f00d0 LDR r0,|L1.1012| ;93
000320 e5d03000 LDRB r3,[r0,#0] ;93 ; back_color
000324 e58d3000 STR r3,[sp,#0] ;93
000328 e594c004 LDR r12,[r4,#4] ;93
00032c e594e00c LDR lr,[r4,#0xc] ;93
000330 e08cc00e ADD r12,r12,lr ;93
000334 e24c3001 SUB r3,r12,#1 ;93
000338 e594c000 LDR r12,[r4,#0] ;93
00033c e594e008 LDR lr,[r4,#8] ;93
000340 e08cc00e ADD r12,r12,lr ;93
000344 e24c2001 SUB r2,r12,#1 ;93
000348 e8940003 LDM r4,{r0,r1} ;93
00034c ebfffffe BL GUI_RectangleFill ;93
000350 e3a00001 MOV r0,#1 ;94
000354 eaffffe0 B |L1.732| ;94
ENDP
GUI_WindowsClr PROC
;;;106 void GUI_WindowsClr(WINDOWS *win)
;;;107 { uint8 x0, y0;
000358 e92d43f8 PUSH {r3-r9,lr}
00035c e1a04000 MOV r4,r0
;;;108 uint8 x1, y1;
;;;109
;;;110 /* 设置要清屏的区域 */
;;;111 x0 = win->x + 1;
000360 e5940000 LDR r0,[r4,#0]
000364 e2800001 ADD r0,r0,#1
000368 e20050ff AND r5,r0,#0xff
;;;112 x1 = win->x + win->with - 2;
00036c e5940000 LDR r0,[r4,#0]
000370 e5941008 LDR r1,[r4,#8]
000374 e0800001 ADD r0,r0,r1
000378 e2400002 SUB r0,r0,#2
00037c e20070ff AND r7,r0,#0xff
;;;113 y0 = win->y + 13;
000380 e5940004 LDR r0,[r4,#4]
000384 e280000d ADD r0,r0,#0xd
000388 e20060ff AND r6,r0,#0xff
;;;114 y1 = win->y + win->hight - 2;
00038c e5940004 LDR r0,[r4,#4]
000390 e594100c LDR r1,[r4,#0xc]
000394 e0800001 ADD r0,r0,r1
000398 e2400002 SUB r0,r0,#2
00039c e20080ff AND r8,r0,#0xff
;;;115 if( win->state != NULL ) // 判断是否有状态栏
0003a0 e5940014 LDR r0,[r4,#0x14]
0003a4 e3500000 CMP r0,#0
0003a8 0a000007 BEQ |L1.972|
;;;116 { if( win->hight >= 60)
0003ac e594000c LDR r0,[r4,#0xc]
0003b0 e350003c CMP r0,#0x3c
0003b4 3a000004 BCC |L1.972|
;;;117 { y1 = win->y + win->hight - 12;
0003b8 e5940004 LDR r0,[r4,#4]
0003bc e594100c LDR r1,[r4,#0xc]
0003c0 e0800001 ADD r0,r0,r1
0003c4 e240000c SUB r0,r0,#0xc
0003c8 e20080ff AND r8,r0,#0xff
;;;118 }
;;;119 }
;;;120
;;;121 /* 使用填充矩形实现清屏 */
;;;122 GUI_RectangleFill(x0, y0, x1, y1, back_color);
|L1.972|
0003cc e59f0020 LDR r0,|L1.1012|
0003d0 e5d03000 LDRB r3,[r0,#0] ; back_color
0003d4 e58d3000 STR r3,[sp,#0]
0003d8 e1a03008 MOV r3,r8
0003dc e1a02007 MOV r2,r7
0003e0 e1a01006 MOV r1,r6
0003e4 e1a00005 MOV r0,r5
0003e8 ebfffffe BL GUI_RectangleFill
;;;123 }
0003ec e8bd43f8 POP {r3-r9,lr}
0003f0 e12fff1e BX lr
|L1.1012|
0003f4 00000000 DCD back_color
|L1.1016|
0003f8 00000000 DCD disp_color
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -