关于ARM中的tst、cmp、bne、beq指令
一、关于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指令的更多相关文章
- ARM中几个典型的汇编指令解析
		
启动嵌入式设备时,遇到了一些汇编,做个笔记,免得以后忘记了. 一句汇编语句如下所指示: __asm ( ".syntax unified\n" ".thumb\n&quo ...
 - tst、cmp、bne、beq指令
		
1.tst:逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值.当前运算结果为1,则Z=0:当前运算结果为0,则Z=1 cmp ...
 - [zhuan]arm中的汇编指令
		
http://blog.csdn.net/qqliyunpeng/article/details/45116615 一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text& ...
 - ARM中的---汇编指令
		
一. 带点的(一般都是ARM GNU伪汇编指令) 1. ".text".".data".".bss" 依次表示的是"以下是代码段& ...
 - 如何在ARM中创建Express Route
		
很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...
 - 如何将已部署在ASM的资源迁移到ARM中
		
使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...
 - ARM中的总线
		
ARM中的总线用于不同部件之间的通信.有两种不同类型的设备连接到总线:ARM处理器,它是总线的主设备,拥有对总线的仲裁权,可以通过同一总线主动发起数据传输请求:外围器件,是总线的从设备,在总线上是被动 ...
 - ARM中的汇编指令
		
Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节 ...
 - ARM 中必须明白的几个概念
		
文章具体介绍了关于ARM的22个常用概念. 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EM ...
 
随机推荐
- C 标准IO 库函数与Unbuffered IO函数
			
先来看看C标准I/O库函数是如何用系统调用实现的. fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int 类型的编号),分配一 个FILE 结构体, 通常里面包含了: ...
 - Linux内存使用方法详细解析
			
我是一名程序员,那么我在这里以一个程序员的角度来讲解Linux内存的使用. 一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存.这两个概念主要来自于linux内核的支持. Linux在 ...
 - Hibernate的like用法
			
直接写String sql = "from ClientInfo as a where a.client_name like '%"+ clientname+"%'&qu ...
 - 如何安装rockmongo(gui for mongodb)
			
1.下载rockmongo 下载地址: http://rockmongo.com/downloads 将下载下来的压缩包rockmongo-1.1.5.zip解压到web 发布目录(我这里使用的是ap ...
 - 定时登录下载sftp服务器上的某些有规则的文件
			
[root@1-live duizhangdan]# cat wget.sh #!/bin/bash#定时下载sina sftp服务器上的bak_dir=`date -d"5 day ago ...
 - ps曲线
			
>>曲线的基本原理. 输入:在坐标的底部横着的是输入,显示的是当前图片上的颜色信息. 输出:竖着的是输出线,使我们调整图片的输出结果. 输入和输出轴上都有一条明暗信息,告诉我们那边是阴影那 ...
 - ruby,python及curl post请求
			
#飘红部分为变量 test_url="http://test" body_hash={"value"=>100, "year"=> ...
 - 原来npm的依赖树管理不靠谱
			
今天删除了一个模块,结果发现项目编译无法成功,缺依赖,然后再安装也不行了.只好把node_modules清空,重新npm install,项目恢复正常. npm uninstall的时候,可能把现存某 ...
 - hdoj 2717 Catch That Cow
			
Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...
 - Filter method example
			
The Scala List class filter method implicitly loops over the List/Seq you supply, tests each element ...