好吧基本上我正在尝试逐个字符地添加两个字符串。
我遍历第一个字符串的每个字符,直到我到达结尾
然后我也会查看下一个字符串的每个字符
我的问题是尝试将下一个字符串的字符存储到第一个字符串(在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'
答案 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