Download presentation
Presentation is loading. Please wait.
1
第5章数据处理、运算指令及应用 5.1 数据处理指令 5.2 算术运算、逻辑运算指令 5.3 表功能指令
2
5.1 数据处理指令 5.1.1 数据传送指令 5.1.2 字节交换、字节立即读写指令 5.1.3 移位指令及应用举例 5.1.4 转换指令
5.1.5 天塔之光的模拟控制实训
3
5.1.1 数据传送指令 1. 字节、字、双字、实数单个数据传送指令MOV 2.字节、字、双字、实数数据块传送指令BLKMOV
4
1. 字节、字、双字、实数单个数据传送指令MOV
LAD STL MOVB IN,OUT MOVW IN,OUT MOVD IN,OUT MOVR IN,OUT 操作数及数据类型 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 OUT:VB, IB, QB, MB, SB, SMB, LB, AC。 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, 常量, AC。 OUT:VW, T, C, IW, QW, SW, MW, SMW, LW, AC, AQW。 IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常量。 OUT:VD, ID, QD, MD, SD, SMD, LD, AC。 IN:VD, ID, QD, MD, SD, SMD, LD, AC, 常量。 字节 字、整数 双字、双整数 实数 功能 使能输入有效时,即EN=1时,将一个输入IN的字节、字/整数、双字/双整数或实数送到OUT指定的存储器输出。在传送过程中不改变数据的大小。传送后,输入存储器IN中的内容不变。
5
2.字节、字、双字、实数数据块传送指令BLKMOV
LAD STL BMB IN,OUT BMW IN,OUT BMD IN,OUT 操作数及数据类型 IN:VB, IB, QB, MB, SB, SMB, LB。 OUT:VB, IB, QB, MB, SB, SMB, LB。 数据类型:字节 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW。 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AQW。 数据类型:字 IN/ OUT :VD, ID, QD, MD, SD, SMD, LD。 数据类型:双字 N:VB, IB, QB, MB, SB, SMB, LB, AC, 常量;数据类型:字节;数据范围:1-255。 功能 使能输入有效时,即EN=1时,把从输入IN开始的N个字节(字、双字)传送到以输出OUT开始的N个字节(字、双字)中。
6
5.1.2 字节交换、字节立即读写指令 1. 字节交换指令 2. 字节立即读写指令
7
1. 字节交换指令 LAD STL 功能及说明 SWAP IN
功能:使能输入EN有效时,将输入字IN的高字节与低字节交换,结果仍放在IN中。 IN:VW, IW, QW, MW, SW, SMW, T, C, LW, AC。数据类型:字。
8
2. 字节立即读写指令 LAD STL 功能及说明 BIR IN,OUT 功能:字节立即读 IN: IB
OUT:VB, IB, QB, MB, SB, SMB, LB, AC。 数据类型:字节 BIW IN,OUT 功能:字节立即写 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量 OUT:QB
9
5.1.3 移位指令及应用举例 移位指令分为左、右移位和循环左、右移位及寄存器移位指令三大类。前两类移位指令按移位数据的长度又分字节型、字型、双字型3种。 1. 左、右移位指令 2. 循环左、右移位指令 3.移位寄存器指令(SHRB)
10
1.左、右移位指令 左、右移位数据存储单元与SM1.1(溢出)端相连,移出位被放到特殊标志存储器SM1.1位。移位数据存储单元的另一端补0。移位指令格式见表5-5。 (1)左移位指令(SHL) 使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM1.1。如果移位结果为0,零标志位SM1.0置1。 (2)右移位指令 使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向右移N位后,将结果输出到OUT所指定的存储单元中,移出位补0,最后一移出位保存在SM1.1。如果移位结果为0,零标志位SM1.0置1。 (3)使ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)
11
左、右移位指令格式 LAD STL SLB OUT,N SRB OUT,N SLW OUT,N SRW OUT,N SLD OUT,N
SRD OUT,N 操作数及数据类型 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 OUT:VB, IB, QB, MB, SB, SMB, LB, AC。 数据类型:字节 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC。 数据类型:字 IN:VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常量。 OUT:VD, ID, QD, MD, SD, SMD, LD, AC。 数据类型:双字 N:VB, IB, QB, MB, SB, SMB, LB, AC, 常量;数据类型:字节;数据范围:N≤数据类型(B、W、D)对应的位数。 功能 SHL:字节、字、双字左移N位;SHR:字节、字、双字右移N位。
12
2. 循环左、右移位指令 循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的位。指令格式见表5-6。 (1)循环左移位指令(ROL) 使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0为1。 (2)循环右移位指令(ROR) 使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0为1。
13
(3)移位次数N≥数据类型(B、W、D)时的移位位数的处理
如果操作数是字节,当移位次数N≥8时,则在执行循环移位前,先对N进行模8操作(N除以8后取余数),其结果0-7为实际移动位数。 如果操作数是字,当移位次数N≥16时,则在执行循环移位前,先对N进行模16操作(N除以16后取余数),其结果0-15为实际移动位数。 如果操作数是双字,当移位次数N≥32时,则在执行循环移位前,先对N进行模32操作(N除以32后取余数),其结果0-31为实际移动位数。 (4)使ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)
14
循环左、右移位指令格式 LAD STL RLB OUT,N RRB OUT,N RLW OUT,N RRW OUT,N RLD OUT,N
RRD OUT,N 操作数及数据类型 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 OUT:VB, IB, QB, MB, SB, SMB, LB, AC。 数据类型:字节 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC。 数据类型:字 IN:VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常量。 OUT:VD, ID, QD, MD, SD, SMD, LD, AC。 数据类型:双字 N:VB, IB, QB, MB, SB, SMB, LB, AC, 常量;数据类型:字节。 功能 ROL:字节、字、双字循环左移N位;ROR:字节、字、双字循环右移N位。
15
(4)移位指令影响特殊内部标志位:SM1.1(为移出的位值设置溢出位)。
3.移位寄存器指令(SHRB) 移位寄存器指令是可以指定移位寄存器的长度和移位方向的移位指令。其指令格式如图5-6所示。 说明: (1)移位寄存器指令SHRB将DATA数值移入移位寄存器。 (2)DATA和S-BIT的操作数为I, Q, M, SM, T, C, V, S, L 。数据类型为:BOOL变量。N的操作数为VB, IB, QB, MB, SB, SMB, LB, AC, 常量。数据类型为:字节。 (3)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),0092(计数区错误)。 (4)移位指令影响特殊内部标志位:SM1.1(为移出的位值设置溢出位)。 LAD STL SHRB DATA,S-BIT,N
16
5.1.4 转换指令 转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。 不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD码与整数之间的转换等。
17
5.1.4 转换指令 1. 字节与字整数之间的转换 2. 字整数与双字整数之间的转换 3. 双整数与实数之间的转换
4. BCD码与整数的转换 5. 译码和编码指令 6. 七段显示译码指令 7. ASCII码与十六进制数之间的转换指令
18
1. 字节与字整数之间的转换 LAD STL BTI IN,OUT ITB IN,OUT 操作数及数据类型
IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, 数据类型:字节 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:整数 OUT:VB, IB, QB, MB, SB, SMB, LB, AC, 数据类型:字节 功能及 说明 BTI指令将字节数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。因为字节不带符号,所以无符号扩展。 ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。输入的字整数0至255被转换。超出部分导致溢出,SM1.1=1。输出不受影响。 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 间接地址 SM1.1 溢出或非法数值
19
2. 字整数与双字整数之间的转换 LAD STL ITD IN,OUT DTI IN,OUT 操作数及数据类型
IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, 数据类型:整数 OUT:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数 IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,数据类型:双整数 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:整数 功能及 说明 ITD指令将整数值(IN)转换成双整数值,并将结果置入OUT指定的存储单元。符号被扩展。 DTI指令将双整数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。如果转换的数值过大,则无法在输出中表示,产生溢出SM1.1=1,输出不受影响。 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 间接地址 SM1.1 溢出或非法数值
20
3. 双整数与实数之间的转换 LAD STL DTR IN,OUT ROUND IN,OUT TRUNC IN,OUT 操作数及数据类型
IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常量。 数据类型:双整数 OUT:VD, ID, QD, MD, SD, SMD, LD, AC。 数据类型:实数 IN:VD, ID, QD, MD, SD, SMD, LD, AC, 常量。 功能及 说明 DTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元 。 ROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元。 TRUNC(截位取整)指令按将小数部分直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元。 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 间接地址 SM1.1 溢出或非法数值
21
4. BCD码与整数的转换 LAD STL BCDI OUT IBCD OUT 操作数及数据类型
IN :VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC。 IN/OUT数据类型:字 功能及 说明 BCD-I指令将二进制编码的十进制数IN转换成整数,并将结果送入OUT指定的存储单元。IN的有效范围是BCD码 0至9999。 I-BCD指令将输入整数IN转换成二进制编码的十进制数,并将结果送入OUT指定的存储单元。IN的有效范围是0至9999。 ENO=0的错误条件 间接地址,SM1.6 无效BCD数值,SM4.3 运行时间。
22
5. 译码和编码指令 LAD STL DECO IN,OUT ENCO IN,OUT 操作数及数据类型
IN:VB, IB, QB, MB, SMB, LB, SB, AC, 常量。数据类型:字节 OUT:VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC。数据类型:字 IN:VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常量。数据类型: 字 OUT:VB, IB, QB, MB, SMB, LB, SB, AC。数据类型:字节 功能及 说明 译码指令根据输入字节(IN)的低4位表示的输出字的位号,将输出字的相对应的位,置位为1,输出字的其他位均置位为0。 编码指令将输入字(IN)最低有效位(其值为1)的位号写入输出字节(OUT)的低4位中。 ENO=0的错误条件 间接地址, SM4.3 运行时间
23
6. 七段显示译码指令 七段译码指令SEG将输入字节16#0~F转换成七段显示码。指令格如下表所示。 LAD STL 功能及操作数
SEG IN,OUT 功能:将输入字节(IN)的低四位确定的16进制数(16#0~F),产生相应的七段显示码,送入输出字节OUT。 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 OUT:VB, IB, QB, MB, SMB, LB, AC。IN/OUT的数据类型:字节
24
7. ASCII码与十六进制数之间的转换指令 LAD STL ATH IN,OUT,LEN HTA IN,OUT,LEN 操作数及数据类型
IN/ OUT: VB, IB, QB, MB, SB, SMB, LB。数据类型:字节。 LEN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。数据类型:字节。最大值为255。 功能及 说明 ASCII至HEX(ATH)指令将从IN开始的长度为LEN 的ASCII字符转换成十六进制数,放入从OUT开始的存储单元。 HEX至ASCII (HTA)指令将从输入字节(IN)开始的长度为LEN的十六进制数转换成ASCII字符,放入从OUT开始的存储单元。 ENO=0的错误条件 间接地址, SM4.3 运行时间 , 操作数范围超界 SM1.7 非法ASCII数值(仅限ATH)
25
5.2 算术运算、逻辑运算指令 5.2.1 算术运算指令 5.2.2 逻辑运算指令 5.2.3 递增、递减指令 5.2.4 运算单位转换实训
26
5.2.1 算术运算指令 1. 整数与双整数加减法指令 2. 整数乘除法指令 3. 实数加减乘除指令 4. 数学函数变换指令
27
1. 整数与双整数加减法指令 整数加法(ADD-I)和减法(SUB-I)指令是:使能输入有效时,将两个16位符号整数相加或相减,并产生一个16位的结果输出到OUT。 双整数加法(ADD-D)和减法(SUB-D)指令是:使能输入有效时,将两个32位符号整数相加或相减,并产生一个32位 结果输出到OUT。
28
整数与双整数加减法指令格式 LAD STL MOVW IN1,OUT +I IN2,0UT -I IN2,0UT MOVD IN1,OUT
+D IN2,0UT 功能 IN1+IN2=OUT IN1-IN2=OUT 操作数及数据类型 IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常量, *VD, *LD, *AC。 OUT:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *LD, *AC。 IN/OUT数据类型:整数。 IN1/IN2: VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常量, *VD, *LD, *AC。 OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC。 IN/OUT数据类型:双整数。 ENO=0的错误条件 间接地址, SM4.3 运行时间, SM 溢出
29
说明: (1)当IN1、IN2和OUT操作数的地址不同时,在STL指令中,首先用数据传送指令将IN1中的数值送入OUT,然后再执行加、减运算即:OUT+IN2=OUT、OUT-IN2=OUT。为了节省内存,在整数加法的梯形图指令中,可以指定IN1或IN2=OUT,这样,可以不用数据传送指令。如指定INI=OUT,则语句表指令为:+I IN2,OUT;如指定IN2=OUT,则语句表指令为:+I IN1,OUT。在整数减法的梯形图指令中,可以指定IN1=OUT,则语句表指令为:-I IN2,OUT。这个原则适用于所有的算术运算指令,且乘法和加法对应,减法和除法对应。 (2)整数与双整数加减法指令影响算术标志位SM1.0(零标志位),SM1.1(溢出标志位)和SM1.2(负数标志位)。
30
2. 整数乘除法指令 整数乘法指令(MUL-I)是:使能输入有效时,将两个16位符号整数相乘,并产生一个16位积,从OUT指定的存储单元输出。 整数除法指令(DIV-I)是:使能输入有效时,将两个16位符号整数相除,并产生一个16位商,从OUT指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位SM1.1置位为1。 双整数乘法指令(MUL-D):使能输入有效时,将两个32位符号整数相乘,并产生一个32位乘积,从OUT指定的存储单元输出。
31
双整数除法指令(DIV-D):使能输入有效时,将两个32位整数相除,并产生一个32位商,从OUT指定的存储单元输出,不保留余数。
整数乘法产生双整数指令(MUL):使能输入有效时,将两个16位整数相乘,得出一个32位乘积,从OUT指定的存储单元输出。 整数除法产生双整数指令(DIV):使能输入有效时,将两个16位整数相除,得出一个32位结果,从OUT指定的存储单元输出。其中高16位放余数,低16位放商。
32
整数乘除法指令格式 LAD STL 功能 MOVW IN1,OUT *I IN2,0UT /I IN2,0UT MOVD IN1,OUT
*D IN2,0UT /D IN2,0UT MUL IN2,OUT DIV IN2,OUT 功能 IN1*IN2=OUT IN1/IN2=OUT
33
3. 实数加减乘除指令 实数加法(ADD-R)、减法(SUB-R)指令:将两个32位实数相加或相减,并产生一个32位实数结果,从OUT指定的存储单元输出。 实数乘法(MUL-R)、除法(DIV-R)指令:使能输入有效时,将两个32位实数相乘(除),并产生一个32位积(商),从OUT指定的存储单元输出。 操作数:IN1/IN2:VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC。 OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC。 数据类型:实数。
34
实数加减乘除指令格式 LAD STL MOVD IN1,OUT +R IN2,0UT -R IN2,0UT *R IN2,0UT
功能 IN1+IN2=OUT IN1-IN2=OUT IN1*IN2=OUT IN1/IN2=OUT ENO=0的错误条件 0006 间接地址, SM4.3 运行时间, SM 溢出 0006 间接地址 ,SM1.1 溢出,SM4.3 运行时间,SM1.3 除数为0 对标志位的影响 SM1.0(零),SM1.1(溢出) , SM1.2(负数),SM1.3 (被0除)
35
4. 数学函数变换指令 (1)平方根(SQRT)指令:对32位实数(IN)取平方根,并产生一个32位实数结果,从OUT指定的存储单元输出。
(2)自然对数(LN)指令:对IN中的数值进行自然对数计算,并将结果置于OUT指定的存储单元中。 求以10为底数的对数时,用自然对数除以 (约等于10的自然对数)。 (3)自然指数(EXP)指令:将IN取以e为底的指数,并将结果置于OUT指定的存储单元中。将“自然指数”指令与“自然对数”指令相结合,可以实现以任意数为底,任意数为指数的计算。求yx,输入以下指令:EXP (x * LN (y))。 例如:求23=EXP(3*LN(2))=8;27的3次方根=271/3=EXP(1/3*LN(27))=3。 (4)三角函数指令:将一个实数的弧度值IN分别求SIN、COS、TAN,得到实数运算结果,从OUT指定的存储单元输出。
36
数学函数变换指令格式 LAD STL SQRT IN,OUT LN IN,OUT EXP IN,OUT SIN IN,OUT
COS IN,OUT TAN IN,OUT 功能 SQRT(IN)=OUT LN(IN)=OUT EXP(IN)=OUT SIN(IN)=OUT COS(IN)=OUT TAN(IN)=OUT 操作数及数据类型 IN: VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 数据类型:实数
37
5.2.2 逻辑运算指令 逻辑运算是对无符号数按位进行与、或、异或和取反等操作。操作数的长度有B、W、DW。指令格式如表5-18所示
1. 逻辑与(WAND)指令:将输入IN1,IN2按位相与,得到的逻辑运算结果,放入OUT指定的存储单元。 2. 逻辑或(WOR)指令:将输入IN1,IN2按位相或,得到的逻辑运算结果,放入OUT指定的存储单元。 3. 逻辑异或(WXOR)指令:将输入IN1,IN2按位相异或,得到的逻辑运算结果,放入OUT指定的存储单元。 4. 取反(INV)指令:将输入IN按位取反,将结果放入OUT指定的存储单元。
38
逻辑运算指令格式 LAD STL ANDB IN1,OUT ANDW IN1,OUT ANDD IN1,OUT ORB IN1,OUT
ORW IN1,OUT ORD IN1,OUT XORB IN1,OUT XORW IN1,OUT XORD IN1,OUT INVB OUT INVW OUT INVD OUT 功能 IN1,IN2按位相与 IN1,IN2按位相或 IN1,IN2按位异或 对IN取反 操作数 B IN1/IN2:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, *AC, *LD OUT:VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD W IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常量, *VD, *AC, *LD OUT:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD DW IN1/IN2:VD, ID, QD, MD, SMD, AC, LD, HC, 常量, *VD, *AC, SD, *LD OUT:VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD
39
说明: (1)在表5-18中,在梯形图指令中设置IN2和OUT所指定的存储单元相同,这样对应的语句表指令如表中所示。若在梯形图指令中,IN2(或IN1)和OUT所指定的存储单元不同,则在语句表指令中需使用数据传送指令,将其中一个输入端的数据先送入OUT,在进行逻辑运算。如MOVB IN1,OUT ANDB IN2,OUT (2)ENO=0的错误条件:0006 间接地址,SM4.3 运行时间 (3)对标志位的影响:SM1.0(零)
40
5.2.3 递增、递减指令 递增、递减指令用于对输入无符号数字节、符号数字、符号数双字进行加1或减1的操作。指令格式如下表所示。
41
递增、递减指令格式 LAD STL INCB OUT DECB OUT INCW OUT DECW OUT INCD OUT
DECD OUT 功能 字节加1 字节减1 字加1 字减1 双字加1 双字减1 操作及数据类型 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, *LD, *AC。 OUT:VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *LD, *AC 。 IN/OUT数据类型:字节。 IN: VW, IW, QW, MW, SW, SMW, AC, AIW, LW, T, C, 常量, *VD, *LD, *AC 。 OUT:VW, IW, QW, MW, SW, SMW, LW, AC, T, C, *VD, *LD, *AC 。 数据类型:整数。 IN:VD, ID, QD, MD, SD, SMD, LD, AC, HC, 常量, *VD, *LD,*AC。 OUT;VD, ID, QD, MD, SD, SMD, LD, AC, *VD, *LD, *AC。 数据类型:双整数。
42
1. 递增字节(INC-B)/递减字节(DEC-B)指令
递增字节和递减字节指令在输入字节(IN)上加1或减1,并将结果置入OUT指定的变量中。递增和递减字节运算不带符号。
43
2. 递增字(INC-W)/递减字(DEC-W)指令
递增字和递减字指令在输入字(IN)上加1或减1,并将结果置入OUT。递增和递减字运算带符号(16#7FFF > 16#8000)。
44
3.递增双字(INC-DW)/递减双字(DEC-DW)指令
递增双字和递减双字指令在输入双字(IN)上加1或减1,并将结果置入OUT。递增和递减双字运算带符号(16#7FFFFFFF > 16# )。
45
5.3 表功能指令 数据表是用来存放字型数据的表格,如图5-23所示。表格的第一个字地址即首地址,为表地址,首地址中的数值是表格的最大长度(TL),即最大填表数。表格的第二个字地址中的数值是表的实际长度(EC),指定表格中的实际填表数。每次向表格中增加新数据后,EC加1。从第三个字地址开始,存放数据(字)。表格最多可存放100个数据(字),不包括指定最大填表数(TL)和实际填表数(EC)的参数。
46
数据表 要建立表格,首先须确定表的最大填表数。如下图所示。 // 输入表格的最大填表数 LD SM0.1 MOVW +6, VW200
47
5.3.1 填表指令 ATT DATA,TBL 表填表(ATT)指令:向表格(TBL)中增加一个字(DATA)。如右图所示。
(1) DATA为数据输入端,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC; (2)TBL为表格的首地址,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, , *LD *AC;数据类型为:字。 (3)指令执行后,新填入的数据放在表格中最后一个数据的后面,EC的值自动加1。 (4)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),SM1.4(表溢出),SM4.3(运行时间)。 (5)填表指令影响特殊标志位:SM1.4(填入表的数据超出表的最大长度,SM1.4=1)。 ATT DATA,TBL
48
5.3.2 表取数指令 从数据表中取数有先进先出(FIFO)和后进先出(LIFO)两种。执行表取数指令后,实际填表数EC值自动减1。
先进先出指令(FIFO):移出表格(TBL)中的第一个数(数据0),并将该数值移至DATA指定存储单元,表格中的其他数据依次向上移动一个位置。 后进先出指令(LIFO):将表格(TBL)中的最后一个数据移至输出端DATA指定的存储单元,表格中的其他数据位置不变。 表取数指令格式如下表所示。
49
表取数指令格式 LAD STL FIFO TBL,DATA LIFO TBL,DATA 说明
操作数及数据类型 TBL:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *LD, *AC。数据类型:字。 DATA:VW, IW, QW, MW, SW, SMW, LW, AC, T, C, AQW, *VD, *LD, *AC。 数据类型:整数。
50
5.3.3 表查找指令 表格查找(TBL-FIND)指令在表格(TBL)中搜索符合条件的数据在表中的位置(用数据编号表示,编号范围为0~99)。其指令格式如下图所示。 FND= TBL,PATRN,INDX FND<> TBL,PATRN,INDX FND< TBL,PATRN,INDX FND> TBL,PATRN,INDX
51
(1)梯形图中各输入端的介绍 TBL:为表格的实际填表数对应的地址(第二个字地址),即高于对应的“增加至表格”、“后入先出”或“先入先出”指令TBL操作数的一个字地址(两个字节)。 TBL操作数:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *LD, *AC。数据类型:字。 PTN:是用来描述查表条件时进行比较的数据。 PTN操作数:VW, IW, QW, MW, SW, SMW, AIW, LW, T, C, AC, 常量, *VD, *LD, *AC。数据类型:整数。
52
INDX:搜索指针,即从INDX所指的数据编号开始查找,并将搜索到的符合条件的数据的编号放入INDX所指定的存储器。
INDX操作数:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC。数据类型:字。 CMD:比较运算符,其操作数为常量1~4,分别代表 =、<>、<, >。数据类型:字节 。
53
(2)功能说明 表格查找”指令搜索表格时,从INDX指定的数据编号开始,寻找与数据PTN的关系满足CMD比较条件的数据。参数如果找到符合条件的数据,则INDX的值为该数据的编号。要查找下一个符合条件的数据,再次使用“表格查找”指令之前须将INDX加1。如果没有找到符合条件的数据,INDX的数值等于实际填表数EC。一个表格最多可有100数据,数据编号范围:0~99。将INDX的值设为0,则从表格的顶端开始搜索。
54
(3)使ENO = 0的错误条件 SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)。
55
5.3.4 字填充指令 字填充(FILL)指令用输入IN存储器中的字值写入输出OUT开始N个连续的字存储单元中。N的数据范围:1~255。其指令格式如下图所示。 FILL IN,OUT,N
56
指令格式说明 (1)IN为字型数据输入端,操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。N的操作数为:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, *LD, *AC; 数据类型:字节。 OUT的操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *LD, *AC;数据类型:整数。 (2)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)
Similar presentations