📄 计算器.lst
字号:
05AB 91800076 LDS R24,error
05AD 3081 CPI R24,1
05AE F441 BNE 0x05B7
(0156) LCD_write_string(10,1,"ERROR");
05AF E988 LDI R24,0x98
05B0 E090 LDI R25,0
05B1 8399 STD Y+1,R25
05B2 8388 STD Y+0,R24
05B3 E021 LDI R18,1
05B4 E00A LDI R16,0xA
05B5 DB49 RCALL _LCD_write_string
05B6 C007 RJMP 0x05BE
(0157)
(0158)
(0159) else LCD_write_string(10,1,result_dp);
05B7 E68A LDI R24,0x6A
05B8 E090 LDI R25,0
05B9 8399 STD Y+1,R25
05BA 8388 STD Y+0,R24
05BB E021 LDI R18,1
05BC E00A LDI R16,0xA
05BD DB41 RCALL _LCD_write_string
05BE 9622 ADIW R28,2
05BF 940E06C0 CALL pop_gset2
05C1 9508 RET
_main:
i --> Y+3
05C2 9722 SBIW R28,2
(0160)
(0161) }
(0162)
(0163) void main(void)
(0164) { unsigned char i;
(0165) LCD_init();//液晶初始化
05C3 DAD0 RCALL _LCD_init
(0166) LCD_write_string(1,0,"COUNTER BY MJP");//显示欢迎信息
05C4 E788 LDI R24,0x78
05C5 E090 LDI R25,0
05C6 8399 STD Y+1,R25
05C7 8388 STD Y+0,R24
05C8 2722 CLR R18
05C9 E001 LDI R16,1
05CA DB34 RCALL _LCD_write_string
05CB C006 RJMP 0x05D2
(0167) while(1)
(0168) {key=get_key();//按键扫描
05CC DBEE RCALL _get_key
05CD 93000073 STS key,R16
(0169)
(0170) if(key!=0x00)
05CF 2300 TST R16
05D0 F009 BEQ 0x05D2
(0171) {
(0172) process_key();//调用按键处理函数
FILE: <library>
05D1 DC08 RCALL _process_key
05D2 CFF9 RJMP 0x05CC
05D3 9622 ADIW R28,2
05D4 9508 RET
mod16s:
05D5 9468 BSET 6
05D6 92DA ST R13,-Y
05D7 2ED1 MOV R13,R17
05D8 C004 RJMP 0x05DD
div16s:
05D9 94E8 BCLR 6
05DA 92DA ST R13,-Y
05DB 2ED1 MOV R13,R17
05DC 26D3 EOR R13,R19
05DD FF17 SBRS R17,7
05DE C004 RJMP 0x05E3
05DF 9510 COM R17
05E0 9500 COM R16
05E1 5F0F SUBI R16,0xFF
05E2 4F1F SBCI R17,0xFF
05E3 FF37 SBRS R19,7
05E4 C004 RJMP 0x05E9
05E5 9530 COM R19
05E6 9520 COM R18
05E7 5F2F SUBI R18,0xFF
05E8 4F3F SBCI R19,0xFF
05E9 940E05F6 CALL xdiv16u
05EB FED7 SBRS R13,7
05EC C004 RJMP 0x05F1
05ED 9510 COM R17
05EE 9500 COM R16
05EF 5F0F SUBI R16,0xFF
05F0 4F1F SBCI R17,0xFF
05F1 90D9 LD R13,Y+
05F2 9508 RET
mod16u:
05F3 9468 BSET 6
05F4 C001 RJMP xdiv16u
div16u:
05F5 94E8 BCLR 6
xdiv16u:
05F6 92EA ST R14,-Y
05F7 92FA ST R15,-Y
05F8 938A ST R24,-Y
05F9 24EE CLR R14
05FA 24FF CLR R15
05FB E180 LDI R24,0x10
05FC 0F00 LSL R16
05FD 1F11 ROL R17
05FE 1CEE ROL R14
05FF 1CFF ROL R15
0600 16E2 CP R14,R18
0601 06F3 CPC R15,R19
0602 F018 BCS 0x0606
0603 1AE2 SUB R14,R18
0604 0AF3 SBC R15,R19
0605 9503 INC R16
0606 958A DEC R24
0607 F7A1 BNE 0x05FC
0608 F416 BRTC 0x060B
0609 2D0E MOV R16,R14
060A 2D1F MOV R17,R15
060B 9189 LD R24,Y+
060C 90F9 LD R15,Y+
060D 90E9 LD R14,Y+
060E 9508 RET
div32u:
060F 94E8 BCLR 6
0610 C001 RJMP 0x0612
mod32u:
0611 9468 BSET 6
0612 D02F RCALL long_div_prolog
0613 24CC CLR R12
0614 C008 RJMP 0x061D
div32s:
0615 94E8 BCLR 6
0616 C001 RJMP 0x0618
mod32s:
0617 9468 BSET 6
0618 D029 RCALL long_div_prolog
0619 FD37 SBRC R19,7
061A D053 RCALL neg_R16_R19
061B FDB7 SBRC R27,7
061C D05A RCALL neg_R24_R27
061D 2477 CLR R7
061E 2488 CLR R8
061F 2499 CLR R9
0620 24AA CLR R10
0621 24BB CLR R11
0622 D041 RCALL tst_R16_R19
0623 F0C1 BEQ 0x063C
0624 D044 RCALL tst_R24_R27
0625 F0B1 BEQ 0x063C
0626 E2E8 LDI R30,0x28
0627 0F00 LSL R16
0628 1F11 ROL R17
0629 1F22 ROL R18
062A 1F33 ROL R19
062B 1C77 ROL R7
062C 1C88 ROL R8
062D 1C99 ROL R9
062E 1CAA ROL R10
062F 1CBB ROL R11
0630 1688 CP R8,R24
0631 0699 CPC R9,R25
0632 06AA CPC R10,R26
0633 06BB CPC R11,R27
0634 F028 BCS 0x063A
0635 1A88 SUB R8,R24
0636 0A99 SBC R9,R25
0637 0AAA SBC R10,R26
0638 0ABB SBC R11,R27
0639 9503 INC R16
063A 95EA DEC R30
063B F759 BNE 0x0627
063C F426 BRTC 0x0641
063D 2D08 MOV R16,R8
063E 2D19 MOV R17,R9
063F 2D2A MOV R18,R10
0640 2D3B MOV R19,R11
0641 C013 RJMP long_div_epilog
long_div_prolog:
0642 927A ST R7,-Y
0643 928A ST R8,-Y
0644 929A ST R9,-Y
0645 92AA ST R10,-Y
0646 92BA ST R11,-Y
0647 92CA ST R12,-Y
0648 93EA ST R30,-Y
0649 938A ST R24,-Y
064A 939A ST R25,-Y
064B 93AA ST R26,-Y
064C 93BA ST R27,-Y
064D 858B LDD R24,Y+11
064E 859C LDD R25,Y+12
064F 85AD LDD R26,Y+13
0650 85BE LDD R27,Y+14
0651 2EC3 MOV R12,R19
0652 F00E BRTS 0x0654
0653 26CB EOR R12,R27
0654 9508 RET
long_div_epilog:
0655 FCC7 SBRC R12,7
0656 D017 RCALL neg_R16_R19
0657 91B9 LD R27,Y+
0658 91A9 LD R26,Y+
0659 9199 LD R25,Y+
065A 9189 LD R24,Y+
065B 91E9 LD R30,Y+
065C 90C9 LD R12,Y+
065D 90B9 LD R11,Y+
065E 90A9 LD R10,Y+
065F 9099 LD R9,Y+
0660 9089 LD R8,Y+
0661 9079 LD R7,Y+
0662 9624 ADIW R28,4
0663 9508 RET
tst_R16_R19:
0664 2FE0 MOV R30,R16
0665 2BE1 OR R30,R17
0666 2BE2 OR R30,R18
0667 2BE3 OR R30,R19
0668 9508 RET
tst_R24_R27:
0669 2FE8 MOV R30,R24
066A 2BE9 OR R30,R25
066B 2BEA OR R30,R26
066C 2BEB OR R30,R27
066D 9508 RET
neg_R16_R19:
066E 9500 COM R16
066F 9510 COM R17
0670 9520 COM R18
0671 9530 COM R19
0672 5F0F SUBI R16,0xFF
0673 4F1F SBCI R17,0xFF
0674 4F2F SBCI R18,0xFF
0675 4F3F SBCI R19,0xFF
0676 9508 RET
neg_R24_R27:
0677 9580 COM R24
0678 9590 COM R25
0679 95A0 COM R26
067A 95B0 COM R27
067B 5F8F SUBI R24,0xFF
067C 4F9F SBCI R25,0xFF
067D 4FAF SBCI R26,0xFF
067E 4FBF SBCI R27,0xFF
067F 9508 RET
empy16s:
0680 920A ST R0,-Y
0681 921A ST R1,-Y
0682 938A ST R24,-Y
0683 939A ST R25,-Y
0684 9F02 MUL R16,R18
0685 01C0 MOVW R24,R0
0686 9F12 MUL R17,R18
0687 0D90 ADD R25,R0
0688 9F03 MUL R16,R19
0689 0D90 ADD R25,R0
068A 018C MOVW R16,R24
068B 9199 LD R25,Y+
068C 9189 LD R24,Y+
068D 9019 LD R1,Y+
068E 9009 LD R0,Y+
068F 9508 RET
empy32s:
empy32u:
0690 940E06E5 CALL long_prolog
0692 927F PUSH R7
0693 940E06FE CALL tstzero1
0695 F139 BEQ 0x06BD
0696 2477 CLR R7
0697 940E0704 CALL tstzero2
0699 F419 BNE 0x069D
069A 018C MOVW R16,R24
069B 019D MOVW R18,R26
069C C020 RJMP 0x06BD
069D 9F08 MUL R16,R24
069E 2CB0 MOV R11,R0
069F 2CA1 MOV R10,R1
06A0 9F28 MUL R18,R24
06A1 2C90 MOV R9,R0
06A2 2C81 MOV R8,R1
06A3 9F18 MUL R17,R24
06A4 0CA0 ADD R10,R0
06A5 1C91 ADC R9,R1
06A6 1C87 ADC R8,R7
06A7 9F09 MUL R16,R25
06A8 0CA0 ADD R10,R0
06A9 1C91 ADC R9,R1
06AA 1C87 ADC R8,R7
06AB 9F19 MUL R17,R25
06AC 0C90 ADD R9,R0
06AD 1C81 ADC R8,R1
06AE 9F0A MUL R16,R26
06AF 0C90 ADD R9,R0
06B0 1C81 ADC R8,R1
06B1 9F38 MUL R19,R24
06B2 0C80 ADD R8,R0
06B3 9F29 MUL R18,R25
06B4 0C80 ADD R8,R0
06B5 9F1A MUL R17,R26
06B6 0C80 ADD R8,R0
06B7 9F0B MUL R16,R27
06B8 0C80 ADD R8,R0
06B9 2D0B MOV R16,R11
06BA 2D1A MOV R17,R10
06BB 2D29 MOV R18,R9
06BC 2D38 MOV R19,R8
06BD 907F POP R7
06BE 940C06F3 JMP long_epilog
pop_gset2:
06C0 E0E2 LDI R30,2
06C1 940C06D2 JMP pop
pop_gset3:
06C3 E0E4 LDI R30,4
06C4 940C06D2 JMP pop
push_gset5:
06C6 92FA ST R15,-Y
06C7 92EA ST R14,-Y
push_gset4:
06C8 92DA ST R13,-Y
06C9 92CA ST R12,-Y
push_gset3:
06CA 92BA ST R11,-Y
06CB 92AA ST R10,-Y
push_gset2:
06CC 937A ST R23,-Y
06CD 936A ST R22,-Y
push_gset1:
06CE 935A ST R21,-Y
06CF 934A ST R20,-Y
06D0 9508 RET
pop_gset1:
06D1 E0E1 LDI R30,1
pop:
06D2 9149 LD R20,Y+
06D3 9159 LD R21,Y+
06D4 FDE0 SBRC R30,0
06D5 9508 RET
06D6 9169 LD R22,Y+
06D7 9179 LD R23,Y+
06D8 FDE1 SBRC R30,1
06D9 9508 RET
06DA 90A9 LD R10,Y+
06DB 90B9 LD R11,Y+
06DC FDE2 SBRC R30,2
06DD 9508 RET
06DE 90C9 LD R12,Y+
06DF 90D9 LD R13,Y+
06E0 FDE3 SBRC R30,3
06E1 9508 RET
06E2 90E9 LD R14,Y+
06E3 90F9 LD R15,Y+
06E4 9508 RET
long_prolog:
06E5 928A ST R8,-Y
06E6 929A ST R9,-Y
06E7 92AA ST R10,-Y
06E8 92BA ST R11,-Y
06E9 93EA ST R30,-Y
06EA 938A ST R24,-Y
06EB 939A ST R25,-Y
06EC 93AA ST R26,-Y
06ED 93BA ST R27,-Y
06EE 8589 LDD R24,Y+9
06EF 859A LDD R25,Y+10
06F0 85AB LDD R26,Y+11
06F1 85BC LDD R27,Y+12
06F2 9508 RET
long_epilog:
06F3 91B9 LD R27,Y+
06F4 91A9 LD R26,Y+
06F5 9199 LD R25,Y+
06F6 9189 LD R24,Y+
06F7 91E9 LD R30,Y+
06F8 90B9 LD R11,Y+
06F9 90A9 LD R10,Y+
06FA 9099 LD R9,Y+
06FB 9089 LD R8,Y+
06FC 9624 ADIW R28,4
06FD 9508 RET
tstzero1:
06FE 27EE CLR R30
06FF 2BE0 OR R30,R16
0700 2BE1 OR R30,R17
0701 2BE2 OR R30,R18
0702 2BE3 OR R30,R19
0703 9508 RET
tstzero2:
0704 27EE CLR R30
0705 2BE8 OR R30,R24
0706 2BE9 OR R30,R25
0707 2BEA OR R30,R26
0708 2BEB OR R30,R27
0709 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -