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