nj528 发表于 2006-5-4 12:32:58

[X55也应该有的] 区号秀 3.0的ASM

;X55也应该有自己的区号秀吧!!机友有会TaskingC166Cr.编程的可以到FTP-SPGC 下载V2.3的源代码。
;我不会 C 所以把V3.0反汇编了。如下,注释是对比V2.3的源代码加入的
;我加的注释不一定正确哦!!
;移植难度不会太大
;Siemens Flash Explorer v2.51c (c)Dec.03 by RizaPN <rizapn@yahoo.com>

;File 1.txt (pos=0x0,sz=0x216A,rd=0x216A) buffered
;Disassembly: offset=0x0, size=0x216A, baseAddr=0xA00000

org        0F63680h

        jmps        _GetProvAndCity        ;sub_F6392C _GetProvAndCity

        calls        0E6h, 7DD8h                        ;第一个内部调用
        jmps        _main        ;loc_F63744 _main

        mov        r14,
        mov        r15,
        jmpr        cc_UC, loc_56369A

        mov        r14, r6
        mov        r15, r7
loc_56369A:
        mov        r12, r8
        mov        r13, r9
        calls        0F6h, 382Eh        ;_AppendInfo
        mov        r12, r8
        mov        r13, r9
        rets

        extp        r9, #2
        mov        r14,
        mov        r15,
        calls        0F6h, 38A2h        ;_AppendInfoW
loc_5636B6:
        mov        r12, r6
        mov        r13, r7
        extp        r9, #2
        mov        r7,
        mov        r6,
        rets
;==================//得到省表和市表========================
        mov        [-r0], r12
        mov        [-r0], r13
        mov        r12,
        mov        r13,
        mov        r14, #0Ah
        calls        0F6h, 304h                        ;第二个内部调用
        smov        r4,
        mov        r5,
        extp        r5, #2
        mov        r12,
        mov        r13,
        mov        r14,
        mov        r15,
        calls        _GetProvAndCity
        mov        r13,
        mov        r12,
        calls        0C7h, 8536h        ;如果长度大于12,则包括IP前缀,下面滤去已知IP前缀        第三个内部调用
        rets
;==================================
loc_icall:
        jmps        0C7h, 0EE88h                        ;第四个内部调用
;==================================
;
_F63B98:      dw 672Ah        ;szUnknownUser
               dw 77E5h
               dw 53F7h
               dw 7801h
               dw 0
_F63966:      dw 6570h        ;szErrorData
               dw 636Eh
               dw 5E93h
               dw 9519h
               dw 8BEFh
               dw 0
_F63B2C:      dw 672Ch        ;szLocalCode
               dw 5730h
               dw 53F7h
               dw 7801h
               dw 0
_F63BF2:      dw 20h                ;szSplit
               dw 0
_F6384A:      dw 0Dh                ;szAddInfo
               dw 0
word_F63724:    dw 7EBAh                ; DATA XREF: sub_F6392C+222r
word_F63726:    dw 0C7h               ; DATA XREF: sub_F6392C+226r
word_F63728:    dw 82E6h                ; DATA XREF: sub_F6392C+1B8r
word_F6372A:    dw 0C7h               ; DATA XREF: sub_F6392C+1BCr
word_F6372C:    dw 8536h                ; DATA XREF: sub_F6392C+B2r
word_F6372E:    dw 0C7h               ; DATA XREF: sub_F6392C+B6r
word_F63730:    dw 8388h                ; DATA XREF: sub_F6392C+F4r
                                       ; sub_F6392C+12Ar
word_F63732:    dw 0C7h               ; DATA XREF: sub_F6392C+F8r
                                       ; sub_F6392C+12Er
word_F63734:    dw 0C7E0h               ; DATA XREF: r
                                       ; sub_F6382E+48r
word_F63736:    dw 0C7h               ; DATA XREF: r
                                       ; sub_F6382E+4Cr
word_F63738:    dw 102Eh                ; DATA XREF: r
word_F6373A:    dw 0D1h               ; DATA XREF: r
word_F6373C:    dw 10C6h                ; DATA XREF: r
word_F6373E:    dw 0D1h               ; DATA XREF: r
word_F63740:    dw 5CC8h                ; DATA XREF: r
word_F63742:    dw 0A3h               ; DATA XREF: r

;==================================
;/****************/
;/* main program */
;/****************/
loc_F63744:                                        ;_main
        sub        r0, #70h
        mov        r12, #0
        mov        , r12
        mov        r13, #20h
        mov        , r13
        mov        r14, r0
        and        r14, #3FFFh
        mov        r15, DPP1
        mov        , r14
        mov        , r15
        mov        r1, #2Ah
        mov        [-r0], r1
        mov        r12, #2C3Ah
        mov        r13, #0Ch
        mov        r14, #48h
        add        r14, r0
        mov        r15, DPP1
        mov        DPP0, #3D8h
        and        r14, #3FFFh
        mov        r4, 3734h        ;//ASCII号码版本
        mov        r5, 3736h
        calls        loc_icall
        add        r0, #2
        mov        DPP0, #3D8h
        mov        r12, #1
        mov        r4, 3740h        ;//CallFlag
        mov        r5, 3742h
        calls        loc_icall
        cmp        r4, #0
        jmpr        cc_Z, loc_5637D8
        mov        r12, #0
        mov        [-r0], r12
        mov        r13, #48h
        add        r13, r0
        and        r13, #3FFFh
        mov        r14, DPP1
        mov        [-r0], r14
        mov        [-r0], r13
        mov        r13, #1
        mov        r14, #65h
        mov        DPP0, #3D8h
        mov        r15, #0Ah
        mov        r4, 373Ch        ;DrawAString
        mov        r5, 373Eh
        calls        loc_icall
        add        r0, #6
loc_5637D8:
        mov        r12, r0
        and        r12, #3FFFh
        mov        r13, DPP1
        mov        r14, #46h
        add        r14, r0
        and        r14, #3FFFh
        mov        r15, DPP1
        calls        _GetProvAndCity
        mov        r12, #3
        mov        [-r0], r12
        mov        r13, #42h
        add        r13, r0
        and        r13, #3FFFh
        mov        r14, DPP1
        mov        [-r0], r14
        mov        [-r0], r13
        mov        r12, #0
        mov        r13, #35h
        mov        r14, #65h
        mov        DPP0, #3D8h
        mov        r15, #10h
        mov        r4, 3738h        ;DrawWString 显示城市位置
        mov        r5, 373Ah
        calls        loc_icall
        add        r0, #76h
        rets
sub_AppendInfo:
        mov        [-r0], r9
        mov        [-r0], r8
        sub        r0, #2Ah
        mov        r9, r13
        mov        r8, r12
        mov        [-r0], r14
        mov        [-r0], r15
        mov        r12, #4
        mov        [-r0], r12
        extp        r9, #2
        mov        r13,
        mov        r12,
        mov        r14, #3720h
        mov        r15, #3D8h
        calls        sub_code_1
        add        r0, #2
        mov        r15,
        mov        r14,
        mov        r12, #2Ah
        mov        [-r0], r12
        mov        r12, r14
        mov        r13, r15
        mov        r14, #2
        add        r14, r0
        mov        r15, DPP1
        mov        DPP0, #3D8h
        and        r14, #3FFFh
        mov        r4, 3734h        ;//ASCII号码版本
        mov        r5, 3736h
        calls        loc_icall
        add        r0, #2
        extp        r9, #2
        mov        r12,
        mov        r13,
        mov        r14, r0
        and        r14, #3FFFh
        mov        r15, DPP1
        calls        _GetProvAndCity
        add        r0, #2Ah
        mov        r8,
        mov        r9,
        rets
sub_AppendInfoW:                ;//WString号码版本
        mov        [-r0], r8
        sub        r0, #2Ah
        mov        r8, #1
        mov        [-r0], r12
        mov        [-r0], r13
        mov        [-r0], r14
        mov        [-r0], r15
        mov        r1, #4
        mov        [-r0], r1
        mov        r2, r12
        mov        r3, r13
        extp        r3, #2
        mov        r12,
        mov        r13,
        mov        r14, #3720h
        mov        r15, #3D8h
        calls        sub_code_1
        add        r0, #2
        mov        r15,
        mov        r14,
        mov        r13,
        mov        r12,
        jmpr        cc_UC, loc_5638F4

loc_5638D8:
        extp        r15, #2
        mov        r2,
        mov        r1,
        mov        r3, r8
        shl        r3, #1
        add        r1, r3
        extp        r2, #1
        mov        r1,
        mov        r2, r8
        add        r2, r0
        movb        , rl1
        add        r8, #1
loc_5638F4:
        extp        r15, #2
        mov        r2,
        mov        r1,
        extp        r2, #1
        mov        r1,
        cmp        r1, r8
        jmpr        cc_NC, loc_5638D8
        movb        rl1, #0
        add        r8, r0
        movb        , rl1
        mov        r8, r12
        mov        r14, r13
        extp        r14, #2
        mov        r12,
        mov        r13,
        mov        r14, r0
        and        r14, #3FFFh
        mov        r15, DPP1
        calls        _GetProvAndCity
        add        r0, #2Ah
        mov        r8,
        rets
;------------------------------------------------------------
SUB_F6392C:                        ;_GetProvAndCity //得到号码所对应的省市字串
        mov        [-r0], r9
        mov        [-r0], r8
        mov        [-r0], r7
        mov        [-r0], r6
        sub        r0, #0Ah
        mov        r9, r15
        mov        r8, r14
        mov        r7, r13
        mov        r6, r12
        mov        r12, #0
        mov        r13, #3E0h
        extp        r13, #1                ;//校验数据库的有效性
        movb        rl1,
        cmpb        rl1, #0FBh
        jmpr        cc_NZ, loc_56395E
        mov        r12, #2
        mov        r13, #3E0h
        extp        r13, #1
        movb        rl1,
        cmpb        rl1, #2
        jmpr        cc_Z, loc_563978
loc_56395E:
        mov        r8, #8
        mov        [-r0], r8
        mov        r12, r6
        mov        r13, r7
        mov        r14, #3706h
        mov        r15, #3D8h
        calls        sub_code_1
        add        r0, #2
        jmpa        cc_UC, loc_563BA6

loc_563978:                        ;//得到省表和市表
        mov        r12, #18h
        mov        r13, #3E0h
        extp        r13, #2
        mov        r14,
        mov        r15,
        add        r14, #0
        addc        r15, #0F8h
        mov        [-r0], r14
        shr        r14, #0Eh
        shl        r15, #2
        or        r15, r14
        mov        r14,
        and        r14, #3FFFh
        mov        , r14
        mov        , r15
        mov        r12, #20h
        mov        r13, #3E0h
        extp        r13, #2
        mov        r1,
        mov        r2,
        add        r1, #0
        addc        r2, #0F8h
        mov        [-r0], r1
        shr        r1, #0Eh
        shl        r2, #2
        or        r2, r1
        mov        r1,
        and        r1, #3FFFh
        mov        , r1
        mov        , r2
        extp        r9, #1                ;//去掉国际码+86
        movb        rl3,
        cmpb        rl3, #2Bh
        jmpr        cc_NZ, loc_5639D6
        add        r8, #3
loc_5639D6:
        mov        r12, r8
        mov        DPP0, #3D8h
        mov        r13, r9
        mov        r4, 372Ch        ;//如果长度大于12,则包括IP前缀,下面滤去已知IP前缀
        mov        r5, 372Eh
        calls        loc_icall
        mov        r12, r4
        cmp        r12, #0Ch
        jmpa        cc_SLE, loc_563A82
        mov        r14, #0
        mov        r12, #2004h
        mov        r13, #3E7h
        jmpr        cc_UC, loc_563A72

loc_563A00:
        mov        [-r0], r14
        mov        [-r0], r12
        mov        [-r0], r13
        extp        r13, #1
        movb        rl1,
        movbs        r15, rl1
        mov        [-r0], r15
        mov        r12, r8
        mov        r13, r9
        mov        r15,
        mov        r14,
        mov        DPP0, #3D8h
        add        r14, #1
        mov        r4, 3730h        ;//如果长度大于12,则包括IP前缀,下面滤去已知IP前缀
        mov        r5, 3732h
        calls        loc_icall
        add        r0, #2
        mov        r13,
        mov        r12,
        mov        r14,
        cmp        r4, #0               
        jmpr        cc_NZ, loc_563A6C
        extp        r13, #1
        movb        rl1,
        movbz        r12, rl1
        mov        r13, #0
        add        r8, r12
        mov        r12, #3
        mov        [-r0], r12
        mov        r12, r8
        mov        r13, r9
        mov        r14, #3D3Ah
        mov        DPP0, #3D8h
        mov        r15, #3D8h
        mov        r4, 3730h
        mov        r5, 3732h
        calls        loc_icall
        add        r0, #2
        cmp        r4, #0               
        jmpr        cc_NZ, loc_563A82
        add        r8, #1
        jmpr        cc_UC, loc_563A82

loc_563A6C:
        add        r14, #1
        add        r12, #8
loc_563A72:
        mov        r15, #0E000h
        mov        r1, #0F9h
        exts        r1, #1
        mov        r15,
        cmp        r15, r14
        jmpr        cc_SGT, loc_563A00
loc_563A82:
        extp        r9, #1
        movb        rl1,
        cmpb        rl1, #30h                ;//如果以0开头,则判断为是固定长途电话
        jmpa        cc_NZ, loc_563B0E
        mov        r14, #10h                ;//得到长途电话区号表
        mov        r15, #3E0h
        extp        r15, #2
        mov        r12,
        mov        r13,
        add        r12, #0
        addc        r13, #0F8h
        mov        [-r0], r12
        shr        r12, #0Eh
        shl        r13, #2
        or        r13, r12
        mov        r12,
        and        r12, #3FFFh
        add        r8, #1
        extp        r9, #1                        ;//判断是否是三位区号010和02x
        movb        rl1,
        cmpb        rl1, #31h
        jmpr        cc_Z, loc_563AC6
        extp        r9, #1
        movb        rl1,
        cmpb        rl1, #32h
        jmpr        cc_NZ, loc_563AD0
loc_563AC6:
        movb        rl1, #0
        extp        r9, #1
        movb        , rl1
        jmpr        cc_UC, loc_563AD8

loc_563AD0:
        movb        rl1, #0
        extp        r9, #1
        movb        , rl1
loc_563AD8:
        mov        [-r0], r13
        mov        [-r0], r12
        mov        r12, r8
        mov        DPP0, #3D8h
        mov        r13, r9
        mov        r4, 3728h                ;//得到区号,在区号表中查找对应的城市号
        mov        r5, 372Ah
        calls        loc_icall
        mov        r15, r4
        mov        r12,
        mov        r13,
        mov        r9, #14h
        mov        r14, #3E0h
        extp        r14, #2
        mov        r1,
        mov        r2,
        mov        r14, r1
        calls        0F6h, 3C6Ch        ;sub_code_2
        mov        r8, r4
        jmpr        cc_UC, loc_563B78

loc_563B0E:
        extp        r9, #1                        ;//如果是13x,则判定为移动电话
        movb        rl1,
        cmpb        rl1, #31h       
        jmpr        cc_NZ, loc_563B24
        extp        r9, #1
        movb        rl1,
        cmpb        rl1, #33h
        jmpr        cc_Z, loc_563B3C
loc_563B24:
        mov        r8, #8
        mov        [-r0], r8
        mov        r12, r6
        mov        r13, r7
        mov        r14, #3712h
        mov        r15, #3D8h
        calls        sub_code_1
        add        r0, #2
        jmpr        cc_UC, loc_563BA6

loc_563B3C:
        add        r8, #2
        movb        rl1, #0
        extp        r9, #1
        movb        , rl1
        mov        r12, r8
        mov        DPP0, #3D8h
        mov        r13, r9
        mov        r4, 3724h        ;//得到手机号码的前五位,在手机号码表中查找对应的城市号
        mov        r5, 3726h
        calls        loc_icall
        mov        r14, r4
        mov        r15, r5
        mov        r9, #8
        mov        r12, #3E0h
        mov        r1, r12
        extp        r1, #2
        mov        r12,
        mov        r13,
        add        r12, #0
        addc        r13, #0F8h
        calls        0F6h, 3C2Ah        ;sub_code_3
        mov        r8, r4
loc_563B78:
        mov        r9, #24h
        mov        r12, #3E0h
        extp        r12, #2
        mov        r13,
        mov        r14,
        mov        r9, r8
        mov        r12, #0
        sub        r9, r13
        subc        r12, r14
        jmpr        cc_C, loc_563BAA
        mov        r8, #8
        mov        [-r0], r8
        mov        r12, r6
        mov        r13, r7
        mov        r14, #36FCh
        mov        r15, #3D8h
        calls        sub_code_1
        add        r0, #2
loc_563BA6:
        mov        r4, #0
        jmpr        cc_UC, loc_563C1C

loc_563BAA:
        mov        r9, #3
        mov        [-r0], r9
        mov        r12, r6
        mov        r13, r7
        mov        r14,
        mov        r15,
        add        r14, #0Ch
        mov        r1, r8
        shl        r1, #3
        sub        r1, r8
        shl        r1, #1
        mov        , r1
        add        r14, r1
        extp        r15, #1
        mov        r8,
        shr        r8, #0Ah
        mov        r14, r8
        shl        r14, #2
        add        r14, r8
        shl        r14, #1
        mov        r8, r14
        mov        r14,
        mov        r15,
        add        r14, r8
        calls        sub_code_1
        mov        r8, #8
        mov        , r8
        mov        r12, r6
        mov        r13, r7
        mov        r14, #371Ch
        mov        r15, #3D8h
        calls        sub_code_1
        mov        r8, #4
        mov        , r8
        mov        r12, r6
        mov        r13, r7
        mov        r9,
        mov        r14,
        mov        r15,
        add        r14, r9
        calls        sub_code_1
        add        r0, #2
        mov        r4, #1
loc_563C1C:
        add        r0, #0Ah
        mov        r6,
        mov        r7,
        mov        r8,
        mov        r9,
        rets

sub_code_3:                        ;//从手机号码表中查找对应的城市号
        mov        r1, r14
        mov        r2, r15
        mov        r3, r2
        shr        r1, #3
        shr        r2, #3
        shl        r3, #0Dh
        or        r1, r3
        mov        r3, r14
        mov        r4, r15
        add        r3, r1
        addc        r4, r2
        add        r12, r3
        addc        r13, r4
        and        r14, #7
        and        r15, #0
        exts        r13, #1
        movb        rl2,
        movbz        r1, rl2
        shr        r1, r14
        add        r12, #1
        addc        r13, #0
        exts        r13, #1
        movb        rl2,
        movbz        r12, rl2
        mov        r13, #0Fh
        mov        r2, #0
        sub        r13, r14
        subc        r2, r15
        shl        r12, r13
        shr        r12, #7
        mov        r4, r12
        or        r4, r1
        rets

sub_code_2:                        ;//从长话区号表中查找对应的城市号
        mov        r1, #0
        mov        r2, #0
        mov        r3, r14
        jmpr        cc_UC, loc_563CA2

loc_563C74:
        mov        r3, r1
        shl        r3, #2
        mov        r4, r3
        mov        r5, r4
        ashr        r5, #0Fh
        add        r4, #0F004h
        addc        r5, #0F9h
        exts        r5, #1
        mov        r4,
        cmp        r4, r15
        jmpr        cc_NZ, loc_563CA0
        mov        r12, r3
        ashr        r12, #0Fh
        add        r3, #0F006h
        addc        r12, #0F9h
        exts        r12, #1
        mov        r4,
        rets

loc_563CA0:
        add        r1, #1
loc_563CA2:
        mov        r3, #0F000h
        mov        r4, #0F9h
        exts        r4, #1
        mov        r3,
        cmp        r3, r1
        jmpr        cc_SGT, loc_563C74
        jmpr        cc_UC, loc_563CE6

loc_563CB4:
        mov        r1, r14
        add        r1, r2
        mov        r3, r1
        shr        r1, #0Fh
        add        r1, r3
        ashr        r1, #1
        mov        r3, r1
        shl        r3, #2
        mov        r4, r3
        mov        r3, r12
        mov        r10, r13
        add        r3, r4
        extp        r10, #1
        mov        r4,
        cmp        r4, r15
        jmpr        cc_Z, loc_563CEA
        extp        r10, #1
        mov        r3,
        cmp        r3, r15
        jmpr        cc_ULE, loc_563CE2
        mov        r14, r1
        sub        r14, #1
        jmpr        cc_UC, loc_563CE6

loc_563CE2:
        mov        r2, r1
        add        r2, #1
loc_563CE6:
        cmp        r2, r14
        jmpr        cc_SLE, loc_563CB4
loc_563CEA:
        mov        r15, r1
        mov        r2, r2
        cmp        r2, r14
        jmpr        cc_SLE, loc_563CF8
        mov        r4, #1FFh
        jmpr        cc_UC, loc_563D02

loc_563CF8:
        add        r12, #2
        shl        r15, #2
        add        r12, r15
        extp        r13, #1
        mov        r4,
loc_563D02:
        rets
        ;--------------------------
sub_code_1:
        extp        r13, #1
        mov        r2,
        mov        r1, #1
        jmpr        cc_UC, loc_563D24

loc_563D0C:
        mov        r3, r14
        extp        r15, #1
        mov        r3,
        mov        r4, r1
        add        r1, #1
        add        r4, r2
        shl        r4, #1
        mov        r5, r12
        mov        r10, r13
        add        r5, r4
        extp        r10, #1
        mov        , r3
loc_563D24:
        extp        r15, #1
        mov        r3,
        jmpr        cc_Z, loc_563D30
        mov        r3,
        cmp        r1, r3
        jmpr        cc_ULE, loc_563D0C
loc_563D30:
        add        r2, r1
        sub        r2, #1
        extp        r13, #1
        mov        , r2
        rets

end

nj528 发表于 2006-5-4 12:34:41

我想用现成的来电区号秀,呵呵~!

xiaoxue 发表于 2006-5-4 13:02:01

支持啊!但是我水平低,只能等其他55的机子移植了,再移植,可能容易点。

axelzq 发表于 2006-5-4 16:35:11

帮不上忙,只能顶顶~~

黑洞 发表于 2006-5-4 19:24:31

偶还不会撒。。。。。。只能顶的份、、、、、、、、、、、、、、、、

grape0915 发表于 2006-5-4 19:34:19

真不明白,45都有,偏偏55没有

wwssff 发表于 2006-5-4 19:48:51

要先看看内存够不够。

福音牧师 发表于 2006-5-4 20:15:51

不是内存的问题,是看FUBU里面的FFFFF

nj528 发表于 2006-5-4 20:22:53

X55 空白FF 比X45多得多!!
就是没有补丁刷...

sdbjason 发表于 2006-5-4 21:28:13

嗯 严重支持

不过我也是水平太低

xiaoxue 发表于 2006-5-4 21:40:09

nj528,快点出手吧!趁这几天有时间,在等着你呢!

左楠风 发表于 2006-5-4 23:07:36

支持nj528开发~~~

发表于 2006-5-5 12:05:42

利害啊哈哈期待中

24136151 发表于 2006-5-5 12:51:07

精神上支持楼主

gtgtgtgtgt 发表于 2006-5-5 19:51:33

马上就要买s75了。半年后。。

天地龙 发表于 2006-5-5 20:13:09

看来现在就缺55系列手机没有区号秀了,希望早点开发出来!~
看来难度还是不小,不然早就出了。

nj528 发表于 2006-5-9 01:13:02

我也不想做呀!
有一个关键还不明白。
是否必须做狼大的 “任意位置显字串”补丁
如必须做狼大的这个补丁,我真得是看不明白“任意位置显字串”补丁是怎么做出来的!!!
没办法呀!

cjxxwz 发表于 2006-5-9 01:18:16

为NJ兄加把火,希望有机会能开发出来这个补丁

wwssff 发表于 2006-5-9 17:49:02

任意位置显字串里面有三个函数找到对应的就解决了,我弄56版就是这样搞定的。

西门之客 发表于 2006-5-9 19:58:12

加油啊~~我等!
页: [1] 2 3 4
查看完整版本: [X55也应该有的] 区号秀 3.0的ASM