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

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

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

俺想再问一个问题

如何比较两个地址的字串

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

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


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

je 00001
.
.
.
.
谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 383
活跃值: (115)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hldgaofeng 2008-7-23 10:41
2
0
循环比较每个字节是否相同。
或使用串指令 ?
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
stalker 8 2008-7-23 12:11
3
0
这样是不行的,首先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
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pengmo 2008-7-24 08:23
4
0
_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
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zapline 2008-7-24 08:55
5
0
建议:先用高级语言写出来  再反汇编看代码
游客
登录 | 注册 方可回帖
返回