(s1): 搜索字符串或存储了搜索字符串的软元件起始编号 字符串类型
(s2): 搜索的字符串或存储了搜索的字符串的软元件起始编号 字符串类型
(d) : 存储搜索结果的软元件起始编号 有符号BIN16位
(s3): 搜索开始位置 有符号BIN16位
可以使用的软元件:
出错代码 (SD0/SD8067)
2820H:
(s1)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。
(s2)中指定的软元件以后,相应软元件的范围内没有NULL代码(00H)时。
3405H:
(s3)的值超过了(s2)的字符数时。
(s1)的字符串超过了16383字符时。
(s2)的字符串超过了16383字符时。
二、程序测试
官方解释永远都是非常晦涩难懂,我们用程序案例来讲解这个指令的使用:
我们将字符串“adcd1234”传送到D122
将字符串“cd”传送到D156
将字符串“12”传送到D158
我们分别在D122中查找D156与D158中的字符串,直接看结果:
我们可以看到,字符串“cd”在字符串“adcd1234”中的位置是从第三个字符开始,所以D166中的数据为“3”,并且我们设置的是从D122的左侧第一个字符开始搜索。
我们又设置了从 D122的左侧第二个字符开始搜索,搜索字符串“12”在D122中的位置,结果发现,搜索结果为“5”,就是不管从第几位开始搜索,字符串的位置始终为从D122第一位开始排序。
注意: 搜索开始位置(s3)为负数或“0”的情况下,不进行处理。如下:
将字符串“12”传送到D160
我们可以看到,指令执行过后,因为S3的值设置的为“0”,所以D170的值没有发生变化。