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

📄 main.s

📁 meg16 的所有功能实例
💻 S
📖 第 1 页 / 共 5 页
字号:
	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 343
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 344
; 			 }
	.dbline 345
; 		   }
	xjmp L86
L176:
	.dbline 346
; 		   else if((disp_buffer[X][Y]&0xF0)==0x30)//如果移动的是横将
	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,48
	breq X44
	xjmp L195
X44:
	.dbline 347
; 		   {
	.dbline 348
; 		   if(Y>0)
	clr R2
	lds R3,_Y
	cp R2,R3
	brsh L197
	.dbline 349
; 		   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 L199
	.dbline 350
; 		      Y--;
	lds R24,_Y
	subi R24,1
	sts _Y,R24
L199:
L197:
	.dbline 351
; 		   if(Y<2)
	lds R24,_Y
	cpi R24,2
	brlo X45
	xjmp L86
X45:
	.dbline 352
; 		   if(disp_buffer[X][Y+2]==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,2
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	breq X46
	xjmp L86
X46:
	.dbline 353
; 		     {
	.dbline 354
; 			 Y++;
	lds R24,_Y
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 355
; 			 disp_buffer[X][Y+1]=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
	adiw R30,1
	add R30,R2
	adc R31,R3
	std z+0,R4
	.dbline 356
; 			 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 357
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 358
; 			 }
	.dbline 359
; 		   }
	xjmp L86
L195:
	.dbline 360
; 		   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 X47
	xjmp L86
X47:
	.dbline 361
; 		   {
	.dbline 362
; 		   if(X>0)
	clr R2
	lds R3,_X
	cp R2,R3
	brsh L207
	.dbline 363
; 		   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 L209
	.dbline 364
; 		      X--;
	lds R24,_X
	subi R24,1
	sts _X,R24
L209:
L207:
	.dbline 365
; 		   if(Y>0)
	clr R2
	lds R3,_Y
	cp R2,R3
	brsh L212
	.dbline 366
; 		   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 L214
	.dbline 367
; 		      Y--;
	lds R24,_Y
	subi R24,1
	sts _Y,R24
L214:
L212:
	.dbline 368
; 		   if(Y<2)
	lds R24,_Y
	cpi R24,2
	brlo X48
	xjmp L86
X48:
	.dbline 369
; 		   if((disp_buffer[X][Y+2]==0x00)&(disp_buffer[X+1][Y+2]==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,2
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L221
	ldi R18,1
	ldi R19,0
	xjmp L222
L221:
	clr R18
	clr R19
L222:
	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,2
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L223
	ldi R16,1
	ldi R17,0
	xjmp L224
L223:
	clr R16
	clr R17
L224:
	movw R2,R18
	and R2,R16
	and R3,R17
	tst R2
	brne X11
	tst R3
	brne X49
	xjmp L86
X49:
X11:
	.dbline 370
; 		     {
	.dbline 371
; 			 Y++;
	lds R24,_Y
	subi R24,255    ; addi 1
	sts _Y,R24
	.dbline 372
; 			 disp_buffer[X][Y+1]=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
	adiw R30,1
	add R30,R2
	adc R31,R3
	std z+0,R4
	.dbline 373
; 			 disp_buffer[X+1][Y+1]=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
	adiw R30,1
	add R30,R4
	adc R31,R5
	std z+0,R2
	.dbline 374
; 			 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 375
; 			 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
	sbiw R30,1
	add R30,R2
	adc R31,R3
	clr R2
	std z+0,R2
	.dbline 376
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 377
; 			 }
	.dbline 378
; 		   }
	.dbline 380
; 
; 		   }
	.dbline 382
; 		   
; 		 break;
	xjmp L86
X12:
	.dbline 385
;    case Enter: 			//确定键被按下
; 		 
; 		 break;
L229:
	.dbline 387
;    case Left:  			//向左键被按下
;    		 if(key_last_value!=Enter) //判断是走局还是移动鼠标
	lds R24,_key_last_value
	cpi R24,216
	breq L230
	.dbline 388
; 		   {
	.dbline 389
; 		   if(Y>0)Y--;
	clr R2
	lds R3,_Y
	cp R2,R3
	brlo X50
	xjmp L86
X50:
	.dbline 389
	mov R24,R3
	subi R24,1
	sts _Y,R24
	.dbline 390
; 		   }
	xjmp L86
L230:
	.dbline 393
; 		   
; 		 else		  			   //走局操作
; 		   {
	.dbline 394
; 		   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 L234
	.dbline 394
	xjmp L82
L234:
	.dbline 395
; 		   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 X51
	xjmp L236
X51:
	.dbline 396
; 		   {
	.dbline 397
; 		   if(Y>0)
	clr R2
	lds R3,_Y
	cp R2,R3
	brlo X52
	xjmp L86
X52:
	.dbline 398
; 		   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
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	breq X53
	xjmp L86
X53:
	.dbline 399
; 		     {
	.dbline 400
; 			 Y--;
	lds R24,_Y
	subi R24,1
	sts _Y,R24
	.dbline 401
; 			 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
	adiw 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 402
; 			 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
	clr R2
	std z+0,R2
	.dbline 403
; 			 NUM_YOUR++;
	lds R24,_NUM_YOUR
	lds R25,_NUM_YOUR+1
	adiw R24,1
	sts _NUM_YOUR+1,R25
	sts _NUM_YOUR,R24
	.dbline 404
; 			 }
	.dbline 405
; 		   }
	xjmp L86
L236:
	.dbline 406
; 		   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 X54
	xjmp L242
X54:
	.dbline 407
; 		   {
	.dbline 408
; 		   if(X>0)
	clr R2
	lds R3,_X
	cp R2,R3
	brsh L244
	.dbline 409
; 		   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 L246
	.dbline 410
; 		      X--;
	lds R24,_X
	subi R24,1
	sts _X,R24
L246:
L244:
	.dbline 411
; 		   if(Y>0)
	clr R2
	lds R3,_Y
	cp R2,R3
	brlo X55
	xjmp L86
X55:
	.dbline 412
; 		   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
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L254
	ldi R18,1
	ldi R19,0
	xjmp L255
L254:
	clr R18
	clr R19
L255:
	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
	sbiw R30,1
	add R30,R2
	adc R31,R3
	ldd R2,z+0
	tst R2
	brne L256
	ldi R16,1
	ldi R17,0
	xjmp L257
L256:
	clr R16
	clr R17
L257:
	movw R2,R18
	and R2,R16
	and R3,R17
	tst R2
	brne X13
	tst R3
	brne X56
	xjmp L86
X56:
X13:
	.dbline 413
; 		     {
	.dbline 414
; 			 Y--;
	lds R24,_Y
	su

⌨️ 快捷键说明

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