📄 main.s
字号:
subi R30,52 ; addi 204
sbci R31,255
ldd R24,z+0
cpi R24,11
brlo L117
L115:
.dbline 325
; d^=data[j];
;
; if(d==data[11])
lds R2,_data+11
movw R30,R28
subi R30,47 ; addi 209
sbci R31,255
ldd R0,z+0
cp R0,R2
breq X9
xjmp L121
X9:
.dbline 326
; {
.dbline 327
; if(data[4]==guest_id||data[4]>80||data[4]==0)
lds R2,_guest_id
lds R3,_data+4
cp R3,R2
breq L130
ldi R24,80
cp R24,R3
brlo L130
tst R3
breq X10
xjmp L124
X10:
L130:
.dbline 328
; {
.dbline 330
;
; if(data[6]==temp)//
lds R2,_data+6
movw R30,R28
subi R30,39 ; addi 217
sbci R31,255
ldd R0,z+0
cp R2,R0
brne L131
.dbline 331
; goto B;
xjmp L134
L131:
.dbline 334
;
; else
; {
.dbline 335
; temp=data[6];
lds R2,_data+6
movw R30,R28
subi R30,39 ; addi 217
sbci R31,255
std z+0,R2
.dbline 337
; //key_flag=0;
; switch(data[7])
lds R2,_data+7
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,34
ldi R30,0
cpc R25,R30
breq L140
cpi R24,34
ldi R30,0
cpc R25,R30
brge X11
xjmp L136
X11:
L158:
movw R30,R28
subi R30,56 ; addi 200
sbci R31,255
ldd R24,z+0
ldd R25,z+1
cpi R24,218
ldi R30,0
cpc R25,R30
breq L148
xjmp L136
X0:
.dbline 338
; {
L140:
.dbline 339
; case 0x22: lcd_buffer[1]=0x90;
ldi R24,144
sts _lcd_buffer+1,R24
.dbline 340
; lcd_buffer[11]=0x10;
ldi R24,16
sts _lcd_buffer+11,R24
.dbline 341
; lcd_buffer[15]=0x10;
sts _lcd_buffer+15,R24
.dbline 343
;
; send_data(0x16,lcd_buffer[11]);
mov R18,R24
ldi R16,22
xcall _send_data
.dbline 344
; send_data(0x02,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 345
; send_data(0x1e,lcd_buffer[15]);
lds R18,_lcd_buffer+15
ldi R16,30
xcall _send_data
.dbline 347
;
; ques_num=data[8];
lds R2,_data+8
sts _ques_num,R2
.dbline 348
; ques_id=ques_num;
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R2
.dbline 349
; break;
xjmp L137
L148:
.dbline 350
; case 0xDA: score=data[8];
lds R10,_data+8
.dbline 351
; key_flag=0;
clr R0
movw R30,R28
subi R30,45 ; addi 211
sbci R31,255
std z+0,R0
.dbline 352
; i=score/100;
ldi R17,100
mov R16,R10
xcall div8u
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R16
.dbline 353
; j=(score-i*100)/10;
ldi R24,100
mov R0,R16
mul R24,R0
mov R16,R10
sub R16,R0
ldi R17,10
xcall div8u
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
std z+0,R16
.dbline 354
; k=score-i*100-j*10;
ldi R24,100
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
mul R24,R0
mov R2,R10
sub R2,R0
ldi R24,10
mov R0,R16
mul R24,R0
sub R2,R0
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
std z+0,R2
.dbline 355
; if(i==1)
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L150
.dbline 356
; lcd_buffer[3]=table[j]|0x10;
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
ori R24,16
sts _lcd_buffer+3,R24
xjmp L151
L150:
.dbline 358
; else
; lcd_buffer[3]=table[j];
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sts _lcd_buffer+3,R2
L151:
.dbline 359
; lcd_buffer[13]=table[k]|0x10;
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,53 ; addi 203
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
ori R24,16
sts _lcd_buffer+13,R24
.dbline 360
; send_data(6,lcd_buffer[3]);
lds R18,_lcd_buffer+3
ldi R16,6
xcall _send_data
.dbline 361
; send_data(26,lcd_buffer[13]);
lds R18,_lcd_buffer+13
ldi R16,26
xcall _send_data
.dbline 362
; break;
.dbline 363
; deflaut: break;
L136:
L137:
.dbline 366
; }
;
; }
.dbline 367
; }
L124:
.dbline 369
;
; }
L121:
.dbline 370
; }
L113:
L159:
.dbline 371
; A: if((data[4]==0xFE||data[4]==0xDB)&&data[ques_num+5]==0xDB)// //it is the answer
lds R24,_data+4
cpi R24,254
breq L165
cpi R24,219
breq X12
xjmp L160
X12:
L165:
ldi R24,<_data+5
ldi R25,>_data+5
lds R30,_ques_num
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,219
breq X13
xjmp L160
X13:
.dbline 372
; {
.dbline 373
; key_flag=0;
clr R0
movw R30,R28
subi R30,45 ; addi 211
sbci R31,255
std z+0,R0
.dbline 374
; lcd_buffer[9]=0x40;
ldi R24,64
sts _lcd_buffer+9,R24
.dbline 375
; for(i=0;i<ques_num;i++)
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R0
xjmp L170
L167:
.dbline 376
ldi R24,<_data+5
ldi R25,>_data+5
movw R26,R28
subi R26,54 ; addi 202
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
movw R24,R28
movw R26,R28
subi R26,54 ; addi 202
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
std z+0,R2
L168:
.dbline 375
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R0
L170:
.dbline 375
lds R2,_ques_num
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
cp R0,R2
brlo L167
.dbline 378
; ans[i]=data[i+5];
;
; }
L160:
.dbline 381
;
;
; if(ans[ques_id-1]&0x01)
movw R24,R28
sbiw R24,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 L172
.dbline 382
; lcd_buffer[9]|=0x04;
lds R24,_lcd_buffer+9
ori R24,4
sts _lcd_buffer+9,R24
xjmp L173
L172:
.dbline 384
; else
; lcd_buffer[9]&=0xfb;
lds R24,_lcd_buffer+9
andi R24,251
sts _lcd_buffer+9,R24
L173:
.dbline 385
; if(ans[ques_id-1]&0x02)
movw R24,R28
sbiw R24,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 L177
.dbline 386
; lcd_buffer[9]|=0x08;
lds R24,_lcd_buffer+9
ori R24,8
sts _lcd_buffer+9,R24
xjmp L178
L177:
.dbline 388
; else
; lcd_buffer[9]&=0xf7;
lds R24,_lcd_buffer+9
andi R24,247
sts _lcd_buffer+9,R24
L178:
.dbline 389
; if(ans[ques_id-1]&0x04)
movw R24,R28
sbiw R24,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 L182
.dbline 390
; lcd_buffer[1]|=0x20;
lds R24,_lcd_buffer+1
ori R24,32
sts _lcd_buffer+1,R24
xjmp L183
L182:
.dbline 392
; else
; lcd_buffer[1]&=0xdf;
lds R24,_lcd_buffer+1
andi R24,223
sts _lcd_buffer+1,R24
L183:
.dbline 393
; if(ans[ques_id-1]&0x08)
movw R24,R28
sbiw R24,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 L187
.dbline 394
; lcd_buffer[1]|=0x40;
lds R24,_lcd_buffer+1
ori R24,64
sts _lcd_buffer+1,R24
xjmp L188
L187:
.dbline 396
; else
; lcd_buffer[1]&=0xbf;
lds R24,_lcd_buffer+1
andi R24,191
sts _lcd_buffer+1,R24
L188:
.dbline 397
; if(ans[ques_id-1]&0x10)
movw R24,R28
sbiw R24,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 L192
.dbline 398
; lcd_buffer[1]|=0x04;
lds R24,_lcd_buffer+1
ori R24,4
sts _lcd_buffer+1,R24
xjmp L193
L192:
.dbline 400
; else
; lcd_buffer[1]&=0xfb;
lds R24,_lcd_buffer+1
andi R24,251
sts _lcd_buffer+1,R24
L193:
.dbline 402
;
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 403
; send_data(18,lcd_buffer[9]);
lds R18,_lcd_buffer+9
ldi R16,18
xcall _send_data
.dbline 405
;
; if(ques_num!=0)//&&key_flag==1
lds R2,_ques_num
tst R2
brne X14
xjmp L199
X14:
.dbline 406
; {
.dbline 407
; j=0;
clr R0
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
std z+0,R0
.dbline 408
; for(k=0;k<ques_num;k++)
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
std z+0,R0
xjmp L204
L201:
.dbline 409
; {
.dbline 410
; if(ques[k]==0)
ldi R24,<_ques
ldi R25,>_ques
movw R26,R28
subi R26,53 ; addi 203
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L205
.dbline 411
; {
.dbline 412
; n_ques[j]=k+1;
movw R24,R28
subi R24,156 ; offset = 100
sbci R25,255
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
movw R26,R28
subi R26,53 ; addi 203
sbci R27,255
ld R24,x
subi R24,255 ; addi 1
std z+0,R24
.dbline 413
; j++;
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
std z+0,R0
.dbline 414
; n_num++;
inc R14
.dbline 415
; }
L205:
.dbline 416
L202:
.dbline 408
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
std z+0,R0
L204:
.dbline 408
lds R2,_ques_num
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
ldd R0,z+0
cp R0,R2
brsh X15
xjmp L201
X15:
.dbline 417
; }
; i=n_num/100;
ldi R17,100
mov R16,R14
xcall div8u
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R16
.dbline 418
; j=(n_num-i*100)/10;
ldi R24,100
mov R0,R16
mul R24,R0
mov R16,R14
sub R16,R0
ldi R17,10
xcall div8u
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
std z+0,R16
.dbline 419
; k=n_num-i*100-j*10;
ldi R24,100
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
mul R24,R0
mov R2,R14
sub R2,R0
ldi R24,10
mov R0,R16
mul R24,R0
sub R2,R0
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
std z+0,R2
.dbline 420
; lcd_buffer[12]|=0x40;
lds R24,_lcd_buffer+12
ori R24,64
sts _lcd_buffer+12,R24
.dbline 421
; if(i==1)
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R24,z+0
cpi R24,1
brne L208
.dbline 422
; lcd_buffer[2]=table[k]|0x10;
ldi R24,<_table
ldi R25,>_table
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
ori R24,16
sts _lcd_buffer+2,R24
xjmp L209
L208:
.dbline 424
; else
; lcd_buffer[2]=table[k]&0xef;
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,53 ; addi 203
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
andi R24,239
sts _lcd_buffer+2,R24
L209:
.dbline 425
; lcd_buffer[10]=table[j];
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sts _lcd_buffer+10,R2
.dbline 426
; send_data(4,lcd_buffer[2]);
lds R18,_lcd_buffer+2
ldi R16,4
xcall _send_data
.dbline 427
; send_data(20,lcd_buffer[10]);
lds R18,_lcd_buffer+10
ldi R16,20
xcall _send_data
.dbline 428
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 430
;
; key=key_scan();
xcall _key_scan
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
std z+0,R16
.dbline 431
; if(key==9||key==6)
cpi R16,9
breq L218
cpi R16,6
breq X16
xjmp L216
X16:
L218:
.dbline 432
; {
.dbline 433
; if(key==9)
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R24,z+0
cpi R24,9
brne L219
.dbline 434
; ques_id++;
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R0
L219:
.dbline 435
; if(ques_id>ques_num)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -