首页 理论教育 DDT诊断检测指令简易教程

DDT诊断检测指令简易教程

时间:2023-10-26 理论教育 版权反馈
【摘要】:诊断检测指令DDT跟数组位比较指令FSC是非常相似的,指令的参数项较为复杂,如图12-6所示的指令界面,指令的执行是将源数组和参考数组中的双整字位对位地进行比较,这是一个寄存器的操作,发现不同时,将结果记录在结果数组中,并修改此位,使之与源位一致。图12-9 对64位进行比较并修改参考量的梯级逻辑图12-10 DDT指令执行后的数据结果对于需要修改参考量的需求,无需增加更多的梯级逻辑处理,只要选不同的数组处理指令便可。

DDT诊断检测指令简易教程

诊断检测指令DDT跟数组位比较指令FSC是非常相似的,指令的参数项较为复杂,如图12-6所示的指令界面,指令的执行是将源数组和参考数组中的双整字位对位地进行比较,这是一个寄存器的操作,发现不同时,将结果记录在结果数组中,并修改此位,使之与源位一致。非常特殊的是,这条指令有3个操作数组和两个控制结构数据标签。

978-7-111-36030-8-Chapter12-6.jpg

图12-6 指令界面

3个操作数组:

●源数组 比较的对象,是一组变化的信息。此为双整数数组。

●参考数组 参考量,不断被修改的参照信息,是一组变动的信息。此为双整数数组。

●结果数组 记录不匹配结果的位号,在进行新的一轮比较之前,最好先清除结果数组。此为双整数数组。

两个控制结构数据标签:

●比较数组的控制结构数据标签,设定比较的模式,记录比较时的状态,该长度设置指的是参加比较的位的数量。

-每次记录一个不匹配模式 禁止位IN设为1,每当梯级条件跳变一次,指令搜索下一个不匹配位,如果发现一个不匹配的位,找到位FD置位,并记录不匹配位置,指令停止执行,直到找到位复位。

-整体模式 禁止位设为0,当梯级条件跳变时,指令执行将所有的位一次比较完毕,如果存在不匹配位,找到位FD置位,并记录所有的不匹配位。

●结果数组的控制结构数据标签 记录不匹配的比较结果,每当找到一个不匹配的位,便将该位的所在位置,即POS所指的位置值,依次记录下来。该长度一般等于比较数组的控制结构数据标签的长度,以保证所有的位的不匹配结果都能记录下来。

指令运行结果如图12-7所示,将源数组Array_Dint1与参考数组Array_Dint2进行比较,找到6个不匹配的位,顺序将对应的位置记录在结果文件中,请注意结果数组中记录的数值是由Control_DDT1.POS提供的位置值。这是采用整体模式运行的结果,参考数组的数据已被修改,与源数组的数据一致,等待下一次比较。(www.xing528.com)

978-7-111-36030-8-Chapter12-7.jpg

图12-7 指令运行后数组的数据记录

同样的,在第6章中讲到的异或运算不但要获得比较的结果,还要修改参考双整字以得到新的参考量,对每一个双整字都要用一条MOV指令传送,梯级逻辑如图12-8所示。在需要修改参考量的需求下,例程变得更为繁杂和臃肿。

978-7-111-36030-8-Chapter12-8.jpg

图12-8 异或运算并修改参考量的实例

如同刚才FBC的讨论,对双整字的复杂而繁琐的处理,在数组处理的DDT指令执行变得简单易行,针对同样的需求,只要编写如图12-9所示的梯级逻辑便可。

978-7-111-36030-8-Chapter12-9.jpg

图12-9 对64位进行比较并修改参考量的梯级逻辑

978-7-111-36030-8-Chapter12-10.jpg

图12-10 DDT指令执行后的数据结果

对于需要修改参考量的需求,无需增加更多的梯级逻辑处理,只要选不同的数组处理指令便可。如图12-10所示是DDT指令执行后,在数据表中所看到的数据结果,它与FBC指令执行之后的数据结果是相同的,不同的是参考数组Array_Reference被改写为与源数组Ar-ray_Input一致。结果数组所提供的信息可以作为后续梯级逻辑处理的判断梯级条件。

DDT指令惟一不同于FBC指令的是,当源数组与参考数组比较不相同时,它要修改参考数组,这条指令适合用来监视变化的位。运用编程结构几乎不变的梯级逻辑,仅用DDT指令替换FBC指令,无须增加更多的梯级逻辑处理,较之双整字逻辑运算的处理显得更为简单明了。

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

我要反馈