📄 hzmmi.lst
字号:
(0440) address1=address1+START_ADDRESS; //+图形地址偏移量
(0441) for(i=0;i<8;i++){
0478 2400 CLR R0
0479 8609 STD R0,9+Y
047A C024 RJMP 0x049F
(0442) q=address1/0x100; //地址高位
047B E020 LDI R18,0
047C E031 LDI R19,1
047D 810E LDD R16,6+Y
047E 811F LDD R17,7+Y
047F 940E0537 CALL div16s
0481 8708 STD R16,8+Y
(0443) w=address1%0x100; //地址低位
0482 E020 LDI R18,0
0483 E031 LDI R19,1
0484 810E LDD R16,6+Y
0485 811F LDD R17,7+Y
0486 940E0535 CALL mod16s
0488 0158 MOVW R10,R16
(0444)
(0445) write_data(w); //送低地址
0489 2D0A MOV R16,R10
048A DD10 RCALL _write_data
(0446) write_data(q); //送高地址
048B 8508 LDD R16,8+Y
048C DD0E RCALL _write_data
(0447) write_order(0x24); //设置显示RAM地址
048D E204 LDI R16,0x24
048E DCF7 RCALL _write_order
(0448) write_data(*pt);
048F 01F7 MOVW R30,R14
0490 8100 LDD R16,0+Z
0491 DD09 RCALL _write_data
(0449) pt++;
0492 01C7 MOVW R24,R14
0493 9601 ADIW R24,1
0494 017C MOVW R14,R24
(0450) write_order(0x0c0); //设置一次写数据指令代码
0495 EC00 LDI R16,0xC0
0496 DCEF RCALL _write_order
(0451) address1=address1+DIS_LEN; //地址调整到下一行
0497 818E LDD R24,6+Y
0498 819F LDD R25,7+Y
0499 9680 ADIW R24,0x20
049A 838E STD R24,6+Y
049B 839F STD R25,7+Y
(0452) }
049C 8409 LDD R0,9+Y
049D 9403 INC R0
049E 8609 STD R0,9+Y
049F 8589 LDD R24,9+Y
04A0 3088 CPI R24,0x8
04A1 F2C8 BCS 0x047B
(0453) lcol=lcol+8;
04A2 5F68 SUBI R22,0xF8
04A3 4F7F SBCI R23,0xFF
(0454) if(lcol>=160)
04A4 3A60 CPI R22,0xA0
04A5 E0E0 LDI R30,0
04A6 077E CPC R23,R30
04A7 F03C BLT 0x04AF
(0455) {
(0456) lrow+=16;
04A8 818C LDD R24,4+Y
04A9 819D LDD R25,5+Y
04AA 9640 ADIW R24,0x10
04AB 838C STD R24,4+Y
04AC 839D STD R25,5+Y
(0457) lcol=0;
04AD 2766 CLR R22
04AE 2777 CLR R23
(0458) }
(0459) }
04AF 01FA MOVW R30,R20
04B0 8020 LDD R2,0+Z
04B1 2022 TST R2
04B2 F009 BEQ 0x04B4
04B3 CF58 RJMP 0x040C
(0460) }
04B4 962A ADIW R28,0xA
04B5 940E057C CALL pop_gset5
04B7 9508 RET
_mediacy_hz:
i --> R22
str --> R10
row --> R20
04B8 940E056D CALL push_gset3
04BA 0159 MOVW R10,R18
04BB 2F40 MOV R20,R16
04BC 9722 SBIW R28,2
(0461)
(0462)
(0463) //居中显示汉字串
(0464) void mediacy_hz(byte row,byte* str)
(0465) {
(0466) byte i;
(0467) i=strlen(str);
04BD 0185 MOVW R16,R10
04BE 940E057F CALL _strlen
04C0 0118 MOVW R2,R16
04C1 2D62 MOV R22,R2
(0468) if(i>=20)
04C2 3164 CPI R22,0x14
04C3 F030 BCS 0x04CA
(0469) str_hz(row,0,str);
04C4 82A8 STD R10,0+Y
04C5 82B9 STD R11,1+Y
04C6 2722 CLR R18
04C7 2F04 MOV R16,R20
04C8 DD3E RCALL _str_hz
04C9 C00A RJMP 0x04D4
(0470) else
(0471) str_hz(row,10-i/2,str);
04CA 82A8 STD R10,0+Y
04CB 82B9 STD R11,1+Y
04CC E012 LDI R17,2
04CD 2F06 MOV R16,R22
04CE 940E050A CALL div8s
04D0 E02A LDI R18,0xA
04D1 1B20 SUB R18,R16
04D2 2F04 MOV R16,R20
04D3 DD33 RCALL _str_hz
(0472) }
04D4 9622 ADIW R28,2
04D5 940E0579 CALL pop_gset3
04D7 9508 RET
_dexter_hz:
i --> R22
str --> R10
row --> R20
04D8 940E056D CALL push_gset3
04DA 0159 MOVW R10,R18
04DB 2F40 MOV R20,R16
04DC 9722 SBIW R28,2
(0473)
(0474) //居右显示汉字串
(0475) void dexter_hz(byte row,byte* str)
(0476) {
(0477) byte i;
(0478) i=strlen(str);
04DD 0185 MOVW R16,R10
04DE 940E057F CALL _strlen
04E0 0118 MOVW R2,R16
04E1 2D62 MOV R22,R2
(0479) if(i>=20)
04E2 3164 CPI R22,0x14
04E3 F030 BCS 0x04EA
(0480) str_hz(row,0,str);
04E4 82A8 STD R10,0+Y
04E5 82B9 STD R11,1+Y
04E6 2722 CLR R18
04E7 2F04 MOV R16,R20
04E8 DD1E RCALL _str_hz
04E9 C006 RJMP 0x04F0
(0481) else
(0482) str_hz(row,20-i,str);
04EA 82A8 STD R10,0+Y
04EB 82B9 STD R11,1+Y
04EC E124 LDI R18,0x14
04ED 1B26 SUB R18,R22
04EE 2F04 MOV R16,R20
04EF DD17 RCALL _str_hz
(0483) }
FILE: <library>
04F0 9622 ADIW R28,2
04F1 940E0579 CALL pop_gset3
04F3 9508 RET
mod8u:
04F4 9468 BSET 6
04F5 C001 RJMP xdiv8u
div8u:
04F6 94E8 BCLR 6
xdiv8u:
04F7 932A ST R18,-Y
04F8 92FA ST R15,-Y
04F9 24FF CLR R15
04FA E028 LDI R18,0x8
04FB 0F00 LSL R16
04FC 1CFF ROL R15
04FD 16F1 CP R15,R17
04FE F010 BCS 0x0501
04FF 1AF1 SUB R15,R17
0500 9503 INC R16
0501 952A DEC R18
0502 F7C1 BNE 0x04FB
0503 F40E BRTC 0x0505
0504 2D0F MOV R16,R15
0505 90F9 LD R15,Y+
0506 9129 LD R18,Y+
0507 9508 RET
mod8s:
0508 9468 BSET 6
0509 C001 RJMP 0x050B
div8s:
050A 94E8 BCLR 6
050B 92EA ST R14,-Y
050C 2EE0 MOV R14,R16
050D 26E1 EOR R14,R17
050E FD07 SBRC R16,7
050F 9501 NEG R16
0510 FD17 SBRC R17,7
0511 9511 NEG R17
0512 940E04F7 CALL xdiv8u
0514 F016 BRTS 0x0517
0515 FCE7 SBRC R14,7
0516 9501 NEG R16
0517 90E9 LD R14,Y+
0518 9508 RET
mod16u:
0519 9468 BSET 6
051A C001 RJMP xdiv16u
div16u:
051B 94E8 BCLR 6
xdiv16u:
051C 92EA ST R14,-Y
051D 92FA ST R15,-Y
051E 938A ST R24,-Y
051F 24EE CLR R14
0520 24FF CLR R15
0521 E180 LDI R24,0x10
0522 0F00 LSL R16
0523 1F11 ROL R17
0524 1CEE ROL R14
0525 1CFF ROL R15
0526 16E2 CP R14,R18
0527 06F3 CPC R15,R19
0528 F018 BCS 0x052C
0529 1AE2 SUB R14,R18
052A 0AF3 SBC R15,R19
052B 9503 INC R16
052C 958A DEC R24
052D F7A1 BNE 0x0522
052E F416 BRTC 0x0531
052F 2D0E MOV R16,R14
0530 2D1F MOV R17,R15
0531 9189 LD R24,Y+
0532 90F9 LD R15,Y+
0533 90E9 LD R14,Y+
0534 9508 RET
mod16s:
0535 9468 BSET 6
0536 C001 RJMP 0x0538
div16s:
0537 94E8 BCLR 6
0538 92DA ST R13,-Y
0539 2ED1 MOV R13,R17
053A 26D3 EOR R13,R19
053B FF17 SBRS R17,7
053C C004 RJMP 0x0541
053D 9510 COM R17
053E 9500 COM R16
053F 5F0F SUBI R16,0xFF
0540 4F1F SBCI R17,0xFF
0541 FF37 SBRS R19,7
0542 C004 RJMP 0x0547
0543 9530 COM R19
0544 9520 COM R18
0545 5F2F SUBI R18,0xFF
0546 4F3F SBCI R19,0xFF
0547 940E051C CALL xdiv16u
0549 F036 BRTS 0x0550
054A FED7 SBRS R13,7
054B C004 RJMP 0x0550
054C 9510 COM R17
054D 9500 COM R16
054E 5F0F SUBI R16,0xFF
054F 4F1F SBCI R17,0xFF
0550 90D9 LD R13,Y+
0551 9508 RET
push_gset1:
0552 935A ST R21,-Y
0553 934A ST R20,-Y
0554 9508 RET
pop_gset1:
0555 E0E1 LDI R30,1
pop:
0556 9149 LD R20,Y+
0557 9159 LD R21,Y+
0558 FDE0 SBRC R30,0
0559 9508 RET
055A 9169 LD R22,Y+
055B 9179 LD R23,Y+
055C FDE1 SBRC R30,1
055D 9508 RET
055E 90A9 LD R10,Y+
055F 90B9 LD R11,Y+
0560 FDE2 SBRC R30,2
0561 9508 RET
0562 90C9 LD R12,Y+
0563 90D9 LD R13,Y+
0564 FDE3 SBRC R30,3
0565 9508 RET
0566 90E9 LD R14,Y+
0567 90F9 LD R15,Y+
0568 9508 RET
push_gset2:
0569 937A ST R23,-Y
056A 936A ST R22,-Y
056B 940C0552 JMP push_gset1
push_gset3:
056D 92BA ST R11,-Y
056E 92AA ST R10,-Y
056F 940C0569 JMP push_gset2
push_gset4:
0571 92DA ST R13,-Y
0572 92CA ST R12,-Y
0573 940C056D JMP push_gset3
push_gset5:
0575 92FA ST R15,-Y
0576 92EA ST R14,-Y
0577 940C0571 JMP push_gset4
pop_gset3:
0579 E0E4 LDI R30,4
057A 940C0556 JMP pop
pop_gset5:
057C 27EE CLR R30
057D 940C0556 JMP pop
_strlen:
057F 2FE0 MOV R30,R16
0580 2FF1 MOV R31,R17
0581 27AA CLR R26
0582 27BB CLR R27
0583 9001 LD R0,Z+
0584 2000 TST R0
0585 F011 BEQ 0x0588
0586 9611 ADIW R26,1
0587 CFFB RJMP 0x0583
0588 2F0A MOV R16,R26
0589 2F1B MOV R17,R27
058A 9508 RET
_strcpy:
058B 2FA0 MOV R26,R16
058C 2FB1 MOV R27,R17
058D 2FE2 MOV R30,R18
058E 2FF3 MOV R31,R19
058F 9001 LD R0,Z+
0590 920D ST R0,X+
0591 2000 TST R0
0592 F7E1 BNE 0x058F
0593 9508 RET
lpm32:
0594 93EA ST R30,-Y
0595 93FA ST R31,-Y
0596 920A ST R0,-Y
0597 2FE0 MOV R30,R16
0598 2FF1 MOV R31,R17
0599 95C8 LPM
059A 2D00 MOV R16,R0
059B 9631 ADIW R30,1
059C 95C8 LPM
059D 2D10 MOV R17,R0
059E 9631 ADIW R30,1
059F 95C8 LPM
05A0 2D20 MOV R18,R0
05A1 9631 ADIW R30,1
05A2 95C8 LPM
05A3 2D30 MOV R19,R0
05A4 9009 LD R0,Y+
05A5 91F9 LD R31,Y+
05A6 91E9 LD R30,Y+
05A7 9508 RET
lsl32:
05A8 920F PUSH R0
05A9 9009 LD R0,Y+
05AA 2000 TST R0
05AB F031 BEQ 0x05B2
05AC 0F00 LSL R16
05AD 1F11 ROL R17
05AE 1F22 ROL R18
05AF 1F33 ROL R19
05B0 940A DEC R0
05B1 CFF8 RJMP 0x05AA
05B2 900F POP R0
05B3 9508 RET
lpm16:
05B4 93EA ST R30,-Y
05B5 93FA ST R31,-Y
05B6 920A ST R0,-Y
05B7 2FE0 MOV R30,R16
05B8 2FF1 MOV R31,R17
05B9 95C8 LPM
05BA 2D00 MOV R16,R0
05BB 9631 ADIW R30,1
05BC 95C8 LPM
05BD 2D10 MOV R17,R0
05BE 9009 LD R0,Y+
05BF 91F9 LD R31,Y+
05C0 91E9 LD R30,Y+
05C1 9508 RET
lsl16:
05C2 2322 TST R18
05C3 F021 BEQ 0x05C8
05C4 0F00 LSL R16
05C5 1F11 ROL R17
05C6 952A DEC R18
05C7 CFFA RJMP lsl16
05C8 9508 RET
long_prolog:
05C9 928A ST R8,-Y
05CA 929A ST R9,-Y
05CB 92AA ST R10,-Y
05CC 92BA ST R11,-Y
05CD 93EA ST R30,-Y
05CE 938A ST R24,-Y
05CF 939A ST R25,-Y
05D0 93AA ST R26,-Y
05D1 93BA ST R27,-Y
05D2 8589 LDD R24,9+Y
05D3 859A LDD R25,10+Y
05D4 85AB LDD R26,11+Y
05D5 85BC LDD R27,12+Y
05D6 9508 RET
long_epilog:
05D7 91B9 LD R27,Y+
05D8 91A9 LD R26,Y+
05D9 9199 LD R25,Y+
05DA 9189 LD R24,Y+
05DB 91E9 LD R30,Y+
05DC 90B9 LD R11,Y+
05DD 90A9 LD R10,Y+
05DE 9099 LD R9,Y+
05DF 9089 LD R8,Y+
05E0 9624 ADIW R28,4
05E1 9508 RET
tstzero1:
05E2 27EE CLR R30
05E3 2BE0 OR R30,R16
05E4 2BE1 OR R30,R17
05E5 2BE2 OR R30,R18
05E6 2BE3 OR R30,R19
05E7 9508 RET
tstzero2:
05E8 27EE CLR R30
05E9 2BE8 OR R30,R24
05EA 2BE9 OR R30,R25
05EB 2BEA OR R30,R26
05EC 2BEB OR R30,R27
05ED 9508 RET
mpy32u:
mpy32s:
05EE 940E05C9 CALL long_prolog
05F0 940E05E2 CALL tstzero1
05F2 F0D9 BEQ 0x060E
05F3 2488 CLR R8
05F4 2499 CLR R9
05F5 24AA CLR R10
05F6 24BB CLR R11
05F7 940E05E8 CALL tstzero2
05F9 F081 BEQ 0x060A
05FA 9536 LSR R19
05FB 9527 ROR R18
05FC 9517 ROR R17
05FD 9507 ROR R16
05FE F420 BCC 0x0603
05FF 0E88 ADD R8,R24
0600 1E99 ADC R9,R25
0601 1EAA ADC R10,R26
0602 1EBB ADC R11,R27
0603 0F88 LSL R24
0604 1F99 ROL R25
0605 1FAA ROL R26
0606 1FBB ROL R27
0607 940E05E2 CALL tstzero1
0609 F781 BNE 0x05FA
060A 2D08 MOV R16,R8
060B 2D19 MOV R17,R9
060C 2D2A MOV R18,R10
060D 2D3B MOV R19,R11
060E 940C05D7 JMP long_epilog
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -