📄 keylcd.lss
字号:
fcc: 8f 92 push r8
fce: 9f 92 push r9
fd0: af 92 push r10
fd2: bf 92 push r11
fd4: cf 92 push r12
fd6: df 92 push r13
fd8: ef 92 push r14
fda: ff 92 push r15
fdc: 0f 93 push r16
fde: 1f 93 push r17
fe0: cf 93 push r28
fe2: df 93 push r29
fe4: cd b7 in r28, 0x3d ; 61
fe6: de b7 in r29, 0x3e ; 62
fe8: 23 97 sbiw r28, 0x03 ; 3
fea: 0f b6 in r0, 0x3f ; 63
fec: f8 94 cli
fee: de bf out 0x3e, r29 ; 62
ff0: 0f be out 0x3f, r0 ; 63
ff2: cd bf out 0x3d, r28 ; 61
ff4: 5c 01 movw r10, r24
ff6: 6b 01 movw r12, r22
ff8: 3a 01 movw r6, r20
ffa: 49 01 movw r8, r18
ffc: 09 83 std Y+1, r16 ; 0x01
int dy = y2 - y1;
ffe: 79 01 movw r14, r18
1000: e6 1a sub r14, r22
1002: f7 0a sbc r15, r23
int dx = x2 - x1;
1004: 8a 01 movw r16, r20
1006: 08 1b sub r16, r24
1008: 19 0b sbc r17, r25
int stepx, stepy, fraction;
if (dy < 0)
100a: f7 fe sbrs r15, 7
100c: 08 c0 rjmp .+16 ; 0x101e
{
dy = -dy;
100e: f0 94 com r15
1010: e1 94 neg r14
1012: f1 08 sbc r15, r1
1014: f3 94 inc r15
stepy = -1;
1016: 4f ef ldi r20, 0xFF ; 255
1018: 24 2e mov r2, r20
101a: 34 2e mov r3, r20
101c: 03 c0 rjmp .+6 ; 0x1024
}
else
{
stepy = 1;
101e: 31 e0 ldi r19, 0x01 ; 1
1020: 23 2e mov r2, r19
1022: 31 2c mov r3, r1
}
if (dx < 0)
1024: 17 ff sbrs r17, 7
1026: 07 c0 rjmp .+14 ; 0x1036
{
dx = -dx;
1028: 10 95 com r17
102a: 01 95 neg r16
102c: 1f 4f sbci r17, 0xFF ; 255
stepx = -1;
102e: 2f ef ldi r18, 0xFF ; 255
1030: 42 2e mov r4, r18
1032: 52 2e mov r5, r18
1034: 03 c0 rjmp .+6 ; 0x103c
}
else
{
stepx = 1;
1036: 91 e0 ldi r25, 0x01 ; 1
1038: 49 2e mov r4, r25
103a: 51 2c mov r5, r1
}
dy <<= 1;
103c: ee 0c add r14, r14
103e: ff 1c adc r15, r15
dx <<= 1;
1040: 00 0f add r16, r16
1042: 11 1f adc r17, r17
point(x1,y1,show);
1044: 49 81 ldd r20, Y+1 ; 0x01
1046: b6 01 movw r22, r12
1048: c5 01 movw r24, r10
104a: 0e 94 92 07 call 0xf24
if (dx > dy)
104e: e0 16 cp r14, r16
1050: f1 06 cpc r15, r17
1052: 3c f5 brge .+78 ; 0x10a2
{
fraction = dy - (dx >> 1);
1054: c8 01 movw r24, r16
1056: 95 95 asr r25
1058: 87 95 ror r24
105a: 97 01 movw r18, r14
105c: 28 1b sub r18, r24
105e: 39 0b sbc r19, r25
1060: 2a 83 std Y+2, r18 ; 0x02
1062: 3b 83 std Y+3, r19 ; 0x03
while (x1 != x2)
{
if (fraction >= 0)
{
y1 += stepy;
fraction -= dx;
}
x1 += stepx;
fraction += dy;
point(x1,y1,show);
1064: a6 14 cp r10, r6
1066: b7 04 cpc r11, r7
1068: 09 f4 brne .+2 ; 0x106c
106a: 40 c0 rjmp .+128 ; 0x10ec
106c: 8a 81 ldd r24, Y+2 ; 0x02
106e: 9b 81 ldd r25, Y+3 ; 0x03
1070: 97 fd sbrc r25, 7
1072: 06 c0 rjmp .+12 ; 0x1080
1074: c2 0c add r12, r2
1076: d3 1c adc r13, r3
1078: 80 1b sub r24, r16
107a: 91 0b sbc r25, r17
107c: 8a 83 std Y+2, r24 ; 0x02
107e: 9b 83 std Y+3, r25 ; 0x03
1080: a4 0c add r10, r4
1082: b5 1c adc r11, r5
1084: ea 81 ldd r30, Y+2 ; 0x02
1086: fb 81 ldd r31, Y+3 ; 0x03
1088: ee 0d add r30, r14
108a: ff 1d adc r31, r15
108c: ea 83 std Y+2, r30 ; 0x02
108e: fb 83 std Y+3, r31 ; 0x03
1090: 49 81 ldd r20, Y+1 ; 0x01
1092: b6 01 movw r22, r12
1094: c5 01 movw r24, r10
1096: 0e 94 92 07 call 0xf24
109a: a6 14 cp r10, r6
109c: b7 04 cpc r11, r7
109e: 31 f7 brne .-52 ; 0x106c
10a0: 25 c0 rjmp .+74 ; 0x10ec
}
}
else
{
fraction = dx - (dy >> 1);
10a2: c7 01 movw r24, r14
10a4: 95 95 asr r25
10a6: 87 95 ror r24
10a8: 98 01 movw r18, r16
10aa: 28 1b sub r18, r24
10ac: 39 0b sbc r19, r25
10ae: 2a 83 std Y+2, r18 ; 0x02
10b0: 3b 83 std Y+3, r19 ; 0x03
while (y1 != y2)
{
if (fraction >= 0)
{
x1 += stepx;
fraction -= dy;
}
y1 += stepy;
fraction += dx;
point(x1,y1,show);
10b2: c8 14 cp r12, r8
10b4: d9 04 cpc r13, r9
10b6: d1 f0 breq .+52 ; 0x10ec
10b8: 8a 81 ldd r24, Y+2 ; 0x02
10ba: 9b 81 ldd r25, Y+3 ; 0x03
10bc: 97 fd sbrc r25, 7
10be: 06 c0 rjmp .+12 ; 0x10cc
10c0: a4 0c add r10, r4
10c2: b5 1c adc r11, r5
10c4: 8e 19 sub r24, r14
10c6: 9f 09 sbc r25, r15
10c8: 8a 83 std Y+2, r24 ; 0x02
10ca: 9b 83 std Y+3, r25 ; 0x03
10cc: c2 0c add r12, r2
10ce: d3 1c adc r13, r3
10d0: ea 81 ldd r30, Y+2 ; 0x02
10d2: fb 81 ldd r31, Y+3 ; 0x03
10d4: e0 0f add r30, r16
10d6: f1 1f adc r31, r17
10d8: ea 83 std Y+2, r30 ; 0x02
10da: fb 83 std Y+3, r31 ; 0x03
10dc: 49 81 ldd r20, Y+1 ; 0x01
10de: b6 01 movw r22, r12
10e0: c5 01 movw r24, r10
10e2: 0e 94 92 07 call 0xf24
10e6: c8 14 cp r12, r8
10e8: d9 04 cpc r13, r9
10ea: 31 f7 brne .-52 ; 0x10b8
10ec: 23 96 adiw r28, 0x03 ; 3
10ee: 0f b6 in r0, 0x3f ; 63
10f0: f8 94 cli
10f2: de bf out 0x3e, r29 ; 62
10f4: 0f be out 0x3f, r0 ; 63
10f6: cd bf out 0x3d, r28 ; 61
10f8: df 91 pop r29
10fa: cf 91 pop r28
10fc: 1f 91 pop r17
10fe: 0f 91 pop r16
1100: ff 90 pop r15
1102: ef 90 pop r14
1104: df 90 pop r13
1106: cf 90 pop r12
1108: bf 90 pop r11
110a: af 90 pop r10
110c: 9f 90 pop r9
110e: 8f 90 pop r8
1110: 7f 90 pop r7
1112: 6f 90 pop r6
1114: 5f 90 pop r5
1116: 4f 90 pop r4
1118: 3f 90 pop r3
111a: 2f 90 pop r2
111c: 08 95 ret
0000111e <Circle>:
}
}
}
void Circle(int x, int y, int radius, BYTE show)
{
111e: 2f 92 push r2
1120: 3f 92 push r3
1122: 4f 92 push r4
1124: 5f 92 push r5
1126: 7f 92 push r7
1128: 8f 92 push r8
112a: 9f 92 push r9
112c: af 92 push r10
112e: bf 92 push r11
1130: cf 92 push r12
1132: df 92 push r13
1134: ef 92 push r14
1136: ff 92 push r15
1138: 0f 93 push r16
113a: 1f 93 push r17
113c: cf 93 push r28
113e: df 93 push r29
1140: cd b7 in r28, 0x3d ; 61
1142: de b7 in r29, 0x3e ; 62
1144: 28 97 sbiw r28, 0x08 ; 8
1146: 0f b6 in r0, 0x3f ; 63
1148: f8 94 cli
114a: de bf out 0x3e, r29 ; 62
114c: 0f be out 0x3f, r0 ; 63
114e: cd bf out 0x3d, r28 ; 61
1150: 89 83 std Y+1, r24 ; 0x01
1152: 9a 83 std Y+2, r25 ; 0x02
1154: 6b 83 std Y+3, r22 ; 0x03
1156: 7c 83 std Y+4, r23 ; 0x04
1158: ca 01 movw r24, r20
115a: 72 2e mov r7, r18
int xc = 0;
115c: 1f 82 std Y+7, r1 ; 0x07
115e: 18 86 std Y+8, r1 ; 0x08
int yc = radius;
1160: 6a 01 movw r12, r20
int p = 3 - (radius<<1);
1162: 88 0f add r24, r24
1164: 99 1f adc r25, r25
1166: e3 e0 ldi r30, 0x03 ; 3
1168: ae 2e mov r10, r30
116a: b1 2c mov r11, r1
116c: a8 1a sub r10, r24
116e: b9 0a sbc r11, r25
while (xc <= yc)
{
point(x + xc, y + yc, show);
point(x + xc, y - yc, show);
point(x - xc, y + yc, show);
point(x - xc, y - yc, show);
point(x + yc, y + xc, show);
point(x + yc, y - xc, show);
point(x - yc, y + xc, show);
point(x - yc, y - xc, show);
if (p < 0)
p += (xc++ << 2) + 6;
else
p += ((xc++ - yc--)<<2) + 10;
1170: 20 e0 ldi r18, 0x00 ; 0
1172: 30 e0 ldi r19, 0x00 ; 0
1174: 42 17 cp r20, r18
1176: 53 07 cpc r21, r19
1178: 0c f4 brge .+2 ; 0x117c
117a: 8d c0 rjmp .+282 ; 0x1296
117c: 88 27 eor r24, r24
117e: 99 27 eor r25, r25
1180: 84 1b sub r24, r20
1182: 95 0b sbc r25, r21
1184: e9 81 ldd r30, Y+1 ; 0x01
1186: fa 81 ldd r31, Y+2 ; 0x02
1188: e8 0f add r30, r24
118a: f9 1f adc r31, r25
118c: ed 83 std Y+5, r30 ; 0x05
118e: fe 83 std Y+6, r31 ; 0x06
1190: 29 80 ldd r2, Y+1 ; 0x01
1192: 3a 80 ldd r3, Y+2 ; 0x02
1194: 24 0e add r2, r20
1196: 35 1e adc r3, r21
1198: 4c 01 movw r8, r24
119a: 86 0e add r8, r22
119c: 97 1e adc r9, r23
119e: 2b 01 movw r4, r22
11a0: 44 0e add r4, r20
11a2: 55 1e adc r5, r21
11a4: 09 81 ldd r16, Y+1 ; 0x01
11a6: 1a 81 ldd r17, Y+2 ; 0x02
11a8: 2f 81 ldd r18, Y+7 ; 0x07
11aa: 38 85 ldd r19, Y+8 ; 0x08
11ac: 02 0f add r16, r18
11ae: 13 1f adc r17, r19
11b0: 47 2d mov r20, r7
11b2: b2 01 movw r22, r4
11b4: c8 01 movw r24, r16
11b6: 0e 94 92 07 call 0xf24
11ba: 47 2d mov r20, r7
11bc: b4 01 movw r22, r8
11be: c8 01 movw r24, r16
11c0: 0e 94 92 07 call 0xf24
11c4: 09 81 ldd r16, Y+1 ; 0x01
11c6: 1a 81 ldd r17, Y+2 ; 0x02
11c8: 8f 81 ldd r24, Y+7 ; 0x07
11ca: 98 85 ldd r25, Y+8 ; 0x08
11cc: 08 1b sub r16, r24
11ce: 19 0b sbc r17, r25
11d0: 47 2d mov r20, r7
11d2: b2 01 movw r22, r4
11d4: c8 01 movw r24, r16
11d6: 0e 94 92 07 call 0xf24
11da: 47 2d mov r20, r7
11dc: b4 01 movw r22, r8
11de: c8 01 movw r24, r16
11e0: 0e 94 92 07 call 0xf24
11e4: eb 80 ldd r14, Y+3 ; 0x03
11e6: fc 80 ldd r15, Y+4 ; 0x04
11e8: ef 81 ldd r30, Y+7 ; 0x07
11ea: f8 85 ldd r31, Y+8 ; 0x08
11ec: ee 0e add r14, r30
11ee: ff 1e adc r15, r31
11f0: 47 2d mov r20, r7
11f2: b7 01 movw r22, r14
11f4: c1 01 movw r24, r2
11f6: 0e 94 92 07 call 0xf24
11fa: 0b 81 ldd r16, Y+3 ; 0x03
11fc: 1c 81 ldd r17, Y+4 ; 0x04
11fe: 2f 81 ldd r18, Y+7 ; 0x07
1200: 38 85 ldd r19, Y+8 ; 0x08
1202: 02 1b sub r16, r18
1204: 13 0b sbc r17, r19
1206: 47 2d mov r20, r7
1208: b8 01 movw r22, r16
120a: c1 01 movw r24, r2
120c: 0e 94 92 07 call 0xf24
1210: 47 2d mov r20, r7
1212: b7 01 movw r22, r14
1214: 8d 81 ldd r24, Y+5 ; 0x05
1216: 9e 81 ldd r25, Y+6 ; 0x06
1218: 0e 94 92 07 call 0xf24
121c: 47 2d mov r20, r7
121e: b8 01 movw r22, r16
1220: 8d 81 ldd r24, Y+5 ; 0x05
1222: 9e 81 ldd r25, Y+6 ; 0x06
1224: 0e 94 92 07 call 0xf24
1228: 8f 81
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -