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

📄 keylcd.lss

📁 我学习AVR的代码例子
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     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 + -