0

好的,所以基本上我正在尝试将两个字符串逐个字符地添加在一起。

我遍历第一个字符串的每个字符,直到我到达结尾

然后我也遍历下一个字符串的每个字符

我的问题是尝试将下一个字符串的字符存储到第一个字符串(在 0 终止字节之前)。

strcat
    ADD R4, R4, #1
    LDRB R0, [R1], #1
    CMP R0, #0
    BNE strcat
    SUB R4, R4, #1      ;take byte pointer 1 step back to ignore 0
    B stradd

stradd  
    LDRB R0, [R2], #1   ;otherwise we would include the 0 char
    STRB R0, [R1], R4
    CMP R0, #0
    ADD R4, R4, #1
BNE stradd      ;keep adding chars

到目前为止是我的方法,它试图连接 R1 + R2

问题

如何更改 STRB(或完全更改其他方法)以确保它开始在 R1 中字符串的最后一个正确字符的地址处保存字节

示例 如果 R1 中的字符看起来像 'h' 'e' 'l' 'l' 'o' 0 而 R2 中的字符看起来像 'y' 'u' 'o'

该方法应将 R1 中的字符更改为 'h' 'e' 'l' 'l' 'o' 'y' 'u' 'o' 0

4

1 回答 1

1

从那以后,我问过一位提供此解决方案的朋友

无需使用 R4 来跟踪 char 位置。相反,排除第一个字符串的 0 并连接的更优雅的解决方案是:

strcat
    LDRB R0, [R1], #1
    CMP R0, #0
    BNE strcat
SUB R1, R1, #1

stradd  
    LDRB R0, [R2], #1   ;otherwise we would include the 0 char
    STRB R0, [R1], #1
    CMP R0, #0
    BNE stradd      ;keep adding chars
于 2012-09-03T05:46:35.627 回答