汇编语言中cmp指令用法笔记与总结

 更新时间:2020年01月19日 11:21:45   作者:zer1123  
这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能、使用方法及操作注意事项,需要的朋友可以参考下

本文实例讲述了汇编语言中cmp指令用法。分享给大家供大家参考,具体如下:

cmp是比较指令,cmp的功能是相当于减法指令,只是不保存结果.cmp指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果.

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

功能: 计算操作对象1 - 操作对象2 但不保存结果,仅仅根据计算结果对标志寄存器进行设置.比如cmp ax,ax  是做ax - ax 的运算,结果为0,但并不在ax中保存,仅影响flag的相关各位.

指令执行后: zf = 1,pf = 1,sf = 0,cf = 0,of = 0;

下面的指令:

  mov ax,8

  mov bx,3

  mov ax,bx

执行后: (ax)= 8,zf = 0,pf = 1,sf = 0, cf = 0, of = 0

如果 ax = bx 则 ax - bx = 0 ,所以 : zf = 1

如果 ax != bx 则ax - bx != 0,所以 : zf = 0

如果ax < bx 则ax - bx 将产生错位,所以 : cf = 1

如果 ax >= bx 则 ax - bx 将不必借位,所以 : cf = 0

如果ax > bx 则 ax - bx 既不必借位,结果又不为0, 所以 : cf = 0 并且 zf = 0

如果 ax <= bx 则ax - bx 既可能借位,结果可能为0,所以 :  cf = 1 或 zf =1

检测比较结果的条件转移指令

je     等于则转移         zf=1

jne   不等于则转移     zf=0

jb      低于则转移        cf=1

jnb    不低于则转移    cf=0

ja       高于则转移        cf=0且zf=0

jna     不高于则转移    cf=1或zf=1

e : equal

ne : not equal

b: below

nb : not below

a : above

na : not above

编程: 统计data段中数值小于8的字节的个数,用ax保存统计结果

    mov ax,data 

    mov ds,ax

    mov ax,0                ;初始化累加器

    mov bx,0                ;ds:bx指向第一个字节

    mov cx,8

  s : cmp byte ptr [bx] , 8       ;和8进行比较

     jnb next                 ;如果不小于8转到next,继续循环

     inc ax                   ;如果小于8就将计数值加1

next:inc bx 

    loop s

程序执行后: ax = 2

还有疑问的可以去查看一下指令手册,讲解的比较细致

希望本文所述对大家汇编语言程序设计有所帮助。

相关文章

  • ARM汇编判断之如何用汇编判断数组中正负数个数

    ARM汇编判断之如何用汇编判断数组中正负数个数

    这篇文章主要介绍了ARM汇编判断之如何用汇编判断数组中正负数个数,在汇编语言中程序的基本框架是不变的,这里我们可以直接把正向遍历的程序给贴过来,然后我们思考怎么运用判断后缀把数组中正数和负数分开,进行判断个数和分别求和,需要的朋友可以参考下
    2022-04-04
  • 最好懂的汇编语言教程,解释CPU如何执行代码

    最好懂的汇编语言教程,解释CPU如何执行代码

    这篇文章主要介绍了最好懂的汇编语言教程,解释CPU如何执行代码。计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。
    2022-12-12
  • 用汇编语言实现从1加到100的方法(1+2+...+100)

    用汇编语言实现从1加到100的方法(1+2+...+100)

    这篇文章主要介绍了用汇编语言实现从1加到100的方法(1+2+...+100),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 汇编语言存储及寄存器原理解析

    汇编语言存储及寄存器原理解析

    这篇文章主要介绍了汇编语言存储及寄存器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 汇编语言指令大全 X86和X87汇编指令大全(带注释)

    汇编语言指令大全 X86和X87汇编指令大全(带注释)

    汇编指令集太多,如果不用就会忘记,所以将i处理器官方的指令集大全写到博客上,有需要的人可以参考一下
    2021-10-10
  • 汇编语言:比较指令、跳转指令、JCC的使用

    汇编语言:比较指令、跳转指令、JCC的使用

    这篇文章主要介绍了汇编语言:比较指令、跳转指令、JCC的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • ARM汇编解决阶乘及大小写转换的问题

    ARM汇编解决阶乘及大小写转换的问题

    这篇文章主要介绍了ARM汇编解决阶乘及大小写转换,包括ARM汇编大小写转换以及存入内存的相关知识,本文给大家介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • 汇编基础程序编写教程示例

    汇编基础程序编写教程示例

    这篇文章主要为大家介绍了汇编基础,程序编写教程示例,文中附含详细的图文示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 汇编语言学习心得

    汇编语言学习心得

    汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。这篇文章主要介绍了汇编语言学习心得,需要的朋友可以参考下
    2020-01-01
  • 汇编语言程序设计之根据输入改变屏幕颜色的代码

    汇编语言程序设计之根据输入改变屏幕颜色的代码

    这篇文章主要介绍了汇编语言中的根据输入改变屏幕颜色的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03

最新评论