首页 理论教育 使用浮点运算指令执行数学运算操作

使用浮点运算指令执行数学运算操作

时间:2023-06-29 理论教育 版权反馈
【摘要】:数学运算指令会组合累加器1和累加器2的内容,并将结果存储在累加器1中。可使用浮点运算指令通过两个32位IEEE浮点数来执行数学运算指令。该指令的执行既不考虑也不影响RLO。在累加器1中,角度必须以浮点数表示,结果存

使用浮点运算指令执行数学运算操作

数学运算指令会组合累加器1和累加器2的内容,并将结果存储在累加器1中。对于具有两个累加器的CPU,累加器2的内容保持不变。对于具有4个累加器的CPU,则会将累加器3的内容复制到累加器2中,并将累加器4的内容复制到累加器3中。累加器4的旧内容保持不变。

IEEE 32位浮点数属于称作实数(REAL)的数据类型。可使用浮点运算指令通过两个32位IEEE浮点数来执行数学运算指令。基本运算类型会影响状态字中的CC 1和CC 0、OV和OS位。

1.语句表(STL)的浮点运算指令

(1)+R 将ACCU 1和ACCU 2作为浮点数(32位IEEE-FP)相加

指令格式为:+R

+R(加32位IEEE浮点数)将累加器1与累加器2的内容相加,并将结果存储到累加器1中。将累加器1和累加器2的内容解释为32位IEEE浮点数。该指令的执行也不影响RLO。结果会对状态位CC 1、CC 0、OS和OV进行设置。对于具有两个累加器的CPU,累加器2的内容保持不变。对于具有4个累加器的CPU,则会将累加器3的内容复制到累加器2,并将累加器4的内容复制到累加器3。累加器4的内容保持不变。

例:

(2)-R 将ACCU 2与ACCU 1作为浮点数(32位IEEE-FP)相减

指令格式为:-R

-R(减32位IEEE浮点数)从累加器2减去累加器1的内容,并将结果存储到累加器1中。将累加器1和累加器2的内容解释为32位IEEE浮点数。结果存储在累加器1中。该指令的执行既不考虑也不影响RLO。结果会对状态位CC 1、CC 0、OS和OV进行设置。

对于具有两个累加器的CPU,累加器2的内容保持不变。对于具有4个累加器的CPU,则会将累加器3的内容复制到累加器2,并将累加器4的内容复制到累加器3。累加器4的内容保持不变。

例:

(3)∗R 将ACCU 1和ACCU 2作为浮点数(32位IEEE-FP)相乘

指令格式为:∗R

∗R(乘32位IEEE浮点数)将累加器2与累加器1的内容相乘。将累加器1和累加器2中的内容解释为32位IEEE浮点数,结果作为32位IEEE浮点数存储在累加器1中。该指令的执行既不考虑也不影响RLO。结果会对状态位CC 1、CC 0、OS和OV进行设置。对于具有两个累加器的CPU,累加器2的内容保持不变。对于具有4个累加器的CPU,则会将累加器3的内容复制到累加器2,并将累加器4的内容复制到累加器3。累加器4的内容保持不变。

(4)/R 将ACCU 2与ACCU 1作为浮点数(32位IEEE-FP)相除

指令格式为:/R

/R(除32位IEEE浮点数)将累加器2的内容除以累加器1的内容。将累加器1和累加器2的内容解释为32位IEEE浮点数。该指令的执行既不考虑也不影响RLO。结果会对状态位CC1、CC 0、OS和OV进行设置。对于具有两个累加器的CPU,累加器2的内容保持不变。对于具有4个累加器的CPU,则会将累加器3的内宾复制到累加器2,并将累加器4的内容复制到累加器3。

例:

(5)ABS 浮点数的(32位IEEE-FP)绝对值

指令格式为:ABS

ABS(32位IEEE-FP的绝对值)在ACCU 1中计算浮点数(32位IEEE浮点数)的绝对值,结果存储在累加器1中。该指令的执行既不考虑也不影响状态位。

例:

(6)SQR 计算浮点数(32位)的二次方

指令格式为:SQR

SQR(计算IEEE-FP 32位浮点数的二次方)在累加器1中计算浮点数(32位,IEEE-FP)的二次方,结果存储在累加器1中。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(7)SQRT 计算浮点数(32位)的平方根

指令格式为:SQRT

SQRT(计算32位IEEE-FP浮点数的平方根)在累加器1中计算浮点数(32位,IEEE-FP)的平方根,结果存储在累加器1中。输入值必须大于或等于零。然后得出结果也是正数。唯一的例外是-0的平方根是-0。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(8)EXP 计算浮点数(32位)的指数值

指令格式为:EXP

EXP(计算32位IEEE-FP浮点数的指数值)在累加器1中计算浮点数(32位,IEEE-FP)的指数值(底数为e的指数值),结果存储在累加器1中。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(9)LN 计算浮点数(32位)的自然对数

指令格式为:LN

LN(计算IEEE-FP 32位浮点数的自然对数)在累加器1中计算浮点数(32位,IEEE-FP)的自然对数(底数为e的对数),结果存储在累加器1中。输入值必须大于或等于零。此指令影响CC 1、CC 0、UO和OV状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(10)SIN 计算浮点数(32位)角度的正弦值

指令格式为:SIN

SIN(计算32位IEEE-FP浮点数角度的正弦)计算用弧度表示的角度的正弦。在累加器1中,角度必须以浮点数表示,结果存储在累加器1中。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(11)COS 计算浮点数(32位)角度的余弦

指令格式为:COS

COS(计算32位IEEE-FP浮点数角度的余弦)计算用弧度表示的角度的余弦值。在累加器1中,角度必须以浮点数表示,结果存储在累加器1中。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(12)TAN 计算浮点数(32位)角度的正切值

指令格式为:TAN

TAN(计算32位IEEE-FP浮点数角度的正切)计算用弧度表示的角度的正切值。在累加器1中,角度必须以浮点数表示,结果存储在累加器1中。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(13)ASIN 计算浮点数(32位)的反正弦值

指令格式为:ASIN

ASIN(计算32位IEEE-FP浮点数的反正弦)在累加器1中计算浮点数的反正弦值,结果是以弧度表示的角度。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(14)ACOS 计算浮点数(32位)的反余弦值

指令格式为:ACOS

ACOS(计算32位IEEE-FP浮点数的反余弦值)在累加器1中计算浮点数的反余弦值,结果是用弧度表示的角度。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

(15)ATAN 计算浮点数(32位)的反正切值(www.xing528.com)

指令格式为:ATAN

ATAN(计算32位IEEE-FP浮点数的反正切值)在累加器1中计算浮点数的反正切值,结果是以弧度表示的角度。此指令影响CC 1、CC 0、OV和OS状态字位。累加器2的内容(以及具有4个累加器的CPU的累加器3和累加器4的内容)保持不变。

例:

2.梯形图(LAD)的浮点运算指令

(1)ADD_R 实数加

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN1(被加数)和IN2(加数)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果)的数据类型为REAL型,存储区为I、Q、M、L、D。在起用(EN)输入端通过一个逻辑“1”来激活ADD_R(实数加)。IN1和IN2相加,其结果通过OUT来查看。如果结果超出了浮点数允许的范围(溢出或下溢),OV位和OS位将为“1”并且ENO为“0”,这样便不执行此数学框后由ENO连接的其他功能(层叠排列)。

例:

由I0.0处的逻辑“1”激活ADD_R框。MD0+MD4相加的结果输出到MD10。如果结果超出了浮点数的允许范围,或者如果没有处理该程序语句(I0.0=0),则设置输出Q4.0。

(2)SUB_R 实数减

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN1(被减数)和IN2(减数)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果)的数据类型为REAL型,存储区为I、Q、M、L、D。在起用(EN)输入端通过一个逻辑“1”来激活SUB_R(实数减)。从IN1中减去IN2,并通过OUT查看结果。如果该结果超出了浮点数允许的范围(溢出或下溢),OV位和OS位将为“1”并且ENO为逻辑“0”,这样便不执行此数学框后由ENO连接的其他函数(层叠排列)。

例:

在10.0处由逻辑“1”激活SUB_R框。MD0-MD4相减的结果输出到MD10。如果结果超出了浮点数的允许范围,或者如果没有处理该程序语句,则设置输出Q4.0。

(3)MUL_R 实数乘

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN1(被乘数)和IN2(乘数)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果)的数据类型为REAL型,存储区为I、Q、M、L、D。在起用(EN)输入端通过一个逻辑“1”来激活MUL_R(实数乘)。IN1和IN2相乘,结果通过OUT查看。如果该结果超出了浮点数允许的范围(溢出或下溢),OV位和OS位将为“1”并且ENO为逻辑“0”,这样便不执行此数学框后由ENO连接的其他函数(层叠排列)。

例:

在10.0处由逻辑“1”激活MUL_R框。MD0×MD4相乘的结果输出到MD0。如果结果超出了浮点数的允许范围,或者如果没有处理该程序语句,则设置输出Q4.0。

(4)DIV_R 实数除

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN1(被除数)和IN2(除数)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果)的数据类型为REAL型,存储区为I、Q、M、L、D。在起用(EN)输入端通过一个逻辑“1”来激活DIV_R(实数除)。IN1除以IN2,其结果通过OUT查看。如果该结果超出了浮点数允许的范围(溢出或下溢),OV位和OS位将为“1”并且ENO为逻辑“0”,这样便不执行此数学框后由ENO连接的其他函数(层叠排列)。

例:

由I0.0处的逻辑“1”激活DIV_R框。MD0除以MD4的结果输出到MD10。如果结果超出了浮点数的允许范围,或者如果没有处理该程序语句,则设置输出Q4.0。

(5)ABS 求浮点数的绝对值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果)的数据类型为REAL型,存储区为I、Q、M、L、D。ABS求浮点数的绝对值。

例:

如果10.0=“1”,则MD8的绝对值在MD12输出。MD8=+6.234得到MD12=6.234。如果未执行该转换(ENO=EN=0),则输出Q4.0为“1”。

(6)SQR 求二次方

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的二次方)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。SQR求浮点数的二次方。

(7)SQRT 求平方根

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的平方根)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。SQRT求浮点数的平方根。当地址大于“0”时,此指令得出一个正的结果。唯一例外的是:-0的平方根是-0。

(8)EXP 求指数值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的指数值)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。EXP求浮点数的以e(=2,71828...)为底的指数值。

(9)LN 求自然对数

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的自然对数)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。LN求浮点数的自然对数。

(10)SIN 求正弦值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的正弦)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。SIN求浮点数的正弦值。这里浮点数代表一个以弧度为单位的角度。

(11)COS 求余弦值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的余弦)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。COS求浮点数的余弦值。这里浮点数代表一个以弧度为单位的角度。

(12)TAN 求正切值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的正切)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。TAN求浮点数的正切值。这里浮点数代表以弧度为单位的一个角度。

(13)ASIN 求反正弦值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的反正弦)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。ASIN求一个定义在-1≤输入值≤1范围内的浮点数的反正弦值。

(14)ACOS 求反余弦值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的反余弦)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。ACOS求一个定义在-1≤输入值≤1范围内的浮点数的反余弦值。

(15)ATAN 求反正切值

指令符号为:

EN(起用输入)和ENO(起用输出)的数据类型为BOOL型,存储区为I、Q、M、L、D。IN(输入)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。OUT(运算结果浮点数的反正切)的数据类型为REAL型,存储区为I、Q、M、L、D或常数。ATAN求浮点数的反正切值。

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

我要反馈