📄 me.lst
字号:
(0244) glcdDoCheckCoord(y2, y3);
(0245) glcdDoFillRect(x2, y2, x3, y3);
(0246) }
(0247) }
(0248) }
052B 24EE CLR R14
052C 24FF CLR R15
052D 90200088 LDS R2,_glcd_Clip+3
052F 2433 CLR R3
0530 1626 CP R2,R22
0531 0637 CPC R3,R23
0532 F020 BCS 0x0537
0533 E081 LDI R24,1
0534 E090 LDI R25,0
0535 016C MOVW R12,R24
0536 C002 RJMP 0x0539
0537 24CC CLR R12
0538 24DD CLR R13
0539 0117 MOVW R2,R14
053A 202C AND R2,R12
053B 203D AND R3,R13
053C 2022 TST R2
053D F419 BNE 0x0541
053E 2033 TST R3
053F F409 BNE 0x0541
0540 C05E RJMP 0x059F
0541 90200085 LDS R2,_glcd_Clip
0543 2433 CLR R3
0544 1542 CP R20,R2
0545 0553 CPC R21,R3
0546 F418 BCC 0x054A
0547 2D42 MOV R20,R2
0548 2755 CLR R21
0549 C014 RJMP 0x055E
054A 90200087 LDS R2,_glcd_Clip+2
(0249)
054C 2433 CLR R3
054D 1624 CP R2,R20
054E 0635 CPC R3,R21
054F F408 BCC 0x0551
0550 C04E RJMP 0x059F
0551 9020006D LDS R2,_cofg
0553 9030006E LDS R3,_cofg+1
(0250) /* Hilfsfunktion f黵 Ellipsen */
0555 FE37 SBRS R3,7
0556 C005 RJMP 0x055C
0557 0181 MOVW R16,R2
0558 D5EC RCALL _RGBToChar
0559 019B MOVW R18,R22
055A 018A MOVW R16,R20
(0251) void glcdDoPixelLine(unsigned int x1, unsigned int x2, unsigned int y, unsigned char fill) {
055B D5F1 RCALL _point
055C 5F4F SUBI R20,0xFF
055D 4F5F SBCI R21,0xFF
055E 90200085 LDS R2,_glcd_Clip
0560 2433 CLR R3
(0252)
0561 14A2 CP R10,R2
0562 04B3 CPC R11,R3
(0253) if ((y >= glcd_Clip.Y1 ) & (y <= glcd_Clip.Y2)) {
0563 F408 BCC 0x0565
0564 C03A RJMP 0x059F
0565 90200087 LDS R2,_glcd_Clip+2
(0254) if (x1 < glcd_Clip.X1) {x1 = glcd_Clip.X1;} else {
(0255) if (x1 > glcd_Clip.X2) {return;} else {
0567 2433 CLR R3
(0256) if (cofg&0x8000) {
(0257) RGBToChar(cofg);
(0258) point(x1, y);
0568 142A CP R2,R10
0569 043B CPC R3,R11
056A F418 BCC 0x056E
056B 2CA2 MOV R10,R2
056C 24BB CLR R11
056D C00E RJMP 0x057C
056E 9020006D LDS R2,_cofg
(0259) }
0570 9030006E LDS R3,_cofg+1
0572 FE37 SBRS R3,7
0573 C005 RJMP 0x0579
0574 0181 MOVW R16,R2
0575 D5CF RCALL _RGBToChar
0576 019B MOVW R18,R22
0577 0185 MOVW R16,R10
(0260) x1++;
0578 D5D4 RCALL _point
0579 01C5 MOVW R24,R10
057A 9701 SBIW R24,1
057B 015C MOVW R10,R24
057C 16A4 CP R10,R20
057D 06B5 CPC R11,R21
(0261) }
057E F020 BCS 0x0583
057F E081 LDI R24,1
(0262) }
0580 E090 LDI R25,0
0581 016C MOVW R12,R24
0582 C002 RJMP 0x0585
(0263) if (x2 < glcd_Clip.X1) {return;} else {
(0264) if (x2 > glcd_Clip.X2) {x2 = glcd_Clip.X2;} else {
0583 24CC CLR R12
0584 24DD CLR R13
0585 9180006F LDS R24,_cobk
(0265) if (cofg&0x8000) {
(0266) RGBToChar(cofg);
(0267) point(x2, y);
0587 91900070 LDS R25,_cobk+1
0589 7080 ANDI R24,0
058A 7890 ANDI R25,0x80
058B 842F LDD R2,Y+15
058C 2433 CLR R3
058D 2228 AND R2,R24
058E 2239 AND R3,R25
058F 202C AND R2,R12
0590 203D AND R3,R13
0591 2022 TST R2
0592 F411 BNE 0x0595
0593 2033 TST R3
0594 F051 BEQ 0x059F
0595 9100006F LDS R16,_cobk
0597 91100070 LDS R17,_cobk+1
0599 D5AB RCALL _RGBToChar
059A 836A STD Y+2,R22
059B 82A8 STD Y+0,R10
059C 2F26 MOV R18,R22
059D 2F04 MOV R16,R20
059E DCD7 RCALL _glcdDoFillRect
(0268) }
059F 9623 ADIW R28,3
05A0 940E1003 CALL pop_gset5
05A2 9508 RET
_glcdCircle:
r --> Y+8
y --> R22
x --> R20
05A3 940E101D CALL push_gset2
(0269) x2--;
05A5 2F62 MOV R22,R18
05A6 2F40 MOV R20,R16
05A7 9724 SBIW R28,4
05A8 8428 LDD R2,Y+8
(0270) }
(0271) }
(0272) if ((fill) & (cobk&0x8000) & (x1 <= x2)) {
05A9 2433 CLR R3
05AA 823B STD Y+3,R3
05AB 822A STD Y+2,R2
05AC 2433 CLR R3
05AD 8239 STD Y+1,R3
05AE 8228 STD Y+0,R2
05AF 2F26 MOV R18,R22
(0273) RGBToChar(cobk);
(0274) glcdDoFillRect(x1, y, x2, y);
(0275) }
(0276) }
05B0 2733 CLR R19
05B1 2F04 MOV R16,R20
05B2 2711 CLR R17
05B3 D004 RCALL _glcdEllipse
05B4 9624 ADIW R28,4
05B5 940E0FFA CALL pop_gset2
05B7 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
05B8 940E0FAD CALL push_arg4
05BA 940E1029 CALL push_gset5
(0277) }
05BC 9766 SBIW R28,0x16
05BD A0AC LDD R10,Y+36
05BE 2400 CLR R0
05BF 9403 INC R0
05C0 8A0B STD Y+19,R0
05C1 20AA TST R10
05C2 F421 BNE 0x05C7
(0278)
(0279) void glcdCircle(unsigned char x, unsigned char y, unsigned char r) {
(0280)
(0281) glcdEllipse(x, y, r, r);
(0282) }
(0283)
(0284) void glcdEllipse(unsigned char x, unsigned char y, unsigned char a, unsigned char b) {
05C3 E081 LDI R24,1
05C4 E090 LDI R25,0
05C5 017C MOVW R14,R24
(0285) int aa;
05C6 C002 RJMP 0x05C9
05C7 24EE CLR R14
05C8 24FF CLR R15
05C9 A00E LDD R0,Y+38
05CA 2000 TST R0
05CB F421 BNE 0x05D0
05CC E081 LDI R24,1
05CD E090 LDI R25,0
05CE 016C MOVW R12,R24
05CF C002 RJMP 0x05D2
05D0 24CC CLR R12
05D1 24DD CLR R13
05D2 0117 MOVW R2,R14
05D3 282C OR R2,R12
05D4 283D OR R3,R13
05D5 2022 TST R2
05D6 F411 BNE 0x05D9
05D7 2033 TST R3
05D8 F009 BEQ 0x05DA
05D9 C244 RJMP 0x081E
05DA EB84 LDI R24,0xB4
05DB 158A CP R24,R10
05DC F420 BCC 0x05E1
05DD E081 LDI R24,1
05DE E090 LDI R25,0
(0286) int bb;
05DF 017C MOVW R14,R24
05E0 C002 RJMP 0x05E3
05E1 24EE CLR R14
05E2 24FF CLR R15
05E3 EB84 LDI R24,0xB4
05E4 A00E LDD R0,Y+38
05E5 1580 CP R24,R0
05E6 F420 BCC 0x05EB
05E7 E081 LDI R24,1
05E8 E090 LDI R25,0
05E9 016C MOVW R12,R24
05EA C002 RJMP 0x05ED
05EB 24CC CLR R12
05EC 24DD CLR R13
05ED 0117 MOVW R2,R14
05EE 282C OR R2,R12
05EF 283D OR R3,R13
05F0 2022 TST R2
05F1 F411 BNE 0x05F4
05F2 2033 TST R3
05F3 F079 BEQ 0x0603
05F4 9020006F LDS R2,_cobk
05F6 90300070 LDS R3,_cobk+1
05F8 FE37 SBRS R3,7
(0287) long er, cr, ir;
05F9 C224 RJMP 0x081E
05FA 0181 MOVW R16,R2
05FB D549 RCALL _RGBToChar
05FC E882 LDI R24,0x82
05FD 838A STD Y+2,R24
05FE 8388 STD Y+0,R24
(0288) int ys,ye,xs,xe;
05FF 2722 CLR R18
0600 2700 CLR R16
(0289) unsigned char fill = 1;
0601 DD0B RCALL _glcdFillRect
0602 C21B RJMP 0x081E
0603 9CAA MUL R10,R10
0604 8A1D STD Y+21,R1
0605 8A0C STD Y+20,R0
0606 A00E LDD R0,Y+38
(0290) if ((a == 0) | (b == 0)) {return;}
(0291) if ((a > 180) | (b > 180)) {
0607 2D00 MOV R16,R0
(0292) if (cobk&0x8000) {
(0293) RGBToChar(cobk);
(0294) glcdFillRect(0, 0, GLCD_PIXELX, GLCD_PIXELY);
0608 9E00 MUL R0,R16
0609 8A18 STD Y+16,R1
060A 860F STD Y+15,R0
(0295) }
060B 0110 MOVW R2,R0
060C 9435 ASR R3
060D 9427 ROR R2
060E 2444 CLR R4
060F FC37 SBRC R3,7
(0296) return;
(0297) }
(0298)
0610 9440 COM R4
0611 2455 CLR R5
0612 FC47 SBRC R4,7
0613 9450 COM R5
0614 01FE MOVW R30,R28
0615 8223 STD Z+3,R2
0616 8234 STD Z+4,R3
0617 8245 STD Z+5,R4
0618 8256 STD Z+6,R5
0619 2C2A MOV R2,R10
061A 2433 CLR R3
061B 2D82 MOV R24,R2
061C 2799 CLR R25
061D 0D82 ADD R24,R2
(0299) aa = a * a;
061E 1D93 ADC R25,R3
061F 9701 SBIW R24,1
0620 011C MOVW R2,R24
0621 2444 CLR R4
0622 FC37 SBRC R3,7
0623 9440 COM R4
0624 2455 CLR R5
0625 FC47 SBRC R4,7
0626 9450 COM R5
0627 01FE MOVW R30,R28
0628 8063 LDD R6,Z+3
0629 8074 LDD R7,Z+4
062A 8085 LDD R8,Z+5
062B 8096 LDD R9,Z+6
062C 925A ST R5,-Y
062D 924A ST R4,-Y
062E 923A ST R3,-Y
062F 922A ST R2,-Y
0630 0183 MOVW R16,R6
0631 0194 MOVW R18,R8
0632 940E0FCA CALL empy32s
0634 01FE MOVW R30,R28
0635 8303 STD Z+3,R16
0636 8314 STD Z+4,R17
0637 8325 STD Z+5,R18
0638 8336 STD Z+6,R19
0639 882C LDD R2,Y+20
063A 883D LDD R3,Y+21
063B 9435 ASR R3
063C 9427 ROR R2
(0300) bb = b * b;
063D 2444 CLR R4
063E FC37 SBRC R3,7
063F 9440 COM R4
0640 2455 CLR R5
0641 FC47 SBRC R4,7
0642 9450 COM R5
0643 01FE MOVW R30,R28
0644 8227 STD Z+7,R2
0645 8630 STD Z+8,R3
0646 8641 STD Z+9,R4
0647 8652 STD Z+10,R5
0648 01FE MOVW R30,R28
0649 8107 LDD R16,Z+7
064A 8510 LDD R17,Z+8
064B 8521 LDD R18,Z+9
(0301)
064C 8532 LDD R19,Z+10
064D 940E102D CALL neg32
064F 01FE MOVW R30,R28
0650 8307 STD Z+7,R16
0651 8710 STD Z+8,R17
0652 8721 STD Z+9,R18
0653 8732 STD Z+10,R19
0654 E040 LDI R20,0
0655 E050 LDI R21,0
0656 E060 LDI R22,0
(0302)
0657 E070 LDI R23,0
0658 01FE MOVW R30,R28
0659 8743 STD Z+11,R20
065A 8754 STD Z+12,R21
065B 8765 STD Z+13,R22
065C 8776 STD Z+14,R23
065D A028 LDD R2,Y+32
065E 2433 CLR R3
065F 8A3A STD Y+18,R3
(0303) cr = bb >> 1;
(0304) cr = cr * (a + a -1);
0660 8A29 STD Y+17,R2
0661 2C2A MOV R2,R10
0662 2433 CLR R3
0663 8809 LDD R0,Y+17
(0305) ir = aa >> 1;
0664 881A LDD R1,Y+18
0665 1802 SUB R0,R2
0666 0813 SBC R1,R3
0667 8A1A STD Y+18,R1
0668 8A09 STD Y+17,R0
0669 A0E8 LDD R14,Y+32
066A 24FF CLR R15
066B 2433 CLR R3
(0306) ir = -ir;
066C 0CE2 ADD R14,R2
066D 1CF3 ADC R15,R3
(0307) er = 0;
066E A0CA LDD R12,Y+34
066F 24DD CLR R13
0670 2CAC MOV R10,R12
(0308)
0671 24BB CLR R11
0672 C08F RJMP 0x0702
(0309) xs = x;
0673 E081 LDI R24,1
0674 838A STD Y+2,R24
0675 82D9 STD Y+1,R13
(0310) xs = xs - a;
(0311) xe = x;
0676 82C8 STD Y+0,R12
0677 0197 MOVW R18,R14
0678 8909 LDD R16,Y+17
0679 891A LDD R17,Y+18
067A DE9F RCALL _glcdDoPixelLine
067B 14CA CP R12,R10
067C 04DB CPC R13,R11
067D F041 BEQ 0x0686
(0312) xe = xe + a;
067E E081 LDI R24,1
067F 838A STD Y+2,R24
0680 82B9 STD Y+1,R11
(0313) ys = y;
0681 82A8 STD Y+0,R10
0682 0197 MOVW R18,R14
0683 8909 LDD R16,Y+17
0684 891A LDD R17,Y+18
0685 DE94 RCALL _glcdDoPixelLine
0686 01C6 MOVW R24,R12
0687 9701 SBIW R24,1
0688 016C MOVW R12,R24
(0314) ye = y;
(0315) while (cr >= ir) {
0689 01C5 MOVW R24,R10
068A 9601 ADIW R24,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -