Assembly 比较多个字节

Assembly 比较多个字节,assembly,microchip,Assembly,Microchip,我从USART接收字节并将它们放入内存寄存器。字节是我必须读取的命令,并相应地回复消息。因为我知道如何比较单个字节,所以我建议使用一种算法来比较多个字节 例如,接收到的字节在十六进制16 04 32 01 00 32中如下所示。它们具有不同的长度,因此比较会更加困难。您只需要比较足够的字节就可以清楚地识别它是什么类型的消息(在第一步中不需要关心实际的数据负载)。对于大多数串行协议,它只是指定位置的一个字节 通过查看示例消息,我猜第一个字节是消息类型,第二个字节是数据有效负载的长度。如果是这种情况

我从USART接收字节并将它们放入内存寄存器。字节是我必须读取的命令,并相应地回复消息。因为我知道如何比较单个字节,所以我建议使用一种算法来比较多个字节


例如,接收到的字节在十六进制16 04 32 01 00 32中如下所示。它们具有不同的长度,因此比较会更加困难。

您只需要比较足够的字节就可以清楚地识别它是什么类型的消息(在第一步中不需要关心实际的数据负载)。对于大多数串行协议,它只是指定位置的一个字节

通过查看示例消息,我猜第一个字节是消息类型,第二个字节是数据有效负载的长度。如果是这种情况,那么您不需要检查超过第一个字节的内容,并相应地跳转。这主要是通过使用消息类型(第一个字节)索引的跳转表来完成的


处理实际消息数据有效负载的函数可以对数据执行它想执行的任何操作,但您不需要检查完整的消息来确定如何处理消息。

在循环中进行比较?而且,我不知道该采取什么方法。我有几个命令需要比较。我是否必须对每个命令进行循环,或者是否有一种更简单的查表方法。我需要一些这样的示例代码。我尝试对命令中的字节进行求和,但这不起作用,因为我发现两个不同的命令具有相同的sumsI。我猜并非所有接收到的消息都是有效的,但一个或两个字节是消息代码,其余是数据。这将简化事情,因为您只需比较单个(或这两个)字节,然后跳转到子例程来处理实际的消息数据。因此,Joachim,您建议将消息的数据部分与循环进行比较。因此,我必须创建尽可能多的循环作为我期望的消息,并相应地跳转?为您的逻辑绘制一个工作流图。当看到它时,事情应该变得显而易见。