条件执行指令 CMP

article/2025/9/11 22:02:09

CMP可以比较两个数的关系,其本质就是一条减法指令,只是不会将运算结果保存到寄存器,因为对于CPU而言,比较两个数时只关心结果是false还是true

指令格式:CMP  <第一操作寄存器>  <第二操作数>

  • 第一操作寄存器:参与比较的第一个数(只能是寄存器)
  • 第二操作数:参与比较的第二个数(既可以是寄存器,也可以是立即数)

目录

1、CMP实现条件判断的本质

2、条件码以及条件码的使用

3、小练习:使用ARM指令进行条件判断,并执行相应的语句


1、CMP实现条件判断的本质

CMP 的本质就是一条减法指令,减法的结果会影响CPSR寄存器,CPU实际上是根据CPSR中的N、Z、C、V状态位来进行判断。以下面这条语句为例( 假设R1和R2中存的是无符号数)

CMP R1, R2

如果R1 == R2,即 R1 - R2 = 0,CPSR中的状态位 Z = 1

如果R1 != R2,即 R1 - R2 != 0,CPSR中的状态位 Z = 0

如果R1 < R2,即 R1 - R2 运算过程中产生了借位,CPSR中的状态位 C = 0

如果R1 <= R2,即 R1 - R2 运算过程中产生了借位 或者 R1 - R2 = 0,此时 C = 0 或 Z = 1

如果R1 > R2,即 R1 - R2 运算过程中没有产生借位,而且 R1 - R2 != 0,此时 C = 1 且 Z = 0

如果R1 >= R2,即 R1 - R2 运算过程中没有产生借位 或者 R1 - R2 = 0,则 C = 1

2、条件码以及条件码的使用

在实际使用的时候,我们不可能像上面那样,使用CPSR中的状态位去比较两个数的大小,因此,ARM给我们提供了更简洁的指令,那就是“条件码”。

使用时,主要关注第二列“后缀符”和第四列“含义”。

MOV R1, #1            @ R1 = 1
MOV R2, #2            @ R2 = 2
CMP R1, R2            @ 本质: R1 - R2,记录运算结果状态是否为0、是否借位,保存到CPSR寄存器SUBGT R3, R1, R2      @ 含义: 如果CMP的比较结果是R1 > R2,那就执行SUB R3, R1, R2@ SUBGT: 运算符SUB + 后缀符GT@ SUB: 减法运算@ GT: 表示大于,ARM指令集中大多数指令都可以带条件码后缀

注意:ARM指令集中大多数指令都可以带条件码后缀

3、小练习:使用ARM指令进行条件判断,并执行相应的语句

现在有这么一段C语言的代码,用ARM指令将其表示出来。

    int R1 = 9;                 // MOV R1. #9int R2 = 15;                // MOV R2, #15
START:   // CMP R1, R2                       if(R1 == R2)                // BLEQ STOP{STOP(); }else if(R1 > R2)            // SUBGT R1, R1, R2{R1 = R1 - R2;}else                        // SUBLT R2, R2, R1{R2 = R2 - R1;}
STOP:B STOP

http://chatgpt.dhexx.cn/article/MniYgMjq.shtml

相关文章

嵌入式cmp指令的判断标志位_AB PLC | Logix5000控制器状态标志

前言:Logix5000控制器没有状态文件,要访问状态信息,需要使用状态标志。另外,这些标志状态可以根据需要,将其用于程序编写,实现一些特定的功能. 状态标志 1. 状态标志关键字有:S:FS、S:N、S:Z、S:V、S:C、S:MINOR. 2. 可通过指令直接访问这些状态标志,它们并非标签,不能…

嵌入式cmp指令的判断标志位_刘帅嵌入式系统-当前程序状态寄存器(cpsr)

CPSR的格式如下图。SPSR格式与CPSR格式相同。 1、条件标志位 N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位选择性地执行。各条件标志位的具体含义如下。 N:当两个补码表示的有符号整数运算时,N=1表示运算的…

嵌入式cmp指令的判断标志位_ARM汇编指令集

ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。 一、跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令; Ⅱ.直接…

实操汇编原理cmp指令 对比sub与cmp指令

mov ax, 5 mov bx, 5 cmp ax, bx这段指令是5-50&#xff0c;但是并不是在寄存器中a改值: 还没有给ax寄存器放值之前如上图&#xff0c;放入ax和bx之后如下图: 这个时候再step调试一步也就是走cmp ax,bx之后变成如下: 这里可以看到ax并没有发生改变&#xff0c;改变的是flag…

CMP指令(cmp指令的功能)

目前有哪些类型的CMP&#xff1f; 目前有共享一级Cache的CMP、共享二级Cache的CMP以及共享主存的CMP PLC里的cmp比较指令是不是停电保持&#xff1f; OQ0.0 /或 Q0.0常开触点 这个是Q0.0线圈的常开触点&#xff0c;作用就是停电自保持 CMP指令的指令详解 原发布者:weilei1201 c…

汇编语言 CMP指令

CMP(比较)指令执行从目的操作数中减去源操作数的隐含减法操作&#xff0c;并且不修改任何操作数。 指令格式&#xff1a; CMP 目的操作数, 源操作数标志位 当实际的减法发生时&#xff0c;CMP指令按照计算结果修改溢出、符号、零、进位、辅助进位和奇偶标志位。如果比较的是两…

时钟周期、机器周期、总线周期、指令周期的关系

一、时钟周期 时钟周期由主频决定&#xff0c;是最小的时间单位 也叫节拍、T周期、cpu时钟周期 二、机器周期 cpu完成一项基本操作所需最短时间&#xff0c;用了多个时钟周期 又叫cpu周期 例&#xff1a;取指周期&#xff08;含取指令和分析指令&#xff09;、间址周期、执行…

请说明指令周期、机器周期、时钟周期之间的关系。

一条指令周期包括若干个机器周期&#xff0c;一条机器周期又包括若干个时钟周期&#xff0c;时钟周期即振荡周期。 指令周期&#xff1a;取出一条指令并执行这条指令的时间。一般由若干个机器周期组成&#xff0c;是从取指令、分析指令到执行完所需的全部时间。 机器周期&…

时钟周期、机器周期、指令周期的概念及三者之间的关系;定时器及计数器

时钟周期 时钟周期也称为振荡周期&#xff0c;定义为时钟脉冲的倒数(可以这样来理解&#xff0c;时钟周期就是单片机外接晶振的倒数&#xff0c;例如12M的晶振&#xff0c;它的时间周期就是1/12 us)&#xff0c;是计算机中最基本的、最小的时间单位。 在一个时钟周期内&#xf…

如何理解时钟周期及公式CPU执行时间 = CPU时钟周期数/主频

因为用OneNote制作的&#xff0c;公式复制不过来太麻烦&#xff0c;直接截图了。 下面看一下时钟周期的定义&#xff1a; CPU时钟周期&#xff1a;通常为节拍脉冲或T周期&#xff0c;即主频的倒数&#xff0c;它是CPU中最小的时间单位&#xff0c;每个动作至少需要一个时钟周期…

51/时钟周期、时钟频率、状态周期、机器周期

1.时钟频率是什么&#xff1f; 时钟&#xff1a;顾名思义&#xff0c;时钟以精确和固定的时间间隔&#xff0c;触发电信号&#xff0c;其信号被控制单元用于推进CPU的内部操作。而CPU执行 取指令–解码–执行的速度为时钟速度&#xff08;时钟频率&#xff09;。 在各类CPU当中…

时钟周期,机器周期,指令周期的区别

时钟周期 时钟周期也称为振荡周期&#xff0c;定义为时钟脉冲的倒数&#xff08;时钟周期就是单片机外接晶振的倒数&#xff0c;例如12M的晶振&#xff0c;它的时钟周期就是1/12us&#xff09;&#xff0c;是计算机中的最基本的、最小的时间单位。 在一个时钟周期内&#xff0c…

【嵌入式百科】003——时钟周期、指令周期、机器周期、总线周期

一、时钟周期 时钟周期也称为振荡周期&#xff0c;定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数&#xff0c;例如12M的晶振&#xff0c;它的时钟周期就是1/12us)&#xff0c;是计算机中的最基本的、最小的时间单位。在一个时钟周期内&#xff0c;CPU仅完成一个最基本…

IC基础知识(十一)时钟周期、状态周期、机器周期、指令周期和总线周期的定义及关系

目录 ​ ​1.时钟周期、振荡周期、节拍周期 2.状态周期 3.机器周期、CPU周期 4.指令周期 5.总线周期 总结 微信公众号 ​1.时钟周期、振荡周期、节拍周期 时钟周期又叫做振荡周期、节拍周期&#xff0c;定义为时钟晶振频率的倒数。时钟周期是计算机中最基本的、最小的时…

CPU时钟周期和时钟频率

就工作方式而言&#xff0c;CPU 分两种&#xff1a;同步 CPU 和异步 CPU。异步 CPU并不常见&#xff0c;用途广泛的是同步 CPU 。 既然是同步 CPU&#xff0c;当然就需要有一个同步机制&#xff0c;或者说要有个“主管”来维护同步状态&#xff0c;不然你做一样&#xff0c;我…

CPU中的指令周期、CPU周期和时钟周期

https://zhuanlan.zhihu.com/p/90829922 1&#xff0c;指令周期 指令周期&#xff1a;是指计算机从取值到执行执行完毕的时间 计算机执行指令的过程可以分为以下三个步骤&#xff1a; Fetch&#xff08;取指&#xff09;&#xff0c;也就是从 PC 寄存器里找到对应的指令地址…

时钟周期和机器周期之间的关系

时钟周期和机器周期之间的关系 时钟周期&#xff08;小&#xff09;机器周期&#xff08;中&#xff09;指令周期 &#xff08;大&#xff09;作用 时钟周期&#xff08;小&#xff09; 时钟周期&#xff1a;单片机时钟控制的基本时间单位。以微秒(μs)作单位。 时钟周期受时…

凸包和凸集

凸集&#xff1a;在欧氏空间中&#xff0c;凸集是对于集合内的每一对点&#xff0c;连接该对点的直线段上的每个点也在该集合内。 凸包&#xff1a;点集Q的凸包&#xff08;convex hull&#xff09;是指一个最小凸多边形&#xff0c;满足Q中的点或者在多边形边上或者在其内。 凸…

凸优化理论(一)深入理解仿射集,凸集,锥等定义及相关证明

文章目录 1&#xff1a;仿射集相关定义与证明2&#xff1a;相关子空间与性质证明3&#xff1a;线性方程组的解集与化零空间4&#xff1a;任意集合构建最小仿射集-仿射包5&#xff1a;凸集相关&#xff1a;凸包-凸组合6&#xff1a;锥 Cone与凸锥 Convex Cone7&#xff1a;概念比…

泛函分析笔记(八) 凸集和凸函数

文章目录 1. 凸集2. 凸函数 1. 凸集 线段&#xff1a; 给定向量空间的两点 a 和 b &#xff0c;集合 [ a , b ] : { x ∈ X ; x λ a ( 1 − λ ) b , 0 ≤ λ ≤ 1 } [a,b]: \{ x\in X; x \lambda a (1-\lambda)b,0\le \lambda \le 1\} [a,b]:{x∈X;xλa(1−λ)b,0≤λ…