rep表示重复

mov edi,dword ptr[ebp+c]    ;将内存地址为[ebp+c]的值赋给edi
or ecx,0xFFFFFFFF       ;ecx为0xFFFFFFFF
xor eax,eax             ;eax清零
repne scasb         ;开始搜索
not ecx             ;ecx存储字符传长度的反码,对ecx取反
dec ecx                 ;将ecx值减一赋给ecx

repne scasb 扫描字符串到零时结束(字符串最后一个是0),并且每次ecx减一
所以扫描下来的ecx是个负数,经过变换后为正数。上述代码可以求字符串长度

mov edi,dword ptr[ebp+8]    ;将内存地址位[ebp+8]的值赋给edi
mov edx,ecx  ;          将ecx值赋给edx
mov esi,dword ptr[ebp+c]   ;将内存地址位[ebp+c]的值赋给esi
shr ecx,2               ;将ecx右移两位
rep movsd           ;以双字为单位重复从源地址向目的地址传送数据
mov ecx,edx             ;将edx赋给ecx
and ecx,3               ;ecx和3相与值赋给ecx
rep movsb           ;将剩下的复制到目的地址
  • movsd以双字为单位进行移动
  • movsw以字为单位进行移动
  • movsb以字节为单位进行移动 以

上三个每次都是移动一次所以经常会和rep一起使用,上述代码实现共同实现了字符串的复制相当于c语言中的strcpy。

刚刚接触汇编语言,有不足的地方欢迎指正。

汇编语言rep的用法相关推荐

  1. 汇编语言rep movsd 的使用

    mov esi,offset @s1 mov edi,offset @s2 mov ecx,10 cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=e ...

  2. 汇编语言-REP,RCR,ROR等指令

    Original Website RCL - Rotate Through Carry Left Usage: RCL dest,count Modifies Flags: CF OF Rotates ...

  3. CUDA:CUDA内核中内联PTX(汇编语言)用法的实例

    CUDA:CUDA内核中内联PTX(汇编语言)用法的实例 // System includes #include <stdio.h> #include <assert.h>// ...

  4. 汇编语言STD CLD的用法

    STD CLD@TOC 在计 算机中,大部分数据存放在主存 中,8086CPU提供了一组处理主存中连续存放的数据串的指令--串操作指令.串操作指令中,源操作数用寄存器SI寻址,默认在数据段DS中,但允 ...

  5. linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...

  6. 汇编语言不带冒号标号的用法

    汇编语言中,有一种编程方法:直接定址表 这种方法和高级语言,C语言中的数组有类似的思想,就是将参数编排在一起,然后通过数组名的调用,得到需要的数值 汇编语言中,带冒号的标号在程序中可以知道代码的位置, ...

  7. Win-MASM64汇编语言-MOV/MOVSB/MOVSW/MOVSD/REP/REPZ/REPE/REPNZ/REPNE

    MOV 传送指令,通过对第二个操作数(源操作数)直接寻址或间接寻址,放到第一个操作数(目的操作数)直接寻址或者间接寻址的位置 示例1:将常量2放到eax寄存器中 mov eax,2 示例:将eax中的 ...

  8. rep movsd ,repz CMPSB , CMPSW , CMPSD ,cld std用法

    CLD指令功能: 将标志寄存器Flag的方向标志位DF清零. 在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后. 相反功能指令是STD,将方向标志位DF置1, 在字串操作中使SI ...

  9. 【学习笔记】汇编:关于CLD以及DF的用法,还有一点REP的使用

    DF direction Flag 方向标志位 作用是表示DI 以及 SI这两个自增(减)的偏移地址寄存器的自增(减)方向 当DF为1时,DI与SI自增,当DF为0时,DI与SI自减 CLD的作用就是 ...

最新文章

  1. 转:典型开源3D引擎分类比较
  2. phpcms v9 的表单向导功能的使用方法
  3. 步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
  4. 洛谷——P1051 谁拿了最多奖学金
  5. 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
  6. as3调用java_关于openamf我用as3链接java程序,并调用相关的方法,但是能够连上,却不能够调用是怎么回事...
  7. c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改
  8. vscode连接远程服务器 SSH
  9. 主题切换时如何主动去刷新一些资源?
  10. RocketMq在windows下安装
  11. redis可视化工具desktop manager
  12. 模块化的ESP8266小电视设计与制作
  13. 深度探索C++对象模型-Data语义学
  14. 吐槽最新的chrome浏览器.
  15. L1-009 N个数求和 (20分) C语言
  16. 计算机二级office高级应用和上机指导,2019年9月全国计算机二级教程:MS Office高级应用上机指导...
  17. 干货来袭!腾讯T4大佬,十分钟教你用svg做出精美的动画
  18. 2009年最新搞笑语录
  19. android ram rom测试工具,RAM与ROM测试方法
  20. 批处理--删除当前目录及子目录中的空文件夹或文件

热门文章

  1. 关于安装cmd命令行安装pyinstaller库失败的解决方法
  2. 基于python网络爬虫天气_Python网络爬虫之中国天气网
  3. Linux 常用命令全拼
  4. Qt 多线程bug:moc_widget.cpp:-1: error: undefined reference to `Mythread::~Mythread()‘:-1:
  5. 由读写经济学文章所想到的
  6. iOS内嵌unity
  7. MinIO客户端mc基础命令学习
  8. poi在word输出复选框windows远程突然不能复制的解决方法
  9. Vue打包后通过springboot运行页面为空白页的解决方法
  10. http的长连接和短连接(史上最通俗!)以及应用场景