译注:CMP 和 CMP 是算术指令,TEQ 和 TST 是逻辑指令。把它们归入一类的原因是它们的 S 位总是设置的,就是说,它们总是影响标志位。
CMN : 比较取负的值
(Compare Negative)
CMN{条件}{P} ,
status = op_1 - (- op_2)
CMN 同于 CMP,但它允许你与小负值(操作数 2 的取负的值)进行比较,比如难于用其他方法实现的用于结束列表的 -1。这样与 -1 比较将使用:
CMN R0, #1 ; 把 R0 与 -1 进行比较
详情参照 CMP 指令。
CMP : 比较
(Compare)
CMP{条件}{P} ,
status = op_1 - op_2
CMP 允许把一个寄存器的内容如另一个寄存器的内容或立即值进行比较,更改状态标志来允许进行条件执行。它进行一次减法,但不存储结果,而是正确的更改标志。标志表示的是操作数 1 比操作数 2 如何(大小等)。如果操作数 1 大于操作操作数 2,则此后的有 GT 后缀的指令将可以执行。
明显的,你不需要显式的指定 S 后缀来更改状态标志... 如果你指定了它则被忽略。
TEQ : 测试等价
(Test Equivalence)
TEQ{条件}{P} ,
Status = op_1 EOR op_2
TEQ 类似于 TST。区别是这里的概念上的计算是 EOR 而不是 AND。这提供了一种查看两个操作数是否相同而又不影响进位标志(不象 CMP 那样)的方法。加上 P 后缀的 TEQ 还可用于改变 R15 中的标志(在 26-bit 模式中)。详情请参照 psr.html,在 32-bit 模式下如何做请参见这里。
TST : 测试位
(Test bits)
TST{条件}{P} ,
Status = op_1 AND op_2
TST 类似于 CMP,不产生放置到目的寄存器中的结果。而是在给出的两个操作数上进行操作并把结果反映到状态标志上。使用 TST 来检查是否设置了特定的位。操作数 1 是要测试的数据字而操作数 2 是一个位掩码。经过测试后,如果匹配则设置 Zero 标志,否则清除它。象 CMP 那样,你不需要指定 S 后缀。
TST R0, #%1 ; 测试在 R0 中是否设置了位 0。
关键字:ARM 指令集 比较指令
引用地址:
ARM 指令集 比较指令
推荐阅读最新更新时间:2024-03-16 14:59
ARM位操作和伪指令介绍
ARM汇编程序由指令(ARM指令和伪指令)、伪操作和宏指令组成。 ARM伪操作: GET,通常用于包含定义常量的源文件,如用EQU定义的外设地址,类似于C语言中用include好含头文件。(汇编语言中被包含的文件常以.inc结尾)GET 2440addr.inc AREA、ENTRY和END AREA操作常用于定义一个段。通常一个ARM源程序至少需要一个代码段。 ENTRY用于指定程序的入口点。 END用于告诉汇编编译器源文件已经结束。 EXPORT和IMPORT EXPORT 伪操作用于声明外部标号,即当前标号是本源文件中定义的,在其他文件中可能会被引用。 IMPORT 伪操作用于告诉编译器
[单片机]
ARM7嵌入式系统中启动程序的实现
在我们研制开发基于ARM7的嵌入式系统过程中,发现技术难点主要在于系统启动程序的编写,为此本文详细论述了在arm7基础上开发嵌入式系统时启动程序的实现。 1.启动程序流程 嵌入式系统的资源有限,程序通常都是固化在ROM中运行。ROM中程序执行前,需要对系统硬件和软件运行环境进行初始化,这些工作由用汇编语言编写的启动程序完成。 启动程序是嵌入式程序的开头部分,应与应用程序一起固化在ROM中,并首先在系统上运行。它应包含进各模块中可能出现的所有段类,并合理安排它们的次序。 写好启动程序是设计好嵌入式程序的关键,系统启动程序所执行的操作依赖于正在开发其软件的系统,一般流程如下: 进入应用程序主循环 2.详细步骤 ⑴设置入口指针 启动程序
[单片机]
英特尔将代工ARM核心处理器!?
由于FPGA两大领导业者Xilinx与Altera不断在先进制程领域中激烈竞争,也使得Xilinx已经前进到16nm FinFET,委由台积电进行代工,而Altera则是破天荒找上英特尔,以14nm三闸极电晶体进行生产。但在当时,市场仅仅了解的是产品制程,但对于产品本身的架构却是一无所知。 不过,在Altera的官方网站中,却也公布了新一代的产品规划:Stratix 10 GT FPGAs 、Stratix 10 GX FPGAs与Stratix 10 SX SoCs,其中最值得注意的是,Stratix 10 SX SoC内建了ARM的Cortex-A53四核心架构,且Stratix 10旗下全产品线都会交由英特尔的14
[手机便携]
ARM 中断处理和中断控制器
ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin. 在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ的。 先不说中断控制器,只说ARM核心。正常情况下,ARM核都只是机械地随着pc的指示去做事情,当CPSR中的I和F位为1的时候,IRQ和FIQ全部处于禁止状态。无论你在irq pin和fiq pin上面发什么样的中断信号,ARM是不会理你的,你根本不能打断他,因为他耳聋了,眼也瞎了。 在I位和F位为0的时候,当irq pin上有中断信号过来的时候,就会打断arm的当前工作,并且切换到IRQ模式
[单片机]
基于ARM的智能车载终端设备系统的设计
1 系统的整体构建 智能车载管理系统由智能车载终端设备、GPRS无线通信链路以及主站监控中心3个部分组成。总体结构框图如图1所示。 图1 智能车载管理系统结构框图 智能车载终端设备主要包括ARM微处理器、IC卡读写模块、语音提示模块、GPS定位模块、GPRS无线数据传输模块、LCD液晶显示模块和电源模块。本文将重点介绍智能车载终端设备的设计和实现,该终端主要实现以下功能: ① 公交刷卡消费:乘客持公交IC卡刷卡消费时由IC卡读写模块从卡内扣除相应的消费额,并把余额写回卡中。如刷卡成功,则蜂鸣器发出“嘀”的提示音;如刷卡出现异常,则语音模块发出“请重刷”或“请充值”等提示音。最后,把乘客每次的消费额和卡内的余
[单片机]
评论:英特尔支持Android之举打乱微软阵脚
英特尔已将Google的Android手机软件栈用于基于Atom微处理器的智能手机设计,这一消息也可能是打破Windows和ARM处理器僵局的一个信号。 也许英特尔这一举动已让微软措手不及,或者是英特尔在回应微软某种未公开的举动?但英特尔和谷歌Android拿什么与微软全面的Windows操作系统和ARM来抗衡?我似乎听到了读者的疑问? 往常人们都认为英特尔和微软彼此之间有默契:英特尔不会支持Android,只要微软公司不扩展对ARM硬件的支持。 这样的默契是否合法呢?在过去,我们已经看到太多起诉市场垄断的诉讼案例,但我现在不能肯定这一点。如果没有白纸黑字写下来、没有正式的协议,这似乎也没有问题。 但是
[手机便携]
基于ARM11的无线视频
1 引言 随着无线网络的普及,ARM 处理器运算的能力不断地增强以及计算机处理图像的技术不断地提高,基于ARM 的视频监控正越来越广泛的应用于学校,社区,酒店,网吧,医疗等各种各样地领域。传统的视频监控系统布线复杂,设备庞大,智能化低,以及软硬件资源得不到充分的发挥。而ARM 嵌入式系统的小型化、占用空间小、成本低廉、结构紧凑、支持无线网络等特点,使得利用S3C6410 的ARM11+linux系统构成各种各样的无线网络数字监控系统具有广泛的应用价值。 2 系统整体设计 2.1 硬件总体设计 本系统采用韩国三星公司ARM11 内核的S3C6410 作为微处理器,该款处理器体积小,尺寸仅相当于一个48mm*67mm 方块的大
[单片机]
基于ARM7核处理器VxWorks系统BSP设计
1 介绍 S3C4510B是三星公司推出的针对嵌入式应用的16/32 位嵌入式处理器,该微控制器专为以太网通信系统的集线器和路由器而设计,具有低成本和高性能的特点, S3C4510B中内置了ARM公司设计的16/32位ARM7TDMI处理器, 可以执行32位的arm指令,也可执行16位的THUMB指令, 并集成了多种外围部件,主要有: ● 时钟频率50MHz ● 内核/IO电压3.3V ● 8KB的Cache/SRAM ● 一个10/100Mbps 以太网控制器,MII接口 ● 两个HDLC通道,每个通道可支持10Mbps ● 两个UART通道 ● 两个DMA通道 ● 两个32位定时/计数器 ● 18个可编程I
[单片机]