汇编比大小,cmp命令

汇编语言中cmp指令用法笔记与总结
这篇文章主要介绍了汇编语言中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
    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

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

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

您可能感兴趣的文章:
汇编语言无效指令错误概述
汇编语言lea指令使用方法解析
汇编语言中mov和lea指令的区别详解
16位汇编语言寄存器及指令整理(小结)
汇编语言 and和or逻辑运算指令的实现
详解汇编语言RCL(带进位循环左移)和RCR(带进位循环右移)指令
汇编语言指令集之条件转移指令实现
汇编语言指令集之串处理指令讲解
汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)
详解汇编语言 dup伪指令

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/zer1123/article/details/53954845/

也许是最全java资料!(文档+项目+资料)【点击下载】 和努力的人一起学习Java!

汇编语言cmp指令
相关文章
汇编跳转指令使用总结
汇编跳转指令使用总结

这篇文章主要介绍了汇编跳转指令使用总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
汇编 JCC指令表与笔记
汇编 JCC指令表与笔记

这篇文章主要介绍了汇编 JCC指令表与笔记,需要的朋友可以参考下2020-01-01
汇编语言:比较指令、跳转指令、JCC的使用
汇编语言:比较指令、跳转指令、JCC的使用

这篇文章主要介绍了汇编语言:比较指令、跳转指令、JCC的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01
用汇编语言实现从1加到100的方法(1+2+…+100)
用汇编语言实现从1加到100的方法(1+2+…+100)

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

这篇文章主要介绍了汇编语言指令集之串处理指令讲解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2020-01-01
汇编语言 跳转指令与C语言的条件分支
汇编语言 跳转指令与C语言的条件分支

这篇文章主要介绍了汇编语言 跳转指令与C语言的条件分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03
汇编环境搭建之如何快速安装和配置DOSBox
汇编环境搭建之如何快速安装和配置DOSBox

这篇文章主要介绍了汇编环境搭建之如何快速安装和配置DOSBox,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2020-01-01
汇编语言中mov和lea指令的区别详解
汇编语言中mov和lea指令的区别详解

指令(instruction)是一种语句,它在程序汇编编译时变得可执行。本文给大家总结一下汇编语言中mov和lea指令的区别详解,感兴趣的朋友跟随小编一起看看吧2020-01-01
ARM体系下的GCC内联汇编教程详解
ARM体系下的GCC内联汇编教程详解

在操作系统级的编程中,有时候,C语言并不能完全的使用硬件的功能,这时候就需要嵌入一些汇编代码来实现功能。这篇文章主要介绍了ARM体系下的GCC内联汇编,需要的朋友可以参考下2020-02-02
通过汇编看golang函数的多返回值问题
通过汇编看golang函数的多返回值问题

这篇文章主要介绍了通过汇编看golang函数的多返回值问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,

  • 10
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
大型机汇编(ASM)命令是一种机器语言指令集,用于编写大型机器的汇编程序。这些命令用于控制CPU执行特定的操作,如算术运算、逻辑运算、内存读写等。 在大型机汇编中,有各种不同的指令,用于不同的用途。其中一些常见的命令包括: 1. MOV:用于将数据从一个位置移动到另一个位置。例如,MOV AX, BX将将BX寄存器的内容移到AX寄存器中。 2. ADD和SUB:用于执行加法和减法操作。例如,ADD AX, BX将将BX寄存器的内容与AX寄存器中的内容相加,并将结果存储在AX中。 3. CMP:用于比较两个值的大小。例如,CMP AX, BX将比较AX和BX寄存器的内容,并根据比较结果设置标志位。 4. JMP:用于无条件跳转到程序中的某个位置。例如,JMP LABEL将使程序从当前位置跳转到LABEL处。 5. JZ和JNZ:用于根据标志位条件进行跳转。例如,JZ LABEL将在零标志位被设置时跳转到LABEL处。 6. CALL和RET:用于实现过程或子程序的调用和返回。例如,CALL LABEL将调用LABEL处的子程序,而RET将返回到调用处。 7. PUSH和POP:用于将数据压入堆栈或从堆栈弹出。例如,PUSH AX将将AX寄存器的内容压入堆栈,而POP AX将从堆栈弹出数据并存储在AX中。 这些只是大型机汇编中的一些基本命令,实际上还有更多的指令可以执行其他操作。理解和熟练掌握这些指令对于编写高效的大型机汇编程序至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值