汇编语言rep的用法
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的用法相关推荐
- 汇编语言rep movsd 的使用
mov esi,offset @s1 mov edi,offset @s2 mov ecx,10 cld rep movsd 1.rep movsd 每次ecx!=0便执行movsd ,然后ecx=e ...
- 汇编语言-REP,RCR,ROR等指令
Original Website RCL - Rotate Through Carry Left Usage: RCL dest,count Modifies Flags: CF OF Rotates ...
- CUDA:CUDA内核中内联PTX(汇编语言)用法的实例
CUDA:CUDA内核中内联PTX(汇编语言)用法的实例 // System includes #include <stdio.h> #include <assert.h>// ...
- 汇编语言STD CLD的用法
STD CLD@TOC 在计 算机中,大部分数据存放在主存 中,8086CPU提供了一组处理主存中连续存放的数据串的指令--串操作指令.串操作指令中,源操作数用寄存器SI寻址,默认在数据段DS中,但允 ...
- linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结
这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...
- 汇编语言不带冒号标号的用法
汇编语言中,有一种编程方法:直接定址表 这种方法和高级语言,C语言中的数组有类似的思想,就是将参数编排在一起,然后通过数组名的调用,得到需要的数值 汇编语言中,带冒号的标号在程序中可以知道代码的位置, ...
- Win-MASM64汇编语言-MOV/MOVSB/MOVSW/MOVSD/REP/REPZ/REPE/REPNZ/REPNE
MOV 传送指令,通过对第二个操作数(源操作数)直接寻址或间接寻址,放到第一个操作数(目的操作数)直接寻址或者间接寻址的位置 示例1:将常量2放到eax寄存器中 mov eax,2 示例:将eax中的 ...
- rep movsd ,repz CMPSB , CMPSW , CMPSD ,cld std用法
CLD指令功能: 将标志寄存器Flag的方向标志位DF清零. 在字串操作中使变址寄存器SI或DI的地址指针自动增加,字串处理由前往后. 相反功能指令是STD,将方向标志位DF置1, 在字串操作中使SI ...
- 【学习笔记】汇编:关于CLD以及DF的用法,还有一点REP的使用
DF direction Flag 方向标志位 作用是表示DI 以及 SI这两个自增(减)的偏移地址寄存器的自增(减)方向 当DF为1时,DI与SI自增,当DF为0时,DI与SI自减 CLD的作用就是 ...
最新文章
- 转:典型开源3D引擎分类比较
- phpcms v9 的表单向导功能的使用方法
- 步步为营 .NET三层架构解析 四、Model设计(四种设计方式)
- 洛谷——P1051 谁拿了最多奖学金
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- as3调用java_关于openamf我用as3链接java程序,并调用相关的方法,但是能够连上,却不能够调用是怎么回事...
- c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改
- vscode连接远程服务器 SSH
- 主题切换时如何主动去刷新一些资源?
- RocketMq在windows下安装
- redis可视化工具desktop manager
- 模块化的ESP8266小电视设计与制作
- 深度探索C++对象模型-Data语义学
- 吐槽最新的chrome浏览器.
- L1-009 N个数求和 (20分) C语言
- 计算机二级office高级应用和上机指导,2019年9月全国计算机二级教程:MS Office高级应用上机指导...
- 干货来袭!腾讯T4大佬,十分钟教你用svg做出精美的动画
- 2009年最新搞笑语录
- android ram rom测试工具,RAM与ROM测试方法
- 批处理--删除当前目录及子目录中的空文件夹或文件
热门文章
- 关于安装cmd命令行安装pyinstaller库失败的解决方法
- 基于python网络爬虫天气_Python网络爬虫之中国天气网
- Linux 常用命令全拼
- Qt 多线程bug:moc_widget.cpp:-1: error: undefined reference to `Mythread::~Mythread()‘:-1:
- 由读写经济学文章所想到的
- iOS内嵌unity
- MinIO客户端mc基础命令学习
- poi在word输出复选框windows远程突然不能复制的解决方法
- Vue打包后通过springboot运行页面为空白页的解决方法
- http的长连接和短连接(史上最通俗!)以及应用场景