我目前正在AT&T汇编中完成一项任务,现在我需要将两个字符串连接起来:
message: .asciz "String 1"
before: .asciz "String 2"
我真的不知道如何做这件事或从哪里开始。我已经在互联网上搜索过,但没有找到任何有用的信息。我认为我需要将第二个字符串的字符手动复制到第一个字符串的末尾,但我不确定。能否有人向我解释一下如何做呢?:)
我目前正在AT&T汇编中完成一项任务,现在我需要将两个字符串连接起来:
message: .asciz "String 1"
before: .asciz "String 2"
rep(e/ne) movsb
和ecx中的大小将第一个字符串复制到目标内存中。shr ecx, 2
操作,以批量处理4个字节,然后使用movsb处理剩余部分。我看到过像这样的实现:mov edi, dest
mov esi, string_address
mov ecx, string_length
mov eax, ecx
shr ecx, 2
repne movsd
mov cl, al
and cl, 3
repne movsb ; esi and edi move along the addresses as they copy, meaning they are already set correctly here
如果要将第二个字符串复制到第一个字符串的末尾,则需要少进行一次复制操作,但是必须确保有足够的空间来复制第二个字符串而不会覆盖其他重要内容。