[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 我想用现成的来电区号秀,呵呵~! 支持啊!但是我水平低,只能等其他55的机子移植了,再移植,可能容易点。 帮不上忙,只能顶顶~~ 偶还不会撒。。。。。。只能顶的份、、、、、、、、、、、、、、、、 真不明白,45都有,偏偏55没有 要先看看内存够不够。 不是内存的问题,是看FUBU里面的FFFFF X55 空白FF 比X45多得多!!
就是没有补丁刷... 嗯 严重支持
不过我也是水平太低 nj528,快点出手吧!趁这几天有时间,在等着你呢! 支持nj528开发~~~ 利害啊哈哈期待中 精神上支持楼主 马上就要买s75了。半年后。。 看来现在就缺55系列手机没有区号秀了,希望早点开发出来!~
看来难度还是不小,不然早就出了。 我也不想做呀!
有一个关键还不明白。
是否必须做狼大的 “任意位置显字串”补丁
如必须做狼大的这个补丁,我真得是看不明白“任意位置显字串”补丁是怎么做出来的!!!
没办法呀! 为NJ兄加把火,希望有机会能开发出来这个补丁 任意位置显字串里面有三个函数找到对应的就解决了,我弄56版就是这样搞定的。 加油啊~~我等!