cmp是比较指令,cmp的功能相当于减法指令。它不保存结果,只是影响相应的标志位。其他的指令通过识别这些被影响的标志位来得知比较结果。

cmp指令格式:   cmp   操作对象1, 操作对象2

计算 操作对象1 - 操作对象2 但不保存结果,只是根据结果修改相应的标志位。

举例假如此时eax = 0h
     那么cmp eax, eax     (eax - eax = 0)
    
     此时我们的指令执行后, ZF标志位 = 1, PF = 0, SF =0 , CF =0 , OF = 0 。

(因为我们结果为0,所以ZF标志位为1 . 前提是在PF操作数为0的情况下执行
ps:其实PF标志位无关紧要)

在继续举例
    
     mov ebx, 05h
     mov eax, 08h
     cmp eax, ebx   (eax - ebx = 03h)
     此时我们的指令执行后(ZF = 0, PF = 1, SF = 0, CF = 0, OF = 0)
    
     因为此时我们就可以通过标志位判断出eax 是否大于ebx。 我们有时候想问题,可以逆序的想。
可以这样想,如果它小于的话会发生什么。。 举例假如al = 05h, bl = 08h (为了更直观,所以我采用低8位寄存器)
      
     mov al, 05h
     mov bl, 08h
     cmp al, bl   (al - bl = -3h)
     (注意:al是低8位寄存器,为了更直观,所以我采用低8位寄存器,计算机负数是以补码的形式在内存存放的,赶快拿起你的手,算算-3的补码是多少。)
     那么执行后 (ZF = 0, PF = 0, CF = 1, SF = 1, OF =0)
    
     (那么大家肯定会问:CF = 1, 为何存在了进位操作。   在我们计算机中两个数据做减法运算的时候,有可能象更高位借位,举例
                   mov al, 56h
                   mov bl, 57h
                   sub al, bl  
           借位后,将产生156 - 57h )
   SF我就不说了吧,符号标志位,我们的结果为负,所以SF = 1
  
  
     从以上两点标志位我们是否就可以分析出呢。   如果小于则SF = 1 , CF =1 。。 呵呵

那么刚刚上面的我们就可以轻松的解决了。。 如果我们的数值大于的话,则 SF, CF ,ZF肯定是0。 所以

mov ebx, 05h
     mov eax, 08h
     cmp eax, ebx   (eax - ebx = 03h)
     此时我们的指令执行后(ZF = 0, PF = 1, SP = 0, CF = 0, OF = 0)

那么上面我们分析了=(等于)、<(小于)     和>(大于) 的情况。接下来我们分析下 不等于、大于等于,小于等于的情况。

首先分析不等于
   (我们分析题目,可以通过逆序的思路)假设此时我们的比较的两数值相等,则ZF=1,所以如果不相等,则ZF肯定不等于1,也就是ZF =0

接着分析小于等于
     其实这个就是刚刚我们上面分析的+上等于的条件。我们看上面如果小于则SF = 1, CF =1。那么小于等于 CF =1 或 ZF =1。
    
   最后 大于等于
     这个我就不说了,同上,也让大家自己思考下。。

今天的课程就这么多了。最后作业列:

1.假如此时有两数值做cmp比较判断,执行后ZF = 0 ,CF = 0 ,SF = 0。那么请问我们的数值是大于比较的数值,还是小于,或是等于。
ZF=0 不相等    a!=b
CF=0 没有借位 a>b
SF=0 正数

大于
  
   2.假如此时有两数值做cmp比较判断,执行后有可能ZF = 1,CF = 1 ,SF = 1 。那么请问我们的数值是大于比较的数值,还是小于,或是等于,或是大于等于,或是小于等于。
ZF = 1 相等 a==b
CF = 1 借位 a<b
SF = 1 负数 a<b

小于 等于

汇编基础--cmp汇编指令相关推荐

  1. x86汇编-2(第五章)nasm汇编基础知识、指令、显存、bochs调试

    一. 汇编程序一般人为地分为代码段与数据段,不同的段的内存分配总是16字节的倍数,公式如下 设数据段或代码段为x字节,分配内存为:(x/16+x%16)*16字节 标号:标识当前位置的偏移地址,如果当 ...

  2. 8086汇编基础 push,pop指令执行时,sp怎么变

    首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走.我向1000:0000处push数据,那么push之前,sp初-2=sp末.先sp-2,再写入 pop,指针向高处 ...

  3. 汇编8086复习——基础知识、指令汇总、上机实验踩坑

    8086处理器基础知识 汇编语言是大小写不敏感的低级语言,意思就是mov和MOV是汇编语言来说是一样的,当然大小写混用也是可以的,如Mov 在8086汇编语言里,数字默认是十进制的,如果是其他进制数字 ...

  4. 汇编cmp比较指令详解

    刚刚看到了cmp指令,一开始有点晕.后来上网找了些资料,终于看明白了,为了方便初学者,我就简单写下我的思路吧.高手绕过,谢谢! cmp(compare)指令进行比较两个操作数的大小 例:cmp opr ...

  5. 【Android 逆向】x86 汇编 ( cmp 比较指令 | test 比较指令 )

    文章目录 一.cmp 比较指令 二.test 比较指令 总结 一.cmp 比较指令 cmp 指令通过 减法运算 , 影响标志位 CPAZO ; cmp eax, ebx 上述指令执行时 , eax - ...

  6. 汇编基础知识之输入输出

    最近在学习汇编程序,但输入输出是我遇到的第一个难题,这里就简单讲诉一些汇编的基本输出输出字符串.字符.输出数字等知识,仅供大家学习.这只是一些基础知识,汇编高手亦可以温习一些基础的输入输出知识. 一. ...

  7. 五、c++学习(加餐1:汇编基础学习)

    经过前面几节课的学习,我们在一些地方都会使用汇编来分析,我们学习汇编,只是学习一些基础,主要是在我们需要深入分析语法的时候,使用汇编分析,这样会让我们更熟悉c++编译器和语法. 从这节课开始,会持续加 ...

  8. 【8086汇编基础】05--常用函数库文件--emu8086.inc

    8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...

  9. 【汇编实战开发笔记】ARM汇编基础的三大块知识

    文章目录 1 前言 2 ARM知识图谱 3 ARM汇编基础三大块 3.1 寻址方式 3.1.1 立即寻址 3.1.2 寄存器寻址 3.1.3 寄存器偏移寻址 3.1.4 寄存器间接寻址 3.1.5 基 ...

最新文章

  1. 人工智能“花”落何处
  2. linux目录名含义
  3. C语言估算数学常量e,c语言常量的正确表示方法有哪些
  4. oracle按时间要求查询
  5. idea配置Spring遇到的问题(Lombok和修改镜像仓库)
  6. GNU C __attribute__ 机制简介
  7. [导入]数据库物理模型设计的其他模式之继承模式
  8. 用模板写单链表 尹成
  9. 汉军Hundre考勤数据库数据表分析总结
  10. java dateformat hh_SimpleDateFormat上的Java HH:mm和hh:mm之间的区别
  11. BN处理较深的神经网络
  12. 基类显式继承接口,类继承基类时又继承同一接口,引发接口方法混乱(显式继承接口的弊端)...
  13. oracle跳出while循环,【shell编程】for循环、while循环、break跳出循环、continue结束本次循环和exit退出整个脚本...
  14. 第14章 学习scikit-learn文档
  15. 发现一个特给力的编写HTML/CSS的插件——Zen Coding
  16. “天生BUFF”华硕主板冷傲ROG
  17. 江西银行服务器怎么选择硬件配置
  18. linux ntfs u盘启动盘,u盘NTFS格式制作PE+CDlinux+ubuntu多系统启动盘
  19. 应用程序无法正常启动0xc000007b win7
  20. Exception in thread “main“ redis.clients.jedis.exceptions.JedisConnectionException: Failed to create

热门文章

  1. MySQL使用数据库
  2. 盘点2013智能电网行业十大新闻事件
  3. Coursera-Python for everybody
  4. 【强化学习】PPO算法
  5. ffmpeg播放器声音效果2-变速不变调及变调
  6. istio 实战 六 全链路监控 - Jaeger
  7. hdu 4416 后缀数组
  8. 【Day1】数组、704二分查找、27移除元素
  9. HTML5+CSS3小实例:炫彩的流光按钮
  10. 光纤布线系统如何打造绿色数据中心?