📄 main.s
字号:
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 + -