repe cmpsb指令解析

 repe是一个串操作前缀,它重复串操作指令,每重复一次ECX的值就减一
一直到CX为0或ZF为0时停止。

cmpsb是字符串比较指令,把ESI指向的数据与EDI指向的数一个一个的进行比较。

当repe cmpsb配合使用时就是字符串比较啦,当相同时继续比较,不同时不比较


mov edi,[ebp+08] 将你输入的密码的地址付给EDI
mov esi,[ebp+0c] 真正的地址付给ESI
mov ecx,[ebp+10] 将他们的长度附给ECX
repe cmpsb 进行比较
jecxz 00401260 如果CX等于0,即密码正确跳
mov eax,00 密码不正确时,会EAX为0


再补充一下吧:
cmpsb是将ESI指向的字节与EDI指向的字节进行减操作
如果两个字符相等,即ZF为1,当不相等时ZF为0


而REPE停止重复的条件是ZF为0或CX为0,说明啦,当ZF为0时
肯定就是字串不同啦,当CX为0时,表明字符串比对成功没有出现
不相等的情况。

不过我觉得这样比不太好,如果你的密码打了8位
而真正的密码4位,如果ECX是4的话,他真会比对4位,正好你前4位
打对啦,那输入的密码也是正确的啦。如果他的ECX取得是你输入的密码
的个数,就没问题啦。不知道具体程序是什么样的,乱评一下,别介意。
fulinux CSDN认证博客专家 linux uboot yocto
我是一个拥有10年经验的嵌入式软件开发工程师,热爱Linux、热爱Yocto、喜欢编程、热爱科学技术的码农!希望我的博客能帮助到哪些在茫茫黑夜中摸索的小白!
欢迎关注、点赞和订阅!
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值