首页
社区
课程
招聘
[求助]请教(汇编)如何比较两个地址的字串
发表于: 2008-7-21 21:45 5148

[求助]请教(汇编)如何比较两个地址的字串

2008-7-21 21:45
5148
首先感谢sessiondiy  forgot  zapline 在上一个问题对我的帮助 谢谢

俺想再问一个问题

如何比较两个地址的字串

也就是说 以下两条正确的写法  

test     byte ptr [eax], byte ptr [ebx]
je 00001
.
.
.


test     dword ptr [eax], dword ptr [ebx]

je 00001
.
.
.
.
谢谢

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 335
活跃值: (140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
循环比较每个字节是否相同。
或使用串指令 ?
2008-7-23 10:41
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
这样是不行的,首先test执行的操作与and相同,只是不保存结果
其次你指令的使用上也有问题
帮你写个吧,我汇编学得不好,随便写的
假设esi和edi已经指向了两个需要比较的字符串,当然你也可以自己改成参数方式
szCMP proc
local dwRET:DWORD
pushad
xor eax,eax
xor ecx,ecx
@continue:
mov cl,[esi]
jecxz @finish
cmp cl,[edi]
sete al
jnz @finish1
inc esi
inc edi
jmp @continue
@finish:
mov cl,[edi]
cmp cl,0
sete al
@finish1:
mov dwRET,eax
popad
mov eax,dwRET
ret
szCMP endp
2008-7-23 12:11
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
_MemCmp        proc uses esi edi,lpBuff1:DWORD,lpBuff2:DWORD,hLen:DWORD
        mov esi,[lpBuff1]
        mov edi,[lpBuff2]
        mov ecx,hLen
        cld
        repz cmpsb
        .if ZERO?
                xor eax,eax
        .else
                or eax,-1
        .endif
        ret
_MemCmp        endp
2008-7-24 08:23
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
建议:先用高级语言写出来  再反汇编看代码
2008-7-24 08:55
0
游客
登录 | 注册 方可回帖
返回
//