2012-06-06 25 views
0

我试图在装配中连接两个字符串,但我似乎无法得到它的工作。我有以下的代码:装配中的Strcat

.data 

message: .asciz "message" 
leading: .asciz "leading" 

.globl main 

main: 
    push $message 
    push $leading 

    call strcat 

    push %eax 

    call printf 
... 

当我尝试将一个字符串追加超过16个字符到另一个字符串,它根据GDB给出了一个分段故障在strcat的调用。我在这里错过了什么吗?有没有什么办法让strcat处理超过16个字符的字符串?

谢谢!

回答

2

您尚未分配超过总共16个字节。您需要为结果字符串保留足够的内存以适应目标。

+0

谢谢你的快速回答!你能解释一下用字符串怎么做?我有点新装配;) – Devos50

+0

没关系,我找到了。我必须使用缓冲区,通过使用strcpy将消息复制到该缓冲区,然后我可以安全地追加:) – Devos50