传送指令与比较指令
第七章 PLC传送比较指令及.

内容提要 数据传送比较类指令含比较指令、区间 比较指令、传送指令、块传送指令、多点传送指令、 数据交换指令、BCD交换指令、BIN交换指令,是 数据处理类程序中使用十分频繁的指令。
本章介绍传送比较指令的使用方法及应用,给出
了一些实例。
7.1传送、比较类功能指令说明
图6-18 32位数据的传送
• 3.位传送指令 (1)位传送指令说明及梯形图表示方法 • SMOV指令是进行数据分配与合成的指令。该 指令是将源操作数中二进制(BIN)码自动转换 为BCD码,按源操作数中指定的起始位号ml和 移位的位数m2向目标操作数中指定的起始位n 进行传送,目标操作数中未被移位传送的BCD 位,数值不变,然后再自动转换成二进制(BIN) 码,如图6-19所示。 • 源操作数为负以及BCD码的值超过9999都将出 现错误。
7.数据交换指令XCH(FNC17)
(1)指令格式 (2)指令说明 ① 数据交换指令功能是将两个指定的目标操作数 进行相互交换。如图6-28所示,当X0为ON时, D10与D11的内容进行交换。若执行前(D10) =100、(D11)=150,则执行该指令后, (D10)=150,(D11)=100。
图6-14 传送指令的基本形式
• 当X0合上,则(D1,D0)→(D11,D10); 当X1合上,由(C235)32位→D21,D20。 (3)指令的应用举例 ① 定时器、计数器当前值读出,如图6-15。图中, X1=ON时,(C0当前值)→(D20)。 ② 如图6-16是定时器、计数器的间接设定。在图 中,X2=ON时,K200→(D12),(D12) 中的数值作为T20的时间设定常数,定时器延时 20s。
• ③ BCD码的数值范围: 16位操作时为0-9999, 32位操作时为0-99999999。 • ④ 如果数据源不是BCD码,则 M8067为“1”,表示运算错误,同时, 运算错误锁存特殊辅助继电器M8068 不工作。 • ⑤ 常数K自动进行二进制变换处理。
第7讲 CPM1A系列PLC的指令系统—数据传送和比较指令

电气控制及可编程序控制器
数据比较指令
指令格式: BCMP (68) CD CB R 梯形图符号: 操作区域:
CD:比较数 CB:比较块的起始通道 R:比较结果通道
湖北工业大学
电气控制及可编程序控制器
数据比较指令
☺ 指令助记符前加@标记为微分型指令 ☺ 微分型指令和非微分型指令区别: ◆ 非微分型指令只要执行条件为ON,则每个循 环周期都要执行一次。 ◆ 微分型指令仅在执行条件由OFF变成ON时执 行一次。
湖北工业大学
电气控制及可编程序控制器
数据传送指令
◆ MOVB指令的应用
湖北工业大学
电气控制及可编程序控制器
数据传送指令
7.数字传送指令MOVD(83)/@MOVD(83) 梯形图符号及操作数取值区域
湖北工业大学
电气控制及可编程序控制器
数据传送指令
☺ 功能:当执行条件为ON时,将S中指定的数字位 (4个二进制位)传送到D中指定的数字位,一 一 次最多可以传送4个数字位。 S中要传送的第一 次最多可以传送4个数字位 个数字位、传送的数字位数、D中接收被传送数 字的第一个数字位由C指定。
数据比较指令
2、双字比较指令CMPL(60) 功能: 将通道Cp1+1、Cp1中的两个4位16进制数连成 一个8位16进制数,将通道Cp2+1、Cp2中的两个4 位16进制数连成另一个8位16进制数,然后比较这 两个8位数的大小,将比较结果送SR区的标志位。 ☺(Cp1+1、Cp1)>(Cp1+2、Cp2),大于标志位25505 ON ☺(Cp1+1、Cp1)=(Cp1+2、Cp2),等于标志位25506 ON ☺(Cp1+1、Cp1)<(Cp1+2、Cp2),小于标志位25507 ON
菱FX1N基本指令介绍

故障诊断与排除方法
故障诊断
当菱fx1n PLC出现故障时,可以通过观察 PLC的指示灯和报警信息,初步判断故障类 型和原因。然后利用PLC的在线监控功能, 进一步分析故障现象和定位故障点。
故障排除
针对不同的故障类型和原因,可以采取相应 的排除方法。例如,对于电源故障可以检查 电源线路和保险丝是否正常;对于通信故障 可以检查通信接口和通信参数是否设置正确 ;对于程序错误可以检查程序逻辑和变量赋 值是否正确等。在排除故障后,需要重新测 试PLC的功能和性能,确保恢复正常运行。
用于控制电动机反转,即逆时针方向 旋转。反转电路通常包括一个反转按 钮和一个反转接触器。按下反转按钮 时,反转接触器线圈得电并吸合,从 而接通电动机的反转电路。
互锁功能
为了防止电动机同时接通正转和反转 电路而造成损坏,正反转互锁电路采 用了互锁功能。在正转电路中串联一 个反转接触器的常闭触点,在反转电 路中串联一个正转接触器的常闭触点 。这样,当其中一个接触器吸合时, 另一个接触器的电路就会被切断,从 而实现了互锁功能。
数据比较指令
对两个数据进行比较,根据比较结果执行相 应操作。
数据转换指令
实现数据类型的转换,如BCD码与二进制数 之间的转换。
数学运算指令
提供加、减、乘、除等基本数学运算功能。
高速处理指令
高速计数器指令
对外部输入的高速脉冲信号进行计数,实现高精度测量和控制。
高速比较指令
对高速计数器的值与预设值进行比较,输出比较结果。
THANKS
感谢观看
XCH指令
用于交换两个数据寄存器的内容, 常用于在不影响其他寄存器的情 况下交换数据。
比较类指令
ZCP指令
用于比较一个数据与一组数据中的某一个是 否相等,通常用于查找或匹配操作。
汇编指令1

汇编语言指令集一、数据传输指令1. 通用数据传送指令.MOV(MOVe) 传送字或字节.MOVS(MOVe String) 串传送指令MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG (eXCHanG)交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD先交换再累加.( 结果在第一个操作数里)XLAT(TRANSLATE) 字节查表转换.── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.LEA (Load Effective Address)装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS (Load DS with pointer)传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES (Load ES with pointer)传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF (Load AH with Flags)标志寄存器传送,把标志装入AH.SAHF (Store AH into Flgs)标志寄存器传送,把AH内容装入标志寄存器.PUSHF (PUSH the Flags)标志入栈.POPF (POP the Flags)标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加1.AAA 加法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAA 加法的十进制调整.压缩的BCD码加法十进制调整指令SUB (SUBtract)减法.SBB (SuVtrach with borrow)带借位减法.DEC (DECrement)减1.NEC (NEGate)求反(以0 减之).CMP (CoMPare)比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAS 减法的十进制调整.压缩的BCD码减法十进制调整指令MUL (unsinged MULtiple)无符号乘法.IMUL (sIgned MUL tiple)整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV (unsigned DIVide)无符号除法.IDIV (sIgned DIVide)整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW (Count Byte to Word)字节转换为字. (把AL中字节的符号扩展到AH中去)CWD (Count Word to Doble word)字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL (SHift logical Letf)逻辑左移.SAL 算术左移.(=SHL)SHR (SHift logical Right)逻辑右移.SAR 算术右移.(=SHR)ROL (Rotate Left )循环左移.ROR (Rotate Right)循环右移.RCL (Rotate Left through Carry)通过进位的循环左移.RCR (Rotate Right through Carry)通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS (CoMPare String)串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS (SCAn String)串扫描指令.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS (STOre into String)保存串.是LODS的逆过程.REP (REPeat)当CX/ECX<>0时重复.REPE/REPZ (REPeat while Equal/Zero)当ZF=1或比较结果相等,且CX/ECX<>0时重复. REPNE/REPNZ (REPeat while Not Equal/Zero)当ZF=0或比较结果不相等,CX/ECX<>0时重复. REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD (SeT Direction flag)置方向标志位.CLD (CLear Direction flag)清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令───────────────────────────────────────DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.8088 汇编跳转cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing” call 调用子程序je 或jz 若相等则跳jne或jnz 若不相等则跳jmp 无条件跳jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定。
PLC传送比较指令的基本用途

PLC传送比较指令的基本用途
MOV、CMP指令,SMOV、CML、BMOV、FMOV、XCH、BCD、BIN 和ZCP指令系统称为传送比较指令,它们是应用指令中使用最频繁的指令。
它们的基本用途有以下几个方面。
(1)用来获得程序的初始工作数据。
一个掌握程序总是需要初始数据。
这些数据可以从输入端口上连接的外部器件获得,然后通过传送指令读取这些器件上的数据并送到.内部单元;初始数据也可以用程序设置,即向内部单元传送马上数;另外,某些运算数据存储在机内的某个地方,等程序开头运行时通过初始化程序传送到工作单元。
(2)用来进行机内数据的存取管理。
在数据运算过程中,机内的数据传送是不行缺少的。
由于数据运算可能要涉及不同的工作单元,数据需在它们之间传送;同时,运算还可能会产生一些中间数据,这些数据也需要传送到适当的地方临时存放;另外,有时机内的数据需要备份保存,这就要找地方把这些数据存储妥当。
总之,对一个涉及数据运算的程序,数据管理是很重要的。
(3)用来运算处理结果并向输出端口传送。
运算处理结果总是要通过输出实现对执行器的掌握。
对于与输出口连接的离散执行器件,可成组处理后看做是整体的数据单元,按各口的目标状态送入相应的数据,以实现对这些器件的掌握。
(4)用来比较指令以建立掌握点。
掌握现场常有将某个物理量的量值或变化区间作为掌握点的状况。
如温度低于某设定值打开电热器,
通过高于或低于某值就报警等。
作为一个掌握“阀门”,比较指令常消失在工业掌握程序中。
汇编常用指令

汇编常用指令1. 前言汇编语言是一种低级别的计算机语言,它是由一些指令组成的。
指令是一条计算机执行的命令,从基本上讲,这些指令代表着标准的操作,例如加、减、乘、除、移位和比较等。
汇编语言可以通过编写程序来控制一个计算机的行为,这些程序通常被称为汇编程序。
本文将介绍汇编语言中一些常用的指令。
2. 数据传送指令数据传送指令是汇编语言中最基本的指令之一,它主要用来将数据从一个位置传送到另一个位置。
在汇编语言中,数据传送指令通常使用MOV语句来实现。
下面是一些常用的数据传送指令:- MOV AX, BX:将BX中存储的数据传送到AX中。
- MOV AX, [BX]:将BX中存储的地址所指向的数据传送到AX中。
- MOV [BX], AX:将AX中存储的数据传送到BX所指向的地址中。
3. 算术运算指令算术运算指令主要用来执行各种数学运算,例如加法、减法、乘法和除法等操作。
下面是一些常用的算术运算指令:- ADD AX, BX:将BX中存储的数据与AX中存储的数据相加,并将结果存储在AX中。
- SUB AX, BX:将BX中存储的数据从AX中存储的数据中减去,并将结果存储在AX中。
- MUL BX:将AX中存储的数据与BX中存储的数据相乘,并将结果存储在AX中。
- DIV BX:将AX中存储的数据除以BX中存储的数据,并将结果存储在AX和DX中。
4. 位运算指令位运算是一种在二进制数字级别上的运算,它可以执行各种位操作,例如AND、OR、XOR和NOT等操作。
下面是一些常用的位运算指令:- AND AX, BX:将BX中存储的数据与AX中存储的数据按位进行AND运算,并将结果存储在AX中。
- OR AX, BX:将BX中存储的数据与AX中存储的数据按位进行OR 运算,并将结果存储在AX中。
- XOR AX, BX:将BX中存储的数据与AX中存储的数据按位进行XOR运算,并将结果存储在AX中。
- NOT AX:将AX中存储的数据按位进行取反操作。
传送和比较指令

M1 K100<C10的当前值时,M0 = ON
Y2
[S1>[S2],[D+2] = ON
K100=C10的当前值时,M1 = ON M2
Y3
K100>C10的当前值时,M2 = ON
一、比较指令 FNC10 CMP
❖ 说明
➢ 该指令是将源操作数[S1]和[S2]的中数据进行比较,结果送目标操作 数[D]中去。
四、移位传送指令 FNC13 SMOV
梯形图
X0
[S] m1 m2 [D] n
SMOV D1 K4 K2 D2 K3
b15
D1
自动转换
b0
二进制
D1
3 10
2 10
1 10
0 10
4位BCD码
保持
保持
D2
3 10
2 10
1 10
0 10
4位BCD码
b15
D2
自动转换
b0
二进制
从D1右起第四位(m1 = K4) 开始的2位 (m2 = K2) 数,
七、多点传送指令 FNC16 FMOV
❖ 操作数 [S]:K,H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D n: K、H ❖ 梯形图
X0
[S] D n
FMOV K10 D0 K10
把K10传送到D0~D9中去
八、数据交换指令 FNC17 XCH
D5
D10
D6
D11
D7
D12
六、块传送指令 FNC15 BMOV
❖ 说明 ➢ [S]为存放被传送的数据块的首地址;[D]为存放传送来的数据块的首 地址;n为数据块的长度。 ➢ 位元件进行传送时,源和目标操作数要有相同的位数。 ➢ 当传送地址号重叠时,为防止在传送过程中数据丢失(被覆盖),要 先把重叠地址号中的内容送出,然后再送入数据。如图所示,采用 ①~③的顺序自动传送。 ➢ 该指令可以连续/脉冲执行方式。
传送及比较指令总结

传送及比较指令总结传送指令是计算机系统中常用的一类指令,用于将数据从一个位置移动到另一个位置。
这些指令通常用于数据的复制、转移和重排等任务。
在本文中,我将总结一些常见的传送指令,并比较它们的异同。
1.MOV指令:MOV (Move) 指令用于将数据从一个位置复制到另一个位置。
它可以在寄存器之间、寄存器和内存之间、寄存器和端口之间进行数据的传送。
MOV 指令通常具有两个操作数,一个目标操作数和一个源操作数。
例如,`MOV AX, BX` 将寄存器 BX 中的值复制到寄存器 AX 中。
MOV 指令在大多数计算机体系结构中都是支持的,因为它是一种非常基本和常见的操作。
2.LDR和STR指令:LDR (Load) 和 STR (Store) 指令用于将数据从内存中加载到寄存器或将数据从寄存器存储到内存中。
这些指令主要在ARM架构中使用。
LDR指令将内存中的数据加载到寄存器中,例如,`LDR R0, [R1]` 将 R1 寄存器中的地址所对应的内存单元中的数据加载到 R0 寄存器中。
STR 指令则将寄存器中的数据存储到内存中,例如,`STR R0, [R1]` 将 R0 寄存器中的数据存储到 R1 寄存器中的地址所对应的内存单元中。
3.PUSH和POP指令:PUSH指令用于将数据压入栈中,而POP指令用于从栈中弹出数据。
这两个指令通常用于实现函数调用和中断处理等操作。
PUSH指令将数据放入栈顶,然后栈指针下移;而POP指令则将栈顶数据读取到寄存器中,并将栈指针上移。
例如,`PUSHAX`将AX寄存器中的数据压入栈中,`POPAX`将栈顶数据弹出到AX寄存器中。
4.XCHG指令:XCHG (Exchange) 指令用于交换两个操作数的值。
这个指令可以用于两个寄存器之间的值交换,或者寄存器和内存之间的交换。
例如,`XCHG AX, BX` 将寄存器 AX 和 BX 中的数据进行交换。
XCHG 指令常用于实现数据交换、排序和互斥访问等场景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、编写程序实现以下控制:
PLC通电后,首先进入密码输入页面;
如密码正确(2012),按下列条件进入不同页面:
(1) 如开关打在左边,则进入手动页面;
(2) 如开关打在右边,则进入自动页面;
报警页面中的报警信号有:卡机报警(Y12),缺料报警X2,气缸未定位报警s901,计数报警C10。
编程思路:
1、PLC上电后,首先把页面编号1,传送给页面切换寄存器D;
2、使用比较指令,判断输入的密码是否为2012;
3、密码正确的情况下:如X1=1, 把页面编号3,传送给页面切换寄存器D;
4、密码正确的情况下:如X1=0, 把页面编号2,传送给页面切换寄存器D;
5、如有任何报警,让主电机Y10停机,蜂鸣器Y11响,如按下M34,则Y11
不响。
6、M30,M31分别给D200,D225清零。
3.1 传送指令
今天,我们来学习跟“数值传送”相关的功能指令。
在控制应用中,一个控制程序总是需要初始数据,这些数据可以通过各种方式获得,如从外部器件读取,或在程序开始运行时,从内部存储单元获取,因此,机内的数据传送是不可缺少的。
一、传送指令的“助记符”
在三菱的指令系统里,比较指令的“指令记号”是MOV,也就是Move (移动,运输)的简写。
二、传送指令的格式
“比较指令的指令格式”如下:
其中:
是传送源;是传送目标。
指令规定:
传送源:可以是字元件,如T、C、D、V/Z,也可以是位组合的字元件KnX,KnY,KnM,KnS,当然可以是十进制数K、十六进制数H。
是传送目标:必须是字元件,如T、C、D、V/Z,也可以是位组合的字元件KnY,KnM,KnS。
操作数格式如下所示:
三、传送指令的常用用法
传送指令一般用于读出内部存储器件的当前值、数据间接赋值和位传送。
1、读出内部存储器件的当前值
此行程序表示,当X1导通时,将定时器T0的当前计时值读出,存储在数据寄存器D20中。
2、数据间接赋值
上述程序表示,当X2导通时,将K100传送给数据寄存器D10,当X2关断时,将K50传送给数据寄存器D10,当M0导通时,定时器T20开始计时。
可以看出,通过X2的开、关,可以对定时器T20设定2个设定值。
3、位传送
上图左侧为基本指令的梯形图,表示X0(或X1\X2\X3)导通时,Y0(或
Y1\Y2\Y3)导通,我们可以使用右侧MOV指令来替代。
3.2 比较指令
今天,我们来学习跟“数值比较”相关的功能指令。
在控制应用中,经常需要将某个物理量的数值变化作为控制点,如温度低于多少度就打开电热器,速度高于或低于一个区间就报警等。
因此,作为一个控制“阀门”,比较指令常出现在工业控制程序中。
一、比较指令的“助记符”
比较指令的“指令记号”是CMP,也就是compare的简写。
比较指令有连续执行型(D)CMP和脉冲执行型(D)CMPP,DCMP(P)表示32位数据的比较。
二、比较指令的格式
“比较指令的格式”如下:
其中:
S1和S2是源操作数,即两个进行数值比较的对象;
D是目标操作数,即根据比较结果所输出的结果。
指令规定:
源操作数(S1,S2):可以是处理数据的字元件,如T、C、D、V/Z,也可以是位组合的字元件KnX,KnY,KnM,KnS,当然可以是十进制数K、十六进制数H。
目标操作数(D):必须是位元件,如Y、M、S。
如操作数不完整,或者指定的操作数不符合要求,使用比较指令就会出错。
操作数格式如下所示:
三、比较指令的示例
我们看一个示例:
当X0满足条件(接通)时,指令执行,S1和S2进行比较有三种结果:大于、等于、小于。
一般,我们把要比较的基准值放在前面,也就是S1(在示例是K100),把变化的数值放在后面,也就是S2(在示例中是计数器C20),如下图所示。
根据上述三种比较结果,目标操作数D的结果如下:
S1> S2;也就是C20<K100,位元件D变ON;
S1= S2;也就是C20=K100,位元件D+1变ON;
S1< S2;也就是C20>K100,位元件D+1变ON。
大家要注意到:在示例中目标操作数为m0,则m1、m2被自动占用。
“触点比较指令”
2、触点比较指令
在工业控制中,经常需要反复使用CMP指令或ZCP指令,这时使用触点比较指令会非常方便,同时,触点比较指令为上下限控制以及数值条件判断提供了方便。
(1)触点比较指令的说明
触点比较指令相当于一个触点,指令执行时,比较两个操作数[S1]、[S2],满足比较条件,则触点闭合。
触点比较指令的“助记符”即为数学运算符号“>”(大于)、“<”(小于)、“≥”(大于等于)、“≤”(小于等于)、“=”(等于)、“< >”(不等于)。
触点比较指令格式,示例如下:
如上图所示为判断S1和S2是否相等的触点比较指令,如相等此触点导通。
当进行32位的数值比较时,指令的“助记符”前要加D,如下例所示。
当X0处于ON,数据寄存器D11,D10的内容小于678493时,驱动M0。
触点比较指令作为一个触点,可以和母线直接相连,也可以串联和并联。
如下例所示即为两个触点比较指令串联使用,形成一个比较区域。
如上图所示为判断S是否在(S1,S2)范围内,即两个触点都满足条件时,这一行程序才能执行和输出动作。
(2)触点比较指令的应用
如下程序为一个霓虹灯循环点亮控制程序。
12盏灯分别接在PLC的Y0—Y13输出端,X0端接启动按钮。
当X0接通,计时器T0开始循环计时,K60是计时6秒钟。
当X0断开,0送入将Y0—Y13,即所有彩灯都熄灭。