首页 理论教育 使用ASCII码转换指令进行字符编码转换

使用ASCII码转换指令进行字符编码转换

时间:2023-06-27 理论教育 版权反馈
【摘要】:ASCII码转换指令包括整数、双整数、实数转ASCII码指令和十六进制数与ASCII码转换指令。FMT端单元中的数据定义与整数转ASCII码指令相同。表5-37 实数转ASCII码指令说明在RTA指令中,IN端为实数型操作数,FMT端指定单元中的数据用来定义OUT存储区的长度和ASCII码字符串在OUT存储区的存放形式。在ATH、HTA指令中,有效的ASCII码字符为0~9、A~F,用二进制数表示为001100

使用ASCII码转换指令进行字符编码转换

ASCII码转换指令包括整数、双整数、实数转ASCII码指令和十六进制数与ASCII码转换指令。

1.关于ASCII码

ASCII码意为美国标准信息交换码,是一种使用7位或8位二进制数编码的方案,最多可以对256个字符(包括字母、数字、标点符号控制字符及其他符号)进行编码。ASCII编码表见表5-33。计算机等很多数字设备的字符采用ASCII编码方式,例如当按下键盘上的“8”键时,键盘内的编码电路就将该键编码成0111000,再送入计算机处理,如果在7位ASCII码最高位加0就是8位ASCII码。

表5-33 ASCII编码表

978-7-111-55193-5-Chapter05-61.jpg

(续)

978-7-111-55193-5-Chapter05-62.jpg

2.整数转ASCII码指令

(1)指令说明

整数转ASCII码指令说明见表5-34。

表5-34 整数转ASCII码指令说明

978-7-111-55193-5-Chapter05-63.jpg

在ITA指令中,IN端为整数型操作数,FMT端指定字节单元中的数据用来定义ASCII码字符串在OUT存储区的存放格式,OUT存储区是指OUT端指定首地址的8个连续字节单元,又称输出存储区。FMT端单元中的数据定义如下:

978-7-111-55193-5-Chapter05-64.jpg

(2)指令使用举例

整数转ASCII码指令使用如图5-18所示,当I0.0触点闭合时,执行ITA指令,将IN端VW10中的整数转换成ASCII码字符串,保存在OUT端指定首地址的8个连续单元(VB12~VB19)构成的存储区中,ASCII码字符串在存储区的存放形式由FMT端VB0单元中的数据低4位规定。

978-7-111-55193-5-Chapter05-65.jpg

图5-18 整数转ASCII码指令使用举例

例如,VW10中整数为12,VB0中的数据为3(即00000011),执行ITA指令后,VB12~VB19单元中存储的ASCII码字符串为“0.012”,各单元具体存储的ASCII码见表5-35,其中VB19单元存储的为“2”的ASCII码“00110010”。

表5-35 FMT单元取不同值时存储区中ASCII码的存储形式

978-7-111-55193-5-Chapter05-66.jpg

输出存储区的ASCII码字符串格式有以下规律:

1)正数值写入输出存储区时没有符号位。

2)负数值写入输出存储区时以负号(-)开头。

3)除小数点左侧最靠近的0外,其他左侧0去掉。

4)输出存储区中的数值是右对齐的。

3.双整数转ASCII码指令

(1)指令说明

双整数转ASCII码指令说明见表5-36。

表5-36 双整数转ASCII码指令说明

978-7-111-55193-5-Chapter05-67.jpg

在DTA指令中,IN端为双整数型操作数,FMT端字节单元中的数据用来指定ASCII码字符串在OUT存储区的存放格式,OUT存储区是指OUT端指定首地址的12个连续字节单元。FMT端单元中的数据定义与整数转ASCII码指令相同。

(2)指令使用举例

双整数转ASCII码指令使用如图5-19所示,当I0.0触点闭合时,执行DTA指令,将IN端VD10中的双整数转换成ASCII码字符串,保存在OUT端指定首地址的8个连续单元(VB14~VB21)构成的存储区中,ASCII码字符串在存储区的存放形式由VB0单元(FMT端指定)中的低4位数据规定。

978-7-111-55193-5-Chapter05-68.jpg

图5-19 双整数转ASCII码指令使用举例

例如,VD10中双整数为3456789,VB0中的数据为3(即00000011),执行DTA指令后,VB14~VB25中存储的ASCII码字符串为“3456.789”。

输出存储区的ASCII码字符串格式有以下规律:

1)正数值写入输出存储区时没有符号位。

2)负数值写入输出存储区时以负号(-)开头。

3)除小数点左侧最靠近的0外,其他左侧0去掉。

4)输出存储区中的数值是右对齐的。

4.实数转ASCII码指令(www.xing528.com)

(1)指令说明

实数转ASCII码指令说明见表5-37。

表5-37 实数转ASCII码指令说明

978-7-111-55193-5-Chapter05-69.jpg

在RTA指令中,IN端为实数型操作数,FMT端指定单元中的数据用来定义OUT存储区的长度和ASCII码字符串在OUT存储区的存放形式。FMT端单元中的数据定义如下:

978-7-111-55193-5-Chapter05-70.jpg

(2)指令使用举例

实数转ASCII码指令使用如图5-20所示,当I0.0触点闭合时,执行RTA指令,将IN端VD10中的实数转换成ASCII码字符串,保存在OUT端指定首地址的存储区中,存储区的长度由FMT端VB0单元中的数据高4位规定,ASCII码字符串在存储区的存放形式由FMT端VB0单元中的低4位数据规定。

978-7-111-55193-5-Chapter05-71.jpg

图5-20 实数转ASCII码指令使用举例

例如,VD10中实数为1234.5,VB0中的数据为97(即01100001),执行RTA指令后,VB14~VB19中存储的ASCII码字符串为“1234.5”。FMT单元取不同值时存储区中ASCII码的存储格式见表5-38。

表5-38 FMT单元取不同值时存储区中ASCII码的存储格式

978-7-111-55193-5-Chapter05-72.jpg

输出存储区的ASCII码字符串格式有以下规律:

1)正数值写入输出存储区时没有符号位。

2)负数值写入输出存储区时以负号(-)开头。

3)除小数点左侧最靠近的0外,其他左侧0去掉。

4)若小数点右侧数据超过规定位数,会按四舍五入去掉低位以满足位数要求。

5)输出存储区的大小应至少比小数点右侧的数字位数多3个字节。

6)输出存储区中的数值是右对齐的。

5.ASCII码转十六进制数指令

(1)指令说明

ASCII码转十六进制数指令说明见表5-39。

表5-39 ASCII码转十六进制数指令说明

978-7-111-55193-5-Chapter05-73.jpg

(2)指令使用举例

ASCII码转十六进制数指令使用如图5-21所示,当I1.0触点闭合时,执行ATH指令,将IN端VB30为首地址的连续3个(LEN端指定)字节单元(VB30~VB32)中的ASCII码字符串转换成十六进制数,保存在OUT端VB40为首地址的连续字节单元中。

978-7-111-55193-5-Chapter05-74.jpg

图5-21 ASCII码转十六进制数指令使用

例如,VB30、VB31、VB32单元中的ASCII码字符分别是3(00110011)、E(01000101)、A(01000001),执行ATH指令后,VB30~VB32中的ASCII码转换成十六进制数,并存入VB40、VB41单元,其中VB40存放十六进制数3E(即00111110)、VB41存放A×(即1010××××),×表示VB41原先的数值不变。

在ATH、HTA指令中,有效的ASCII码字符为0~9、A~F,用二进制数表示为00110011~00111001、01000001~01000110,用十六进制数表示为33~39、41~46。另外,ATH、HTA指令可转换的ASCII码和十六进制数字的最大个数为255个。

6.十六进制转ASCII码数指令

(1)指令说明

十六进制数转ASCII码指令说明见表5-40。

表5-40 十六进制数转ASCII码指令说明

978-7-111-55193-5-Chapter05-75.jpg

(2)指令使用举例

十六进制数转ASCII码指令使用如图5-22所示,当I1.0触点闭合时,执行HTA指令,将IN端VB30为首地址的连续2个(LEN端指定)字节单元(VB30、VB31)中的十六进制数转换成ACII码字符,保存在OUT端VB40为首地址的连续字节单元中。

978-7-111-55193-5-Chapter05-76.jpg

图5-22 十六进制数转ASCII码指令使用举例

例如,VB30、VB31单元中的十六进制数分别是3E(00111110)、1A(00011010),执行HTA指令后,VB30、VB31中的十六进制数转换成ASCII码,并存入VB40~VB43单元中,其中VB40存放3的ASCII码(00110011)、VB41存放E的ASCII码、VB42存放1的ASCII码、VB43存放A的ASCII码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈