汇编实现strcmp

在空间足够的情况下,搜索api为了更好的兼容性,采用字符串比较,而不是在空间不足时使用的hash法

所以这个函数写下来,当作资料,后用

int MyStrcmp(const char *src, const char * dest) { int result=0; //定义临时变量用于保存返回结果 __asm //内联汇编开始 { mov esi,src //将源字符串放入ds:esi mov edi,dest //将目标字符串放入es:edi START: //开始 lodsb //将ds:esi的第一个字节装入寄存器AL,同时[esi]+1 scasb //将es:edi的第一个字节和AL相减,同时[edi]+1 //cmpsb 将edi 和 esi的字节相减 jne NOTEQ //不相等,转到NOTEQ处理 test al,al //看看AL是否为NULL jne START //不为空,则比较下一个 xor eax,eax //为空,将寄存器EAX清空为0 jmp ENDCMP //跳转到返回结果的地方 NOTEQ: //不相等 mov eax,1 //不相等时的处理,将EAX置1 jl ENDCMP //如果是大于的话,跳到返回结果的地方 neg eax //将EAX取反,变为-1 ENDCMP: mov result,eax //结果存入result } return result; } 

你可能感兴趣的:(汇编实现strcmp)