📄 main.s
字号:
lds R2,_ques_num
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R0,z+0
cp R2,R0
brsh L221
.dbline 436
; ques_id=1;
clr R0
inc R0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R0
L221:
.dbline 437
; if(key==6)
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R24,z+0
cpi R24,6
brne L223
.dbline 438
; ques_id--;
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R0,z+0
dec R0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R0
L223:
.dbline 439
; if(ques_id<1)
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R24,z+0
cpi R24,1
brsh L225
.dbline 440
; ques_id=ques_num;
lds R2,_ques_num
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R2
L225:
.dbline 443
;
; //ques_id
; if(ques[ques_id-1]&0x01)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,0
rjmp L227
.dbline 444
; lcd_buffer[9]|=0x02;
lds R24,_lcd_buffer+9
ori R24,2
sts _lcd_buffer+9,R24
xjmp L228
L227:
.dbline 446
; else
; lcd_buffer[9]&=0xfd;
lds R24,_lcd_buffer+9
andi R24,253
sts _lcd_buffer+9,R24
L228:
.dbline 447
; if(ques[ques_id-1]&0x02)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,1
rjmp L232
.dbline 448
; lcd_buffer[1]|=0x02;
lds R24,_lcd_buffer+1
ori R24,2
sts _lcd_buffer+1,R24
xjmp L233
L232:
.dbline 450
; else
; lcd_buffer[1]&=0xfd;
lds R24,_lcd_buffer+1
andi R24,253
sts _lcd_buffer+1,R24
L233:
.dbline 451
; if(ques[ques_id-1]&0x04)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,2
rjmp L237
.dbline 452
; lcd_buffer[12]|=0x20;
lds R24,_lcd_buffer+12
ori R24,32
sts _lcd_buffer+12,R24
xjmp L238
L237:
.dbline 454
; else
; lcd_buffer[12]&=0xdf;
lds R24,_lcd_buffer+12
andi R24,223
sts _lcd_buffer+12,R24
L238:
.dbline 455
; if(ques[ques_id-1]&0x08)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,3
rjmp L242
.dbline 456
; lcd_buffer[12]|=0x02;
lds R24,_lcd_buffer+12
ori R24,2
sts _lcd_buffer+12,R24
xjmp L243
L242:
.dbline 458
; else
; lcd_buffer[12]&=0xfd;
lds R24,_lcd_buffer+12
andi R24,253
sts _lcd_buffer+12,R24
L243:
.dbline 459
; if(ques[ques_id-1]&0x10)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,4
rjmp L247
.dbline 460
; lcd_buffer[4]|=0x20;
lds R24,_lcd_buffer+4
ori R24,32
sts _lcd_buffer+4,R24
xjmp L248
L247:
.dbline 462
; else
; lcd_buffer[4]&=0xdf;
lds R24,_lcd_buffer+4
andi R24,223
sts _lcd_buffer+4,R24
L248:
.dbline 464
;
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 465
; send_data(8,lcd_buffer[4]);
lds R18,_lcd_buffer+4
ldi R16,8
xcall _send_data
.dbline 466
; send_data(18,lcd_buffer[9]);
lds R18,_lcd_buffer+9
ldi R16,18
xcall _send_data
.dbline 467
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 470
; //send_data(14,lcd_buffer[7]);
; // send_data(30,lcd_buffer[15]);
; }
L216:
.dbline 472
;
; if((key==1||key==4||key==5||key==7||key==8)&&(key_flag==1))
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R24,z+0
cpi R24,1
breq L261
cpi R24,4
breq L261
cpi R24,5
breq L261
cpi R24,7
breq L261
cpi R24,8
breq X17
xjmp L256
X17:
L261:
movw R30,R28
subi R30,45 ; addi 211
sbci R31,255
ldd R24,z+0
cpi R24,1
breq X18
xjmp L256
X18:
.dbline 473
; {
.dbline 474
; if(ques[ques_id-1]&0x01)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,0
rjmp L262
.dbline 475
; keya_flag=1;
clr R0
inc R0
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
std z+0,R0
xjmp L263
L262:
.dbline 477
; else
; keya_flag=0;
clr R0
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
std z+0,R0
L263:
.dbline 478
; if(ques[ques_id-1]&0x02)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,1
rjmp L265
.dbline 479
; keyb_flag=1;
clr R0
inc R0
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
std z+0,R0
xjmp L266
L265:
.dbline 481
; else
; keyb_flag=0;
clr R0
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
std z+0,R0
L266:
.dbline 482
; if(ques[ques_id-1]&0x04)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,2
rjmp L268
.dbline 483
; keyc_flag=1;
clr R0
inc R0
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
std z+0,R0
xjmp L269
L268:
.dbline 485
; else
; keyc_flag=0;
clr R0
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
std z+0,R0
L269:
.dbline 486
; if(ques[ques_id-1]&0x08)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,3
rjmp L271
.dbline 487
; keyd_flag=1;
clr R0
inc R0
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
std z+0,R0
xjmp L272
L271:
.dbline 489
; else
; keyd_flag=0;
clr R0
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
std z+0,R0
L272:
.dbline 490
; if(ques[ques_id-1]&0x10)
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sbrs R2,4
rjmp L274
.dbline 491
; keye_flag=1;
clr R0
inc R0
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
std z+0,R0
xjmp L275
L274:
.dbline 493
; else
; keye_flag=0;
clr R0
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
std z+0,R0
L275:
.dbline 495
;
; switch(key)
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R2,z+0
clr R3
movw R30,R28
subi R30,56 ; addi 200
sbci R31,255
std z+1,R3
std z+0,R2
movw R24,R2
cpi R24,1
ldi R30,0
cpc R25,R30
brne X19
xjmp L286
X19:
cpi R24,4
ldi R30,0
cpc R25,R30
breq L283
cpi R24,5
ldi R30,0
cpc R25,R30
brne X20
xjmp L292
X20:
cpi R24,7
ldi R30,0
cpc R25,R30
breq L280
cpi R24,8
ldi R30,0
cpc R25,R30
brne X21
xjmp L289
X21:
xjmp L278
X1:
.dbline 496
; {
L280:
.dbline 497
; case 7: ++keya_flag;
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
std z+0,R0
.dbline 498
; if(keya_flag>1)
ldi R24,1
cp R24,R0
brlo X22
xjmp L278
X22:
.dbline 499
; keya_flag=0;
clr R0
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
std z+0,R0
.dbline 500
; break;
xjmp L278
L283:
.dbline 501
; case 4: ++keyb_flag;
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
std z+0,R0
.dbline 502
; if(keyb_flag>1)
ldi R24,1
cp R24,R0
brlo X23
xjmp L278
X23:
.dbline 503
; keyb_flag=0;
clr R0
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
std z+0,R0
.dbline 504
; break;
xjmp L278
L286:
.dbline 505
; case 1: ++keyc_flag;
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
std z+0,R0
.dbline 506
; if(keyc_flag>1)
ldi R24,1
cp R24,R0
brsh L278
.dbline 507
; keyc_flag=0;
clr R0
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
std z+0,R0
.dbline 508
; break;
xjmp L278
L289:
.dbline 509
; case 8: ++keyd_flag;
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
std z+0,R0
.dbline 510
; if(keyd_flag>1)
ldi R24,1
cp R24,R0
brsh L278
.dbline 511
; keyd_flag=0;
clr R0
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
std z+0,R0
.dbline 512
; break;
xjmp L278
L292:
.dbline 513
; case 5: ++keye_flag;
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
std z+0,R0
.dbline 514
; if(keye_flag>1)
ldi R24,1
cp R24,R0
brsh L278
.dbline 515
; keye_flag=0;
clr R0
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
std z+0,R0
.dbline 516
; break;
.dbline 517
; default: break;
L278:
.dbline 520
; }
;
; ques[ques_id-1]=(keya_flag|(keyb_flag<<1)|(keyc_flag<<2)|(keyd_flag<<3)|(keye_flag<<4));
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
ldd R2,z+0
lsl R2
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
ldd R3,z+0
or R3,R2
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
ldd R2,z+0
lsl R2
lsl R2
or R3,R2
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
ldd R2,z+0
lsl R2
lsl R2
lsl R2
or R3,R2
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
ldd R24,z+0
andi R24,#0x0F
swap R24
or R3,R24
ldi R24,<_ques-1
ldi R25,>_ques-1
movw R26,R28
subi R26,51 ; addi 205
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
std z+0,R3
.dbline 522
;
; if(keya_flag==1)
movw R30,R28
subi R30,43 ; addi 213
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L296
.dbline 523
; lcd_buffer[9]|=0x02;
lds R24,_lcd_buffer+9
ori R24,2
sts _lcd_buffer+9,R24
xjmp L297
L296:
.dbline 525
; else
; lcd_buffer[9]&=0xfd;
lds R24,_lcd_buffer+9
andi R24,253
sts _lcd_buffer+9,R24
L297:
.dbline 526
; if(keyb_flag==1)
movw R30,R28
subi R30,42 ; addi 214
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L300
.dbline 527
; lcd_buffer[1]|=0x02;
lds R24,_lcd_buffer+1
ori R24,2
sts _lcd_buffer+1,R24
xjmp L301
L300:
.dbline 529
; else
; lcd_buffer[1]&=0xfd;
lds R24,_lcd_buffer+1
andi R24,253
sts _lcd_buffer+1,R24
L301:
.dbline 530
; if(keyc_flag==1)
movw R30,R28
subi R30,46 ; addi 210
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L304
.dbline 531
; lcd_buffer[12]|=0x20;
lds R24,_lcd_buffer+12
ori R24,32
sts _lcd_buffer+12,R24
xjmp L305
L304:
.dbline 533
; else
; lcd_buffer[12]&=0xdf;
lds R24,_lcd_buffer+12
andi R24,223
sts _lcd_buffer+12,R24
L305:
.dbline 534
; if(keyd_flag==1)
movw R30,R28
subi R30,41 ; addi 215
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L308
.dbline 535
; lcd_buffer[12]|=0x02;
lds R24,_lcd_buffer+12
ori R24,2
sts _lcd_buffer+12,R24
xjmp L309
L308:
.dbline 537
; else
; lcd_buffer[12]&=0xfd;
lds R24,_lcd_buffer+12
andi R24,253
sts _lcd_buffer+12,R24
L309:
.dbline 538
; if(keye_flag==1)
movw R30,R28
subi R30,40 ; addi 216
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L312
.dbline 539
; lcd_buffer[4]|=0x20;
lds R24,_lcd_buffer+4
ori R24,32
sts _lcd_buffer+4,R24
xjmp L313
L312:
.dbline 541
; else
; lcd_buffer[4]&=0xdf;
lds R24,_lcd_buffer+4
andi R24,223
sts _lcd_buffer+4,R24
L313:
.dbline 543
;
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 544
; send_data(8,lcd_buffer[4]);
lds R18,_lcd_buffer+4
ldi R16,8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -