![]() |
#2
maker3162008-12-12 14:11
|
核心代码帖一下 呵呵

.code
;在字符表里查找 找到返回在ax里 找不到返回-1
_Lookup proc uses edi esi ebx _dwInput:DWORD
xor edi,edi
mov eax,_dwInput
.while edi <= dwSrclen
cmp ax,WORD ptr [szSrc+edi*2]
.if ZERO?
mov ax,WORD ptr [szDst+edi*2]
ret
.endif
inc edi
inc edi
.endw
xor eax,eax
dec eax
ret
_Lookup endp
;替换函数 因为前面判断过字符串长度 这里就不检查了 呵呵
_Change proc uses edi esi ebx _lpSrc:DWORD,_lpDst:DWORD
invoke lstrlen,_lpSrc
;这里用简单的方法判断输入的合法性 要是奇数个一定有问题 要是偶数也有可能有错
;应该是转换成一个统一的编码 比如unicode 不过偶就不写了
test eax,1
.if !ZERO?
xor eax,eax
dec eax
ret
.endif
mov ecx,eax
xor edx,edx
;int 3h
mov esi,_lpSrc
mov edi,_lpDst
.while edx<ecx
mov bx,[esi+edx*2]
invoke _Lookup,ebx
.if eax==-1
mov[edi+edx*2],bx
.else
mov [edi+edx*2],ax
.endif
inc edx
.endw
xor eax,eax
ret
_Change endp
程序和代码以打包
只有本站会员才能查看附件,请 登录