c - 如何在汇编中连接两个字符串?

标签 c

您好,我正在尝试连接两个字符串。

我加载字符串 1、2 和 3。我需要将最终字符串存储在 r2 中。

我使用ldr从内存加载字符串,并且可以使用str存储它们。

代码

有人知道连接它们的有效方法吗?像我上面那样添加它们不好吗?寄存器仅限于一个字节的数据,所以也许我做错了什么......

我是菜鸟。

最佳答案

类似这样的事情。我假设您的字符串不是以 NULL 结尾的,因为它们似乎不在您的代码示例中。

此外,您还希望将 STRING1STRING2 存储在 .text 部分(只读永久内存),而 STRING3 将进入 .data 部分,因为它是 RAM 中的缓冲区。

; Strings aren't \0 terminated (like in C) so we should deal with the size ourselves

mov  r4, #STRING1_SIZE
loop1:
   ldrb r3, [r0], #1   ; Copy STRING1 to STRING3
      strb r3, [r2], #1
      subs r4, #1
      bne  loop1

mov  r4, #STRING2_SIZE
loop2:
   ldrb r3, [r1], #1   ; Copy STRING2 to STRING3
   strb r3, [r2], #1
   subs r4, #1
   bne  loop2

; Done

关于c - 如何在汇编中连接两个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090400/

相关文章:

C Minishell 命令扩展打印乱码

c - 如何在C中扫描用户定义的字符串数?

c++ - C Char 数组创建差异

直接从 typedef 结构定义创建指针

c - 我试图在液晶显示器上显示浮点值,同样我必须首先将其转换为字符串。但它不起作用

c - 如何嵌入内联汇编来调用 sys_unlink?

c++ - 条件中的多个表达式 (C/C++)

c - 在 Linux 中重新传播捕获的信号

C 用 T 和 H 填充棋盘,不知何故有间隙,只有 7 行而不是 8 行

c - 在 C 中读入一个正数