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

相反功能指令是STD,将方向标志位DF置1,
在字串操作中使SI或DI的地址指针自动递减,字串处理由后往前。

movsd是把ds:[si]开始的DWORD传送到es:[di]开始的内存中(将ds:[si]处的4个字节数据送到es:[di]处),如果DF标志为0则si、di分别加4;如果DF为1则si、di分别减4。REP前缀表示重复执行该指令,每次执行后cx减1,直到cx为0结束。REPZ与REP类似,主要用于cmps、scas等指令,除了判断cx之外还判断ZF标志,如果ZF为0则结束。由于movs指令不会影响DF标志,所以用repz前缀没有意义,处理器会将repz当作rep处理。

CMPSB用来比较字节,而CMPSW用来比较字,CMPSD用来比较双字。

CMPS DWORD PTR [ESI], [EDI] 
但是你记住CMPS指令只能用于比较ESI指向的内存和EDI指向的内存值。

还有一点注意,CMPS和我们的CMP指令的操作数是相反的, 
CMP 目的操作数,源操作数 
CMPS 源操作数, 目的操作数 
我们最好使用其特定的版本也就是我们今天学习到的CMPSB , CMPSW , CMPSD 这样我们不容易出错。

此时我们通过 
   mov   esi, source 
   mov   edi, target 
   cmpsd 
   ja     xxxx 
   jmp   xxxx2 
   
   大家说这句指令执行完cmpsd后,ja xxxx 指令能实现跳转吗。     不知道大家还记得我们之前学习的标志位吗。那么如果我们之前的源数小于比较的数值的话,则产生借位,所以此时CF标志位=1. 而ja指令是不小于,那么它会检测我们的CF标志位,如果发现CF = 1,则表示我们的源数值小于。ja并没有实现,只有当cf = 0的时候ja才实现跳转。 所以我们的指令会执行到jmp xxxx2,跳转。

ja 是无符号的比较
jg是有符合的比较

参考博客:https://blog.csdn.net/ccboby/article/details/6011247

rep movsd ,repz CMPSB , CMPSW , CMPSD ,cld std用法相关推荐

  1. Win-MASM64汇编语言-CMP/CMPSB/CMPSW/CMPSD/JNE/JCXZ

    CMP 格式:cmp a,b 本质上是将a减b,但是并不修改a和b本身,而是会修改下面3个标志位 ZR(ZF)结果为0,则ZF=1 CF(CY)进位或者借位,则CY=1 OF(OV)溢出,则OV=1 ...

  2. 汇编中的REPZ CMPSB

    repz cmpsb 如果ds:si和es:di所指向的两个字节相等,则继续比较. CMPSB指令,是用 DS:[SI] 所指的字节单元内容,减去 ES:[DI] 所指的字节单元的内容. DS:[SI ...

  3. 汇编语言rep movsd 的使用

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

  4. repne scasb + rep movsd + rep movsb 内联实现 strcat

    我在前面写了两篇博客分别介绍内联实现 strlen 和 strcpy,这次介绍的 strcat 其实是 strlen + strcpy ,没什么新东西. .text:0040265A lea edi, ...

  5. rep movsd + rep movsb 内联实现 strcpy

    下面的代码片段是一个内联的 strcpy ,not ecx 为止是计算源字符串的长度(含NULL),00402646 到 00402651 是以4字节为单位复制,最后3行是把剩下的0-3字节复制过去. ...

  6. 【movsb cmpsb cld std】

    cld,清方向标志,即(DF)=0,地址从低到高 std,置方向标志1,DF=1,地址从高到低 movsb指令用于把字节从DS:SI 搬到ES:DI:rep movsb 就是多次搬运.搬运前先把字符串 ...

  7. Intel8086处理器使用NASM汇编语言实现操作系统09-关于数组复制的实现/movsb/movsw/cld/std/rep

    本文介绍movsb和movsw指令,它是C++中memcpy函数的实现,在Java语言的ArrayList实现类中就使用了该指令,不过在Java中的方法是System.arraycopy方法 首先要了 ...

  8. 汇编语言STD CLD的用法

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

  9. 复习8086汇编中的 CLI STI CLD STD指令

    CLI 全称 Clear Interupt STI 全称 Set Interupt CLD 全称 Clear Director STD 全称 Set Director CLI和STI是用来屏蔽中断和恢 ...

最新文章

  1. ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
  2. 对比学习系列论文MoCo v1(二):Momentum Contrast for Unsupervised Visual Representation Learning
  3. AI公开课:19.05.15施尧耘-达摩院量子实验室主任《量子计算:前景与挑战》课堂笔记以及个人感悟
  4. 罗永浩直播翻车频现,抖音选错了吗?
  5. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(三)
  6. 华为android升级国内版,华为EMUI5.0系统升级成为国内安卓升级的标杆
  7. [转]android ListView详解
  8. MugLife app是一款可以将静态照片变成3D动画的手机应用
  9. 基于openstack的自动化测试平台设计头脑风暴
  10. CCF——游戏(2017-12)
  11. 最新出炉的Java面试题(2022亲身经历)
  12. java cryptojs_CryptoJS用法
  13. 国开电大 广告心理学 形考任务
  14. 高级系统架构师培训笔记
  15. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp,eip
  16. 2022年华为云存储618最新活动攻略
  17. MySQL索引详解之索引的数据结构
  18. 10个谈话技巧让你平步青云(转贴)
  19. Add/SubtractWorkingDaystoaDate_SAP刘梦_新浪博客
  20. 告别CSDN,转去博客园(http://www.cnblogs.com/organic/)

热门文章

  1. php7.*连接mssql数据库,使用PDO连接,同时兼容windows和centos
  2. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码
  3. 洛谷 2341受欢迎的牛
  4. 逻辑斯谛回归(Logistic Regression):函数、模型及其理论内涵
  5. onenote使用心得
  6. L1-007. 念数字
  7. 雷拓数字网络系统服务器更新时间,IP网络广播系统方案.doc
  8. 西瓜书笔记7:贝叶斯分类器
  9. 小李子莱昂纳多的9部高分电影大推荐!
  10. 3Dgame_homework8