【汇编指令学习】用repne scas byte ptr es:[edi]计算字符串长度

EDI寄存器存放字符串
AL寄存器存放字符x
遍历字符串,每循环一次ecx-1,遇到字符x则停止

汇编中用来计算字符串长度

例如:

0040104E  |.  E8 7D0A0000   call 2-lelfei.00401AD0                   ;  获取字符串的函数
00401053  |.  8D7C24 20     lea edi,dword ptr ss:[esp+0x20]
00401057  |.  83C9 FF       or ecx,-0x1
0040105A  |.  33C0          xor eax,eax
0040105C  |.  83C4 18       add esp,0x18
0040105F  |.  F2:AE         repne scas byte ptr es:[edi]
00401061  |.  F7D1          not ecx
00401063  |.  83C1 FE       add ecx,-0x2
00401066  |.  83F9 08       cmp ecx,0x8                              ;  ecx 不可以小于8
00401069  |.  0F8C 0B020000 jl 2-lelfei.0040127A
0040106F  |.  83F9 14       cmp ecx,0x14                             ;  ecx 不可以大于20
00401072  |.  0F8F 02020000 jg 2-lelfei.0040127

0040127A  |> \51            push ecx
0040127B  |.  68 40904000   push 2-lelfei.00409040                   ;  key len error[%d]...\n

参考自:https://www.cnblogs.com/Viwilla/p/5033588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值