33C0 xor eax, eax
F2:AE repne scas byte ptr es:[edi]
扫描字符串ES:[EDI]中的AL字节值,遇到AL值停止
该语句主要用于计算字符串的长度
执行过程:
如 [edi] 指向一个以0结尾的字符串 "hello"
开始
al=00
ecx=FFFFFFFF
byte ptr es:[edi] =68("h")
1.第一次循环
al=00
ecx=ecx-1
edi=edi+1
byte ptr es:[edi] =65("e")
2.第二次循环
判断 ecx==0 或者 byte ptr es:[edi]==al 如果有一个成立就跳出循环 否则
if ecx==0 or byte ptr es:[edi]==al
{
break
}
else
{
al=00
ecx=ecx-1
edi=edi+1
byte ptr es:[edi] =6C("l")
}
3.结束循环后通过
not ecx得到ecx=00000007
dec ecx得到ecx=00000006 该长度就是字符串'hello'的实际长度