📄 计算器.lis
字号:
04E0 82E0 ldi R24,2
04E2 85BF out 0x35,R24
04E4 .dbline 162
04E4 ; GICR|=BIT(6);
04E4 8BB7 in R24,0x3b
04E6 8064 ori R24,64
04E8 8BBF out 0x3b,R24
04EA .dbline 163
04EA ; SREG|=BIT(7);
04EA 7894 bset 7
04EC FEC0 xjmp L89
04EE L88:
04EE .dbline 166
04EE ;
04EE ; while(1)
04EE ; {
04EE .dbline 167
04EE ; if(i!=0xff)
04EE 80911400 lds R24,_i
04F2 8F3F cpi R24,255
04F4 09F4 brne X45
04F6 EDC0 xjmp L91
04F8 X45:
04F8 X31:
04F8 .dbline 168
04F8 ; {
04F8 .dbline 169
04F8 ; if(i<10){ a=10*a+i;i=0xff;}
04F8 8A30 cpi R24,10
04FA 00F5 brsh L93
04FC X32:
04FC .dbline 169
04FC .dbline 169
04FC 00E0 ldi R16,<L51
04FE 10E0 ldi R17,>L51
0500 0E940000 xcall lpm32
0504 CE01 movw R24,R28
0506 9A93 st -y,R25
0508 8A93 st -y,R24
050A 0E940000 xcall fpmule1
050E 1801 movw R2,R16
0510 2901 movw R4,R18
0512 00911400 lds R16,_i
0516 1127 clr R17
0518 0E940000 xcall int2fp
051C 3A93 st -y,R19
051E 2A93 st -y,R18
0520 1A93 st -y,R17
0522 0A93 st -y,R16
0524 8101 movw R16,R2
0526 9201 movw R18,R4
0528 0E940000 xcall fpadd2
052C 0883 std y+0,R16
052E 1983 std y+1,R17
0530 2A83 std y+2,R18
0532 3B83 std y+3,R19
0534 .dbline 169
0534 8FEF ldi R24,255
0536 80931400 sts _i,R24
053A .dbline 169
053A CBC0 xjmp L94
053C L93:
053C .dbline 171
053C ; else
053C ; {
053C .dbline 172
053C ; if(i=='+'){ sign=1;b=a;a=0;}
053C 80911400 lds R24,_i
0540 8B32 cpi R24,43
0542 99F4 brne L95
0544 X33:
0544 .dbline 172
0544 .dbline 172
0544 81E0 ldi R24,1
0546 80930000 sts _sign,R24
054A .dbline 172
054A 2880 ldd R2,y+0
054C 3980 ldd R3,y+1
054E 4A80 ldd R4,y+2
0550 5B80 ldd R5,y+3
0552 2C82 std y+4,R2
0554 3D82 std y+5,R3
0556 4E82 std y+6,R4
0558 5F82 std y+7,R5
055A .dbline 172
055A 00E0 ldi R16,<L37
055C 10E0 ldi R17,>L37
055E 0E940000 xcall lpm32
0562 0883 std y+0,R16
0564 1983 std y+1,R17
0566 2A83 std y+2,R18
0568 3B83 std y+3,R19
056A .dbline 172
056A L95:
056A .dbline 173
056A ; if(i=='-'){ sign=2;b=a;a=0;}
056A 80911400 lds R24,_i
056E 8D32 cpi R24,45
0570 99F4 brne L97
0572 X34:
0572 .dbline 173
0572 .dbline 173
0572 82E0 ldi R24,2
0574 80930000 sts _sign,R24
0578 .dbline 173
0578 2880 ldd R2,y+0
057A 3980 ldd R3,y+1
057C 4A80 ldd R4,y+2
057E 5B80 ldd R5,y+3
0580 2C82 std y+4,R2
0582 3D82 std y+5,R3
0584 4E82 std y+6,R4
0586 5F82 std y+7,R5
0588 .dbline 173
0588 00E0 ldi R16,<L37
058A 10E0 ldi R17,>L37
058C 0E940000 xcall lpm32
0590 0883 std y+0,R16
0592 1983 std y+1,R17
0594 2A83 std y+2,R18
0596 3B83 std y+3,R19
0598 .dbline 173
0598 L97:
0598 .dbline 174
0598 ; if(i=='*'){ sign=3;b=a;a=0;}
0598 80911400 lds R24,_i
059C 8A32 cpi R24,42
059E 99F4 brne L99
05A0 X35:
05A0 .dbline 174
05A0 .dbline 174
05A0 83E0 ldi R24,3
05A2 80930000 sts _sign,R24
05A6 .dbline 174
05A6 2880 ldd R2,y+0
05A8 3980 ldd R3,y+1
05AA 4A80 ldd R4,y+2
05AC 5B80 ldd R5,y+3
05AE 2C82 std y+4,R2
05B0 3D82 std y+5,R3
05B2 4E82 std y+6,R4
05B4 5F82 std y+7,R5
05B6 .dbline 174
05B6 00E0 ldi R16,<L37
05B8 10E0 ldi R17,>L37
05BA 0E940000 xcall lpm32
05BE 0883 std y+0,R16
05C0 1983 std y+1,R17
05C2 2A83 std y+2,R18
05C4 3B83 std y+3,R19
05C6 .dbline 174
05C6 L99:
05C6 .dbline 175
05C6 ; if(i=='/'){ sign=4;b=a;a=0;}
05C6 80911400 lds R24,_i
05CA 8F32 cpi R24,47
05CC 99F4 brne L101
05CE X36:
05CE .dbline 175
05CE .dbline 175
05CE 84E0 ldi R24,4
05D0 80930000 sts _sign,R24
05D4 .dbline 175
05D4 2880 ldd R2,y+0
05D6 3980 ldd R3,y+1
05D8 4A80 ldd R4,y+2
05DA 5B80 ldd R5,y+3
05DC 2C82 std y+4,R2
05DE 3D82 std y+5,R3
05E0 4E82 std y+6,R4
05E2 5F82 std y+7,R5
05E4 .dbline 175
05E4 00E0 ldi R16,<L37
05E6 10E0 ldi R17,>L37
05E8 0E940000 xcall lpm32
05EC 0883 std y+0,R16
05EE 1983 std y+1,R17
05F0 2A83 std y+2,R18
05F2 3B83 std y+3,R19
05F4 .dbline 175
05F4 L101:
05F4 .dbline 176
05F4 ; if(i=='C'){ sign=0;a=0;b=0;}
05F4 80911400 lds R24,_i
05F8 8334 cpi R24,67
05FA 99F4 brne L103
05FC X37:
05FC .dbline 176
05FC .dbline 176
05FC 2224 clr R2
05FE 20920000 sts _sign,R2
0602 .dbline 176
0602 00E0 ldi R16,<L37
0604 10E0 ldi R17,>L37
0606 0E940000 xcall lpm32
060A 0883 std y+0,R16
060C 1983 std y+1,R17
060E 2A83 std y+2,R18
0610 3B83 std y+3,R19
0612 .dbline 176
0612 00E0 ldi R16,<L37
0614 10E0 ldi R17,>L37
0616 0E940000 xcall lpm32
061A 0C83 std y+4,R16
061C 1D83 std y+5,R17
061E 2E83 std y+6,R18
0620 3F83 std y+7,R19
0622 .dbline 176
0622 L103:
0622 .dbline 177
0622 ; if(i=='=')
0622 80911400 lds R24,_i
0626 8D33 cpi R24,61
0628 09F0 breq X46
062A 50C0 xjmp L105
062C X46:
062C X38:
062C .dbline 178
062C ; { switch(sign)
062C .dbline 178
062C 60910000 lds R22,_sign
0630 7727 clr R23
0632 6130 cpi R22,1
0634 E0E0 ldi R30,0
0636 7E07 cpc R23,R30
0638 69F0 breq L110
063A X39:
063A 6230 cpi R22,2
063C E0E0 ldi R30,0
063E 7E07 cpc R23,R30
0640 C1F0 breq L111
0642 X40:
0642 6330 cpi R22,3
0644 E0E0 ldi R30,0
0646 7E07 cpc R23,R30
0648 11F1 breq L112
064A X41:
064A 6430 cpi R22,4
064C E0E0 ldi R30,0
064E 7E07 cpc R23,R30
0650 69F1 breq L113
0652 X42:
0652 39C0 xjmp L108
0654 L110:
0654 .dbline 180
0654 ; {
0654 ; case 1:a=a+b;break;
0654 0881 ldd R16,y+0
0656 1981 ldd R17,y+1
0658 2A81 ldd R18,y+2
065A 3B81 ldd R19,y+3
065C CE01 movw R24,R28
065E 0496 adiw R24,4
0660 9A93 st -y,R25
0662 8A93 st -y,R24
0664 0E940000 xcall fpadd1
0668 0883 std y+0,R16
066A 1983 std y+1,R17
066C 2A83 std y+2,R18
066E 3B83 std y+3,R19
0670 .dbline 180
0670 2AC0 xjmp L108
0672 L111:
0672 .dbline 181
0672 ; case 2:a=b-a;break;
0672 0C81 ldd R16,y+4
0674 1D81 ldd R17,y+5
0676 2E81 ldd R18,y+6
0678 3F81 ldd R19,y+7
067A CE01 movw R24,R28
067C 9A93 st -y,R25
067E 8A93 st -y,R24
0680 0E940000 xcall fpsub1
0684 0883 std y+0,R16
0686 1983 std y+1,R17
0688 2A83 std y+2,R18
068A 3B83 std y+3,R19
068C .dbline 181
068C 1CC0 xjmp L108
068E L112:
068E .dbline 182
068E ; case 3:a=a*b;break;
068E 0881 ldd R16,y+0
0690 1981 ldd R17,y+1
0692 2A81 ldd R18,y+2
0694 3B81 ldd R19,y+3
0696 CE01 movw R24,R28
0698 0496 adiw R24,4
069A 9A93 st -y,R25
069C 8A93 st -y,R24
069E 0E940000 xcall fpmule1
06A2 0883 std y+0,R16
06A4 1983 std y+1,R17
06A6 2A83 std y+2,R18
06A8 3B83 std y+3,R19
06AA .dbline 182
06AA 0DC0 xjmp L108
06AC L113:
06AC .dbline 183
06AC ; case 4:a=b/a;break;
06AC 0C81 ldd R16,y+4
06AE 1D81 ldd R17,y+5
06B0 2E81 ldd R18,y+6
06B2 3F81 ldd R19,y+7
06B4 CE01 movw R24,R28
06B6 9A93 st -y,R25
06B8 8A93 st -y,R24
06BA 0E940000 xcall fpdiv1
06BE 0883 std y+0,R16
06C0 1983 std y+1,R17
06C2 2A83 std y+2,R18
06C4 3B83 std y+3,R19
06C6 .dbline 183
06C6 .dbline 184
06C6 ; default: break;
06C6 L108:
06C6 .dbline 186
06C6 ; }
06C6 ; sign=0;
06C6 2224 clr R2
06C8 20920000 sts _sign,R2
06CC .dbline 187
06CC ; }
06CC L105:
06CC .dbline 188
06CC ; i=0xff;
06CC 8FEF ldi R24,255
06CE 80931400 sts _i,R24
06D2 .dbline 189
06D2 ; }
06D2 L94:
06D2 .dbline 190
06D2 ; }
06D2 L91:
06D2 .dbline 191
06D2 ; t=0x0f;
06D2 4FE0 ldi R20,15
06D4 05C0 xjmp L115
06D6 L114:
06D6 .dbline 192
06D6 ; while(t--)display(a);
06D6 0881 ldd R16,y+0
06D8 1981 ldd R17,y+1
06DA 2A81 ldd R18,y+2
06DC 3B81 ldd R19,y+3
06DE 9DDD xcall _display
06E0 L115:
06E0 .dbline 192
06E0 242E mov R2,R20
06E2 3324 clr R3
06E4 4150 subi R20,1
06E6 2220 tst R2
06E8 B1F7 brne L114
06EA X43:
06EA .dbline 193
06EA ; }
06EA L89:
06EA .dbline 165
06EA 01CF xjmp L88
06EC X44:
06EC .dbline -2
06EC L87:
06EC .dbline 0 ; func end
06EC 2896 adiw R28,8
06EE 0895 ret
06F0 .dbsym l key 1 i
06F0 .dbsym r n 22 i
06F0 .dbsym l b 4 D
06F0 .dbsym r t 20 c
06F0 .dbsym l a 0 D
06F0 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\avr工程\计算器\计算器\程序\计算器.c
0000 _sign::
0000 .blkb 1
0001 .dbsym e sign _sign c
.area lit(rom, con, rel)
0000 L51:
0000 00002041 .word 0x0,0x4120
0004 L37:
0004 00000000 .word 0x0,0x0
0008 ; }
0008 ;
0008 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -