程序控制类指令PPT课件

合集下载

三菱PLC功能指令ppt课件

三菱PLC功能指令ppt课件
FX2N系列可编程控制器功能指令
4.5.1概述
定义 可编程控制器的基本指令——基于继电器、定时器、计数 器类软元件,主要用于逻辑处理的指令。 功能指令(应用程序)——用于数据的传送、运算、变换 及程序控制等功能。
3
概述
功能指令 的特点
➢ 功能强大 ➢ 指令处理的数据多 ➢ 数据在存储单元中流转的过程复杂
2、子程序调用指令及应用
一、子程序调用指令的使用要素及梯形图表示
子程序调用指令要素
指令名称 子程序调用 子程序返回
助记符
CALL CALL(
P) SRET
指令代 码位数 FNC01
(16)
FNC02
操作数 [D·]
指针 P0~P62 嵌套 5级

程序步
3步(指令标 号)1步
1步
11
子程序调用指令及应用
1步
18
中断指令
中断是计算机所特有的一种工作方式。 中断子程序是为某些特定的控制功能而设定的。
特定的控制功能的共同特点:要求响应时间小于机器 的扫描周期。
三类中断:
➢ 输入中断 ➢ 定时器中断 ➢ 计数器中断
19
指针I
输入中断用指针。输入中断用指针I00□~I50□,共6点。 6个输入中断仅接收对应于输入口 X000~X005的信号触发。 这些输入口无论是硬件设置还是软件管理上都与一般的输 入口不同,可以处理比扫描周期短的输入中断信号。上升沿 或下降沿指对输入信号类别的选择。
图8-11 外部输入中断子程序示例
22
例:
说明:图中一开始为允许中断,当X1从OFF至ON且保持ON, 程序跳到指针I101处执行中断,即执行第13行,将K100 送到D1,然后返回主程序,对定时器T0计时,当计时达 到D12当前值K100时,T0触点闭合,Y0得电。

4.5 程序控制类指令

4.5 程序控制类指令

•根据两个无符号数比较结果转移
•JBE(JNA): ZF∨CF=1 则转移 •JNBE(JA): (ZF =0)∧(CF=0 )则转移
•比较两个带符号数,并根据比较结果转移
•JL(JNGE): SF OF=1 且ZF=0则转移
•JNL(JGE): SF OF=0或ZF=1则转移 •JLE(JNG): SF OF=1或ZF=1则转移 •JNLE(JG): SF OF=0 且ZF=0则转移
I P LOP2的段内偏移地址
CS LOP2的段地址
段间间接转移
JMP DWORD PTR [BX] I P [BX] CS [BX+2]
条件转移指令
形式: JX 短目标地址 X :1~3个英文字母,表示条件。 跳转范围: -128~+127字节(只有短转移,是相 对转移 ) 功能: 当指令中给出的条件满足时转移,可分 为依据单个标志位的条件转移指令和依据若干 个标志位组合的条件转移指令。
(1)、 CALL( Call a procedure)调用
段内直接调用
CALL addr(16位);一般用标号表示如:
CALL subp1; subp1为具有near属性的标号
段间直接调用 CALL addr(32位);一般用标号表示,如:
CALL subp; subp为具有far属性的标号
间接调用:
•测试CX的值为零转移 :JCXZ
例1
、比较1000H、1001单元的两个数,将大数
存2000H单元中。
MOV BX,1000H ;第一数送AL MOV AL, [BX] INC BX ;指向第二数 CMP AL,[BX] ;两数比较 JA LOP1 ;大于转 MOV AL,[BX] ;大数AL送 LOP1:MOV [2000H],AL HLT

第10讲-可编程序控制器的指令系统2

第10讲-可编程序控制器的指令系统2

0状态,T37的常开触点断开,Q0.0变为OFF,同时使T38的IN输入端
变为0状态,其常闭触点接通,T37又开始定时;
以后Q0.0的线圈将这样周期性地“通电”和“断电”,直到I0.0变
为OFF,Q0.0线圈“通电” 时间等于T38的设定值,“断电”时间等
于T37的设定值。
12
灭2S 亮3S
电气控制及PLC技术 西门子S7-200
STL
CTU Cxxx,PV CTD Cxxx,PV CTUD Cxxx,PV
计数器的指令格式
电气控制及PLC技术 西门子S7-200
LAD
指令使用说明
(1)梯形图指令符号中:CU为加 计数脉冲输入端;CD为减计数脉冲 输入端;R为加计数复位端;LD为 减计数复位端;PV为预置值
(2)Cxxx 为计数器的编号,范围 为:C0~C255
25
定时器的扩展
电气控制及PLC技术 西门子S7-200
60秒即1分钟定时 60个1分钟即1小时
26
电气控制及PLC技术 西门子S7-200
补充2:计数器指令应用举例*
• 计数器指令扩展( 200000次)
• S7-200系列PLC计数器最大的计数范围是32767,若须更大
的计数范围,则须进行扩展。如图6-40所示计数器扩展电路。
设定值(60S)。 • I0.0为OFF时,100ms定时器T37和计数器C4处于复位状态,它们不能
工作。 • I0.0为ON时,其常开触点接通,T37开始定时,60s后T37定时时间到,
其当前值等于设定值,它的常闭触点断开,使它自己复位,复位后T37 的当前值变为0,同时它的常闭触点接通,使它自己的线圈重新“通电” 又开始定时,T37将这样周而复始地工作,直到I0.0变为OFF。 • T37产生的脉冲送给C4计数器,记满60个数(即1h)后,C4当前值等 于设定值60,它的常开触点闭合。设T37和C4的设定值分别为KT和KC, 对于100ms定时器总的定时时间为:T=0.1KTKC(s)。

程序控制指令

程序控制指令

中断 溢出时中断
INT 中断类型 INTO
中断返回
IRET 5
1.转移指令
➢转移指令的实质: 改变IP(或者CS和IP)的内容。
➢对标志位flags的影响: 所有转移指令不会影响标志位flags。
➢分类: 分为无条件转移和条件转移两种。
2020/2/17
6
(1) 无条件转移指令 - JMP
本指令无条件转移到指定的目标地址, 以执行 从该地址开始的程序段。根据设置CS、IP的方法 ,JMP指令可实现短\近\远距离跳转, 指令分成4 种情况。
由于是段内转移,故转移后CS内容保持不变
2020/2/17
8
无条件段内转移
• 直接转移: JMP Lable
近地址标号

• 转移目标地址:
位移量
JMP Lable




段基地址CS不变;
CS : IP=Label
偏移地址IP=当前IP+位移量(16位)

2020/2/17
9
②段内间接转移
转移的目标地址由寄存器或存储单元的 内容给出。
例中的DWORD PTR表示转移地址是一个 双字。
2020/2/17
15
无条件段间转移
• 间接转移: JMP DWORD PTR[BX]
2020/2/17
CS : IP
[BX]
IP CS

JMP

指令码

XXH XXH XXH XXH

代 码 段 1
代 码 段 2
数 据 段
16
JMP DWORD PTR [SI]的机器码
2020/2/17

3.3.5 程序控制类指令

3.3.5  程序控制类指令

1. 无条件转移指令(1)jmp段内直接短程转移Jmp short标号jmp short loop1next:下一条指令………loop1:……….(loop1也可能在跳转指令前)跳转距离范围是-128-127(2) 段内直接近程转移Jmp near ptr标号跳转距离范围是-32768-32767(3)段内直接转移Jmp bx ; IP<—bxJmp word ptr [1000h] ;IP<—word ptr[1000h](4)段间直接转移Jmp far ptr标号(5)段间间接转移Jmp dword ptr [1000h] ;IP<—word ptr[1000h],CS<—word ptr[1002h] 2. 过程调用指令call(1)段内直接调用Call near ptr过程名<=> Call过程名可以暂把过程名理解为标号先把下条指令的有效地址入栈(为了能够以后恢复),然后跳转到新地址Push ip; ip为该跳转指令的下一条指令的有效地址Ip<—ip+loop loop表示跳转距离(2)段内间接调用Call word ptr [1000h]被调用过程的有效地址保存在内存ds:[1000h]处Push ipIp<—word ptr [1000h](3)段间直接调用Call far ptr过程名Push cs ;先入csPush ip ;再入ipIp<—过程入口地址的偏移量Cs<—过程入口地址的段基址(4)段间间接调用Call dword ptr [1000h]Push cs ;先入csPush ip ;再入ipIp<—word ptr [1000h]Cs<—word ptr [1002h]3. 过程返回指令ret,类似C语言中的return;段内返回, 格式:ret作用相当于pop ip,回到调用过程时保存的地址继续执行下条指令段间返回,格式:ret相当于pop ipPop cs回到调用过程时保存的地址继续执行下条指令带立即数返回,格式:ret n除返回原来的ip和cs外,还做sp=sp+n适用于过程带参数的情况,计算机调用函数或过程时,先把参数的值入栈,再把返回地址(下条指令地址)入栈。

S7-1200第08讲:移动操作,转换,程序控制,字逻辑运算,移位与循环移位指令

S7-1200第08讲:移动操作,转换,程序控制,字逻辑运算,移位与循环移位指令
SWAP:用于反转二字节和四字节数据元素 的字节顺序。不改变每个字节中的位顺序。
移动指令:
VariantGet:读取 SRC 参数所指向的变量,并将其写入到 DST参数的变 量中。
VariantPut:将 SRC 参数所引用的变量写入到 DST参数所指向的变量中。
CountOfElements:计算 IN参数指向的数组中所含数组元素的数目。
GET_ERR_ID:指示发生程序块执行错误,并报告错误的 ID(标识符代 码)。
RUNTIME:测量整个程序、各个块或命令序列的运行时间。
字逻辑运算指令:
AND、OR 和 XOR 逻辑运算指令: 所选数据类型将 IN1、IN2 和 OUT 设置为
相同的数据类型。 IN1 和 IN2 的相应位值相互组合,在参数
NORM_X:标准化通过参数 MIN 和 MAX指定的值范围内的参数 VALUE: OUT = (VALUE - MIN) / (MAX - MIN),其中 (0.0 <= OUT <= 1.0)
程序控制指令:
JMP:RLO(逻辑运算结果)= 1 时跳 转:如果有能流通过 JMP 线圈 (LAD), 则程序将从指定标签后的第一条指令 继续执行。
FLOOR:将实数(Real 或LReal)转换为小于或等于所选实数的最大整数 (IEEE“向负无穷取整”)。
TRUNC:TRUNC 用于将实数转换为整数。实数的小数部分被截成零(IEEE - 取整为零)。
SCALE_X:按参数 MIN 和 MAX所指定的数据类型和值范围对标准化的实 参数 VALUE(其中,0.0 <= VALUE <=1.0)进行标定: OUT = VALUE (MAX - MIN) + MIN

控制转移类指令ppt课件(全)

控制转移类指令ppt课件(全)

(4)CJNE @Ri,#data,rel 该指令功能:若(( Ri ))≥ data,(CY)=0; 若(( Ri ))<data ,CY=1; 若(( Ri ))≠ data,则PC←(PC)+rel,转移; 若(( Ri ))=data,则程序顺序执行.
例:如果(A) ≠ 00H,转移到CX1;如果(R1) ≠ 10H, 转移到CX2;如果(A) ≠(60H),转移到CX3。程序段 如下:
(2)指令长短不一样。LJMP是3字节指令;AJMP、 SJMP是2字节指令;JMP是1字节指令。
(3)指令机器码构成不同。AJMP、LJMP、JMP后跟 的是绝对地址,而SJMP后跟的是相对地址。
(4)地址特点不同。LJMP、AJMP、SJMP的转移目标 地址是固定的,程序执行过程中不变;JMP的转移目 标地址随程序的执行是动态变化的。
1. 长跳转指令 LJMP (3字节) LJMP addr16 ; PC addr16
•执行该指令时, 将目标语句的16位地址addr16装入 PC, 程序无条件转向指定的目标语句执行。 •由于长跳转指令提供的是16位地址,对应64KB的程 序存储器地址空间,所以可跳转到64KB程序存储器 地址空间的任何地方。 •实际应用中长跳转汇编指令写作“LJMP 目标语句 标号”的形式,如“LJMP LOOP”。
• 指令对A、DPTR和标志位均无影响。
注意:以上四条指令结果均不影响程序状态 字寄存器 PSW 。
5.LJMP、AJMP、SJMP、JMP四条无条件转移指令的 区别:
(1)转移范围不一样。LJMP、JMP转移范围是64KB; AJMP转移范围是与当前PC值同一个2KB区间;SJMP 转移范围是相对当前PC值的-128B~+127B范围内。

PLC功能指令(课件PPT)

PLC功能指令(课件PPT)

6
⑵ 位组合数据 因为4位BCD码表示1位十进制数据,所以在
FX系列PLC中,用相邻的4个位元件作为一个组合, 表示一个十进制数,表达形式为KnX、KnY、KnM、 KnS等。n—指4位BCD码的个数。例如:
K1X0表示由X3~X0这 4位输入继电器的组合; K3Y0表示由Y13~Y10、Y7~Y0这12位输出继 电器的组合; K4M10表示由M25~M10这16位辅助继电器的组 合。
特殊用
D8000~ D8255
256点
FX2N FX2NC
D0~
D199 128点①
D200~
D511 312点②
D512~
D7999 7488点③
根据参数设定, 可以将D1000以 上作为文件寄存 器使用
D8000~
D8255 256点
① 非停电保持领域,通过设定参数可变更停电保持领域; ② 停电保持领域,通过设定参数可变更非停电保持领域; ③ 无法通过设定参数变更停电保持的特性。
14
15
5. 比较指令 比较指令CMP 是将源操作数 [S1] 和 [S2] 的数据进行比较, 然后将目标操作数 [D]进行相应的操作。如图4-10所示,X0 =1时,将C20的当前值与常数K100进行比较。若当前值小 于K100,[D]指定的M0自动置1(即Y0接通);若当前值等 于K100,M1自动置1(即Y1接通);若当前值大于K100, M2自动置1(即Y2接通)。在X0 断开,即不执行CMP 指令 时,M0~M2 保持X0断开前的状态。因此若要清除比较结果 需要用RST或ZRST指令。 【说明】数据比较是进行代数值大小比较(即带符号比较)。 所有的源数据均按二进制处理。
16
【应用举例】有一高性能的密码锁,由两组密码数据锁 定。开锁时只有输入两组正确的密码,才能打开锁,锁打开 后,经过5s再重新锁定。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类指令
转移指令 循环控制 子程序调用 中断控制
3.9 转移指令
通过修改指令的偏移地址或段地址及偏移地 址实现程序的转移
无条件转移指令 无条件转移到目标地址,执行新的指令
有条件转移指令 在具备一定条件的情况下转移到目标地址
无条件转移指令
格式:
JMP OPRD
目标地址
与JMP在 同一代码段
与JMP不在 同一代码段
2)用于无符号数的条件转移指令 ① JA/JNBE ;高于/不低于等于转移,
CF∨ZF=0 ② JNA/JBE ;不高于/低于等于转移,
CF∨ZF=1 ③ JB/JNAE ;低于/不高于等于转移,CF=
1 ④ JNB/JAE ;不低于/高于等于转移,CF=
3)用于带符号数的条件转移指令 ① JG/JNLE 大于/不小于等于转移,(SF ∨OF)∨ ZF=
STRING DB ‘Personal Computer’ …
MOV BX,OFFSET STRING DEC BX MOV CX,17 NEXT: INC BX CMP [BX],BYTE PTR 20H LOOPNE NEXT

方法二: MOV DI,OFFSET STRING MOV AL,20H MOV CX,17
段内直接寻址
IP
JMP FAR Label
远地址标号

JMP

XXH

XXH

XXH
1
XXH
Label与
CS


JMP之间
Label

的位移量


2
无条件段间转移
段内间接寻址 JMP DWORD PTR[BX]
[BX] IP
CS



JMP
段 1


指令码



2
XXH
XXH

XXH

XXH

执行原程序
断点恢复
段内调用
子过程与原调用程序在同一代码 段,在调用之前只需保护断点的
入口 地址
偏移地址
格式: CALL NEAR PROC
断点
近过程名
段内调用例
CALL TIMRE
直接调用
CALL WORD PTR[SI]
间接调用
段间调用
子过程与原调用程序不在同一代码段, 在调用之前需保护断点的段基地址和偏 移地址。先将断点的CS压栈,再压入IP
0 ② JGE/JNL 大于等于/不小于转移,(SF ∨OF)=0 ③ JL/JNGE 小于/不大于等于转移,(SF ∨OF)=1 ④ JLE/JNG 小于等于/不大于转移,(SF ∨OF)∨ ZF=
1
转移指令例
统计内存数据段中以TABLE为首地 址的100个8位符号数中正数、负数 和零元数的个数。
转移指令例(流程图)
将存放各元素个 数的单元清零
取首地址 设串长度
取一个字节数
为负?
N
Y
为零?
Y
N 正数个数加1
负数个数加1
零元素加1
3.10 循环控制指令
控制程序在以当前IP为中心的-128~+127 范围内循环执行
循环次数由CX寄存器指定
LOOP LOOPZ LOOPNZ
无条件循环指令
从堆栈中弹出断点地址,返回原程序 格式:
RET RET指令一般位于子程序的最后
3.12中断指令
中断与过程调用:
中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好
响应中断请求不仅要保护断点地址,还要保护 PSW内容
调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中
格式: CALL FAR PROC
段间调用例
CALL FAR TIMRE CALL DWORD PTR[SI]
段间调用例
格式:
CALL FAR PROC
格式例:
CALL FAR TIMRE
SI
CALL DWORD PTR[SI]
CS
IP
CALL




XXH
XXH

XXH

XXH

返回指令
1. 中断指令
格式: INT n
说明: nх4
中断类型码 n=0 〜 255
n х4
入口的偏移地址 入口的段地址
存放中断服务子程序入口 地址的单元的偏移地址
该单元在数据段,段地址=DS
XXH
XXH

XXH

XXH




码 段
中断指令的执行过程
将PSW压入堆栈; 将INT指令的下一条指令的CS、IP压栈; 由n× 4得到存放中断向量的地址; 将中断向量(中断服务程序入口地址)
原则上可实现在整个内存空间的转移
无条件转移指令 段内转移
转移的目标地址在当前代码段内
指令中直接给 出目标地址
由指令中的寄存器 或存储器操作数指 出目标地址
段内直接寻址
段内间接寻址
无条件段内转移
段内直接寻址 JMP Label
近地址标号
位移量

JMP




Label
下一条要执行指令的

偏移地址=当前IP+位移量
格式: LOOP LABEL
循环条件: CX ≠ 0
操作: CX JNZ 符号地址
条件循环指令
格式:
LOOPZ LABEL LOOPE LABEL 循环条件: CX ≠ 0 ZF=1
格式:
LOOPNZ LABEL LOOPNE LABEL 循环条件: CX ≠ 0 ZF=0
例:在一个由17个字符组成的字符串STRING中,现 在查找该字符串中是否包含空格字符(其ASCII码为 20H),若未找到或尚未查完,则继续查找,直到找 到第一个空格字符或查完了才退出循环。
无条件段内转移 段内间接寻址
JMP BX JMP WORD PTR[BX]
IP
BX=1200

JMP


码 段
指令码

XXH XXH
数 据 段

无条件转移指令——段间转移
转移的目标地址不在当前代码段内
指令中直接给 出目标地址
段间直接寻址
由指令中的32位存 储器操作数指出目 标地址
段间间接寻址
无条件段间转移
REPNE SACSB
JZ NEXT
JMP NFOUND NEXT: … NFOUND:…
3.11 子程序调用返回指令
段内调用 段间调用
段内直接调用 段内间接调用 段间直接调用 段间间接调用
调用指令与转移指令的比较
用于调用一个子过程 调用前须保护断点地址 子过程执行结束后要返回原调用处继续

条件转移指令
在满足一定条件下,程序转移到目标地 址继续执行
条件转移指令均为段内短转移,即转移 范围为: -128~+127
条件转移指令的应用
1)简单条件(直接标志)转移指令(共10条) 根据CF、ZF、SF、OF、PF分别为1或0,共有10种状态,
设置了10种转移指令: JE/JZ JS JO JC JP ;标志为1转移 JNE/JNZ JNS JNO JNC JNP ;标志为0转
相关文档
最新文档