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

📄 main.s

📁 meg16 的所有功能实例
💻 S
📖 第 1 页 / 共 5 页
字号:
	lds R24,_X
	subi R24,1
	sts _X,R24
	.dbline 281
; 			 disp_buffer[X][Y]=disp_buffer[X+1][Y];
	mov R2,R24
	ldi R24,4
	mul R24,R2
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	movw R2,R0
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R4,R0
	add R4,R24
	adc R5,R25
	lds R30,_Y
	clr R31
	add R30,R4
	adc R31,R5
	std z+0,R2
	.dbline 282
; 			 disp_buffer[X][Y+1]=disp_buffer[X+1][Y+1];
	lds R24,_Y
	clr R25
	adiw R24,1
	movw R2,R24
	lds R4,_X
	ldi R24,4
	mul R24,R4
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	movw R4,R0
	add R4,R24
	adc R5,R25
	movw R30,R2
	add R30,R4
	adc R31,R5
	ldd R4,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R6,R0
	add R6,R24
	adc R7,R25
	movw R30,R2
	add R30,R6
	adc R31,R7
	std z+0,R4
	.dbline 283
; 			 disp_buffer[X+1][Y]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 284
; 			 disp_buffer[X+1][Y+1]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 285
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 286
; 			 }
	.dbline 287
; 		   }
	xjmp L86
L118:
	.dbline 288
; 		   else if((disp_buffer[X][Y]&0xF0)==0x40)//如果移动的是曹操
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R24,z+0
	andi R24,240
	cpi R24,64
	breq X34
	xjmp L86
X34:
	.dbline 289
; 		   {
	.dbline 290
; 		   if(X>0)
	clr R2
	lds R3,_X
	cp R2,R3
	brsh L140
	.dbline 291
; 		   if(disp_buffer[X][Y]==disp_buffer[X-1][Y])
	mov R2,R3
	ldi R24,4
	mul R24,R2
	ldi R24,<_disp_buffer-4
	ldi R25,>_disp_buffer-4
	movw R2,R0
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R4,R0
	add R4,R24
	adc R5,R25
	lds R30,_Y
	clr R31
	add R30,R4
	adc R31,R5
	ldd R3,z+0
	cp R3,R2
	brne L142
	.dbline 292
; 		      X--;
	lds R24,_X
	subi R24,1
	sts _X,R24
L142:
L140:
	.dbline 293
; 		   if(Y>0)
	clr R2
	lds R3,_Y
	cp R2,R3
	brsh L145
	.dbline 294
; 		   if(disp_buffer[X][Y]==disp_buffer[X][Y-1])
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R4,z+0
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	cp R2,R4
	brne L147
	.dbline 295
; 		      Y--;
	lds R24,_Y
	subi R24,1
	sts _Y,R24
L147:
L145:
	.dbline 296
; 		   if(X>0)
	clr R2
	lds R3,_X
	cp R2,R3
	brlo X35
	xjmp L86
X35:
	.dbline 297
; 		   if((disp_buffer[X-1][Y]==0x00)&(disp_buffer[X-1][Y+1]==0x00))
	mov R2,R3
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer-4
	ldi R25,>_disp_buffer-4
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L155
	ldi R18,1
	ldi R19,0
	xjmp L156
L155:
	clr R18
	clr R19
L156:
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer-4
	ldi R25,>_disp_buffer-4
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L157
	ldi R16,1
	ldi R17,0
	xjmp L158
L157:
	clr R16
	clr R17
L158:
	movw R2,R18
	and R2,R16
	and R3,R17
	tst R2
	brne X9
	tst R3
	brne X36
	xjmp L86
X36:
X9:
	.dbline 298
; 		     {
	.dbline 299
; 			 X--;
	lds R24,_X
	subi R24,1
	sts _X,R24
	.dbline 300
; 			 disp_buffer[X][Y]=disp_buffer[X+2][Y];
	mov R2,R24
	ldi R24,4
	mul R24,R2
	ldi R24,<_disp_buffer+8
	ldi R25,>_disp_buffer+8
	movw R2,R0
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R4,R0
	add R4,R24
	adc R5,R25
	lds R30,_Y
	clr R31
	add R30,R4
	adc R31,R5
	std z+0,R2
	.dbline 301
; 			 disp_buffer[X][Y+1]=disp_buffer[X+2][Y+1];
	lds R24,_Y
	clr R25
	adiw R24,1
	movw R2,R24
	lds R4,_X
	ldi R24,4
	mul R24,R4
	ldi R24,<_disp_buffer+8
	ldi R25,>_disp_buffer+8
	movw R4,R0
	add R4,R24
	adc R5,R25
	movw R30,R2
	add R30,R4
	adc R31,R5
	ldd R4,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R6,R0
	add R6,R24
	adc R7,R25
	movw R30,R2
	add R30,R6
	adc R31,R7
	std z+0,R4
	.dbline 302
; 			 disp_buffer[X+2][Y]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+8
	ldi R25,>_disp_buffer+8
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 303
; 			 disp_buffer[X+2][Y+1]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+8
	ldi R25,>_disp_buffer+8
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 304
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 305
; 			 }
	.dbline 306
; 		   }
	.dbline 307
; 		   }
	.dbline 309
; 		   
; 		 break;
	xjmp L86
L163:
	.dbline 311
;    case Right: 			//向右键被按下
;    		 if(key_last_value!=Enter)	  //判断是走局还是移动鼠标
	lds R24,_key_last_value
	cpi R24,216
	breq L164
	.dbline 312
; 		   {
	.dbline 313
; 		   if(Y<3)Y++;
	lds R24,_Y
	cpi R24,3
	brlo X37
	xjmp L86
X37:
	.dbline 313
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 314
; 		   }
	xjmp L86
L164:
	.dbline 317
; 		   
; 		 else		  				  //走局操作
; 		   {
	.dbline 318
; 		   if((disp_buffer[X][Y]&0xF0)==0x00)return;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R24,z+0
	andi R24,240
	brne L168
	.dbline 318
	xjmp L82
L168:
	.dbline 319
; 		   else if((disp_buffer[X][Y]&0xF0)==0x10)//如果移动的是兵
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R24,z+0
	andi R24,240
	cpi R24,16
	breq X38
	xjmp L170
X38:
	.dbline 320
; 		   {
	.dbline 321
; 		   if(Y<3)
	lds R24,_Y
	cpi R24,3
	brlo X39
	xjmp L86
X39:
	.dbline 322
; 		   if(disp_buffer[X][Y+1]==0x00)
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	breq X40
	xjmp L86
X40:
	.dbline 323
; 		     {
	.dbline 324
; 			 Y++;
	lds R24,_Y
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 325
; 			 disp_buffer[X][Y]=disp_buffer[X][Y-1];
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R4,z+0
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	std z+0,R4
	.dbline 326
; 			 disp_buffer[X][Y-1]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 327
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 328
; 			 }
	.dbline 329
; 		   }
	xjmp L86
L170:
	.dbline 330
; 		   else if((disp_buffer[X][Y]&0xF0)==0x20)//如果移动的是竖将
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R24,z+0
	andi R24,240
	cpi R24,32
	breq X41
	xjmp L176
X41:
	.dbline 331
; 		   {
	.dbline 332
; 		   if(X>0)
	clr R2
	lds R3,_X
	cp R2,R3
	brsh L178
	.dbline 333
; 		   if(disp_buffer[X][Y]==disp_buffer[X-1][Y])
	mov R2,R3
	ldi R24,4
	mul R24,R2
	ldi R24,<_disp_buffer-4
	ldi R25,>_disp_buffer-4
	movw R2,R0
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	movw R4,R0
	add R4,R24
	adc R5,R25
	lds R30,_Y
	clr R31
	add R30,R4
	adc R31,R5
	ldd R3,z+0
	cp R3,R2
	brne L180
	.dbline 334
; 		      X--;
	lds R24,_X
	subi R24,1
	sts _X,R24
L180:
L178:
	.dbline 335
; 		   if(Y<3)
	lds R24,_Y
	cpi R24,3
	brlo X42
	xjmp L86
X42:
	.dbline 336
; 		   if((disp_buffer[X][Y+1]==0x00)&(disp_buffer[X+1][Y+1]==0x00))
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L188
	ldi R18,1
	ldi R19,0
	xjmp L189
L188:
	clr R18
	clr R19
L189:
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	adiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L190
	ldi R16,1
	ldi R17,0
	xjmp L191
L190:
	clr R16
	clr R17
L191:
	movw R2,R18
	and R2,R16
	and R3,R17
	tst R2
	brne X10
	tst R3
	brne X43
	xjmp L86
X43:
X10:
	.dbline 337
; 		     {
	.dbline 338
; 			 Y++;
	lds R24,_Y
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 339
; 			 disp_buffer[X][Y]=disp_buffer[X][Y-1];
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R4,z+0
	lds R30,_Y
	clr R31
	add R30,R2
	adc R31,R3
	std z+0,R4
	.dbline 340
; 			 disp_buffer[X+1][Y]=disp_buffer[X+1][Y-1];
	lds R2,_X
	ldi R24,4
	mul R24,R2
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4
	movw R2,R0
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	movw R4,R0
	add R4,R24
	adc R5,R25
	lds R30,_Y
	clr R31
	add R30,R4
	adc R31,R5
	std z+0,R2
	.dbline 341
; 			 disp_buffer[X][Y-1]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer
	ldi R25,>_disp_buffer
	add R2,R24
	adc R3,R25
	lds R30,_Y
	clr R31
	sbiw R30,1
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 342
; 			 disp_buffer[X+1][Y-1]=0x00;
	lds R2,_X
	ldi R24,4
	mul R24,R2
	movw R2,R0
	ldi R24,<_disp_buffer+4
	ldi R25,>_disp_buffer+4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -