textbox

IT博客 联系 聚合 管理
  103 Posts :: 7 Stories :: 22 Comments :: 0 Trackbacks

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'的实际长度


posted on 2010-04-14 11:10 零度 阅读(2008) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。