📄 windows.lst
字号:
342 .LM24:
343 015e 0E81 ldd r16,Y+6
344 0160 1F81 ldd r17,Y+7
57:windows.c **** bak = win->x + 3;
346 .LM25:
347 0162 9881 ld r25,Y
348 0164 83E0 ldi r24,lo8(3)
349 0166 D82E mov r13,r24
350 0168 D90E add r13,r25
58:windows.c **** bak1 = win->y + win->hight - 8;
352 .LM26:
353 016a E980 ldd r14,Y+1
354 016c 8B81 ldd r24,Y+3
355 016e E80E add r14,r24
356 0170 68EF ldi r22,lo8(-8)
357 0172 E60E add r14,r22
59:windows.c **** bak2 = win->x + win->with -1;
359 .LM27:
360 0174 FA80 ldd r15,Y+2
361 0176 F90E add r15,r25
362 0178 FA94 dec r15
363 .L13:
60:windows.c ****
61:windows.c **** while(1)
62:windows.c **** { if( (bak+8) > bak2 ) break; // 判断标题是否溢出
365 .LM28:
366 017a 8D2D mov r24,r13
367 017c 9927 clr r25
368 017e 87FD sbrc r24,7
369 0180 9095 com r25
370 0182 0896 adiw r24,8
371 0184 2F2D mov r18,r15
372 0186 3327 clr r19
373 0188 27FD sbrc r18,7
374 018a 3095 com r19
375 018c 2817 cp r18,r24
376 018e 3907 cpc r19,r25
377 0190 6CF0 brlt .L11
63:windows.c **** if(*str=='\0') break; // 判断字符串是否结束
379 .LM29:
380 0192 F801 movw r30,r16
381 0194 4081 ld r20,Z
382 0196 4423 tst r20
383 0198 49F0 breq .L11
64:windows.c ****
65:windows.c **** GUI_PutChar(bak, bak1, *str++); // 显示标题
385 .LM30:
386 019a 0F5F subi r16,lo8(-(1))
387 019c 1F4F sbci r17,hi8(-(1))
388 019e 6E2D mov r22,r14
389 01a0 8D2D mov r24,r13
390 01a2 0E94 0000 call GUI_PutChar
66:windows.c **** bak += 6;
392 .LM31:
393 01a6 F6E0 ldi r31,lo8(6)
394 01a8 DF0E add r13,r31
395 01aa E7CF rjmp .L13
396 .L11:
67:windows.c **** }
68:windows.c **** }
69:windows.c ****
70:windows.c **** return(1);
398 .LM32:
399 01ac 81E0 ldi r24,lo8(1)
400 01ae 90E0 ldi r25,hi8(1)
401 .L1:
402 /* epilogue: frame size=0 */
403 01b0 DF91 pop r29
404 01b2 CF91 pop r28
405 01b4 1F91 pop r17
406 01b6 0F91 pop r16
407 01b8 FF90 pop r15
408 01ba EF90 pop r14
409 01bc DF90 pop r13
410 01be 0895 ret
411 /* epilogue end (size=8) */
412 /* function GUI_WindowsDraw size 224 (209) */
420 .Lscope0:
423 .global GUI_WindowsHide
425 GUI_WindowsHide:
71:windows.c ****
72:windows.c **** }
73:windows.c ****
74:windows.c ****
75:windows.c **** /****************************************************************************
76:windows.c **** * 名称:GUI_WindowsHide()
77:windows.c **** * 功能:消隐窗口。
78:windows.c **** * 入口参数:win 窗口句柄
79:windows.c **** * 出口参数:返回0表示操作失败,返回1表示操作成功
80:windows.c **** ****************************************************************************/
81:windows.c ****
82:windows.c **** uint8 GUI_WindowsHide(WINDOWS *win)
83:windows.c **** { /* 参数过滤,若窗口起出范围,则返回0 */
427 .LM33:
428 /* prologue: frame size=0 */
429 01c0 0F93 push r16
430 /* prologue end (size=1) */
431 01c2 FC01 movw r30,r24
84:windows.c **** if( ( (win->with)<20 ) || ( (win->hight)<20 ) ) return(0); // 宽度、高度检查,限制最小窗口
433 .LM34:
434 01c4 4281 ldd r20,Z+2
435 01c6 4431 cpi r20,lo8(20)
436 01c8 98F0 brlo .L23
438 .LM35:
439 01ca 2381 ldd r18,Z+3
440 01cc 2431 cpi r18,lo8(20)
441 01ce 80F0 brlo .L23
85:windows.c **** if( (win->x + win->with ) > GUI_LCM_XMAX ) return(0); // 窗口宽度是否溢出
443 .LM36:
444 01d0 3081 ld r19,Z
445 01d2 632F mov r22,r19
446 01d4 640F add r22,r20
447 01d6 712D mov r23,__zero_reg__
448 01d8 711D adc r23,__zero_reg__
449 01da 6336 cpi r22,99
450 01dc 7105 cpc r23,__zero_reg__
451 01de 44F4 brge .L23
86:windows.c **** if( (win->y + win->hight ) > GUI_LCM_YMAX ) return(0); // 窗口高度是否溢出
453 .LM37:
454 01e0 6181 ldd r22,Z+1
455 01e2 E62F mov r30,r22
456 01e4 E20F add r30,r18
457 01e6 F12D mov r31,__zero_reg__
458 01e8 F11D adc r31,__zero_reg__
459 01ea E434 cpi r30,68
460 01ec F105 cpc r31,__zero_reg__
461 01ee 1CF0 brlt .L22
462 .L23:
463 01f0 80E0 ldi r24,lo8(0)
464 01f2 90E0 ldi r25,hi8(0)
465 01f4 0BC0 rjmp .L18
466 .L22:
87:windows.c ****
88:windows.c **** /* 消隐窗口 */
89:windows.c **** GUI_RectangleFill(win->x, win->y, win->x + win->with - 1, win->y + win->hight - 1, Windows_C);
468 .LM38:
469 01f6 260F add r18,r22
470 01f8 2150 subi r18,lo8(-(-1))
471 01fa 430F add r20,r19
472 01fc 4150 subi r20,lo8(-(-1))
473 01fe 0091 0000 lds r16,Windows_C
474 0202 832F mov r24,r19
475 0204 0E94 0000 call GUI_RectangleFill
90:windows.c **** return(1);
477 .LM39:
478 0208 81E0 ldi r24,lo8(1)
479 020a 90E0 ldi r25,hi8(1)
480 .L18:
481 /* epilogue: frame size=0 */
482 020c 0F91 pop r16
483 020e 0895 ret
484 /* epilogue end (size=2) */
485 /* function GUI_WindowsHide size 40 (37) */
487 .Lscope1:
490 .global GUI_WindowsClr
492 GUI_WindowsClr:
91:windows.c **** }
92:windows.c ****
93:windows.c ****
94:windows.c ****
95:windows.c **** /****************************************************************************
96:windows.c **** * 名称:GUI_WindowsClr()
97:windows.c **** * 功能:清屏窗口。
98:windows.c **** * 入口参数:win 窗口句柄
99:windows.c **** * 出口参数:无
100:windows.c **** * 说明:使用此函数前要先使用GUI_WindowsDraw()将窗口画出。
101:windows.c **** ****************************************************************************/
102:windows.c **** void GUI_WindowsClr(WINDOWS *win)
103:windows.c **** { uint8 x0, y0;
494 .LM40:
495 /* prologue: frame size=0 */
496 0210 0F93 push r16
497 /* prologue end (size=1) */
498 0212 FC01 movw r30,r24
104:windows.c **** uint8 x1, y1;
105:windows.c ****
106:windows.c **** /* 设置要清屏的区域 */
107:windows.c **** x0 = win->x + 1;
500 .LM41:
501 0214 8081 ld r24,Z
502 0216 782F mov r23,r24
503 0218 7F5F subi r23,lo8(-(1))
108:windows.c **** x1 = win->x + win->with - 2;
505 .LM42:
506 021a 4281 ldd r20,Z+2
507 021c 480F add r20,r24
508 021e 4250 subi r20,lo8(-(-2))
109:windows.c **** y0 = win->y + 13;
510 .LM43:
511 0220 8181 ldd r24,Z+1
512 0222 682F mov r22,r24
513 0224 635F subi r22,lo8(-(13))
110:windows.c **** y1 = win->y + win->hight - 2;
515 .LM44:
516 0226 3381 ldd r19,Z+3
517 0228 582F mov r21,r24
518 022a 530F add r21,r19
519 022c 252F mov r18,r21
520 022e 2250 subi r18,lo8(-(-2))
111:windows.c **** if( win->state != NULL ) // 判断是否有状态栏
522 .LM45:
523 0230 8681 ldd r24,Z+6
524 0232 9781 ldd r25,Z+7
525 0234 892B or r24,r25
526 0236 19F0 breq .L25
112:windows.c **** { if( win->hight >= 60)
528 .LM46:
529 0238 3C33 cpi r19,lo8(60)
530 023a 08F0 brlo .L25
113:windows.c **** {
114:windows.c **** y1 = win->y + win->hight - 12;
532 .LM47:
533 023c 2A50 subi r18,lo8(-(-10))
534 .L25:
115:windows.c **** }
116:windows.c **** }
117:windows.c ****
118:windows.c **** /* 使用填充矩形实现清屏 */
119:windows.c **** GUI_RectangleFill(x0, y0, x1, y1,Back_G);
536 .LM48:
537 023e 0091 0000 lds r16,Back_G
538 0242 872F mov r24,r23
539 0244 0E94 0000 call GUI_RectangleFill
540 /* epilogue: frame size=0 */
541 0248 0F91 pop r16
542 024a 0895 ret
543 /* epilogue end (size=2) */
544 /* function GUI_WindowsClr size 30 (27) */
552 .Lscope2:
553 .comm Alarm,1,1
555 .text
557 Letext:
558 /* File "windows.c": code 294 = 0x0126 ( 273), prologues 9, epilogues 12 */
DEFINED SYMBOLS
*ABS*:00000000 windows.c
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:3 *ABS*:0000003f __SREG__
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:4 *ABS*:0000003e __SP_H__
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:5 *ABS*:0000003d __SP_L__
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:6 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:7 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:128 .text:00000000 GUI_WindowsDraw
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:425 .text:000001c0 GUI_WindowsHide
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:492 .text:00000210 GUI_WindowsClr
*COM*:00000001 Alarm
C:\DOCUME~1\64564564\LOCALS~1\Temp/cce4aaaa.s:557 .text:0000024c Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
Back_G
GUI_RectangleFill
Windows_C
GUI_Rectangle
GUI_HLine
GUI_RLine
GUI_Line
GUI_PutChar
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -