Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 8051使用汇编进行字符串比较_String_Assembly_Compare_8051 - Fatal编程技术网

String 8051使用汇编进行字符串比较

String 8051使用汇编进行字符串比较,string,assembly,compare,8051,String,Assembly,Compare,8051,我需要比较一个从200H开始保存在8051代码内存位置的字符串和另外三个从300H开始保存在代码内存位置的字符串 这三个字符串将用逗号分隔以表示不同的单词,并在单词流的末尾使用句号表示流的结束 目前,我设法保存了要比较的字符串和其他三个字符串,如下所示: 如何继续逐串比较,直到找到匹配的字符串 嘿,你可以使用CJNE指令进行比较。首先将内容移动到Acc并与第一个字符串进行比较。如果匹配,则遍历到存储字符串的,:分隔符。 到达分隔符后,初始化比较字符串指针 希望对您有所帮助。第一步(可能不是最后一

我需要比较一个从200H开始保存在8051代码内存位置的字符串和另外三个从300H开始保存在代码内存位置的字符串

这三个字符串将用逗号分隔以表示不同的单词,并在单词流的末尾使用句号表示流的结束

目前,我设法保存了要比较的字符串和其他三个字符串,如下所示:


如何继续逐串比较,直到找到匹配的字符串

嘿,你可以使用CJNE指令进行比较。首先将内容移动到Acc并与第一个字符串进行比较。如果匹配,则遍历到存储字符串的,:分隔符。 到达分隔符后,初始化比较字符串指针


希望对您有所帮助。

第一步(可能不是最后一步)应该是计算字符串变量的长度。
在你给出的例子中,这就足够了。在一般情况下,此步骤是一个变量过滤器,用于减少搜索数组。在这之后,有必要对第一个字符、第二个字符等进行符合性分析。

您可能会发现,首先在开发机器上编写并测试一个小型C程序非常有用,该程序可以明确地执行此操作,而不是使用库函数来全面规划算法,然后手动将其转换为8051汇编。对于隐式长度以0结尾的字符串,通常一个普通strcmp会同时遍历两个字符串,因此当您发现差异或在其中一个字符串中找到0时,就完成了转换。最坏的情况是,这需要到较短的一个的末尾,如果它们很早就不同,则可能要早得多。计算这两个长度都需要循环两个长度,如果它们相同,则必须再次循环两个长度。除非8051在指针/索引方面真的很困难,否则可能不值得额外的代码和周期来分别对它们进行strleng。