📄 hzmmi.lis
字号:
0474 8A87 std y+10,R24
0476 .dbline 342
; if(*str==0) break;
0476 FA01 movw R30,R20
0478 2080 ldd R2,z+0
047A 2220 tst R2
047C 09F4 brne L76
047E .dbline 342
047E 0CC1 xjmp L59
0480 L76:
0480 .dbline 343
; w=(*str++)-161;
0480 1A01 movw R2,R20
0482 C101 movw R24,R2
0484 0196 adiw R24,1
0486 AC01 movw R20,R24
0488 F101 movw R30,R2
048A 8081 ldd R24,z+0
048C 815A subi R24,161
048E A82E mov R10,R24
0490 .dbline 344
; if(q<=3) q--;
0490 83E0 ldi R24,3
0492 0A84 ldd R0,y+10
0494 8015 cp R24,R0
0496 18F0 brlo L78
0498 .dbline 344
0498 0A94 dec R0
049A 0A86 std y+10,R0
049C 09C0 xjmp L79
049E L78:
049E .dbline 345
; else if(q==6) q-=3;
049E 8A85 ldd R24,y+10
04A0 8630 cpi R24,6
04A2 19F4 brne L80
04A4 .dbline 345
04A4 8350 subi R24,3
04A6 8A87 std y+10,R24
04A8 03C0 xjmp L81
04AA L80:
04AA .dbline 346
; else q-=12;
04AA 8A85 ldd R24,y+10
04AC 8C50 subi R24,12
04AE 8A87 std y+10,R24
04B0 L81:
04B0 L79:
04B0 .dbline 348
; // zk=q;
; zk=(q*94l+w)*32l+0x100l+0x800l+0x1000l;
04B0 2A84 ldd R2,y+10
04B2 3324 clr R3
04B4 4424 clr R4
04B6 5524 clr R5
04B8 00E0 ldi R16,<L82
04BA 10E0 ldi R17,>L82
04BC 0E940000 xcall lpm32
04C0 5A92 st -y,R5
04C2 4A92 st -y,R4
04C4 3A92 st -y,R3
04C6 2A92 st -y,R2
04C8 0E940000 xcall mpy32s
04CC 1801 movw R2,R16
04CE 2901 movw R4,R18
04D0 6A2C mov R6,R10
04D2 7724 clr R7
04D4 8824 clr R8
04D6 9924 clr R9
04D8 260C add R2,R6
04DA 371C adc R3,R7
04DC 481C adc R4,R8
04DE 591C adc R5,R9
04E0 85E0 ldi R24,5
04E2 90E0 ldi R25,0
04E4 8A93 st -y,R24
04E6 8101 movw R16,R2
04E8 9201 movw R18,R4
04EA 0E940000 xcall lsl32
04EE 1801 movw R2,R16
04F0 2901 movw R4,R18
04F2 00E0 ldi R16,<L67
04F4 10E0 ldi R17,>L67
04F6 0E940000 xcall lpm32
04FA 200E add R2,R16
04FC 311E adc R3,R17
04FE 421E adc R4,R18
0500 531E adc R5,R19
0502 00E0 ldi R16,<L68
0504 10E0 ldi R17,>L68
0506 0E940000 xcall lpm32
050A 200E add R2,R16
050C 311E adc R3,R17
050E 421E adc R4,R18
0510 531E adc R5,R19
0512 00E0 ldi R16,<L83
0514 10E0 ldi R17,>L83
0516 0E940000 xcall lpm32
051A 200E add R2,R16
051C 311E adc R3,R17
051E 421E adc R4,R18
0520 531E adc R5,R19
0522 FE01 movw R30,R28
0524 2082 std z+0,R2
0526 3182 std z+1,R3
0528 4282 std z+2,R4
052A 5382 std z+3,R5
052C .dbline 349
; lib_addr.l=zk<<2;
052C 82E0 ldi R24,2
052E 90E0 ldi R25,0
0530 8A93 st -y,R24
0532 8101 movw R16,R2
0534 9201 movw R18,R4
0536 0E940000 xcall lsl32
053A 10938400 sts _lib_addr+1,R17
053E 00938300 sts _lib_addr,R16
0542 30938600 sts _lib_addr+2+1,R19
0546 20938500 sts _lib_addr+2,R18
054A .dbline 350
; PORTF=lib_addr.bytes.a2 & 0x0f;
054A 80918500 lds R24,_lib_addr+2
054E 8F70 andi R24,15
0550 80936200 sts 98,R24
0554 .dbline 351
; aa=(zk & 0x3fff) | 0xc000;
0554 00E0 ldi R16,<L85
0556 10E0 ldi R17,>L85
0558 0E940000 xcall lpm16
055C FE01 movw R30,R28
055E 2080 ldd R2,z+0
0560 3180 ldd R3,z+1
0562 2022 and R2,R16
0564 3122 and R3,R17
0566 00E0 ldi R16,<L86
0568 10E0 ldi R17,>L86
056A 0E940000 xcall lpm16
056E 202A or R2,R16
0570 312A or R3,R17
0572 2C82 std y+4,R2
0574 3D82 std y+5,R3
0576 .dbline 352
; pt=(byte *)aa;
0576 2B86 std y+11,R2
0578 3C86 std y+12,R3
057A .dbline 355
;
; //汉字定位,行
; address1=lrow;
057A 2E80 ldd R2,y+6
057C 3F80 ldd R3,y+7
057E 2886 std y+8,R2
0580 3986 std y+9,R3
0582 .dbline 356
; address1=DIS_LEN*address1+lcol/8;
0582 28E0 ldi R18,8
0584 30E0 ldi R19,0
0586 8B01 movw R16,R22
0588 0E940000 xcall div16s
058C 1801 movw R2,R16
058E 25E0 ldi R18,5
0590 30E0 ldi R19,0
0592 0885 ldd R16,y+8
0594 1985 ldd R17,y+9
0596 0E940000 xcall lsl16
059A 2801 movw R4,R16
059C 420C add R4,R2
059E 531C adc R5,R3
05A0 4886 std y+8,R4
05A2 5986 std y+9,R5
05A4 .dbline 358
;
; if(lcol<145)
05A4 6139 cpi R22,145
05A6 E0E0 ldi R30,0
05A8 7E07 cpc R23,R30
05AA 0CF0 brlt X5
05AC 38C0 xjmp L87
05AE X5:
05AE .dbline 359
; {
05AE .dbline 360
; for(i=0;i<16;i++)
05AE EE24 clr R14
05B0 31C0 xjmp L92
05B2 L89:
05B2 .dbline 361
05B2 .dbline 362
05B2 20E0 ldi R18,256
05B4 31E0 ldi R19,1
05B6 0885 ldd R16,y+8
05B8 1985 ldd R17,y+9
05BA 0E940000 xcall div16s
05BE 0A87 std y+10,R16
05C0 .dbline 363
05C0 20E0 ldi R18,256
05C2 31E0 ldi R19,1
05C4 0885 ldd R16,y+8
05C6 1985 ldd R17,y+9
05C8 0E940000 xcall mod16s
05CC 5801 movw R10,R16
05CE .dbline 364
05CE 0A2D mov R16,R10
05D0 13DE xcall _write_data
05D2 .dbline 365
05D2 0A85 ldd R16,y+10
05D4 11DE xcall _write_data
05D6 .dbline 366
05D6 04E2 ldi R16,36
05D8 FADD xcall _write_order
05DA .dbline 367
05DA EB85 ldd R30,y+11
05DC FC85 ldd R31,y+12
05DE C080 ldd R12,z+0
05E0 .dbline 368
05E0 0C2D mov R16,R12
05E2 0ADE xcall _write_data
05E4 .dbline 369
05E4 8B85 ldd R24,y+11
05E6 9C85 ldd R25,y+12
05E8 0196 adiw R24,1
05EA 8B87 std y+11,R24
05EC 9C87 std y+12,R25
05EE .dbline 370
05EE 00EC ldi R16,192
05F0 EEDD xcall _write_order
05F2 .dbline 371
05F2 EB85 ldd R30,y+11
05F4 FC85 ldd R31,y+12
05F6 0081 ldd R16,z+0
05F8 FFDD xcall _write_data
05FA .dbline 372
05FA 8B85 ldd R24,y+11
05FC 9C85 ldd R25,y+12
05FE 0196 adiw R24,1
0600 8B87 std y+11,R24
0602 9C87 std y+12,R25
0604 .dbline 373
0604 04EC ldi R16,196
0606 E3DD xcall _write_order
0608 .dbline 374
0608 8885 ldd R24,y+8
060A 9985 ldd R25,y+9
060C 8096 adiw R24,32
060E 8887 std y+8,R24
0610 9987 std y+9,R25
0612 .dbline 375
0612 L90:
0612 .dbline 360
0612 E394 inc R14
0614 L92:
0614 .dbline 360
0614 8E2D mov R24,R14
0616 8031 cpi R24,16
0618 08F4 brsh X6
061A CBCF xjmp L89
061C X6:
061C .dbline 376
; {
; q=address1/0x100; //地址高位
; w=address1%0x100; //地址低位
; write_data(w); //送低地址
; write_data(q); //送高地址
; write_order(0x24); //设置显示RAM地址
; dis_code=*pt;
; write_data(dis_code);
; pt++;
; write_order(0x0c0); //设置一次写数据指令代码
; write_data(*pt);
; pt++;
; write_order(0x0c4); //设置一次写数据指令代码
; address1=address1+DIS_LEN; //地址调整到下一行
; }
; }
061C 2BC0 xjmp L88
061E L87:
061E .dbline 378
; else
; { //如果本行只剩下半个字的位置,则将这个位置填空格
061E .dbline 379
; for(i=0;i<16;i++)
061E EE24 clr R14
0620 22C0 xjmp L96
0622 L93:
0622 .dbline 380
0622 .dbline 381
0622 20E0 ldi R18,256
0624 31E0 ldi R19,1
0626 0885 ldd R16,y+8
0628 1985 ldd R17,y+9
062A 0E940000 xcall div16s
062E 0A87 std y+10,R16
0630 .dbline 382
0630 20E0 ldi R18,256
0632 31E0 ldi R19,1
0634 0885 ldd R16,y+8
0636 1985 ldd R17,y+9
0638 0E940000 xcall mod16s
063C 5801 movw R10,R16
063E .dbline 384
063E 0A2D mov R16,R10
0640 DBDD xcall _write_data
0642 .dbline 385
0642 0A85 ldd R16,y+10
0644 D9DD xcall _write_data
0646 .dbline 386
0646 04E2 ldi R16,36
0648 C2DD xcall _write_order
064A .dbline 388
064A 0027 clr R16
064C D5DD xcall _write_data
064E .dbline 389
064E 00EC ldi R16,192
0650 BEDD xcall _write_order
0652
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -