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 = FFFFFFFFd