一、关于cmp的详细用法

    假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H。
    执行的指令是:CMP AX, BX
    执行这条指令时,先做用AX中的数减去BX中的数的减法运算。
    列出二进制运算式子:
      0000 0000 0000 0010
    -   0000 0000 0000 0011
    _________________________________
  (借位1) 1111 1111 1111 1111
    所以,运算结果是 0FFFFH
    根据这个结果,各标志位将会被分别设置成以下值:
    CF=1,因为有借位
    OF=0,未溢出
    SF=1,结果是负数
    ZF=0,结果不全是零
    还有AF, PF等也会相应地被设置。
    CMP 比较指令做了减法运算以后,根据运算结果设置了各个标志位。
    标志位设置过以后,0FFFFH这个减法运算的结果就没用了,它被丢弃,不保存。
    执行过了CMP指令以后,除了CF,ZF,OF, SF,等各个标志位变化外,其它的数据不变。
    对照普通的减法指令 SUB AX, BX,它们的区别就在于:
    SUB指令执行过以后,原来AX中的被减数丢了,被换成了减法的结果。
    CMP指令执行过以后,被减数、减数都保持原样不变。


二、tst、cmp、bne、beq指令

1、tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。当前运算结果为1,则Z=0;当前运算结果为0,则Z=1
  cmp:算数处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行减法比较,不存储结果,都会更改标志位
  bne: 数据跳转指令,标志寄存器中Z标志位不等于零时, 跳转到BNE后标签处
  beq: 数据跳转指令,标志寄存器中Z标志位等于零时, 跳转到BEQ后标签处 2、实例
tst r0 , #0x2         //进行and运算,如果bit_2为1,zero==0,如果bit_2为0,则zero==1,即该指令测试bit_2是否为0
bne led_blink //非零则跳转,若zero==1,跳转到led_blink处执行;若zero==0,则继续执行下一步指令
3、实例
sub r1 , r1 , #1     //r1=r1-1
cmp r1 , #0 //r1是否等于0,并更改标志位
bne led_blink //zero==1时跳转至led_blink处,zero==0时则继续执行

关于ARM中的tst、cmp、bne、beq指令的更多相关文章

  1. ARM中几个典型的汇编指令解析

    启动嵌入式设备时,遇到了一些汇编,做个笔记,免得以后忘记了. 一句汇编语句如下所指示: __asm ( ".syntax unified\n" ".thumb\n&quo ...

  2. tst、cmp、bne、beq指令

    1.tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值.当前运算结果为1,则Z=0:当前运算结果为0,则Z=1 cmp ...

  3. [zhuan]arm中的汇编指令

    http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令)   1. ".text& ...

  4. ARM中的---汇编指令

    一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是"以下是代码段& ...

  5. 如何在ARM中创建Express Route

    很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...

  6. 如何将已部署在ASM的资源迁移到ARM中

    使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...

  7. ARM中的总线

    ARM中的总线用于不同部件之间的通信.有两种不同类型的设备连接到总线:ARM处理器,它是总线的主设备,拥有对总线的仲裁权,可以通过同一总线主动发起数据传输请求:外围器件,是总线的从设备,在总线上是被动 ...

  8. ARM中的汇编指令

    Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节 ...

  9. ARM 中必须明白的几个概念

    文章具体介绍了关于ARM的22个常用概念. 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EM ...

随机推荐

  1. OAF_OAF控件系列9 - Description Flexfiled描述性弹性域的实现(案例)

    2014-06-17 Created By BaoXinjian

  2. NYOJ239 月老的难题 【二分图最大匹配·匈牙利】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 月老准备给n个女孩与n个男孩牵红线.成就一对对美好的姻缘. 如今,因为一些原因,部分男孩与女孩可能结成幸福 ...

  3. MVC 之Action

    下面我要重新温习一下,MVC控制器中的Action方法相关概念: 1.Action方法必须是public,不能是private或者是protected; 2.Action方法不能够被重载: 3.Act ...

  4. asp.net2.0导出pdf文件完美解决方案【转载】

    asp.net2.0导出pdf文件完美解决方案 作者:清清月儿 PDF简介:PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统 ...

  5. WIN10中运行ASP出错

    一个项目用ASP做的,想在WIN中IIS建立网站部署起来,开始怎么弄都不行,运行总是出现那句英文,后来才知道要在IIS中的网站的ASP选项中的调试属性中把发送错误到到浏览器打开,这样才能发现程序报错, ...

  6. Xcode真机调试报错:The application could not be verified.

    今天真机调试的时候遇到这个错误: The application could not be verified. 这还是第一次遇到,应该是手机上的app的证书跟如今的证书不一致导致. 解决方法有两个 x ...

  7. 如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持

    HTTP/2 是 HTTP 网络协议的主要修订版本,其专注于 HTTP 协议的性能改进.HTTP/2 协议的目标是减少延迟,并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求,因此 W ...

  8. SourceInsight-查看java中接口对应的实现类

    1.双击选中需要查看的接口名称,然后右击选择“Show in Relation Window” 2.然后在右侧会弹出一个Relation的窗口 如果没有列出对应的实现类,可以在接口名上再次右击,依次选 ...

  9. angular学习笔记(十四)-$watch(4)

    如果需要同时监测多个属性或者对象,并且执行的是同样的回调,可以有两种选择: 1. 监测这些属性连接起来之后的值: $scope.$watch('objOne.a+objTwo.b+...', watc ...

  10. Django---时间的时区问题

    在用django1.8版本做项目的时候遇到时间的存储与读取不一致的问题,网上找了很多帖子,但都没有讲明白.本文将在项目中遇到的问题及如何解决的尽可能详细的记录下来,当然本文参考了网上大量相关文章. 在 ...