首页 > 编程知识 正文

西门子cmp指令介绍,plc的cmp指令失电保持吗

时间:2023-05-06 18:10:53 阅读:51845 作者:2979

ARM命令CMP详细信息

1、加减指令

add r1、r2、#1 /*r1=r2 1 */

sub r1、r2、#1 /*r1=r2 - 1 */

2.ADR命令

adr是较窄范围的地址读取伪指令,ldr是较宽范围的地址读取伪指令。 实际上,adr将基于PC相对偏移的地址值或寄存器的相对地址值作为指令读取,而ldr用于将32个即时数或一个地址加载到指定的寄存器中。 到这里就知道其中的区别了。 如果希望程序加载函数或合并时指定的地址,请使用adr。 例如,在lds中使用需要重新定位的地址。 如果32加载的即时数或外部地址,请使用ldr。 3、CMP

假设现在AX寄存器的数量为0002H,BX寄存器的数量为0003H。

要执行的命令是CMP AX、BX

运行此命令时,首先从AX的数量中减去BX的数量。

要列出二进制运算表达式:

0000 0000 0000 0010

000000000000000000011

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

(借位1 ) 1111 1111 1111 1111

因此,运算结果为0FFFFH

根据该结果,各标志位分别设定为以下值。

CF=1,因为我欠你

OF=0,无溢出

科幻=1,结果为负

ZF=0,结果都不是零

另外,AF、PF等也将相应设置。

CMP比较命令被减去之后,基于运算结果设置各个标记位。 如果设置了标志,则0FFFFH的减法结果将被浪费、丢弃或不保存。 执行CMP指令后,除CF、ZF、OF、SF、等各个标志位变化以外的数据不变化。

与通常的减法指令SUB AX、BX相比,它们的差异如下。

执行SUB命令后,原始AX中的减数丢失,并替换为减法结果。

执行CMP指令后,被减数、减数保持不变。 cmp r0,#0

Beq标签1; 如果r0==0,则跳至LABEL1执行

bne LABEL2; 否则,跳至LABEL2并运行

4、控制流指令

跳转命令(branch ) )

说明:无条件迁移b,BAL

示例: b标签; 标签在某个地方

条件迁移

说明: BEQ等于

BNE各不相同

BPL非负

BMI负

卡介苗没有进位

BCS有进位

BLO更小(无符号数) ) ) ) ) )。

BHS为以上(无符号数) ) ) ) ) ) )。

BHI更大(无符号数) ) ) ) ) ) ) )。

BLS为以下(无符号数) ) ) ) ) )。

无BVC溢出(有符号数) ) ) ) ) )。

存在BVS溢出(有符号数) ) ) ) )。

BGT更大(有符号的数) ) ) ) ) ) ) )。

BGE为以上(带符号数) ) ) ) ) ) ) ) ) ) )。

BLT更小(有符号的数) ) ) ) )。

BLE为以下(带符号数) ) ) ) ) ) ) ) )。

-----------------

作者: n阶立方

来源: CSDN

译文: https://blog.csdn.net/zhouqt/article/details/78172332

声明:本文为博客原创文章。 转载请附上博文链接!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。