数据处理指令之: CMP比较指令

合集下载

三菱PLC触点比较指令和比较指令CMP的应用三菱plc

三菱PLC触点比较指令和比较指令CMP的应用三菱plc

三菱PLC触点比较指令和比较指令CMP的应用 - 三菱plc触点比较指令和比较指令的应用格外的广泛,一般的程序就有这2个指令的其中一条。

我将说说他们的不同之处和应用方法。

触点比较的指令格式为:LD D0 D2这条指令的指令的含义是当数据寄存器D0里面的值不等于数据寄存器D2里值的时候导通。

LD= D0 D2这条指令的含义是数据寄存器D0里面的值小于或者等于数据寄存器D2里面的值导通。

LD= D0 D2这条指令的含义是数据寄存器D0里面的值大于或者等于数据寄存器D2里面的值导通。

LD= D0 D2这条指令的含义是数据寄存器D0里面的值等于数据寄存器D2里面的值导通。

什么LD表示在左母线开头,假如是串联LD的地方则为AND,并联则为OR。

需留意的是这条指令可以是16位和32位运算,但不能位脉冲执行型。

比较指令CMP的应用:这条指令格式为 CMP D0 D2 M0 他的含义是把D0和D2做比较,然后通过M0,M1,M2这3个输出,当D0里面的数据大于D2里面的数据则MO导通。

当D0里面的数据等于D2里面的数据则M1导通。

当D0里面的数据小于D2里面的数据则M2导通。

这条指令可以为16位和32位运算也可以是脉冲执行型。

假如是32位运算则DCMP D0 D2 M0. 假如为32位脉冲执行型则DCMP D0 D2 M0,须留意的是32位运算的时候占用的数据寄存器是4个数据寄存器,他们是D0.D1.D2.D3由于一个数据寄存器是16位连续2个数据寄存器才是32位。

一旦作32位运算他会自动占用D0.D1.D2.D3这4个数据寄存器,因此特殊留意不要在其他程序里不要向这4个数据寄存器里面写入数据,否则会消灭未知的错误。

还有一点留意的是脉冲执行型,假如是脉冲执行型则当执行条件满足时只执行这条指令1次,假如是连续执行型则每个扫描周期都执行所以必需留意。

8086cmp指令用法

8086cmp指令用法

8086cmp指令用法[8086CMP指令用法]在计算机组成原理和汇编语言中,我们经常会遇到8086CMP指令。

8086是Intel 公司在20世纪70年代末开发的一款16位微处理器,它是现代计算机的基石之一。

CMP指令用于比较两个操作数的大小关系,它是比较指令族中最常用的一种。

在本文中,我们将逐步回答有关8086CMP指令的用法,以帮助读者更好地理解和运用它。

第一步:理解8086CMP指令的作用CMP指令的全称是"Compare",它的作用是比较两个操作数的大小关系,并根据比较结果设置标志位。

这些标志位将被后续的条件跳转指令所使用。

通过比较操作数的差异,我们可以确定两个操作数的相对大小关系。

第二步:掌握8086CMP指令的语法8086CPU提供了多种CMP指令的格式,可以用于比较不同类型和大小的操作数。

下面是最常见的两种格式:1. CMP reg, reg/mem这种格式用于比较一个寄存器和另一个寄存器或内存操作数。

其中,reg是一个寄存器,reg/mem可以是寄存器或内存操作数。

例如:CMP AX, BX ; 比较AX和BX的值2. CMP reg, imm这种格式用于比较一个寄存器和一个立即数操作数。

其中,reg是一个寄存器,imm是一个立即数。

例如:CMP AX, 10H ; 比较AX和10H的值第三步:了解8086CMP指令的执行过程当执行CMP指令时,CPU会先将操作数1减去操作数2,然后根据减法的结果设置相应的标志位。

这些标志位是8086CPU用于处理运算结果的一组特殊寄存器。

第四步:熟悉8086CMP指令设置的标志位CMP指令根据减法的结果设置以下标志位:1. CF (Carry Flag): 无论结果是正数还是负数,减法过程中是否发生了进位。

2. ZF (Zero Flag): 比较结果是否为零,如果为零,则设置为1。

3. SF (Sign Flag): 比较结果的最高位是否为1,如果为1,则设置为1。

汇编指令-状态寄存器、cmp、test、jz等指令详细说明

汇编指令-状态寄存器、cmp、test、jz等指令详细说明

汇编指令-状态寄存器、cmp、test、jz等指令详细说明⼀、状态寄存器⾸先看看:状态寄存器(即标志寄存器)PSW(Program Status Word)程序状态字(即标志)寄存器,是⼀个16位寄存器,由条件码标志(flag)和控制标志构成,如下所⽰:条件码:①OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明⼀个溢出了的计算,如:结构和⽬标不匹配。

②SF(Sign Flag)符号标志,结果为负时置1,否则置0。

③ZF(Zero Flag)零标志,运算结果为0时置1,否则置0。

④CF(Carry Flag)进位标志,进位时置1,否则置0.注意:Carry标志中存放计算后最右的位。

⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产⽣的进位置。

有进位时1,否则置0。

⑥PF(Parity Flag)奇偶标志.结果操作数中1的个数为偶数时置1,否则置0。

控制标志位:⑦DF(Direction Flag)⽅向标志,在串处理指令中控制信息的⽅向。

⑧IF(Interrupt Flag)中断标志。

⑨TF(Trap Flag)陷井标志。

test和cmp指令运⾏后都会设置标志位,为举例⽅便说⼀下jnz和jz测试条件JZ ZF=1JNZ ZF=0即Jz=jump if zero (结果为0则设置ZF零标志为1,跳转)Jnz=jump if not zero⼆、test指令和cmp指令好,接着来看test和cmp1、test指令test属于逻辑运算指令功能:执⾏BIT与BIT之间的逻辑运算测试(两操作数作与运算,仅修改标志位,不回送结果)。

Test对两个参数(⽬标,源)执⾏AND逻辑操作,并根据结果设置标志寄存器,结果本⾝不会保存。

EST AX, BX 与 AND AX, BX 命令有相同效果语法:TEST r/m,r/m/data影响标志:C,O,P,Z,S(其中C与O两个标志会被设为0)运⽤举例:1.Test⽤来测试⼀个位,例如寄存器:test eax, 100b; b后缀意为⼆进制jnz ******; 如果eax右数第三个位为1,jnz将会跳转jnz跳转的条件⾮0,即ZF=0,ZF=0意味着零标志没被置位,即逻辑与结果为1。

8086 cmp原理

8086 cmp原理

8086 cmp原理8086 CPU的CMP指令原理解析什么是CMP指令CMP(Compare Compare Data)指令是8086系列CPU中的一条重要指令。

该指令用于比较两个操作数的大小关系,并根据比较结果对标志寄存器进行设置。

它常用于条件跳转、循环控制和排序等场景中。

CMP指令的语法和用法CMP指令的语法如下:CMP destination, source其中destination是目的操作数,source是源操作数。

两个操作数可以是寄存器、内存单元或立即数。

CMP指令的用法是将destination和source进行比较,并根据比较结果设置标志寄存器。

具体比较方式如下: 1. 如果destination和source相等,则设置零标志位ZF为1,表示相等。

2. 如果destination大于source,则设置进位标志位CF为0,表示无进位,符号标志位SF为0,表示正数。

3. 如果destination小于source,则设置进位标志位CF为1,表示有进位,符号标志位SF为1,表示负数。

CMP指令的原理解析在8086 CPU中,CMP指令的执行过程主要分为以下几个步骤:1.从指令中获取destination和source的操作数。

2.将destination和source进行比较。

3.根据比较结果设置标志寄存器。

具体步骤解析如下:步骤一:获取操作数8086 CPU中的CMP指令支持多种操作数类型,包括寄存器、内存单元和立即数。

在执行CMP指令时,首先需要从指令中获取destination和source的具体操作数。

步骤二:比较操作数根据获取到的两个操作数,CPU会对它们进行比较操作。

比较操作会计算destination减去source的结果,并根据比较结果更新标志寄存器的值。

具体比较方式如前文所述。

步骤三:设置标志寄存器根据比较的结果,CPU会设置标志寄存器的各个标志位。

常用的标志位有以下几个: - 零标志位ZF:用于表示比较结果是否为零。

微机原理cmp

微机原理cmp

微机原理cmp微机原理cmp是指微机原理中的比较指令,它是微机原理中非常重要的一部分。

在微机系统中,比较指令是用来比较两个操作数的大小,并根据比较结果设置标志位。

比较指令通常与条件转移指令一起使用,用来实现程序的控制流。

在本文中,我们将详细介绍微机原理cmp的相关知识。

首先,我们来看一下微机原理cmp指令的基本格式。

在大多数微机系统中,cmp指令的格式为cmp operand1, operand2,其中operand1和operand2分别是要进行比较的两个操作数。

在执行cmp指令后,微机会根据operand1和operand2的大小关系设置标志位,以供后续的条件转移指令使用。

在实际的程序设计中,cmp指令通常与条件转移指令配合使用,来实现程序的控制流。

比如,我们可以使用cmp指令来比较两个数的大小,并根据比较结果来决定程序的下一步执行路径。

在这个过程中,cmp指令起到了非常重要的作用,它可以帮助程序实现各种复杂的逻辑控制。

除了用于比较两个数的大小外,cmp指令还可以用于比较两个操作数的相等关系。

在实际的程序设计中,我们经常需要判断两个数是否相等,这时就可以使用cmp指令来进行比较,并根据比较结果设置标志位。

然后,我们可以使用条件转移指令来根据标志位的值来判断两个数是否相等。

总的来说,微机原理cmp指令是微机系统中非常重要的一部分。

它可以帮助程序实现各种复杂的逻辑控制,是程序设计中不可或缺的一部分。

通过本文的介绍,相信读者对微机原理cmp指令有了更深入的了解,希望能够在实际的程序设计中更加灵活地运用cmp指令,实现各种复杂的逻辑控制。

PLC比较指令cmp应用

PLC比较指令cmp应用

在使用比较指令时应注意以下几点:
(1)比较指令的数据均为二进制数,且带符号位比较。

(2)要清除比较结果时,需采用RST和ZRST指令。

比较指令的应用示例如图1所示。

图1中的梯形图采用比较指令实现监视计数值的功能。

Y0按照1s脉冲频率做ON/OFF交替变化,为秒脉冲输出指示,同时还给计数器C0提供计数脉冲信号。

图1比较指令的应用示例
当X0为ON时,若计数器的当前值小于10时,Y1有输出;当
计数器的当前值等于10时,Y
2有输出;当计数器的当前值大于10时,Y3有输出;当计数器的当前值为15时,Y4和Y3均有输出,由于采用Y4的动合触点给计数器复位,所以Y4线圈的得电时间仅为一个扫描周期。

(注:文档可能无法思考全面,请浏览后下载,供参考。

可复制、编制,期待你的好评与关注)。

8086汇编cmp指令

8086汇编cmp指令

8086汇编cmp指令8086汇编 cmp 指令cmp 是⽐较指令,功能相当于减法指令,只是不保存结果。

cmp 指令执⾏后,将对标志寄存器产⽣影响。

格式:cmp 操作对象1,操作对象2功能:计算操作对象1–操作对象2原理:通过做减法运算影响标志寄存器,标志寄存器的相关位的取值,体现⽐较的结果。

cmp 指令说明⼀、应⽤使⽤其他相关指令通过识别这些被影响的标志寄存器位来得知⽐较结果。

应⽤⽅法:⽤标志寄存器值,确定⽐较结果。

⼆、⽆符号数⽐较与标志位取值思路:通过cmp 指令执⾏后相关标志位的值,可以看出⽐较的结果指令:cmp ax,bx三、有符号数⽐较与标志位取值问题:⽤cmp来进⾏有符号数⽐较时,CPU⽤哪些标志位对⽐较结果进⾏记录仅凭结果正负(SF)⽆法得出结论,需要配合是否溢出(OF)得到结论。

⽰例指令:cmp ah,bh条件转移指令;或者其他影响标志寄存器的指令cmp oper1, oper2jxxx 标号⼀、根据单个标志位转移的指令⼆、根据⽆符号数⽐较结果进⾏转移的指令三、根据有符号数⽐较结果进⾏转移的指令四、转移指令全写j-Jump e-Equal n-Not b-Below a-Above L-less g-Greater s-Sign C-carry p-Parity o-Overflow z-Zero 条件准转移指令使⽤jxxx系列指令和cmp指令配合,构造条件转移指令不必再考虑cmp指令对相关标志位的影响和jxxx指令对相关标志位的检测可以直接考虑cmp和jxxx指令配合使⽤时表现出来的逻辑含义。

jxxx系列指令和cmp指令配合实现⾼级语⾔中if语句的功能例1:如果(ah)=(bh),则(ah)=(ah)+(ah),否则(ah)=(ah)+(bh)例2:如果(ax)=0,则(ax)=(ax)+1。

plc中数值比较指令

plc中数值比较指令

plc中数值比较指令PLC中数值比较指令PLC(Programmable Logic Controller)是一种应用于工业自动化控制的可编程逻辑控制器。

数值比较指令是PLC中常用的一种指令,用于实现比较运算,并根据运算结果来判断后续处理。

下面将更详细地介绍数值比较指令的一些基本操作。

数值比较指令的语法格式为:CMP a, b,其中a和b是两个要进行比较的数值。

例如,CMP IN0, 128,表示将输入点IN0的值与数值128进行比较。

数值比较指令将比较结果存储在指令的运算结果寄存器中,并根据比较结果来判断后续的处理。

对于两个不同的输入值a和b,数值比较指令可以返回以下三种结果之一:1. a == b。

这种情况下,数值比较指令的运算结果寄存器将被设置为“1”,表示相等。

2. a < b。

这种情况下,数值比较指令的运算结果寄存器将被设置为“0”,表示小于。

3. a > b。

这种情况下,数值比较指令的运算结果寄存器将被设置为“0”,表示大于。

在使用数值比较指令时需要特别注意以下几点:1. 对于不同的CPU或PLC,数值比较指令的语法格式可能会有所不同。

因此,在具体的应用场景中,需要查阅相应的技术手册。

2. 在使用数值比较指令时,为了保证运算结果的精度,应该尽可能地减小输入值的误差范围,并选择合适的数据类型。

3. 在使用数值比较指令时,需要考虑运算结果的后续处理。

例如,如果需要将运算结果送入PLC的输出模块,就需要考虑模块的实际输出状态。

总之,数值比较指令是PLC中常用的一种指令,可以用于实现复杂的比较运算。

在具体的应用中,需要根据实际需求,选择合适的数据类型和指令格式,并特别注意运算精度和后续处理问题,以确保PLC的稳定运行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据处理指令之:CMP 比较指令
6.11 CMP 比较指令1.指令的编码格式CMP(Compare)比较指令使用寄存器Rn 的值减去operand2 的值,根据操作的结果更新CPSR 中相应的条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。

指令的编码格式如图6.12 所示。

图6.12 CMP 指令编码格式
2.指令的语法格式CMP{cond} Rn,shifter_operand
①cond
为指令编码中的条件域。

它指示指令在什么条件下执行。

当cond 忽略时,
指令为无条件执行(cond=AL(Alway))。

②Rn
指定第一个源操作数寄存器。

③shifter_operand
详见TST 指令。

3.指令操作的伪代码指令操作的伪代码如下面程序段所示。

If ConditionPassed{cond} then
ALU_out = Rn -shifter_operand
N Flag = ALU_out[31]
Z Flag = if ALU_out==0 then 1 else 0
C Flag =NOT BorrowFrom{Rn-shifter_operand}
V Falg=OverflowFrom{Rn-shifter_operand}。

相关文档
最新文档