📄 设计最后.s
字号:
L106:
.dbline 519
L107:
.dbline 519
inc R12
L109:
.dbline 519
; for (TempCyc = 0;(UnShifted[TempCyc][0]!=ScanCode)&&(TempCyc<71); TempCyc++); //查表显示
ldi R24,2
mul R24,R12
movw R30,R0
ldi R24,<_UnShifted
ldi R25,>_UnShifted
add R30,R24
adc R31,R25
ldd R2,z+0
cp R2,R10
breq L110
mov R24,R12
cpi R24,71
brlo L106
L110:
.dbline 520
; if (UnShifted[TempCyc][0] == ScanCode)
ldi R24,2
mul R24,R12
movw R30,R0
ldi R24,<_UnShifted
ldi R25,>_UnShifted
add R30,R24
adc R31,R25
ldd R2,z+0
cp R2,R10
breq X8
xjmp L87
X8:
.dbline 521
; { write_asiic(DisNumx, DisNumy, UnShifted[TempCyc][1]);
.dbline 521
ldi R24,2
mul R24,R12
movw R30,R0
ldi R24,<_UnShifted+1
ldi R25,>_UnShifted+1
add R30,R24
adc R31,R25
ldd R2,z+0
std y+0,R2
lds R18,_DisNumy
lds R16,_DisNumx
xcall _write_asiic
.dbline 522
; DisNumx++;
lds R24,_DisNumx
subi R24,255 ; addi 1
sts _DisNumx,R24
.dbline 523
; if((ScanCode==0x70)||(ScanCode==0x69)||(ScanCode==0x72)||(ScanCode==0x7A)||(ScanCode==0x6B)||
mov R24,R10
cpi R24,112
breq L124
cpi R24,105
breq L124
cpi R24,114
breq L124
cpi R24,122
breq L124
cpi R24,107
breq L124
cpi R24,115
breq L124
cpi R24,116
breq L124
cpi R24,108
breq L124
cpi R24,117
breq L124
cpi R24,125
breq X9
xjmp L114
X9:
L124:
.dbline 525
; (ScanCode==0x73)||(ScanCode==0x74)||(ScanCode==0x6C)||(ScanCode==0x75)||(ScanCode==0x7D))
; {DisNumx1++;
.dbline 525
lds R24,_DisNumx1
subi R24,255 ; addi 1
sts _DisNumx1,R24
.dbline 526
; switch(ScanCode)
mov R14,R10
clr R15
movw R24,R14
cpi R24,105
ldi R30,0
cpc R25,R30
breq L129
cpi R24,107
ldi R30,0
cpc R25,R30
breq L132
cpi R24,108
ldi R30,0
cpc R25,R30
brne X10
xjmp L135
X10:
cpi R24,112
ldi R30,0
cpc R25,R30
breq L128
cpi R24,114
ldi R30,0
cpc R25,R30
breq L130
cpi R24,115
ldi R30,0
cpc R25,R30
breq L133
cpi R24,116
ldi R30,0
cpc R25,R30
breq L134
cpi R24,117
ldi R30,0
cpc R25,R30
breq L136
cpi R24,122
ldi R30,0
cpc R25,R30
breq L131
cpi R24,105
ldi R30,0
cpc R25,R30
brlt L126
L138:
movw R24,R14
cpi R24,125
ldi R30,0
cpc R25,R30
breq L137
xjmp L126
X3:
.dbline 527
; {
L128:
.dbline 528
; case 0x70: keytemp=0;break;//小键盘
clr R2
sts _keytemp,R2
.dbline 528
xjmp L126
L129:
.dbline 529
; case 0x69: keytemp=1;break;
ldi R24,1
sts _keytemp,R24
.dbline 529
xjmp L126
L130:
.dbline 530
; case 0x72: keytemp=2;break;
ldi R24,2
sts _keytemp,R24
.dbline 530
xjmp L126
L131:
.dbline 531
; case 0x7A: keytemp=3;break;
ldi R24,3
sts _keytemp,R24
.dbline 531
xjmp L126
L132:
.dbline 532
; case 0x6B: keytemp=4;break;
ldi R24,4
sts _keytemp,R24
.dbline 532
xjmp L126
L133:
.dbline 533
; case 0x73: keytemp=5;break;
ldi R24,5
sts _keytemp,R24
.dbline 533
xjmp L126
L134:
.dbline 534
; case 0x74: keytemp=6;break;
ldi R24,6
sts _keytemp,R24
.dbline 534
xjmp L126
L135:
.dbline 535
; case 0x6C: keytemp=7;break;
ldi R24,7
sts _keytemp,R24
.dbline 535
xjmp L126
L136:
.dbline 536
; case 0x75: keytemp=8;break;
ldi R24,8
sts _keytemp,R24
.dbline 536
xjmp L126
L137:
.dbline 537
; case 0x7D: keytemp=9;break;
ldi R24,9
sts _keytemp,R24
.dbline 537
.dbline 538
; default:break;
L126:
.dbline 540
; }
; switch(DisNumx1)
lds R14,_DisNumx1
clr R15
movw R24,R14
cpi R24,1
ldi R30,0
cpc R25,R30
breq L142
cpi R24,2
ldi R30,0
cpc R25,R30
breq L143
cpi R24,3
ldi R30,0
cpc R25,R30
brne X11
xjmp L144
X11:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X12
xjmp L145
X12:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X13
xjmp L146
X13:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X14
xjmp L147
X14:
cpi R24,7
ldi R30,0
cpc R25,R30
brne X15
xjmp L148
X15:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X16
xjmp L149
X16:
xjmp L140
X4:
.dbline 541
; {
L142:
.dbline 542
; case 1:value=keytemp;break;
lds R2,_keytemp
clr R3
clr R4
clr R5
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 542
xjmp L140
L143:
.dbline 543
; case 2:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 543
xjmp L140
L144:
.dbline 544
; case 3:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 544
xjmp L140
L145:
.dbline 545
; case 4:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 545
xjmp L140
L146:
.dbline 546
; case 5:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 546
xjmp L140
L147:
.dbline 547
; case 6:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 547
xjmp L140
L148:
.dbline 548
; case 7:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 548
xjmp L140
L149:
.dbline 549
; case 8:value=value*10+keytemp;break;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32u
movw R2,R16
movw R4,R18
lds R6,_keytemp
clr R7
clr R8
clr R9
add R2,R6
adc R3,R7
adc R4,R8
adc R5,R9
sts _value+1,R3
sts _value,R2
sts _value+2+1,R5
sts _value+2,R4
.dbline 549
.dbline 550
; default:break;
L140:
.dbline 552
; }
; }
L114:
.dbline 553
; if(ScanCode==0x79)//+
mov R24,R10
cpi R24,121
brne L150
.dbline 554
; {
.dbline 555
; valuefirst=value;value=0;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
sts _valuefirst+1,R3
sts _valuefirst,R2
sts _valuefirst+2+1,R5
sts _valuefirst+2,R4
.dbline 555
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _value+1,R21
sts _value,R20
sts _value+2+1,R23
sts _value+2,R22
.dbline 556
; flag_add=1;DisNumx1=0;
ldi R24,1
sts _flag_add,R24
.dbline 556
clr R2
sts _DisNumx1,R2
.dbline 557
; }
L150:
.dbline 558
; if(ScanCode==0x7B)//-
mov R24,R10
cpi R24,123
brne L152
.dbline 559
; {
.dbline 560
; valuefirst=value;value=0;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
sts _valuefirst+1,R3
sts _valuefirst,R2
sts _valuefirst+2+1,R5
sts _valuefirst+2,R4
.dbline 560
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _value+1,R21
sts _value,R20
sts _value+2+1,R23
sts _value+2,R22
.dbline 561
; flag_sub=1;DisNumx1=0;
ldi R24,1
sts _flag_sub,R24
.dbline 561
clr R2
sts _DisNumx1,R2
.dbline 562
; }
L152:
.dbline 563
; if(ScanCode==0x7c)//*
mov R24,R10
cpi R24,124
brne L154
.dbline 564
; {
.dbline 565
; valuefirst=value;value=0;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
sts _valuefirst+1,R3
sts _valuefirst,R2
sts _valuefirst+2+1,R5
sts _valuefirst+2,R4
.dbline 565
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _value+1,R21
sts _value,R20
sts _value+2+1,R23
sts _value+2,R22
.dbline 566
; flag_mul=1;DisNumx1=0;
ldi R24,1
sts _flag_mul,R24
.dbline 566
clr R2
sts _DisNumx1,R2
.dbline 567
; }
L154:
.dbline 568
; if(ScanCode==0x4a)///
mov R24,R10
cpi R24,74
brne L156
.dbline 569
; {
.dbline 570
; valuefirst=value;value=0;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
sts _valuefirst+1,R3
sts _valuefirst,R2
sts _valuefirst+2+1,R5
sts _valuefirst+2,R4
.dbline 570
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _value+1,R21
sts _value,R20
sts _value+2+1,R23
sts _value+2,R22
.dbline 571
; flag_mod=1;DisNumx1=0;
ldi R24,1
sts _flag_mod,R24
.dbline 571
clr R2
sts _DisNumx1,R2
.dbline 572
; }
L156:
.dbline 573
; if(ScanCode==0x5a)//enter
mov R24,R10
cpi R24,90
breq X17
xjmp L87
X17:
.dbline 574
; {
.dbline 575
; if(flag_add==1)
lds R24,_flag_add
cpi R24,1
brne L160
.dbline 576
; {
.dbline 577
; rezult=valuefirst+value;DisNumx1=0;
lds R4,_value+2
lds R5,_value+2+1
lds R2,_value
lds R3,_value+1
lds R8,_valuefirst+2
lds R9,_valuefirst+2+1
lds R6,_valuefirst
lds R7,_valuefirst+1
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
sts _rezult+1,R7
sts _rezult,R6
sts _rezult+2+1,R9
sts _rezult+2,R8
.dbline 577
clr R2
sts _DisNumx1,R2
.dbline 578
; flag_add=0;
sts _flag_add,R2
.dbline 579
; datechuli();
xcall _datechuli
.dbline 580
; }
L160:
.dbline 581
; if(flag_sub==1)
lds R24,_flag_sub
cpi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -