打印

PK 使人进步:HotISP V2.80A传说中的disasm51超级反汇编结语

[复制链接]
楼主: hotpower
手机看帖
扫描二维码
随时随地手机跟帖
81
john_light| | 2011-10-26 19:04 | 只看该作者 回帖奖励 |倒序浏览
批量最后每次固定2或3字节的地址搜索,绝对是散转即指针
hotpower 发表于 2011-10-26 18:04

只能说是疑似,它和相关的代码有关,有可能是(1)两字节的直接地址,也可能是(2)两字节的SJMP/AJMP,也有可能是(3)两字节的相对地址,也可能是(4)两字节的直接地址+一字节的散转条件,也可能是(5)三字节的LJMP。

使用特权

评论回复
82
hotpower|  楼主 | 2011-10-26 19:32 | 只看该作者
俺特殊的编码都可以算出来的。

使用特权

评论回复
83
hotpower|  楼主 | 2011-10-26 22:48 | 只看该作者
不是太好!
反例程里面那几个程序还可以
反我自己的程序出现数据段太多!很多本是程序段的也反成了数据区
有2/3都是数据区,只有1/3是程序
xxdcq 发表于 2011-10-21 10:22


哈哈~~~要批量的~~~

特别注意自动产生的*.def,它非常珍贵~~~

 
$0003 EXTI0
$0188
$048A
-0006 $000A
$000B TIMER0
$0191
$0474
$048B
$04A7
-0644 $0EFC
$0EFD
-000E $0012
$0013 EXTI1
$01B9
$0477
$048E
$04A8
@0F00 DataBuff
-0014 $001A
$001B TIMER1
$0361
$0478
$048F
$04A9
-001C $0022
$0023 SINT
$0362
$047B
$0495
$04AA
$1FFD
-0026 $00FF
$047C
$0498
$04AB
$047D
$0499
$04B4
$047E
$049C
$04B5
$047F
$04B6
$0480
$04B7
$0481
$04B8
$04C1
$04C2
$04C3
$04C4
$04C5
$04CE
$04CF
$04D0
$04D1
$04D2

使用特权

评论回复
84
hotpower|  楼主 | 2011-10-26 22:51 | 只看该作者
新算法自动搜索了真正使用过的中断~~~而非人工指定。

 
;Disasm51 Version 5.10 Copyright (c) 2011,2018 HotPower@126.com
;Binfile_name:[D:\hotispcode\disasm51\bin2a51\gdb1036.bin]
;Binfile_size:[0...1FFFH]
;Compile_size:[0...1FFEH]
$NOMOD51
$INCLUDE(d:\Keil\C51\ASM\REG52.INC)

ORG 0000H
RESET: LJMP L0100
EXTI0: LJMP L03C0
ORG 000BH
TIMER0: LJMP L036E
ORG 0013H
EXTI1: RETI
ORG 001BH
TIMER1: RETI
ORG 0023H
SINT: LJMP L01B9
ORG 0100H
L0100: CLR EA
MOV SP,#028H
CLR 000H
LCALL S011B
LCALL S0183
LCALL S0487
SETB 000H
L0112: MOV 0A6H,#01EH
MOV 0A6H,#0E1H
LJMP L0112
S011B: MOV TMOD,#021H
MOV TH1,#0FFH
MOV TL1,#0FFH
MOV TH0,#0B8H
MOV TL0,#000H
MOV SCON,#050H
MOV PCON,#080H
MOV IP,#003H
SETB IT0
SETB EX0
SETB ET0
CLR EX1
CLR ET1
SETB ES
CLR IE0
CLR TF0
CLR IE1
CLR TF1
CLR TI
CLR RI
SETB RXD
SETB TXD
SETB P1.2
SETB T2EX
SETB T2
SETB P1.3
SETB P1.4
SETB INT1
SETB WR
SETB RD
CLR RS0
CLR RS1
CLR 002H
CLR 003H
SETB 004H
MOV 059H,#032H
MOV 05AH,#005H
MOV 05BH,#001H
SETB 005H
MOV 05DH,#000H
MOV 05EH,#000H
MOV 05FH,#000H
MOV 047H,#000H
SETB EA
RET
S0183: SETB TR0
SETB TR1
RET
L0188: MOV R6,#025H
L018A: MOV R7,#0FAH
L018C: DJNZ R7,$
DJNZ R6,L018A
RET
S0191: MOV R0,#062H
L0193: LCALL S01A0
JB 001H,L019F
MOV @R0,SBUF
INC R0
DJNZ 053H,L0193
L019F: RET
S01A0: MOV 040H,#005H
L01A3: MOV 041H,#064H
L01A6: JNB RI,L01B0
CLR RI
CLR 001H
LJMP L01B8
L01B0: DJNZ 041H,L01A6
DJNZ 040H,L01A3
SETB 001H
L01B8: RET
L01B9: PUSH ACC
PUSH B
PUSH PSW
SETB RS0
SETB RS1
CLR RI
MOV A,SBUF
MOV B,A
MOV 061H,A
MOV 053H,#003H
LCALL S0191
JB 001H,L01EA
MOV R0,#061H
INC R0
MOV A,@R0
ADD A,B
MOV B,A
INC R0
MOV A,@R0
ADD A,B
MOV B,A
INC R0
MOV A,@R0
CJNE A,B,L01EA
LJMP L01F5
L01EA: CLR RI
CLR TI
POP PSW
POP B
POP ACC
RETI
L01F5: MOV A,061H
CJNE A,#010H,L01FD
LJMP L0200
L01FD: LJMP L0289
L0200: MOV 052H,#0FFH
MOV SBUF,#0FFH
LCALL S0423
MOV A,052H
ADD A,#010H
MOV 052H,A
MOV SBUF,#010H
LCALL S0423
MOV 065H,#055H
MOV A,065H
CJNE A,#055H,L0228
MOV 065H,#0AAH
MOV A,065H
CJNE A,#0AAH,L0228
LJMP L024F
L0228: MOV A,052H
ADD A,#021H
MOV 052H,A
MOV SBUF,#021H
LCALL S0423
MOV A,052H
ADD A,#000H
MOV 052H,A
MOV SBUF,#000H
LCALL S0423
MOV A,052H
ADD A,#07FH
MOV 052H,A
MOV SBUF,#07FH
LCALL S0423
LJMP L0273
L024F: MOV A,052H
ADD A,#020H
MOV 052H,A
MOV SBUF,#020H
LCALL S0423
MOV A,052H
ADD A,#000H
MOV 052H,A
MOV SBUF,#000H
LCALL S0423
MOV A,052H
ADD A,#000H
MOV 052H,A
MOV SBUF,#000H
LCALL S0423
L0273: MOV A,052H
ADD A,#0F0H
MOV 052H,A
MOV SBUF,#0F0H
LCALL S0423
MOV A,052H
MOV SBUF,A
LCALL S0423
LJMP L0363
L0289: CJNE A,#016H,L02CF
MOV 052H,#0FFH
MOV SBUF,#0FFH
LCALL S0423
MOV A,052H
ADD A,#016H
MOV 052H,A
MOV SBUF,#016H
LCALL S0423
MOV A,052H
ADD A,#020H
MOV 052H,A
MOV SBUF,#020H
LCALL S0423
MOV A,052H
ADD A,#000H
MOV 052H,A
MOV SBUF,#000H
LCALL S0423
MOV A,052H
ADD A,#0F0H
MOV 052H,A
MOV SBUF,#0F0H
LCALL S0423
MOV A,052H
MOV SBUF,A
LCALL S0423
LJMP L0363
L02CF: CJNE A,#017H,L0312
MOV 052H,#0FFH
MOV SBUF,#0FFH
LCALL S0423
MOV A,052H
ADD A,#017H
MOV 052H,A
MOV SBUF,#017H
LCALL S0423
MOV DPTR,#DataBuff
MOV 053H,#00EH
L02ED: CLR A
MOVC A,@A+DPTR
MOV SBUF,A
ADD A,052H
MOV 052H,A
LCALL S0423
INC DPTR
DJNZ 053H,L02ED
MOV A,052H
ADD A,#0F0H
MOV 052H,A
MOV SBUF,#0F0H
LCALL S0423
MOV A,052H
MOV SBUF,A
LCALL S0423
LJMP L0363
L0312: CJNE A,#012H,L0360
MOV A,062H
MOV 060H,A
MOV A,063H
MOV 05FH,A
MOV 052H,#0FFH
MOV SBUF,#0FFH
LCALL S0423
MOV A,052H
ADD A,#012H
MOV 052H,A
MOV SBUF,#012H
LCALL S0423
MOV A,052H
ADD A,#020H
MOV 052H,A
MOV SBUF,#020H
LCALL S0423
MOV A,052H
ADD A,#000H
MOV 052H,A
MOV SBUF,#000H
LCALL S0423
MOV A,052H
ADD A,#0F0H
MOV 052H,A
MOV SBUF,#0F0H
LCALL S0423
MOV A,052H
MOV SBUF,A
LCALL S0423
LJMP L0363
L0360: NOP
L0361: NOP
L0362: NOP
L0363: CLR RI
CLR TI
POP PSW
POP B
POP ACC
RETI
L036E: PUSH ACC
PUSH B
PUSH PSW
CLR RS0
SETB RS1
JNB 000H,L03B1
DJNZ 059H,L03A2
MOV 059H,#032H
JB INT1,L0391
SETB T0
CLR EX0
CLR ES
CPL T1
SETB 005H
LJMP L03A2
L0391: CLR TI
CLR RI
SETB EX0
SETB ES
JNB 005H,L03A2
CLR T0
SETB T1
CLR 005H
L03A2: DJNZ 05AH,L03B1
MOV 05AH,#005H
CLR 002H
CLR 003H
SETB 004H
MOV 047H,#000H
L03B1: MOV TH0,#0B8H
MOV TL0,#000H
CLR TF0
POP PSW
POP B
POP ACC
RETI
L03C0: PUSH ACC
PUSH B
PUSH PSW
SETB RS0
CLR RS1
JNB 000H,L041A
MOV 05AH,#005H
CLR T1
LCALL S0473
MOV A,05CH
CJNE A,060H,L03DD
LJMP L03DF
L03DD: JC L03EF
L03DF: JNB 004H,L03E9
SETB 002H
CLR 004H
MOV 047H,#004H
L03E9: MOV 05BH,#001H
LJMP L03FA
L03EF: JB 004H,L03FA
JB 002H,L03FA
DJNZ 05BH,L03FA
SETB 003H
L03FA: LCALL S04A4
MOV A,047H
CJNE A,#008H,L0405
LJMP L040C
L0405: INC 047H
MOV A,047H
CJNE A,#008H,L0415
L040C: LCALL S0522
LCALL S05A7
LCALL S0442
L0415: LCALL S0593
SETB T1
L041A: CLR IE0
POP PSW
POP B
POP ACC
RETI
S0423: MOV 040H,#0C8H
L0426: MOV 041H,#0C8H
L0429: JNB TI,L0433
CLR TI
CLR 001H
LJMP L0441
L0433: MOV 0A6H,#01EH
MOV 0A6H,#0E1H
DJNZ 041H,L0429
DJNZ 040H,L0426
SETB 001H
L0441: RET
S0442: CLR ES
MOV 048H,#0FFH
MOV 051H,#0F0H
MOV 053H,#001H
L044D: MOV 052H,#000H
MOV 054H,#00BH
MOV R0,#048H
L0455: MOV SBUF,@R0
LCALL S0423
DJNZ 054H,L0460
LJMP L0469
L0460: MOV A,@R0
ADD A,052H
MOV 052H,A
INC R0
LJMP L0455
L0469: DJNZ 053H,L044D
CLR TI
CLR RI
SETB ES
RET
S0473: NOP
L0474: SETB T2EX
NOP
L0477: NOP
L0478: CLR T2EX
NOP
L047B: NOP
L047C: NOP
L047D: NOP
L047E: NOP
L047F: NOP
L0480: NOP
L0481: SETB P1.2
MOV R7,#014H
L0485: DJNZ R7,$
S0487: CLR T2EX
NOP
L048A: NOP
L048B: CLR P1.2
NOP
L048E: NOP
L048F: MOV R3,#007H
L0491: MOV C,T2
RLC A
NOP
L0495: SETB T2EX
NOP
L0498: NOP
L0499: CLR T2EX
NOP
L049C: DJNZ R3,L0491
MOV C,T2
RLC A
MOV 05CH,A
RET
S04A4: CLR WR
NOP
L04A7: NOP
L04A8: NOP
L04A9: NOP
L04AA: NOP
L04AB: MOV A,P0
ANL A,#03FH
MOV 046H,A
CLR RD
NOP
L04B4: NOP
L04B5: NOP
L04B6: NOP
L04B7: NOP
L04B8: MOV A,P0
ANL A,#03FH
MOV 045H,A
SETB WR
NOP
L04C1: NOP
L04C2: NOP
L04C3: NOP
L04C4: NOP
L04C5: MOV A,P0
ANL A,#03FH
MOV 043H,A
SETB RD
NOP
L04CE: NOP
L04CF: NOP
L04D0: NOP
L04D1: NOP
L04D2: MOV A,P0
ANL A,#03FH
RLC A
RLC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
ANL A,#00FH
MOV 043H,A
MOV A,046H
RLC A
RLC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
ANL A,#00FH
MOV 045H,A
MOV R0,#080H
MOV @R0,043H
INC R0
MOV @R0,044H
INC R0
MOV @R0,045H
INC R0
MOV @R0,046H
RET
S0522: MOV A,#080H
ADD A,#005H
MOV R0,A
MOV A,#080H
ADD A,#007H
MOV R1,A
MOV 054H,#007H
L052F: MOV A,044H
ADD A,@R0
MOV 044H,A
DEC R0
MOV A,043H
ADDC A,@R0
MOV 043H,A
MOV A,046H
ADD A,@R1
MOV 046H,A
DEC R1
MOV A,045H
ADDC A,@R1
MOV 045H,A
MOV A,R0
ADD A,#005H
MOV R0,A
MOV A,R1
ADD A,#005H
MOV R1,A
DJNZ 054H,L052F
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
ANL 043H,#00FH
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
ANL 045H,#00FH
RET
S0593: MOV 054H,#01CH
MOV A,#080H
ADD A,#01FH
MOV R0,A
CLR C
SUBB A,#004H
MOV R1,A
L059F: MOV A,@R1
MOV @R0,A
DEC R0
DEC R1
DJNZ 054H,L059F
RET
S05A7: MOV 049H,#07FH
MOV 04AH,#060H
JNB 003H,L05BC
ORL 04AH,#004H
CLR 003H
SETB 004H
CLR T0
LJMP L05D3
L05BC: JNB 002H,L05CB
ORL 04AH,#001H
CLR 002H
CLR 004H
SETB T0
LJMP L05D3
L05CB: JNB 004H,L05D3
ORL 04AH,#002H
CLR T0
L05D3: JB P1.3,L05E0
MOV A,05DH
JZ L05E9
ORL 04AH,#008H
LJMP L05EB
L05E0: MOV A,05DH
JZ L05EB
DEC 05DH
LJMP L05EB

使用特权

评论回复
85
hotpower|  楼主 | 2011-10-26 22:53 | 只看该作者
这个子程序(S打头的标号)肯定是模拟什么总线协议了~~~
三个NOP以上就暴露了~~~

 
S0473: NOP   
L0474: SETB  T2EX
NOP   
L0477: NOP   
L0478: CLR   T2EX
NOP   
L047B: NOP   
L047C: NOP   
L047D: NOP   
L047E: NOP   
L047F: NOP   
L0480: NOP   
L0481: SETB  P1.2
MOV   R7,#014H
L0485: DJNZ  R7,$
S0487: CLR   T2EX
NOP   
L048A: NOP   
L048B: CLR   P1.2
NOP   
L048E: NOP   
L048F: MOV   R3,#007H
L0491: MOV   C,T2
RLC   A
NOP   
L0495: SETB  T2EX
NOP   
L0498: NOP   
L0499: CLR   T2EX
NOP   
L049C: DJNZ  R3,L0491
MOV   C,T2
RLC   A
MOV   05CH,A
RET   

使用特权

评论回复
86
hotpower|  楼主 | 2011-10-26 23:00 | 只看该作者
若不习惯T2EX为,在disasm51.def里用'*'屏蔽了它(注意修改保存)

*91        T2EX
*90        T2
注意后面的:

!90        P1.0
!91        P1.1
再单次反汇编!!!

S0473:        NOP   
L0474:        SETB  P1.1
        NOP   
L0477:        NOP   
L0478:        CLR   P1.1
        NOP   
L047B:        NOP   
L047C:        NOP   
L047D:        NOP   
L047E:        NOP   
L047F:        NOP   
L0480:        NOP   
L0481:        SETB  P1.2
        MOV   R7,#014H
L0485:        DJNZ  R7,$
S0487:        CLR   P1.1
        NOP   
L048A:        NOP   
L048B:        CLR   P1.2
        NOP   
L048E:        NOP   
L048F:        MOV   R3,#007H
L0491:        MOV   C,P1.0
        RLC   A
        NOP   
L0495:        SETB  P1.1
        NOP   
L0498:        NOP   
L0499:        CLR   P1.1
        NOP   
L049C:        DJNZ  R3,L0491
        MOV   C,P1.0
        RLC   A
        MOV   05CH,A
        RET   

使用特权

评论回复
87
hotpower|  楼主 | 2011-10-26 23:01 | 只看该作者
这种模拟不习惯IO的第二功能的标注

S04A4: CLR WR
NOP
L04A7: NOP
L04A8: NOP
L04A9: NOP
L04AA: NOP
L04AB: MOV A,P0
ANL A,#03FH
MOV 046H,A
CLR RD
NOP
L04B4: NOP
L04B5: NOP
L04B6: NOP
L04B7: NOP
L04B8: MOV A,P0
ANL A,#03FH
MOV 045H,A
SETB WR
NOP
L04C1: NOP
L04C2: NOP
L04C3: NOP
L04C4: NOP
L04C5: MOV A,P0
ANL A,#03FH
MOV 043H,A
SETB RD
NOP
L04CE: NOP
L04CF: NOP
L04D0: NOP
L04D1: NOP
L04D2: MOV A,P0
ANL A,#03FH
RLC A
RLC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
RRC A
MOV 043H,A
MOV A,044H
RRC A
MOV 044H,A
MOV A,043H
ANL A,#00FH
MOV 043H,A
MOV A,046H
RLC A
RLC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
RRC A
MOV 045H,A
MOV A,046H
RRC A
MOV 046H,A
MOV A,045H
ANL A,#00FH
MOV 045H,A
MOV R0,#080H
MOV @R0,043H
INC R0
MOV @R0,044H
INC R0
MOV @R0,045H
INC R0
MOV @R0,046H
RET

使用特权

评论回复
88
hotpower|  楼主 | 2011-10-26 23:07 | 只看该作者
在disasm51.def里用'*'屏蔽了WR,RD(注意修改保存)

*B7        RD
*B6        WR
开放P3.6,.7

!B6        P3.6
!B7        P3.7
单次反汇编后再编译,即手工操作。
可以直接搜索"S04A4:"
S04A4:        CLR   P3.6
        NOP   
L04A7:        NOP   
L04A8:        NOP   
L04A9:        NOP   
L04AA:        NOP   
L04AB:        MOV   A,P0
        ANL   A,#03FH
        MOV   046H,A
        CLR   P3.7
        NOP   
L04B4:        NOP   
L04B5:        NOP   
L04B6:        NOP   
L04B7:        NOP   
L04B8:        MOV   A,P0
        ANL   A,#03FH
        MOV   045H,A
        SETB  P3.6
        NOP   
L04C1:        NOP   
L04C2:        NOP   
L04C3:        NOP   
L04C4:        NOP   
L04C5:        MOV   A,P0
        ANL   A,#03FH
        MOV   043H,A
        SETB  P3.7
        NOP   
L04CE:        NOP   
L04CF:        NOP   
L04D0:        NOP   
L04D1:        NOP   
L04D2:        MOV   A,P0
        ANL   A,#03FH
        RLC   A
        RLC   A
        MOV   044H,A
        MOV   A,043H
        RRC   A
        MOV   043H,A
        MOV   A,044H
        RRC   A
        MOV   044H,A
        MOV   A,043H
        RRC   A
        MOV   043H,A
        MOV   A,044H
        RRC   A
        MOV   044H,A
        MOV   A,043H
        ANL   A,#00FH
        MOV   043H,A
        MOV   A,046H
        RLC   A
        RLC   A
        MOV   046H,A
        MOV   A,045H
        RRC   A
        MOV   045H,A
        MOV   A,046H
        RRC   A
        MOV   046H,A
        MOV   A,045H
        RRC   A
        MOV   045H,A
        MOV   A,046H
        RRC   A
        MOV   046H,A
        MOV   A,045H
        ANL   A,#00FH
        MOV   045H,A
        MOV   R0,#080H
        MOV   @R0,043H
        INC   R0
        MOV   @R0,044H
        INC   R0
        MOV   @R0,045H
        INC   R0
        MOV   @R0,046H
        RET   

使用特权

评论回复
89
Cortex-M0| | 2011-10-27 10:23 | 只看该作者
这么多呀~~~

使用特权

评论回复
90
Cortex-M0| | 2011-10-27 10:23 | 只看该作者
菜农辛苦啦~~~ :victory:

使用特权

评论回复
91
hotpower|  楼主 | 2011-10-28 01:35 | 只看该作者
在向VC移植,全部用C++编写,文件操作用CFile,控制台程序,只能用CString,不过已知足了。

实际搞单片机的用VC编写控制台程序是很好的方法,这就是还有人用BC的原因

使用特权

评论回复
92
xxdcq| | 2011-10-28 08:50 | 只看该作者
看来菜农没有把真玩意放进网上呢!
有保留
我等下载的运行结果不是那样的

使用特权

评论回复
93
hp34401a| | 2011-10-28 09:14 | 只看该作者
顶,记号:PK 使人进步:HotISP V2.80A传说中的disasm51超级反汇编结语

使用特权

评论回复
94
Cortex-M0| | 2011-10-28 09:21 | 只看该作者
看来菜农没有把真玩意放进网上呢!
有保留
我等下载的运行结果不是那样的
xxdcq 发表于 2011-10-28 08:50


给力~~~

菜农的智能算法,能将那些特殊的编码都能算出来~~~

俺特殊的编码都可以算出来的。
hotpower 发表于 2011-10-26 19:32

使用特权

评论回复
95
hotpower|  楼主 | 2011-10-28 09:26 | 只看该作者
93楼冤枉菜农!
2.80A就是这个结果!
关键在操作,俺没时间写说明,在做新的算法,以对付任意捣鬼者。
hotisp和disasm51结合后会比其它51反汇编软件都方便。
何也?因为hotisp平台反汇编后直接调用keil A51进行再编译。
直接给出A51和LST文件,并双击对应入口直接到你要求查看的语句行。
而且hotisp平台可以自动找到keil工程并进入keil平台。
这些是比其它反汇编软件有点优点的。
散转即函数指针几乎无藏身之处!

使用特权

评论回复
96
xxdcq| | 2011-10-28 09:50 | 只看该作者
我也来现现丑!

我用我的反汇编出来的代码

;Made by xiexiaodong 2010.4.16
;Copyright by szyftech 2010.4.16
;www.yofeng.com
;********************************************************
        org 0000h
        ljmp X0100                        ;3
        ljmp X03c0                        ;3
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        ljmp X036e                        ;3
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        reti                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        reti                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        ljmp X01b9                        ;3
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
;********************************************************
X0100:
        clr ea                        ;2
        mov sp,#28h                ;3
        clr 00h                ;2
        lcall X011b                        ;3
        lcall X0183                        ;3
        lcall X0487                        ;3
        setb 00h                ;2
X0112:
        mov 0a6h,#1eh                ;3
        mov 0a6h,#0e1h                ;3
        ljmp X0112                        ;3
;********************************************************
X011b:
        mov tmod,#21h                ;3
        mov th1,#0ffh                ;3
        mov tl1,#0ffh                ;3
        mov th0,#0b8h                ;3
        mov tl0,#00h                ;3
        mov scon,#50h                ;3
        mov pcon,#80h                ;3
        mov ip,#03h                ;3
        setb it0                        ;2
        setb ex0                        ;2
        setb et0                        ;2
        clr ex1                        ;2
        clr et1                        ;2
        setb es                        ;2
        clr ie0                        ;2
        clr tf0                        ;2
        clr ie1                        ;2
        clr tf1                        ;2
        clr ti                        ;2
        clr ri                        ;2
        setb p3.0                        ;2
        setb p3.1                        ;2
        setb p1.2                        ;2
        setb p1.1                        ;2
        setb p1.0                        ;2
        setb p1.3                        ;2
        setb p1.4                        ;2
        setb p3.3                        ;2
        setb p3.6                        ;2
        setb p3.7                        ;2
        clr psw.3                        ;2
        clr psw.4                        ;2
        clr 02h                ;2
        clr 03h                ;2
        setb 04h                ;2
        mov 59h,#32h                ;3
        mov 5ah,#05h                ;3
        mov 5bh,#01h                ;3
        setb 05h                ;2
        mov 5dh,#00h                ;3
        mov 5eh,#00h                ;3
        mov 5fh,#00h                ;3
        mov 47h,#00h                ;3
        setb ea                        ;2
        ret                ;1
;********************************************************
X0183:
        setb tr0                        ;2
        setb tr1                        ;2
        ret                ;1
;********************************************************
X0188:
        db        7eh                ;1
        db        25h                ;1
X018a:
        mov r7,#0fah                ;2
X018c:
        djnz r7,X018c                ;2
        djnz r6,X018a                ;2
        ret                ;1
;********************************************************
X0191:
        mov r0,#62h                        ;2
X0193:
        lcall X01a0                        ;3
        jb 01h,X019f                ;3
        mov @r0,sbuf                        ;2
        inc r0                        ;1
        djnz 53h,X0193                ;3
X019f:
        ret                ;1
;********************************************************
X01a0:
        mov 40h,#05h                ;3
X01a3:
        mov 41h,#64h                ;3
X01a6:
        jnb ri,X01b0                ;3
        clr ri                        ;2
        clr 01h                ;2
        ljmp X01b8                        ;3
X01b0:
        djnz 41h,X01a6                ;3
        djnz 40h,X01a3                ;3
        setb 01h                ;2
X01b8:
        ret                ;1
;********************************************************
X01b9:
        push acc                        ;2
        push b                        ;2
        push psw                        ;2
        setb psw.3                        ;2
        setb psw.4                        ;2
        clr ri                        ;2
        mov a,sbuf                        ;2
        mov b,a                ;2
        mov 61h,a                ;2
        mov 53h,#03h                ;3
        lcall X0191                        ;3
        jb 01h,X01ea                ;3
        mov r0,#61h                        ;2
        inc r0                        ;1
        mov a,@r0                ;1
        add a,b                        ;2
        mov b,a                ;2
        inc r0                        ;1
        mov a,@r0                ;1
        add a,b                        ;2
        mov b,a                ;2
        inc r0                        ;1
        mov a,@r0                ;1
        cjne a,b,X01ea                ;3
        ljmp X01f5                        ;3
X01ea:
        clr ri                        ;2
        clr ti                        ;2
        pop psw                        ;2
        pop b                        ;2
        pop acc                        ;2
        reti                ;1
X01f5:
        mov a,61h                        ;2
        cjne a,#10h,X01fd                ;3
        ljmp X0200                        ;3
X01fd:
        ljmp X0289                        ;3
X0200:
        mov 52h,#0ffh                ;3
        mov sbuf,#0ffh                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#10h                        ;2
        mov 52h,a                ;2
        mov sbuf,#10h                ;3
        lcall X0423                        ;3
        mov 65h,#55h                ;3
        mov a,65h                        ;2
        cjne a,#55h,X0228                ;3
        mov 65h,#0aah                ;3
        mov a,65h                        ;2
        cjne a,#0aah,X0228                ;3
        ljmp X024f                        ;3
X0228:
        mov a,52h                        ;2
        add a,#21h                        ;2
        mov 52h,a                ;2
        mov sbuf,#21h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#00h                ;2
        mov 52h,a                ;2
        mov sbuf,#00h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#7fh                        ;2
        mov 52h,a                ;2
        mov sbuf,#7fh                ;3
        lcall X0423                        ;3
        ljmp X0273                        ;3
X024f:
        mov a,52h                        ;2
        add a,#20h                        ;2
        mov 52h,a                ;2
        mov sbuf,#20h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#00h                ;2
        mov 52h,a                ;2
        mov sbuf,#00h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#00h                ;2
        mov 52h,a                ;2
        mov sbuf,#00h                ;3
        lcall X0423                        ;3
X0273:
        mov a,52h                        ;2
        add a,#0f0h                ;2
        mov 52h,a                ;2
        mov sbuf,#0f0h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        mov sbuf,a                ;2
        lcall X0423                        ;3
        ljmp X0363                        ;3
X0289:
        cjne a,#16h,X02cf                ;3
        mov 52h,#0ffh                ;3
        mov sbuf,#0ffh                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#16h                        ;2
        mov 52h,a                ;2
        mov sbuf,#16h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#20h                        ;2
        mov 52h,a                ;2
        mov sbuf,#20h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#00h                ;2
        mov 52h,a                ;2
        mov sbuf,#00h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#0f0h                ;2
        mov 52h,a                ;2
        mov sbuf,#0f0h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        mov sbuf,a                ;2
        lcall X0423                        ;3
        ljmp X0363                        ;3
X02cf:
        cjne a,#17h,X0312                ;3
        mov 52h,#0ffh                ;3
        mov sbuf,#0ffh                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#17h                        ;2
        mov 52h,a                ;2
        mov sbuf,#17h                ;3
        lcall X0423                        ;3
        mov dptr,#0f00h                ;3
        mov 53h,#0eh                ;3
X02ed:
        clr a                ;1
        movc a,@a+dptr                ;1
        mov sbuf,a                ;2
        add a,52h                        ;2
        mov 52h,a                ;2
        lcall X0423                        ;3
        inc dptr                ;1
        djnz 53h,X02ed                ;3
        mov a,52h                        ;2
        add a,#0f0h                ;2
        mov 52h,a                ;2
        mov sbuf,#0f0h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        mov sbuf,a                ;2
        lcall X0423                        ;3
        ljmp X0363                        ;3
X0312:
        cjne a,#12h,X0360                ;3
        mov a,62h                        ;2
        mov 60h,a                ;2
        mov a,63h                        ;2
        mov 5fh,a                ;2
        mov 52h,#0ffh                ;3
        mov sbuf,#0ffh                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#12h                        ;2
        mov 52h,a                ;2
        mov sbuf,#12h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#20h                        ;2
        mov 52h,a                ;2
        mov sbuf,#20h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#00h                ;2
        mov 52h,a                ;2
        mov sbuf,#00h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        add a,#0f0h                ;2
        mov 52h,a                ;2
        mov sbuf,#0f0h                ;3
        lcall X0423                        ;3
        mov a,52h                        ;2
        mov sbuf,a                ;2
        lcall X0423                        ;3
        ljmp X0363                        ;3
X0360:
        nop                ;1
        nop                ;1
        nop                ;1
X0363:
        clr ri                        ;2
        clr ti                        ;2
        pop psw                        ;2
        pop b                        ;2
        pop acc                        ;2
        reti                ;1
;********************************************************
X036e:
        push acc                        ;2
        push b                        ;2
        push psw                        ;2
        clr psw.3                        ;2
        setb psw.4                        ;2
        jnb 00h,X03b1                ;3
        djnz 59h,X03a2                ;3
        mov 59h,#32h                ;3
        jb p3.3,X0391                ;3
        setb p3.4                        ;2
        clr ex0                        ;2
        clr es                        ;2
        cpl p3.5                        ;2
        setb 05h                ;2
        ljmp X03a2                        ;3
X0391:
        clr ti                        ;2
        clr ri                        ;2
        setb ex0                        ;2
        setb es                        ;2
        jnb 05h,X03a2                ;3
        clr p3.4                        ;2
        setb p3.5                        ;2
        clr 05h                ;2
X03a2:
        djnz 5ah,X03b1                ;3
        mov 5ah,#05h                ;3
        clr 02h                ;2
        clr 03h                ;2
        setb 04h                ;2
        mov 47h,#00h                ;3
X03b1:
        mov th0,#0b8h                ;3
        mov tl0,#00h                ;3
        clr tf0                        ;2
        pop psw                        ;2
        pop b                        ;2
        pop acc                        ;2
        reti                ;1
;********************************************************
X03c0:
        push acc                        ;2
        push b                        ;2
        push psw                        ;2
        setb psw.3                        ;2
        clr psw.4                        ;2
        jnb 00h,X041a                ;3
        mov 5ah,#05h                ;3
        clr p3.5                        ;2
        lcall X0473                        ;3
        mov a,5ch                        ;2
        cjne a,60h,X03dd                ;3
        ljmp X03df                        ;3
X03dd:
        jc X03ef                ;2
X03df:
        jnb 04h,X03e9                ;3
        setb 02h                ;2
        clr 04h                ;2
        mov 47h,#04h                ;3
X03e9:
        mov 5bh,#01h                ;3
        ljmp X03fa                        ;3
X03ef:
        jb 04h,X03fa                ;3
        jb 02h,X03fa                ;3
        djnz 5bh,X03fa                ;3
        setb 03h                ;2
X03fa:
        lcall X04a4                        ;3
        mov a,47h                        ;2
        cjne a,#08h,X0405                ;3
        ljmp X040c                        ;3
X0405:
        inc 47h                        ;2
        mov a,47h                        ;2
        cjne a,#08h,X0415                ;3
X040c:
        lcall X0522                        ;3
        lcall X05a7                        ;3
        lcall X0442                        ;3
X0415:
        lcall X0593                        ;3
        setb p3.5                        ;2
X041a:
        clr ie0                        ;2
        pop psw                        ;2
        pop b                        ;2
        pop acc                        ;2
        reti                ;1
;********************************************************
X0423:
        mov 40h,#0c8h                ;3
X0426:
        mov 41h,#0c8h                ;3
X0429:
        jnb ti,X0433                ;3
        clr ti                        ;2
        clr 01h                ;2
        ljmp X0441                        ;3
X0433:
        mov 0a6h,#1eh                ;3
        mov 0a6h,#0e1h                ;3
        djnz 41h,X0429                ;3
        djnz 40h,X0426                ;3
        setb 01h                ;2
X0441:
        ret                ;1
;********************************************************
X0442:
        clr es                        ;2
        mov 48h,#0ffh                ;3
        mov 51h,#0f0h                ;3
        mov 53h,#01h                ;3
X044d:
        mov 52h,#00h                ;3
        mov 54h,#0bh                ;3
        mov r0,#48h                        ;2
X0455:
        mov sbuf,@r0                ;2
        lcall X0423                        ;3
        djnz 54h,X0460                ;3
        ljmp X0469                        ;3
X0460:
        mov a,@r0                ;1
        add a,52h                        ;2
        mov 52h,a                ;2
        inc r0                        ;1
        ljmp X0455                        ;3
X0469:
        djnz 53h,X044d                ;3
        clr ti                        ;2
        clr ri                        ;2
        setb es                        ;2
        ret                ;1
;********************************************************
X0473:
        nop                ;1
        setb p1.1                        ;2
        nop                ;1
        nop                ;1
        clr p1.1                        ;2
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        setb p1.2                        ;2
        mov r7,#14h                        ;2
X0485:
        djnz r7,X0485                ;2
;********************************************************
X0487:
        clr p1.1                        ;2
        nop                ;1
        nop                ;1
        clr p1.2                        ;2
        nop                ;1
        nop                ;1
        mov r3,#07h                ;2
X0491:
        mov c,p1.0                        ;2
        rlc a                ;1
        nop                ;1
        setb p1.1                        ;2
        nop                ;1
        nop                ;1
        clr p1.1                        ;2
        nop                ;1
        djnz r3,X0491                ;2
        mov c,p1.0                        ;2
        rlc a                ;1
        mov 5ch,a                ;2
        ret                ;1
;********************************************************
X04a4:
        clr p3.6                        ;2
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        mov a,p0                        ;2
        anl a,#3fh                        ;2
        mov 46h,a                ;2
        clr p3.7                        ;2
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        mov a,p0                        ;2
        anl a,#3fh                        ;2
        mov 45h,a                ;2
        setb p3.6                        ;2
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        mov a,p0                        ;2
        anl a,#3fh                        ;2
        mov 43h,a                ;2
        setb p3.7                        ;2
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        nop                ;1
        mov a,p0                        ;2
        anl a,#3fh                        ;2
        rlc a                ;1
        rlc a                ;1
        mov 44h,a                ;2
        mov a,43h                        ;2
        rrc a                ;1
        mov 43h,a                ;2
        mov a,44h                        ;2
        rrc a                ;1
        mov 44h,a                ;2
        mov a,43h                        ;2
        rrc a                ;1
        mov 43h,a                ;2
        mov a,44h                        ;2
        rrc a                ;1
        mov 44h,a                ;2
        mov a,43h                        ;2
        anl a,#0fh                ;2
        mov 43h,a                ;2
        mov a,46h                        ;2
        rlc a                ;1
        rlc a                ;1
        mov 46h,a                ;2
        mov a,45h                        ;2
        rrc a                ;1
        mov 45h,a                ;2
        mov a,46h                        ;2
        rrc a                ;1
        mov 46h,a                ;2
        mov a,45h                        ;2
        rrc a                ;1
        mov 45h,a                ;2
        mov a,46h                        ;2
        rrc a                ;1
        mov 46h,a                ;2
        mov a,45h                        ;2
        anl a,#0fh                ;2
        mov 45h,a                ;2
        mov r0,#80h                        ;2
        mov @r0,43h                        ;2
        inc r0                        ;1
        mov @r0,44h                        ;2
        inc r0                        ;1
        mov @r0,45h                        ;2
        inc r0                        ;1
        mov @r0,46h                        ;2
        ret                ;1
;********************************************************
X0522:
        mov a,#80h                        ;2
        add a,#05h                ;2
        mov r0,a                ;1
        mov a,#80h                        ;2
        add a,#07h                ;2
        mov r1,a                ;1
        mov 54h,#07h                ;3
X052f:
        mov a,44h                        ;2
        add a,@r0                ;1
        mov 44h,a                ;2
        dec r0                ;1
        mov a,43h                        ;2
        addc a,@r0                ;1
        mov 43h,a                ;2
        mov a,46h                        ;2
        add a,@r1                ;1
        mov 46h,a                ;2
        dec r1                ;1
        mov a,45h                        ;2
        addc a,@r1                ;1
        mov 45h,a                ;2
        mov a,r0                ;1
        add a,#05h                ;2
        mov r0,a                ;1
        mov a,r1                ;1
        add a,#05h                ;2
        mov r1,a                ;1
        djnz 54h,X052f                ;3
        mov a,43h                        ;2
        rrc a                ;1
        mov 43h,a                ;2
        mov a,44h                        ;2
        rrc a                ;1
        mov 44h,a                ;2
        mov a,43h                        ;2
        rrc a                ;1
        mov 43h,a                ;2
        mov a,44h                        ;2
        rrc a                ;1
        mov 44h,a                ;2
        mov a,43h                        ;2
        rrc a                ;1
        mov 43h,a                ;2
        mov a,44h                        ;2
        rrc a                ;1
        mov 44h,a                ;2
        anl 43h,#0fh                ;3
        mov a,45h                        ;2
        rrc a                ;1
        mov 45h,a                ;2
        mov a,46h                        ;2
        rrc a                ;1
        mov 46h,a                ;2
        mov a,45h                        ;2
        rrc a                ;1
        mov 45h,a                ;2
        mov a,46h                        ;2
        rrc a                ;1
        mov 46h,a                ;2
        mov a,45h                        ;2
        rrc a                ;1
        mov 45h,a                ;2
        mov a,46h                        ;2
        rrc a                ;1
        mov 46h,a                ;2
        anl 45h,#0fh                ;3
        ret                ;1
;********************************************************
X0593:
        mov 54h,#1ch                ;3
        mov a,#80h                        ;2
        add a,#1fh                        ;2
        mov r0,a                ;1
        clr c                ;1
        subb a,#04h                ;2
        mov r1,a                ;1
X059f:
        mov a,@r1                ;1
        mov @r0,a                ;1
        dec r0                ;1
        dec r1                ;1
        djnz 54h,X059f                ;3
        ret                ;1
;********************************************************
X05a7:
        mov 49h,#7fh                ;3
        mov 4ah,#60h                ;3
        jnb 03h,X05bc                ;3
        orl 4ah,#04h                ;3
        clr 03h                ;2
        setb 04h                ;2
        clr p3.4                        ;2
        ljmp X05d3                        ;3
X05bc:
        jnb 02h,X05cb                ;3
        orl 4ah,#01h                ;3
        clr 02h                ;2
        clr 04h                ;2
        setb p3.4                        ;2
        ljmp X05d3                        ;3
X05cb:
        jnb 04h,X05d3                ;3
        orl 4ah,#02h                ;3
        clr p3.4                        ;2
X05d3:
        jb p1.3,X05e0                ;3
        mov a,5dh                        ;2
        jz X05e9                ;2
        orl 4ah,#08h                ;3
        ljmp X05eb                        ;3
X05e0:
        mov a,5dh                        ;2
        jz X05eb                ;2
        dec 5dh                        ;2
        ljmp X05eb                        ;3
X05e9:
        inc 5dh                        ;2
X05eb:
        jb p1.4,X05f8                ;3
        mov a,5eh                        ;2
        jz X0601                ;2
        orl 4ah,#10h                ;3
        ljmp X0603                        ;3
X05f8:
        mov a,5eh                        ;2
        jz X0603                ;2
        dec 5eh                        ;2
        ljmp X0603                        ;3
X0601:
        inc 5eh                        ;2
X0603:
        mov a,5ch                        ;2
        cjne a,60h,X060b                ;3
        ljmp X0612                        ;3
X060b:
        jnc X0612                ;2
        mov a,#00h                ;2
        ljmp X0614                        ;3
X0612:
        subb a,60h                        ;2
X0614:
        mov 4ch,a                ;2
        rlc a                ;1
        mov a,4bh                        ;2
        rlc a                ;1
        anl a,#01h                ;2
        orl a,#78h                        ;2
        mov 4bh,a                ;2
        anl 4ch,#7fh                ;3
        mov a,44h                        ;2
        mov 4eh,a                ;2
        rlc a                ;1
        mov a,43h                        ;2
        rlc a                ;1
        mov 4dh,a                ;2
        anl 4dh,#1fh                ;3
        anl 4eh,#7fh                ;3
        mov a,46h                        ;2
        mov 50h,a                ;2
        rlc a                ;1
        mov a,45h                        ;2
        rlc a                ;1
        mov 4fh,a                ;2
        anl 4fh,#1fh                ;3
        anl 50h,#7fh                ;3
        ret                ;1
;********************************************************
X0644:
        db        00h                ;1
        db        00h                ;1
        db        00h                ;1
;********************************************************
        org 0efdh
        ljmp X0100                        ;3
;********************************************************
        org 0f00h
X0f00:
        db        30h                ;1
        db        30h                ;1
        db        30h                ;1
        db        30h                ;1
        db        30h                ;1
        db        33h                ;1
        db        30h                ;1
        db        39h                ;1
        db        32h                ;1
        db        38h                ;1
        db        31h                ;1
        db        30h                ;1
        db        33h                ;1
        db        36h                ;1
        db        00h                ;1
        db        00h                ;1
        db        00h                ;1
;********************************************************
        org 1ffdh
        ljmp X0100                        ;3
        end

使用特权

评论回复
97
xxdcq| | 2011-10-28 09:55 | 只看该作者
这是源程序
N年前做的产品

;光电笔程序
;压力值为设定值
;带看门狗
;带8点平均滤波算法
;结束点判断个数为1个
;new要改变pointnum到4,over不改变pointnum
;版本信息改到了0f00h
;t0定时中断改到20ms
;增加t0intnum1中断,定时100ms检查是否有光电信号输出,若没有了就清除新笔画
;结束笔画,笔画点标志,防止在没有信号时按下笔尖再有信号时会随机出现一个笔划
;*******************************************************************
addata                        equ        p1.0
adclk                        equ        p1.1
adcs                        equ        p1.2
upkey                        equ        p1.3
downkey                        equ        p1.4
usbcheck                equ        p3.3
blue                        equ        p3.4
red                        equ        p3.5
cs1                        equ        p3.6
cs2                        equ        p3.7
;*******************************************************************
initflag                EQU        00h                ;;初始化标志
toutflag                EQU        01h                ;;通信超时标志,0为不超时,1超时
newflag                        EQU        02h                ;;笔画头标志,0非,1是
overflag                EQU        03h                ;;笔画尾标志,0非,1是
penmouse                EQU        04h                ;为0时是笔画点,为1时是鼠标点
usbok                        EQU        05h                ;0为usb正常,1不正常
;*******************************************************************
time1                        EQU        40h
time2                        EQU        time1+1
time3                        EQU        time2+1
dba                        EQU        time3+1                ;;dba
s1                        EQU        dba+1                ;;s1
dbb                        EQU        s1+1                ;;dbb
s2                        EQU        dbb+1                ;;s2
pointnum                EQU        s2+1
zt0                        EQU        pointnum+1        ;;数据头0ffh
b7                        EQU        zt0+1                ;数据包类型
b0                        EQU        b7+1
b1                        EQU        b0+1
b2                        EQU        b1+1
b3                        EQU        b2+1
b4                        EQU        b3+1
b5                        EQU        b4+1
b6                        EQU        b5+1
zw0                        EQU        b6+1                ;;数据尾0f0h
xyh                        EQU        zw0+1                ;;前10个字节的校验和
sendnum                        EQU        xyh+1                ;;发送次数
cout                        EQU        sendnum+1
cout1                        EQU        cout+1
cout2                        EQU        cout1+1
cout3                        EQU        cout2+1
cout4                        EQU        cout3+1
t0intnum                EQU        cout4+1                ;t0中断次数
t0intnum1                EQU        t0intnum+1        ;100ms检查是否有光电信号
overnum                        EQU        t0intnum1+1
adresult                EQU        overnum+1
mouseupkeynum                EQU        adresult+1        ;为1时才是一次有效的按键
mousedokeynum                EQU        mouseupkeynum+1        ;为1时才是一次有效的按键
setpress0                EQU        mousedokeynum+1        ;设定的落笔压力值高
setpress1                EQU        setpress0+1        ;设定的落笔压力值低
commbuf0                EQU        setpress1+1
commbuf1                EQU        commbuf0+1
commbuf2                EQU        commbuf1+1
commbuf3                EQU        commbuf2+1
ramcheck                EQU        commbuf3+1
temp0                        EQU        ramcheck+1
temp1                        EQU        temp0+1
xy                        EQU        80h                ;间接寻址
;*******************************************************************
wdtrst                        EQU        0a6h
;*******************************************************************
;pc机控制指令和回应字
divchk                        EQU        10h                ;设备检测命令
setpress                EQU        12h                ;设置落笔压力值命令
wakeup                        EQU        16h                ;激活命令
vercheck                EQU        17h                ;读版本命令
cmdok                        EQU        20h
cmdfail                        EQU        21h
;*******************************************************************
               org 0000h
               ljmp main
               org 0003h
               ljmp int_0
               org 000bh
               ljmp t0_int                                ;;定时器0中断(20ms)
               org 0013h
               reti
        org 001bh
               reti
               org 0023h
               ljmp ser_int
;----------------------------------------------------------------------------
;
;
;
        org 0100h
main:
        clr ea
        mov sp,#28h
        clr initflag                                ;初始化开始
        lcall sys_init
        lcall timestart                                ;起动定时器
        lcall adcov0                                ;开始时ad转换是假值,把它放掉
        setb initflag                                ;初始化完成
main1:
        mov wdtrst,#1eh                                ;清看门狗
        mov wdtrst,#0e1h
        ljmp main1
;*******************************************************************
sys_init:
        MOV TMOD,#21H
        MOV TH1,#0ffH                                ;57600b/s(11.0592M)
        MOV TL1,#0ffH
        mov th0,#0b8h                                ;定时20ms
        mov tl0,#00h
        MOV SCON,#50H                                ;格式n81
        MOV PCON,#80H
        mov ip,#00000011b                        ;int0中断和t0中断优先
        setb it0                                ;int0下降沿中断
        setb ex0
        setb et0
        clr ex1
        clr et1
        setb es
        clr ie0
        clr tf0
        clr ie1
        clr tf1
        CLR TI
        CLR RI
        setb p3.0
        setb p3.1
        setb adcs
        setb adclk
        setb addata
        setb upkey
        setb downkey
        setb usbcheck
        setb cs1
        setb cs2
        clr psw.3
        clr psw.4
        clr newflag
        clr overflag
        setb penmouse                                ;鼠标点
        mov t0intnum,#50                        ;1s
        mov t0intnum1,#5                        ;100ms
        mov overnum,#1
        setb usbok                                ;usb不正常
        mov mouseupkeynum,#0                        ;上按键次数清零
        mov mousedokeynum,#0                        ;下按键次数清零
        mov setpress0,#00h                        ;设定的落笔压力值初始值为15
        ;mov setpress1,#15
        mov pointnum,#0                                ;点数为0
        setb ea
        ret
;*******************************************************************
timestart:
        SETB TR0
        setb tr1
        ret
;*******************************************************************
dt20ms:
        mov r6,#37
dt1:
        mov r7,#250
        djnz r7,$
        djnz r6,dt1
        ret
;*******************************************************************
rev_bytes:
        mov r0,#commbuf1
rev_bytes1:
        lcall rev
        jb toutflag,rev_bytes2                        ;是否3秒超时?
        mov @r0,sbuf
        inc r0
        djnz sendnum,rev_bytes1
rev_bytes2:
        ret
;----------------------------------------------------------------------------
;接收一字节子程序
rev:
               mov time1,#5
rev1:
               mov time2,#100
rev2:
               jnb ri,rev3                                ;;jsflag=1?
               clr ri                                        ;;clear jsflag
               clr toutflag                                ;;清超时标志
               ljmp rev4
rev3:
               djnz time2,rev2
               djnz time1,rev1
               setb toutflag                                ;;置超时标志
rev4:
               ret
;----------------------------------------------------------------------------
ser_int:
        push acc
        push b
        push psw
        setb psw.3
        setb psw.4
        clr ri                                        ;;clear jsflag
        mov a,sbuf
        mov b,a
        mov commbuf0,a
        mov sendnum,#3
        lcall rev_bytes
        jb toutflag,ser_int1                        ;是否5秒超时?
        mov r0,#commbuf0
        inc r0
        mov a,@r0
        add a,b
        mov b,a
        inc r0
        mov a,@r0
        add a,b
        mov b,a
        inc r0
        mov a,@r0
        cjne a,b,ser_int1
        ljmp ser_int2                                ;命令是否正确?
ser_int1:
        clr ri
        clr ti
        pop psw
        pop b
        pop acc
        reti
ser_int2:
        mov a,commbuf0
        cjne a,#divchk,ser_int3                        ;是设备检测命令吗?
        ljmp devicecheck1
ser_int3:
        ljmp ser_int4
devicecheck1:                                        ;设备检测
        mov xyh,#0ffh
        mov sbuf,#0ffh                                ;发应答数据‘0ffH’
        lcall send
        mov a,xyh
        add a,#divchk
        mov xyh,a
        mov sbuf,#divchk                        ;发应答数据‘10H’
        lcall send
        mov ramcheck,#55h                        ;检查内存
        mov a,ramcheck
        cjne a,#55h,devicecheck2
        mov ramcheck,#0aah
        mov a,ramcheck
        cjne a,#0aah,devicecheck2
        ljmp devicecheck3
devicecheck2:
        mov a,xyh
        add a,#cmdfail
        mov xyh,a
        mov sbuf,#cmdfail                        ;发应答数据‘21H’
        lcall send
        mov a,xyh
        add a,#00h
        mov xyh,a
        mov sbuf,#00h                                ;发应答数据‘00H’
        lcall send
        mov a,xyh
        add a,#7fh
        mov xyh,a
        mov sbuf,#7fh                                ;发应答数据‘7fH’
        lcall send
        ljmp devicecheck4
devicecheck3:
        mov a,xyh
        add a,#cmdok
        mov xyh,a
        mov sbuf,#cmdok                                ;发应答数据‘20H’
        lcall send
        mov a,xyh
        add a,#00h
        mov xyh,a
        mov sbuf,#00h                                ;发应答数据‘00H’
        lcall send
        mov a,xyh
        add a,#00h
        mov xyh,a
        mov sbuf,#00h                                ;发应答数据‘00H’
        lcall send
devicecheck4:
        mov a,xyh
        add a,#0f0h
        mov xyh,a
        mov sbuf,#0f0h                                ;发应答数据‘0f0H’
        lcall send
        mov a,xyh
        mov sbuf,a                                ;发校验和
        lcall send
        ljmp ser_int7
ser_int4:
        cjne a,#wakeup,ser_int5                        ;是激活命令吗?
        mov xyh,#0ffh
        mov sbuf,#0ffh                                ;发应答数据‘0ffH’
        lcall send
        mov a,xyh
        add a,#wakeup
        mov xyh,a
        mov sbuf,#wakeup                        ;发应答数据‘16H’
        lcall send
        mov a,xyh
        add a,#cmdok
        mov xyh,a
        mov sbuf,#cmdok                                ;发应答数据‘20H’
        lcall send
        mov a,xyh
        add a,#00h
        mov xyh,a
        mov sbuf,#00h                                ;发应答数据‘00H’
        lcall send
        mov a,xyh
        add a,#0f0h
        mov xyh,a
        mov sbuf,#0f0h                                ;发应答数据‘0f0H’
        lcall send
        mov a,xyh
        mov sbuf,a                                ;发校验和
        lcall send
        ljmp ser_int7
ser_int5:
        cjne a,#vercheck,ser_int6                ;是读生产模式,日期,版本命令吗?
        mov xyh,#0ffh
        mov sbuf,#0ffh                                ;发应答数据‘0ffH’
        lcall send
        mov a,xyh
        add a,#vercheck
        mov xyh,a
        mov sbuf,#vercheck                        ;发应答数据‘17H’
        lcall send
        mov dptr,#vertab
        mov sendnum,#14                                ;发14字节
vercheck1:
        clr a
        movc a,@a+dptr
        mov sbuf,a
        add a,xyh
        mov xyh,a
        lcall send
        inc dptr
        djnz sendnum,vercheck1
        mov a,xyh
        add a,#0f0h
        mov xyh,a
        mov sbuf,#0f0h                                ;发应答数据‘0f0H’
        lcall send
        mov a,xyh
        mov sbuf,a                                ;发校验和
        lcall send
        ljmp ser_int7
ser_int6:
        cjne a,#setpress,ser_int8                ;是设置落笔压力值命令吗?
        mov a,commbuf1
        mov setpress1,a                                ;保存设定的落笔压力值
        mov a,commbuf2
        mov setpress0,a
        mov xyh,#0ffh
        mov sbuf,#0ffh                                ;发应答数据‘0ffH’
        lcall send
        mov a,xyh
        add a,#setpress
        mov xyh,a
        mov sbuf,#setpress                        ;发应答数据‘12H’
        lcall send
        mov a,xyh
        add a,#cmdok
        mov xyh,a
        mov sbuf,#cmdok                                ;发应答数据‘20H’
        lcall send
        mov a,xyh
        add a,#00h
        mov xyh,a
        mov sbuf,#00h                                ;发应答数据‘00H’
        lcall send
        mov a,xyh
        add a,#0f0h
        mov xyh,a
        mov sbuf,#0f0h                                ;发应答数据‘0f0H’
        lcall send
        mov a,xyh
        mov sbuf,a                                ;发校验和
        lcall send
        ljmp ser_int7
ser_int8:
        nop                                        ;pc的其它命令
        nop
        nop
ser_int7:
        clr ri
        clr ti
        pop psw
        pop b
        pop acc
        reti
;*******************************************************************
;定时器0中断
;功能:20ms定时检测是否抬笔
t0_int:
        push acc
        push b
        push psw
        clr psw.3
        setb psw.4
        jnb initflag,t0_int3
        djnz t0intnum,t0_int2                        ;到一秒了吗?
        mov t0intnum,#50                        ;1s
        jb usbcheck,t0_int1                        ;usb正常吗?
        setb blue                                ;兰灯熄灭
        clr ex0                                        ;关中断
        clr es
        cpl red                                        ;红灯闪烁
        setb usbok                                ;usb不正常
        ljmp t0_int2
t0_int1:
        clr ti
        clr ri
        setb ex0                                ;开中断
        setb es
        jnb usbok,t0_int2
        clr blue                                ;点亮兰灯
        setb red                                ;红灯熄灭
        clr usbok                                ;usb正常
t0_int2:
        djnz t0intnum1,t0_int3                        ;到100ms了吗?
        mov t0intnum1,#5                        ;100ms
        clr newflag
        clr overflag
        setb penmouse                                ;鼠标点
        mov pointnum,#0                                ;点数为0
t0_int3:
        mov th0,#0b8h                                ;定时20ms
        mov tl0,#00h
        clr tf0
        pop psw
        pop b
        pop acc
        reti
;*******************************************************************
;int0中断
;功能:数据处理
int_0:
        push acc
        push b
        push psw
        setb psw.3
        clr psw.4
        jnb initflag,int_11
        mov t0intnum1,#5                        ;100ms
        clr red                                        ;点亮红灯
        lcall adcov
        mov a,adresult
        cjne a,setpress1,int_01                        ;笔尖压力值>=设定压力吗?
        ljmp int_02
int_01:
        jc int_04                                ;有落笔吗?
int_02:
        jnb penmouse,int_03                        ;是笔画点吗?
        setb newflag                                ;起始点
        clr penmouse                                ;笔画点
        mov pointnum,#4                                ;点数为4
int_03:
        mov overnum,#1
        ljmp int_05
int_04:
        jb penmouse,int_05                        ;是笔画点吗?
        jb newflag,int_05                        ;起始点处理完了吗?
        djnz overnum,int_05                        ;起始点处理完了才能处理结束点
        setb overflag                                ;结束点
int_05:
        lcall getdat                                ;读取CPLD的数据
        mov a,pointnum
        cjne a,#8,int_07                        ;大于8点吗?
        ljmp int_08
int_07:
        inc pointnum
        mov a,pointnum
        cjne a,#8,int_10                        ;到new后第4点了吗?
int_08:
        lcall pjz                                ;求8点平均
int_09:
        lcall datcov                                ;组织数据
        lcall txy                                ;向PC机发X,Y
int_10:
        lcall newtoold                                ;保存上一次的坐标
        setb red                                ;熄灭红灯
int_11:
        clr ie0
        pop psw
        pop b
        pop acc
        reti
;*******************************************************************
;发送一字节子程序
send:
        mov time1,#200
send0:
        mov time2,#200
send1:
        jnb ti,send2                                      ;;ti=1?
        clr ti                                        ;;clear ti
        clr toutflag                                ;;清超时标志
        ljmp send3
send2:
        mov wdtrst,#1eh                                ;清看门狗
        mov wdtrst,#0e1h
        djnz time2,send1
        djnz time1,send0
        setb toutflag                                ;;置超时标志
send3:
        ret
;*******************************************************************
;向PC机发数据
txy:
        clr es                                        ;禁止串口中断
        mov zt0,#0ffh                                ;帧头
        mov zw0,#0f0h                                ;帧尾
        mov sendnum,#1
txy1:
        mov xyh,#0
        mov cout,#11
        mov r0,#zt0
txy2:
        mov sbuf,@r0
        lcall send
        djnz cout,txy3
        ljmp txy4
txy3:
        mov a,@r0
        add a,xyh
        mov xyh,a                                ;校验和
        inc r0
        ljmp txy2
txy4:
        djnz sendnum,txy1
        clr ti                                        ;清串口中断标志
        clr ri
        setb es                                        ;允许串口中断
        ret
;*******************************************************************
;ad转换值在adresult中,ad转换器用的tlc549
adcov:
        nop                                        ;送第8个clk脉冲将启动ad转换
        setb adclk                                ;adclk=1
        nop
        nop
        clr adclk                                ;adclk=0
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        setb adcs                                ;adcs=1
        mov r7,#20                                ;ad转换时间大于17us
        djnz r7,$
adcov0:
        clr adclk                                ;adclk=0
        nop
        nop
        clr adcs                                ;adcs=0
        nop
        nop
        mov r3,#7
adcov1:
        mov c,addata
        rlc a
        nop
        setb adclk                                ;adclk=1
        nop
        nop
        clr adclk                                ;adclk=0
        nop
        djnz r3,adcov1
        mov c,addata
        rlc a
        mov adresult,a
        ret
;*******************************************************************
;在CPLD取得原始数据
;输出:s1, s2, dba, dbb
getdat:
        clr cs1                                             ;select s2
        nop
        nop
        nop
        nop
        nop
        mov a,p0
        anl a,#00111111b
        mov s2,a
        clr cs2                                             ;select dbb
        nop
        nop
        nop
        nop
        nop
        mov a,p0
        anl a,#00111111b
        mov dbb,a
        setb cs1                                     ;select dba
        nop
        nop
        nop
        nop
        nop
        mov a,p0
        anl a,#00111111b
        mov dba,a
        setb cs2                                     ;select s1
        nop
        nop
        nop
        nop
        nop
        mov a,p0
        anl a,#00111111b
        rlc a
        rlc a
        mov s1,a
        mov a,dba
        rrc a
        mov dba,a
        mov a,s1
        rrc a
        mov s1,a
        mov a,dba
        rrc a
        mov dba,a
        mov a,s1
        rrc a
        mov s1,a
        mov a,dba
        anl a,#00001111b
        mov dba,a
        mov a,s2
        rlc a
        rlc a
        mov s2,a
        mov a,dbb
        rrc a
        mov dbb,a
        mov a,s2
        rrc a
        mov s2,a
        mov a,dbb
        rrc a
        mov dbb,a
        mov a,s2
        rrc a
        mov s2,a
        mov a,dbb
        anl a,#00001111b
        mov dbb,a
        mov r0,#xy
        mov @r0,dba
        inc r0
        mov @r0,s1
        inc r0
        mov @r0,dbb
        inc r0
        mov @r0,s2
        ret
;*******************************************************************
;求8点平均值,dbas1=(x+x1+x2+x3+x4+x5+x6+x7)/8,dbbs2=(y+y1+y2+y3+y5+y6+y7)/8
pjz:
        mov a,#xy
        add a,#5                                ;指到x1l
        mov r0,a
        mov a,#xy
        add a,#7                                ;指到y1l
        mov r1,a
        mov cout,#7
pjz1:
        mov a,s1
        add a,@r0
        mov s1,a
        dec r0                                        ;指到x?h
        mov a,dba
        addc a,@r0
        mov dba,a
        mov a,s2
        add a,@r1
        mov s2,a
        dec r1                                        ;指到y?h
        mov a,dbb
        addc a,@r1
        mov dbb,a
        mov a,r0
        add a,#5                                ;指到下一个x?l
        mov r0,a
        mov a,r1
        add a,#5                                ;指到下一个y?l
        mov r1,a
        djnz cout,pjz1
        mov a,dba                                ;dbas1=dbas1/8
        rrc a
        mov dba,a
        mov a,s1
        rrc a
        mov s1,a
        mov a,dba
        rrc a
        mov dba,a
        mov a,s1
        rrc a
        mov s1,a
        mov a,dba
        rrc a
        mov dba,a
        mov a,s1
        rrc a
        mov s1,a
        anl dba,#00001111b
        mov a,dbb                                ;dbbs2=dbbs2/8
        rrc a
        mov dbb,a
        mov a,s2
        rrc a
        mov s2,a
        mov a,dbb
        rrc a
        mov dbb,a
        mov a,s2
        rrc a
        mov s2,a
        mov a,dbb
        rrc a
        mov dbb,a
        mov a,s2
        rrc a
        mov s2,a
        anl dbb,#00001111b
        ret
;*******************************************************************
newtoold:
        mov cout,#28
        mov a,#xy
        add a,#31                                ;指到y7l
        mov r0,a
        clr c
        subb a,#4                                ;指到y6l
        mov r1,a
newtoold1:
        mov a,@r1
        mov @r0,a
        dec r0
        dec r1
        djnz cout,newtoold1
        ret
;*******************************************************************
;按协议组织数据并清除和设置一些标志
;输入:newflag,overflag,adresult,s1,dba,s2,dbb
;输出:b0-b6
datcov:
        mov b7,#7fh                                ;普通数据包
        mov b0,#60h
        jnb overflag,datcov0                        ;是否为结束笔画?
        orl b0,#00000100b
        clr overflag                                ;清结束笔画标志
        setb penmouse                                ;鼠标点标志
        clr blue                                ;点亮兰灯
        ljmp datcov2
datcov0:
        jnb newflag,datcov1                        ;是否为新笔画?
        orl b0,#00000001b
        clr newflag                                ;清新笔画标志
        clr penmouse                                ;笔画点
        setb blue                                ;兰灯熄灭
        ljmp datcov2
datcov1:
        jnb penmouse,datcov2                        ;是鼠标点吗?
        orl b0,#00000010b                        ;加鼠标点标志
        clr blue                                ;点亮兰灯
datcov2:
        jb upkey,datcov3                        ;鼠标上键按下吗?
        mov a,mouseupkeynum
        jz datcov4
        orl b0,#00001000b
        ljmp datcov5
datcov3:
        mov a,mouseupkeynum
        jz datcov5
        dec mouseupkeynum
        ljmp datcov5
datcov4:
        inc mouseupkeynum
datcov5:
        jb downkey,datcov6                        ;鼠标下键按下吗?
        mov a,mousedokeynum
        jz datcov7
        orl b0,#00010000b
        ljmp datcov8
datcov6:
        mov a,mousedokeynum
        jz datcov8
        dec mousedokeynum
        ljmp datcov8
datcov7:
        inc mousedokeynum
datcov8:
        mov a,adresult
        cjne a,setpress1,datcov9
        ljmp datcov10
datcov9:
        jnc datcov10
        mov a,#0
        ljmp datcov11
datcov10:
        subb a,setpress1                        ;由于落笔时的最小压力值是setpress1,故要减setpress1
datcov11:
        mov b2,a
        rlc a
        mov a,b1
        rlc a
        anl a,#00000001b                        ;8位ad转换
        orl a,#01111000b
        mov b1,a
        anl b2,#01111111b
        mov a,s1
        mov b4,a
        rlc a
        mov a,dba
        rlc a
        mov b3,a
        anl b3,#00011111b
        anl b4,#01111111b
        mov a,s2
        mov b6,a
        rlc a
        mov a,dbb
        rlc a
        mov b5,a
        anl b5,#00011111b
        anl b6,#01111111b
        ret
;*******************************************************************
        org 0efdh
        ljmp main                                ;软件陷阱
;*******************************************************************
        org 0f00h
vertab:
        db '0','0','0','0'                        ;生产模式
        db '0','3','0','9','2','8'                ;日期
        db '1','0','3','6'                        ;版本
;*******************************************************************
        org 1ffdh
        ljmp main                                ;软件陷阱
;*******************************************************************
        end

使用特权

评论回复
98
xxdcq| | 2011-10-28 10:02 | 只看该作者
我的反汇编把没有调用过的,没有跳转过的,没有散转过的向量会作为数据段地址
比如X0188:
我翻译成了数据
       db        7eh                ;1
          db        25h                ;1

菜农的翻译成的程序
       L0188: MOV R6,#025H

看来还有高明之处!

使用特权

评论回复
99
flywater2010| | 2011-10-28 12:11 | 只看该作者
的确比其它的51反汇编工具强上很多,很智能,强赞一个!

使用特权

评论回复
100
hotpower|  楼主 | 2011-10-28 15:34 | 只看该作者
这个算法俺已经淘汰,因为毕竟是20多年前的产物。
新算法将对每个分支进行人为的设置,这样可以彻底对付“无賊论”。

新算法全面支持命令行,几乎所有的运算都移入内存,速度大为提升。

这种批量的做法将在disasm51内部一次完成。
各种设置都可以通过命令行外部设置,而目前必须由用户定义文件来传递。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则