将字节添加到寄存器值的末尾

时间:2012-08-15 10:39:48

标签: arm

好吧基本上我正在尝试逐个字符地添加两个字符串。

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

然后我也会查看下一个字符串的每个字符

我的问题是尝试将下一个字符串的字符存储到第一个字符串(在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''我''''0' R2中的字符看起来像 '你''''o'

该方法应该将R1中的字符更改为 ''''''''''''''''''''''''0'

1 个答案:

答案 0 :(得分:0)

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

无需使用R4来跟踪焦点位置。相反,更优雅的解决方案是排除第一个字符串的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