码迷,mamicode.com
首页 > 其他好文 > 详细

汇编实现: C库常见函数,串操作指令作用

时间:2018-10-23 15:01:45      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:拷贝   实现   很多   需要   函数   局部变量   目录   操作   href   

目录

汇编实现: C库常见函数

一丶汇编实现Strncpy拷贝函数

void __asmStrncpy(char *des,char *src,int len)
{
    __asm {
     mov edi,[ebp + 8];                //获取局部变量地址 des
     mov esi,[ebp + 0xc];            //获取局部变量地址 src
     mov ecx,len;                    //使用movs指令,需要给ecx长度
     cld                                //设置DF = 0; 内存方向, 此时edi++ esi ++获取方式
     rep movs byte ptr [edi],byte ptr[esi];//根据ecx的值,循环从esi里面获取字节输几局给edi
     ;rep movsb                        //直接省略了.默认操作 eis 跟 edi.以字节方式
     ;rep movsw                        //以word两个字节为单位拷贝 等价于 rep movs byte ptr[edi],byte ptr[esi]
     ;rep movsd                        //四个字节为单位.

    }

}

总结:

movs指令的作用
主要使用了串操作指令movs指令 [esi] 拷贝->[edi] ecx计数 rep重复.

  1.跟ecx搭配, ecx控制循环次数

  2.跟cld搭配. cld设置DF位,这样拷贝的时候内存就是++拷贝

  3.movs的主要作用就是把 esi所指向的内存数据 拷贝到 edi所指向的内存中.

  4.movs 有很多重载, 例如 movsb movsw movsd 分别就是按照字节拷贝, 按照一个字拷贝 按照4个字拷贝.

汇编实现: C库常见函数,串操作指令作用

标签:拷贝   实现   很多   需要   函数   局部变量   目录   操作   href   

原文地址:https://www.cnblogs.com/iBinary/p/9835948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!