📄 me.lst
字号:
03F3 F051 BEQ 0x03FE
(0231) RGBToChar(cbk);
03F4 9100006D LDS R16,_cbk
03F6 9110006E LDS R17,_cbk+1
03F8 D7C2 RCALL _RGBToChar
(0232) glcdDoFillRect(x1, y, x2, y);
03F9 836A STD Y+2,R22
03FA 82A8 STD Y+0,R10
03FB 2F26 MOV R18,R22
03FC 2F04 MOV R16,R20
03FD DCE8 RCALL _glcdDoFillRect
(0233) }
(0234) }
(0235) }
03FE 9623 ADIW R28,3
03FF D895 RCALL pop_gset5
0400 9508 RET
_glcdCircle:
r --> Y+8
y --> R22
x --> R20
0401 D8AC RCALL push_gset2
0402 2F62 MOV R22,R18
0403 2F40 MOV R20,R16
0404 9724 SBIW R28,4
(0236)
(0237) void glcdCircle(unsigned char x, unsigned char y, unsigned char r) {
(0238)
(0239) glcdEllipse(x, y, r, r);
0405 8428 LDD R2,Y+8
0406 2433 CLR R3
0407 823B STD Y+3,R3
0408 822A STD Y+2,R2
0409 2433 CLR R3
040A 8239 STD Y+1,R3
040B 8228 STD Y+0,R2
040C 2F26 MOV R18,R22
040D 2733 CLR R19
040E 2F04 MOV R16,R20
040F 2711 CLR R17
0410 D003 RCALL _glcdEllipse
(0240) }
0411 9624 ADIW R28,4
0412 D87E RCALL pop_gset2
0413 9508 RET
_glcdEllipse:
bb --> Y+15
aa --> Y+20
fill --> Y+19
xe --> R14
xs --> Y+17
ye --> R10
er --> Y+11
ys --> R12
ir --> Y+7
cr --> Y+3
b --> Y+38
a --> R10
y --> Y+34
x --> Y+32
0414 D833 RCALL push_arg4
0415 D8A1 RCALL push_gset5
0416 9766 SBIW R28,0x16
0417 A0AC LDD R10,Y+36
(0241)
(0242) void glcdEllipse(unsigned char x, unsigned char y, unsigned char a, unsigned char b) {
(0243) int aa;
(0244) int bb;
(0245) long er, cr, ir;
(0246) int ys,ye,xs,xe;
(0247) unsigned char fill = 1;
0418 2400 CLR R0
0419 9403 INC R0
041A 8A0B STD Y+19,R0
(0248) if ((a == 0) | (b == 0)) {return;}
041B 20AA TST R10
041C F421 BNE 0x0421
041D E081 LDI R24,1
041E E090 LDI R25,0
041F 017C MOVW R14,R24
0420 C002 RJMP 0x0423
0421 24EE CLR R14
0422 24FF CLR R15
0423 A00E LDD R0,Y+38
0424 2000 TST R0
0425 F421 BNE 0x042A
0426 E081 LDI R24,1
0427 E090 LDI R25,0
0428 016C MOVW R12,R24
0429 C002 RJMP 0x042C
042A 24CC CLR R12
042B 24DD CLR R13
042C 0117 MOVW R2,R14
042D 282C OR R2,R12
042E 283D OR R3,R13
042F 2022 TST R2
0430 F411 BNE 0x0433
0431 2033 TST R3
0432 F009 BEQ 0x0434
0433 C23E RJMP 0x0672
(0249) if ((a > 180) | (b > 180)) {
0434 EB84 LDI R24,0xB4
0435 158A CP R24,R10
0436 F420 BCC 0x043B
0437 E081 LDI R24,1
0438 E090 LDI R25,0
0439 017C MOVW R14,R24
043A C002 RJMP 0x043D
043B 24EE CLR R14
043C 24FF CLR R15
043D EB84 LDI R24,0xB4
043E A00E LDD R0,Y+38
043F 1580 CP R24,R0
0440 F420 BCC 0x0445
0441 E081 LDI R24,1
0442 E090 LDI R25,0
0443 016C MOVW R12,R24
0444 C002 RJMP 0x0447
0445 24CC CLR R12
0446 24DD CLR R13
0447 0117 MOVW R2,R14
0448 282C OR R2,R12
0449 283D OR R3,R13
044A 2022 TST R2
044B F411 BNE 0x044E
044C 2033 TST R3
044D F079 BEQ 0x045D
(0250) if (cbk&0x8000) {
044E 9020006D LDS R2,_cbk
0450 9030006E LDS R3,_cbk+1
0452 FE37 SBRS R3,7
0453 C21E RJMP 0x0672
(0251) RGBToChar(cbk);
0454 0181 MOVW R16,R2
0455 D765 RCALL _RGBToChar
(0252) glcdFillRect(0, 0, SCREEN_WIDTH-1, SCREEN_HEIGHT-1);
0456 E883 LDI R24,0x83
0457 838A STD Y+2,R24
0458 8388 STD Y+0,R24
0459 2722 CLR R18
045A 2700 CLR R16
045B DD1B RCALL _glcdFillRect
(0253) }
(0254) return;
045C C215 RJMP 0x0672
(0255) }
(0256)
(0257) aa = a * a;
045D 9CAA MUL R10,R10
045E 8A1D STD Y+21,R1
045F 8A0C STD Y+20,R0
(0258) bb = b * b;
0460 A00E LDD R0,Y+38
0461 2D00 MOV R16,R0
0462 9E00 MUL R0,R16
0463 8A18 STD Y+16,R1
0464 860F STD Y+15,R0
(0259)
(0260)
(0261) cr = bb >> 1;
0465 0110 MOVW R2,R0
0466 9435 ASR R3
0467 9427 ROR R2
0468 2444 CLR R4
0469 FC37 SBRC R3,7
046A 9440 COM R4
046B 2455 CLR R5
046C FC47 SBRC R4,7
046D 9450 COM R5
046E 01FE MOVW R30,R28
046F 8223 STD Z+3,R2
0470 8234 STD Z+4,R3
0471 8245 STD Z+5,R4
0472 8256 STD Z+6,R5
(0262) cr = cr * (a + a -1);
0473 2C2A MOV R2,R10
0474 2433 CLR R3
0475 2D82 MOV R24,R2
0476 2799 CLR R25
0477 0D82 ADD R24,R2
0478 1D93 ADC R25,R3
0479 9701 SBIW R24,1
047A 011C MOVW R2,R24
047B 2444 CLR R4
047C FC37 SBRC R3,7
047D 9440 COM R4
047E 2455 CLR R5
047F FC47 SBRC R4,7
0480 9450 COM R5
0481 01FE MOVW R30,R28
0482 8063 LDD R6,Z+3
0483 8074 LDD R7,Z+4
0484 8085 LDD R8,Z+5
0485 8096 LDD R9,Z+6
0486 925A ST R5,-Y
0487 924A ST R4,-Y
0488 923A ST R3,-Y
0489 922A ST R2,-Y
048A 0183 MOVW R16,R6
048B 0194 MOVW R18,R8
048C D7D8 RCALL empy32s
048D 01FE MOVW R30,R28
048E 8303 STD Z+3,R16
048F 8314 STD Z+4,R17
0490 8325 STD Z+5,R18
0491 8336 STD Z+6,R19
(0263) ir = aa >> 1;
0492 882C LDD R2,Y+20
0493 883D LDD R3,Y+21
0494 9435 ASR R3
0495 9427 ROR R2
0496 2444 CLR R4
0497 FC37 SBRC R3,7
0498 9440 COM R4
0499 2455 CLR R5
049A FC47 SBRC R4,7
049B 9450 COM R5
049C 01FE MOVW R30,R28
049D 8227 STD Z+7,R2
049E 8630 STD Z+8,R3
049F 8641 STD Z+9,R4
04A0 8652 STD Z+10,R5
(0264) ir = -ir;
04A1 01FE MOVW R30,R28
04A2 8107 LDD R16,Z+7
04A3 8510 LDD R17,Z+8
04A4 8521 LDD R18,Z+9
04A5 8532 LDD R19,Z+10
04A6 D813 RCALL neg32
04A7 01FE MOVW R30,R28
04A8 8307 STD Z+7,R16
04A9 8710 STD Z+8,R17
04AA 8721 STD Z+9,R18
04AB 8732 STD Z+10,R19
(0265) er = 0;
04AC E040 LDI R20,0
04AD E050 LDI R21,0
04AE E060 LDI R22,0
04AF E070 LDI R23,0
04B0 01FE MOVW R30,R28
04B1 8743 STD Z+11,R20
04B2 8754 STD Z+12,R21
04B3 8765 STD Z+13,R22
04B4 8776 STD Z+14,R23
(0266)
(0267) xs = x;
04B5 A028 LDD R2,Y+32
04B6 2433 CLR R3
04B7 8A3A STD Y+18,R3
04B8 8A29 STD Y+17,R2
(0268) xs = xs - a;
04B9 2C2A MOV R2,R10
04BA 2433 CLR R3
04BB 8809 LDD R0,Y+17
04BC 881A LDD R1,Y+18
04BD 1802 SUB R0,R2
04BE 0813 SBC R1,R3
04BF 8A1A STD Y+18,R1
04C0 8A09 STD Y+17,R0
(0269) xe = x;
04C1 A0E8 LDD R14,Y+32
04C2 24FF CLR R15
(0270) xe = xe + a;
04C3 2433 CLR R3
04C4 0CE2 ADD R14,R2
04C5 1CF3 ADC R15,R3
(0271) ys = y;
04C6 A0CA LDD R12,Y+34
04C7 24DD CLR R13
(0272) ye = y;
04C8 2CAC MOV R10,R12
04C9 24BB CLR R11
04CA C08E RJMP 0x0559
(0273) while (cr >= ir) {
(0274) glcdDoPixelLine(xs, xe, ys, 1);
04CB E081 LDI R24,1
04CC 838A STD Y+2,R24
04CD 82D9 STD Y+1,R13
04CE 82C8 STD Y+0,R12
04CF 0197 MOVW R18,R14
04D0 8909 LDD R16,Y+17
04D1 891A LDD R17,Y+18
04D2 DEA7 RCALL _glcdDoPixelLine
(0275) if (ys != ye) {
04D3 14CA CP R12,R10
04D4 04DB CPC R13,R11
04D5 F041 BEQ 0x04DE
(0276) glcdDoPixelLine(xs, xe, ye, 1);
04D6 E081 LDI R24,1
04D7 838A STD Y+2,R24
04D8 82B9 STD Y+1,R11
04D9 82A8 STD Y+0,R10
04DA 0197 MOVW R18,R14
04DB 8909 LDD R16,Y+17
04DC 891A LDD R17,Y+18
04DD DE9C RCALL _glcdDoPixelLine
(0277) }
(0278) ys--;
04DE 01C6 MOVW R24,R12
04DF 9701 SBIW R24,1
04E0 016C MOVW R12,R24
(0279) ye++;
04E1 01C5 MOVW R24,R10
04E2 9601 ADIW R24,1
04E3 015C MOVW R10,R24
(0280) ir += aa;
04E4 882C LDD R2,Y+20
04E5 883D LDD R3,Y+21
04E6 2444 CLR R4
04E7 FC37 SBRC R3,7
04E8 9440 COM R4
04E9 2455 CLR R5
04EA FC47 SBRC R4,7
04EB 9450 COM R5
04EC 01FE MOVW R30,R28
04ED 8067 LDD R6,Z+7
04EE 8470 LDD R7,Z+8
04EF 8481 LDD R8,Z+9
04F0 8492 LDD R9,Z+10
04F1 0C62 ADD R6,R2
04F2 1C73 ADC R7,R3
04F3 1C84 ADC R8,R4
04F4 1C95 ADC R9,R5
04F5 01FE MOVW R30,R28
04F6 8267 STD Z+7,R6
04F7 8670 STD Z+8,R7
04F8 8681 STD Z+9,R8
04F9 8692 STD Z+10,R9
(0281) er += ir;
04FA 01FE MOVW R30,R28
04FB 8027 LDD R2,Z+7
04FC 8430 LDD R3,Z+8
04FD 8441 LDD R4,Z+9
04FE 8452 LDD R5,Z+10
04FF 01FE MOVW R30,R28
0500 8463 LDD R6,Z+11
0501 8474 LDD R7,Z+12
0502 8485 LDD R8,Z+13
0503 8496 LDD R9,Z+14
0504 0C62 ADD R6,R2
0505 1C73 ADC R7,R3
0506 1C84 ADC R8,R4
0507 1C95 ADC R9,R5
0508 01FE MOVW R30,R28
0509 8663 STD Z+11,R6
050A 8674 STD Z+12,R7
050B 8685 STD Z+13,R8
050C 8696 STD Z+14,R9
(0282) if (2 * er > cr) {
050D 01FE MOVW R30,R28
050E 8423 LDD R2,Z+11
050F 8434 LDD R3,Z+12
0510 8445 LDD R4,Z+13
0511 8456 LDD R5,Z+14
0512 E042 LDI R20,2
0513 E050 LDI R21,0
0514 E060 LDI R22,0
0515 E070 LDI R23,0
0516 925A ST R5,-Y
0517 924A ST R4,-Y
0518 923A ST R3,-Y
0519 922A ST R2,-Y
051A 018A MOVW R16,R20
051B 019B MOVW R18,R22
051C D748 RCALL empy32s
051D 01FE MOVW R30,R28
051E 8023 LDD R2,Z+3
051F 8034 LDD R3,Z+4
0520 8045 LDD R4,Z+5
0521 8056 LDD R5,Z+6
0522 1620 CP R2,R16
0523 0631 CPC R3,R17
0524 0642 CPC R4,R18
0525 0653 CPC R5,R19
0526 F00C BLT 0x0528
0527 C031 RJMP 0x0559
(0283) er -= cr;
0528 01FE MOVW R30,R28
0529 8023 LDD R2,Z+3
052A 8034 LDD R3,Z+4
052B 8045 LDD R4,Z+5
052C 8056 LDD R5,Z+6
052D 01FE MOVW R30,R28
052E 8463 LDD R6,Z+11
052F 8474 LDD R7,Z+12
0530 8485 LDD R8,Z+13
0531 8496 LDD R9,Z+14
0532 1862 SUB R6,R2
0533 0873 SBC R7,R3
0534 0884 SBC R8,R4
0535 0895 SBC R9,R5
0536 01FE MOVW R30,R28
0537 8663 STD Z+11,R6
0538 8674 STD Z+12,R7
0539 8685 STD Z+13,R8
053A 8696 STD Z+14,R9
(0284) cr -= bb;
053B 842F LDD R2,Y+15
053C 8838 LDD R3,Y+16
053D 2444 CLR R4
053E FC37 SBRC R3,7
053F 9440 COM R4
0540 2455 CLR R5
0541 FC47 SBRC R4,7
0542 9450 COM R5
0543 01FE MOVW R30,R28
0544 8063 LDD R6,Z+3
0545 8074 LDD R7,Z+4
0546 8085 LDD R8,Z+5
0547 8096 LDD R9,Z+6
0548 1862 SUB R6,R2
0549 0873 SBC R7,R3
054A 0884 SBC R8,R4
054B 0895 SBC R9,R5
054C 01FE MOVW R30,R28
054D 8263 STD Z+3,R6
054E 8274 STD Z+4,R7
054F 8285 STD Z+5,R8
0550 8296 STD Z+6,R9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -