摘要
以块为单位执行数据查找,查找从指定范围内的第一个项目开始。从指定的(偏移)块开始比较数据块,并将查找结果返回(保存)到指定的存储地址。当发现匹配块时,就保存该块的偏移值(1或更高)。未发现匹配块时,就保存“FFFFh”。当发生错误时,会将错误状态值写入LS9153。
格式
_memsearch([要查找的块地址]、[查找起始地址]、[查找结束地址]、[查找结果存储地址]、自起始块的偏移、比较字数、1个块中的字数)
参数1:内部寄存器
参数2:内部寄存器
参数3:内部寄存器
参数4:内部寄存器
参数5:数值(0至639)、内部寄存器、临时变量
参数6:数值(1至640)
参数7:数值(1至640)
要写入的数据
当有匹配块时:块的偏移值(“1”或更高)
当没有匹配块时:"FFFFh"
请务必将查找块地址、查找起始地址和查找结束地址设置为同类型寄存器(LS或USR)。但是,可将[要查找的块地址]和[查找结果存储地址]设置为内部寄存器。
确保[参数2]小于[参数3]。否则,会发生错误。
查找范围请定义多个块。此函数不能在一个块上运行,如需查找一个块,请使用比较存储器(_memcmp)。
表达式示例1:
_memsearch([w:[#INTERNAL]LS1000],[w:[#INTERNAL]LS1005],[w:[#INTERNAL]LS1025],[w:[#INTERNAL]LS0100],0,1,5)
(从LS1005至LS1025中查找具有相同值的块。从源查找块的偏移0开始,将查找结果保存在LS0100中)
本例中,“块1”的值就与“源查找块”的值匹配。因此,在LS0100中保存查找结果“1”。
表达式示例2:
_memsearch([w:[#INTERNAL]LS1000],[w:[#INTERNAL]LS1005],[w:[#INTERNAL]LS1025],[w:[#INTERNAL]LS0100].3.2,5)
(从LS1005至LS1025中查找具有相同值的块。用两个字,从偏移3开始,并将结果保存在LS0100中。)
本例中,“块4”的值就与“源查找块”的值匹配。因此,在LS0100中保存查找结果“4”。
错误状态
编辑器函数名称 |
LS区 |
错误状态 |
原因 |
_memsearch ( ) |
LS9153 |
0000h |
成功完成 |
0001h |
参数错误 | ||
0003h |
写入/读取错误 |
所需的处理时间与开始和结束地址指定的范围成比例。指定的范围越大,处理时间越长。直到处理完成后才刷新部件。
可以指定的有效内部地址范围限定为指定用户区(LS20至LS2031、LS2096至LS8191以及USR00000至USR29999)。