内容发布更新时间 : 2024/12/23 20:31:02星期一 下面是文章的全部内容请认真阅读。
5.1.4 转换指令
转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。
不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD码与整数之间的转换等。
1. 字节与字整数之间的转换
字节型数据与字整数之间转换的指令格式见表5-7所示。
表5-7 字节型数据与字整数之间转换指令
LAD STL 操作数及数据类型 型:字节 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数 功能及 说明 BTI指令将字节数值(IN)转换成整数值,并将结果置入OUT指定的存储单元。因为字节不带符号,所以无符号扩展 BTI IN,OUT IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, 数据类ITB IN,OUT IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:整数 OUT:VB, IB, QB, MB, SB, SMB, LB, AC, 数据类型:字节 ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。输入的字整数0至255被转换。超出部分导致溢出,SM1.1=1。输出不受影响 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 2. 字整数与双字整数之间的转换
字整数与双字整数之间的转换格式、功能及说明,如表5-8所示。 3. 双整数与实数之间的转换
双整数与实数之间的转换的转换格式、功能及说明,如表5-9所示。
表5-8 字整数与双字整数之间的转换指令
LAD STL ITD IN,OUT DTI IN,OUT IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, IN:VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,操作数及数据类型 常量, 数据类型:整数 OUT:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数 数据类型:双整数 OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:整数 DTI指令将双整数值(IN)转换成整数值,并将结功能及 说明 ITD指令将整数值(IN)转换成双整数值,并将结果置入OUT指定的存储单元。符号被扩展 果置入OUT指定的存储单元。如果转换的数值过大,则无法在输出中表示,产生溢出SM1.1=1,输出不受影响 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 表5-9 双字整数与实数之间的转换指令
LAD STL DTR IN,OUT LD, HC, AC, 常量 操作数及数据类型 数据类型:双整数 SMD, LD, AC 数据类型:实数 DTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元 ROUND IN,OUT LD, AC, 常量 数据类型:实数 LD, AC 数据类型:双整数 ROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 TRUNC IN,OUT LD, AC, 常量 数据类型:实数 LD, AC 数据类型:双整数 TRUNC(截位取整)指令按将小数部分直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元 0006 间接地址 SM1.1 溢出或非法数值 SM4.3 运行时间 IN:VD, ID, QD, MD, SD, SMD, IN:VD, ID, QD, MD, SD, SMD, IN:VD, ID, QD, MD, SD, SMD, OUT:VD, ID, QD, MD, SD, OUT:VD, ID, QD, MD, SD, SMD, OUT:VD, ID, QD, MD, SD, SMD, 功能及 说明 ENO=0的错误条件 0006 间接地址 SM4.3 运行时间 值得注意的是:不论是四舍五入取整,还是截位取整,如果转换的实数数值过大,无法在输出中表示,则产生溢出,即影响溢出标志位,使SM1.1=1,输出不受影响。
4. BCD码与整数的转换
BCD码与整数之间的转换的指令格式、功能及说明,如表5-10所示。
表5-10 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的错误条件 0006 间接地址,SM1.6 无效BCD数值,SM4.3 运行时间 注意:(1)数据长度为字的BCD格式的有效范围为:0~9999(十进制),0000~9999(十六进制)0000 0000
0000 0000~1001 1001 1001 1001(BCD码)。 (2)指令影响特殊标志位SM1.6(无效BCD)。
(3)在表5-10的LAD和STL指令中,IN和OUT的操作数地址相同。若IN和OUT操作数地址不是同一个存储器,对应的语句表指令为: MOV IN OUT
BCDI OUT
5. 译码和编码指令
译码和编码指令的格式和功能如表5-11所示。
表5-11 译码和编码指令的格式和功能
LAD STL DECO IN,OUT IN:VB, IB, QB, MB, SMB, LB, SB, AC, 常量。数据操作数及数据类型 类型:字节 数据类型:字 功能及 说明 译码指令根据输入字节(IN)的低4位表示的输出字的位号,将输出字的相对应的位,置位为1,输出字的其他位均置位为0 ENCO IN,OUT IN:VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常量。数据类型: 字 型:字节 编码指令将输入字(IN)最低有效位(其值为1)的位号写入输出字节(OUT)的低4位中 OUT:VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC。OUT:VB, IB, QB, MB, SMB, LB, SB, AC。数据类ENO=0的错误条件 0006 间接地址, SM4.3 运行时间 【例5-8】译码编码指令应用举例。如图5-11所示。
若(AC2)=2,执
行译码指令,则将输出字VW40的第二位置1,VW40中的二进制数为2#0000 0000 0000 0100;若(AC3)=2#0000 0000 0000 0100,执行编码指令,则输出字节VB50中的错误码为2。
6. 七段显示译
图5-12 与七段显示码对
应的代码
码指令
七段显示器的abcdefg段分别对应于字节的第0位~第6位,字节的某位为1时,其
对应的段亮;输出字节的某位为0时,其对应的段暗。将字节的第7位补0,则构成与七段显示器相对应的8位编码,称为七段显示码。数字0~9、字母A~F与七段显示码的对应如图5-12所示。
七段译码指令SEG将输入字节16#0~F转换成七段显示码。指令格如表5-12所示。
表5-12七段显示译码指令
LAD STL 功能及操作数 功能:将输入字节(IN)的低四位确定的16进制数(16#0~F),产生相应的七段显示码,SEG IN,OUT 送入输出字节OUT IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。 OUT:VB, IB, QB, MB, SMB, LB, AC。IN/OUT的数据类型:字节 使ENO = 0的错误条件:0006 间接地址,SM4.3 运行时间。
【例5-9】编写显示数字0的七段显示码的程序。程序实现如图5-13所示。
LD I0.1 SEG 0, AC1
图5-13 例5-9题图
程序运行结果为AC1中的值为16#3F(2#0011 1111)。
7. ASCII码与十六进制数之间的转换指令
ASCII码与十六进制数之间的转换指令指令格式和功能如表5-13所示。
表5-13 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的错误条件 0006 间接地址, SM4.3 运行时间 ,0091 操作数范围超界 SM1.7 非法ASCII数值(仅限ATH) 注意:合法的ASCII码对应的十六进制数包括30H到39H,41H到46H。如果在ATH指令的输入中包含非法的ASCII码,则终止转换操作,特殊内部标志位SM1.7置位为1。
【例5-10】将VB10~VB12中存放的3个ASCII码33、45、41,转换成十六进制数。 梯形图和语句表程序如图5-14所示。
LD I1.0
ATH VB10, VB20, 3
图5-14 例5-10题图
程序运行结果如下:
可见将VB10~VB12中存放的3个ASCII码33、45、41,转换成十六进制数3E和Ax ,放在VB20和VB21中,“x”表示VB21的“半字节”即低四位的值未改变。
5.1.5 天塔之光的模拟控制实训
1. 实训目的