📄 3dtesting.lis
字号:
0830 FF1F rol R31
0832 E80F add R30,R24
0834 F91F adc R31,R25
0836 2080 ldd R2,z+0
0838 3180 ldd R3,z+1
083A 30920500 sts _sy+1,R3
083E 20920400 sts _sy,R2
0842 .dbline 116
0842 ; vertex=gg[i]-1;
0842 80E0 ldi R24,<_gg
0844 90E0 ldi R25,>_gg
0846 DE01 movw R26,R28
0848 AE56 subi R26,110 ; addi 146
084A BF4F sbci R27,255
084C ED91 ld R30,x+
084E FC91 ld R31,x
0850 EE0F lsl R30
0852 FF1F rol R31
0854 E80F add R30,R24
0856 F91F adc R31,R25
0858 6791 elpm R22,Z+
085A 7691 elpm R23,Z
085C 6150 subi R22,1
085E 7040 sbci R23,0
0860 .dbline 117
0860 ; ex=newx[vertex];
0860 CE01 movw R24,R28
0862 4296 adiw R24,18
0864 FB01 movw R30,R22
0866 EE0F lsl R30
0868 FF1F rol R31
086A E80F add R30,R24
086C F91F adc R31,R25
086E 2080 ldd R2,z+0
0870 3180 ldd R3,z+1
0872 30920300 sts _ex+1,R3
0876 20920200 sts _ex,R2
087A .dbline 118
087A ; ey=newy[vertex];
087A CE01 movw R24,R28
087C 805C subi R24,192 ; offset = 64
087E 9F4F sbci R25,255
0880 FB01 movw R30,R22
0882 EE0F lsl R30
0884 FF1F rol R31
0886 E80F add R30,R24
0888 F91F adc R31,R25
088A 2080 ldd R2,z+0
088C 3180 ldd R3,z+1
088E 30920100 sts _ey+1,R3
0892 20920000 sts _ey,R2
0896 .dbline 119
0896 ; if(sx>255 | sy>255 | ex>255 | ey>255)
0896 8FEF ldi R24,255
0898 90E0 ldi R25,0
089A 20900600 lds R2,_sx
089E 30900700 lds R3,_sx+1
08A2 8215 cp R24,R2
08A4 9305 cpc R25,R3
08A6 1CF4 brge L34
08A8 X7:
08A8 81E0 ldi R24,1
08AA 7C01 movw R14,R24
08AC 02C0 xjmp L35
08AE L34:
08AE EE24 clr R14
08B0 FF24 clr R15
08B2 L35:
08B2 8FEF ldi R24,255
08B4 90E0 ldi R25,0
08B6 20900400 lds R2,_sy
08BA 30900500 lds R3,_sy+1
08BE 8215 cp R24,R2
08C0 9305 cpc R25,R3
08C2 1CF4 brge L36
08C4 X8:
08C4 81E0 ldi R24,1
08C6 6C01 movw R12,R24
08C8 02C0 xjmp L37
08CA L36:
08CA CC24 clr R12
08CC DD24 clr R13
08CE L37:
08CE 8FEF ldi R24,255
08D0 90E0 ldi R25,0
08D2 20900200 lds R2,_ex
08D6 30900300 lds R3,_ex+1
08DA 8215 cp R24,R2
08DC 9305 cpc R25,R3
08DE 1CF4 brge L38
08E0 X9:
08E0 81E0 ldi R24,1
08E2 5C01 movw R10,R24
08E4 02C0 xjmp L39
08E6 L38:
08E6 AA24 clr R10
08E8 BB24 clr R11
08EA L39:
08EA 8FEF ldi R24,255
08EC 90E0 ldi R25,0
08EE 20900000 lds R2,_ey
08F2 30900100 lds R3,_ey+1
08F6 8215 cp R24,R2
08F8 9305 cpc R25,R3
08FA 1CF4 brge L40
08FC X10:
08FC 61E0 ldi R22,1
08FE 70E0 ldi R23,0
0900 02C0 xjmp L41
0902 L40:
0902 6627 clr R22
0904 7727 clr R23
0906 L41:
0906 1701 movw R2,R14
0908 2C28 or R2,R12
090A 3D28 or R3,R13
090C 2A28 or R2,R10
090E 3B28 or R3,R11
0910 262A or R2,R22
0912 372A or R3,R23
0914 2220 tst R2
0916 11F4 brne X11
0918 3320 tst R3
091A 91F0 breq L32
091C X11:
091C .dbline 120
091C ; {
091C .dbline 121
091C ; sx=255;
091C 8FEF ldi R24,255
091E 90E0 ldi R25,0
0920 90930700 sts _sx+1,R25
0924 80930600 sts _sx,R24
0928 .dbline 122
0928 ; sy=255;
0928 90930500 sts _sy+1,R25
092C 80930400 sts _sy,R24
0930 .dbline 123
0930 ; ex=255;
0930 90930300 sts _ex+1,R25
0934 80930200 sts _ex,R24
0938 .dbline 124
0938 ; ey=255;
0938 90930100 sts _ey+1,R25
093C 80930000 sts _ey,R24
0940 .dbline 125
0940 ; }
0940 L32:
0940 .dbline 126
0940 ; DisplyLine(sx, sy, ex, ey, 0);
0940 2224 clr R2
0942 3324 clr R3
0944 3D82 std y+5,R3
0946 2C82 std y+4,R2
0948 20900000 lds R2,_ey
094C 30900100 lds R3,_ey+1
0950 3B82 std y+3,R3
0952 2A82 std y+2,R2
0954 20900200 lds R2,_ex
0958 30900300 lds R3,_ex+1
095C 3982 std y+1,R3
095E 2882 std y+0,R2
0960 20910400 lds R18,_sy
0964 30910500 lds R19,_sy+1
0968 00910600 lds R16,_sx
096C 10910700 lds R17,_sx+1
0970 66D0 xcall _DisplyLine
0972 .dbline 127
0972 ; }
0972 L29:
0972 .dbline 111
0972 FE01 movw R30,R28
0974 EE56 subi R30,110 ; addi 146
0976 FF4F sbci R31,255
0978 8081 ldd R24,z+0
097A 9181 ldd R25,z+1
097C 0196 adiw R24,1
097E FE01 movw R30,R28
0980 EE56 subi R30,110 ; addi 146
0982 FF4F sbci R31,255
0984 9183 std z+1,R25
0986 8083 std z+0,R24
0988 .dbline 111
0988 8631 cpi R24,22
098A E0E0 ldi R30,0
098C 9E07 cpc R25,R30
098E 0CF4 brge X15
0990 2ECF xjmp L28
0992 X15:
0992 X12:
0992 .dbline -2
0992 L1:
0992 .dbline 0 ; func end
0992 EF96 adiw R28,63
0994 EF96 adiw R28,63
0996 6696 adiw R28,22 ; offset = 148
0998 0E940000 xcall pop_xgsetF0FC
099C 2496 adiw R28,4
099E 0895 ret
09A0 .dbsym l loop 7 I
09A0 .dbsym l cosaz 142 D
09A0 .dbsym l sinaz 138 D
09A0 .dbsym l cosay 134 D
09A0 .dbsym l sinay 130 D
09A0 .dbsym l cosax 126 D
09A0 .dbsym l sinax 122 D
09A0 .dbsym l zt 118 D
09A0 .dbsym l yt 114 D
09A0 .dbsym l xt 110 D
09A0 .dbsym l newy 64 A[46:23]I
09A0 .dbsym l newx 18 A[46:23]I
09A0 .dbsym l y 14 D
09A0 .dbsym l x 10 D
09A0 .dbsym l z 6 D
09A0 .dbsym r vertex 22 I
09A0 .dbsym l i 146 I
09A0 .dbsym l zpos 166 D
09A0 .dbsym l ypos 162 D
09A0 .dbsym l xpos 158 D
09A0 .dbend
09A0 .dbfunc e WriteDot _WriteDot fV
09A0 ; temp2 -> R20
09A0 ; a -> R10
09A0 ; temp1 -> R14
09A0 ; color -> y+10
09A0 ; y -> R10
09A0 ; x -> R12
.even
09A0 _WriteDot::
09A0 0E940000 xcall push_xgsetF0FC
09A4 A22E mov R10,R18
09A6 C02E mov R12,R16
09A8 .dbline -1
09A8 .dbline 135
09A8 ; }
09A8 ;
09A8 ; /***************************************
09A8 ; * FUNCTION NAME: WriteDot
09A8 ; * DESCRIPTION:
09A8 ; /***************************************/
09A8 ; void WriteDot(unsigned char x,unsigned char y,unsigned char color)
09A8 ; {
09A8 .dbline 137
09A8 ; unsigned char temp1,temp2,a;
09A8 ; if(x>127 | y>63)
09A8 8FE7 ldi R24,127
09AA 8C15 cp R24,R12
09AC 18F4 brsh L45
09AE X16:
09AE 61E0 ldi R22,1
09B0 70E0 ldi R23,0
09B2 02C0 xjmp L46
09B4 L45:
09B4 6627 clr R22
09B6 7727 clr R23
09B8 L46:
09B8 8FE3 ldi R24,63
09BA 8A15 cp R24,R10
09BC 18F4 brsh L47
09BE X17:
09BE 41E0 ldi R20,1
09C0 50E0 ldi R21,0
09C2 02C0 xjmp L48
09C4 L47:
09C4 4427 clr R20
09C6 5527 clr R21
09C8 L48:
09C8 1B01 movw R2,R22
09CA 242A or R2,R20
09CC 352A or R3,R21
09CE 2220 tst R2
09D0 11F4 brne X18
09D2 3320 tst R3
09D4 09F0 breq L43
09D6 X18:
09D6 .dbline 138
09D6 ; return;
09D6 31C0 xjmp L42
09D8 L43:
09D8 .dbline 139
09D8 ; temp1 = y / 8; /* GET VALUE OF WHICH PAGE */
09D8 EA2C mov R14,R10
09DA E694 lsr R14
09DC E694 lsr R14
09DE E694 lsr R14
09E0 .dbline 140
09E0 ; temp2 = y % 8; /* GET VALUE OF WHICH Y-OFFSET */
09E0 18E0 ldi R17,8
09E2 0A2D mov R16,R10
09E4 0E940000 xcall mod8u
09E8 402F mov R20,R16
09EA .dbline 141
09EA ; a = displaybuffer[temp1][x]; /* READ NOW SEGMENT VALUE */
09EA 80E8 ldi R24,128
09EC 8E9D mul R24,R14
09EE 1001 movw R2,R0
09F0 80E0 ldi R24,<_displaybuffer
09F2 90E0 ldi R25,>_displaybuffer
09F4 280E add R2,R24
09F6 391E adc R3,R25
09F8 EC2D mov R30,R12
09FA FF27 clr R31
09FC E20D add R30,R2
09FE F31D adc R31,R3
0A00 A080 ldd R10,z+0
0A02 .dbline 143
0A02 ;
0A02 ; if(color == 0) /* DOT ON/OFF */
0A02 0A84 ldd R0,y+10
0A04 0020 tst R0
0A06 41F4 brne L49
0A08 X19:
0A08 .dbline 144
0A08 ; a&=~(1<<temp2);
0A08 01E0 ldi R16,1
0A0A 142F mov R17,R20
0A0C 0E94000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -