常见汇编代码结构总结

by Netfairy - 2015-06-19
 
1:求字符串长度
mov edi,edx        ; 设置目标字符串地址
or ecx,0xFFFFFFFF        ; ecx=ffffffff
xor eax,eax        ; 如果al==0,也就是字符串结束
repne scas byte ptr es:[edi]
not ecx
dec ecx         ;ecx==字符串长度
2:
neg     r           // neg r 的操作语义是0 - r,r!=0,会产生借位
sbb     r, r           // 意义为 r=r – r – CF 
这两句代码的意思是:所以,如果r最开始就是0, 那么sbb r, r的结果是将r设置为0. 如果不是零,那么结果是0-CF = 0-1 = –1 = FFFFFFFF
d