#include <stdio.h> #include <windows.h> int sal_asm(int x,int y) { __asm{ mov eax,x; mov cl,byte ptr y; sal eax,cl; } } int shl_asm(int x,int y) { __asm{ mov eax,x; mov cl,byte ptr y; shl eax,cl; } } void strncpy_asm(char *dst ,char *src ,size_t len) { __asm{ mov edi,[ebp+8]; mov esi,[ebp+0xc]; mov ecx,[ebp+0x10]; cld; 设置DF = 0,ESI,EDI++ rep movs byte ptr[edi],byte ptr[esi]; } } unsigned int strlen_asm(char *s) { __asm{ xor eax,eax; xor ebx,ebx; mov esi,s; L0: lodsb; 把[esi]种的一个字节放到al中,esi++ cld; test al,al; 判断esi是否已经指向字符串s的'