ARM汇编中的:比较指令CMN / CMP / TEQ / TST

发布者:collectors最新更新时间:2016-05-09 来源: eefocus关键字:ARM汇编  比较指令 手机看文章 扫描二维码
随时随地手机看文章
1. 简介

    CMP / CMN : 算术指令

    TEQ / TST : 逻辑指令

     它们总是会影响CPSR条件标志位.

 

    APSR(CPSR)与condition的关系图:

ARM汇编中的:比较指令CMN / CMP / TEQ / TST

 

2. CMN -- 比较取负的值

    CMN{条件}{P}    ,

                    status = op1 - (-op2)                          相加操作

    CMN R0, #1  @把R0与-1进行比较

 

3. CMP

    CMP{条件}{P}    ,

                    status = op1 - (op2)                             相减操作

    会影响标志位.

4. TEQ -- 测试等价

   TEQ{条件} {P}  ,

                     status = op1 EOR op2                        相异或操作

    注意:TEQ是对2个数,进行EOR。

 

5. TST --- 测试位

   TST{条件} {P}  ,

                     status = op1 AND op2                        相与操作

    TST R0,#0x01 @测试Bit0是否为0

均不保存操作的结果,只是影响状态寄存器CPSR的值。

关键字:ARM汇编  比较指令 引用地址:ARM汇编中的:比较指令CMN / CMP / TEQ / TST

上一篇:ARM 汇编中的跳转指令小记
下一篇:ARM汇编中^、!、cxsf符号和movs等指令使用

推荐阅读最新更新时间:2024-03-16 14:53

浅析arm汇编指令使用学习
macro restore_user_regs ldr r1, ldr lr, ! @ !用来控制基址变址寻址的最终新地址是否进行回写操作, @ 执行ldr之后sp被回写成sp+#S_PC基址变址寻址的新地址 msr spsr,r1 @ 把cpsr的值保存到spsr中 ldmdb sp,{r0 - lr}^ @ lr= ,r13= ,r12= ,......,r0= @ 因为没对pc赋值,所以^的表示将数据恢复到User模式的 寄存器组中 mov r0,r0 add sp,sp,#S_FRAME_SIZE - S_PC movs pc,lr .endm 其
[单片机]
ARM汇编指令的条件执行及其他相关细节
ARM指令在机器中的表示格式用32位的二进制数表示 例如 ADDEQS R0,R1,#8 表示为下表 31~28 27~25 24~21 20 19~16 15~12 11~0 0000 001 0100 1 0001 0000 000000001000 cond opcode Rn Rd
[单片机]
ARM汇编指令学习 实现数据块拷贝
这个学期,系里开了嵌入式的课程,正好借助这个机会系统地学习下ARM的指令系统。这个系列文章主要是通过一些简单的汇编程序实例来学习ARM指令,使用的编译器是ADS 1.2。 程序要求: 设计一段程序完成数据块的,数据从源数据区snum到目标数据区dnum,数据量大小为NUM字(1个字=4个字节),时以8个字为单位进行,对于最后所剩不到8个字的数据,以字为单位进行。 程序清单: 1 ;============================================================================== 2 ; blocks.s: 将数据从源数据区snum到目标数据区dnum,数据量大
[单片机]
<font color='red'>ARM汇编</font><font color='red'>指令</font>学习 实现数据块拷贝
ARM汇编:汇编中proc、endp、ret、near、far指令用法
子程序名 PROC NEAR ( 或 FAR ) …… ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序和子程序在同一代码段中,只能被相同代码段的其他程序调用; FAR属性(段间远调用): 调用程序和子程序不在同一代码段中,可以被相同或不同代码段的程序调用. (2)proc是定义子程序的伪指令,位置在子程序的开始处,它和endp分别表示子程序定义的开始和结束两者必须成对出现。 (3)ret指令的内部操作是:栈顶字单元出栈,其值赋给IP寄存器。即实现了一个程序的转移,将栈顶字单元保存的偏移地址作为下一条指令的偏移地址。
[单片机]
Linux下ARM汇编语法
第一部分 Linux下ARM汇编语法 尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点 (www.gnu.org)上下载有关规范。 一. Linux汇编行结构 任何汇编行都是如下结构: ]] 每一个段以段名为开始, 以下一个段名或者文件结尾为结束。这些段都有缺省的标志(flags),连接器可以识别这些标志。(与armasm中的AREA相同)。 下面是ELF格式允许的段标志 含义 a 允许段 w 可写段 x 执
[单片机]
ARM汇编指令学习(1) 实现数据块拷贝
程序要求: 设计一段程序完成数据块的,数据从源数据区snum到目标数据区dnum,数据量大小为NUM字(1个字=4个字节),时以8个字为单位进行,对于最后所剩不到8个字的数据,以字为单位进行。 程序清单: 1 ;============================================================================== 2 ; blocks.s: 将数据从源数据区snum到目标数据区dnum,数据量大小为NUM字 3 ; 时以8个字为单位进行,最后不够8个字的数据按1个字为单位 4 ;=====================================
[单片机]
<font color='red'>ARM汇编</font><font color='red'>指令</font>学习(1) 实现数据块拷贝
GNU ARM汇编(五)中断汇编之嵌套中断处理
在上篇《GNU ARM汇编--(四)中断汇编之非嵌套中断处理》中分析了最简单的中断处理的写法,再看TQ2440启动代码中的中断向量表的写法就一目了然了.今天抽时间对嵌套中断处理的学习做下整理. 嵌套中断处理的核心代码如下: ;/* ; * ____________________________________________________________________ ; * ; * Copyright (c) 2004, Andrew N. Sloss, Chris Wright and Dominic Symes ; * All rights reserved. ; * _______________
[单片机]
ARM汇编中调用C函数的参数传递方式
对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard)标准,ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须通过堆栈进行传递。 我们先讨论一下形参个数为4的情况: 实例1 s// test_asm_args.asm //--------------------------------------------------------
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty