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

📄 windows.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -