2012-06-06 3 views
0

Я пытаюсь объединить две строки в Assembly, но я не могу заставить его работать. У меня есть следующий фрагмент коды:Strcat in assembly

.data 

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

.globl main 

main: 
    push $message 
    push $leading 

    call strcat 

    push %eax 

    call printf 
... 

Когда я пытаюсь добавить строку с более чем 16 символами в другую строку, он дает ошибку сегментации при вызове strcat согласно БГДУ. Я что-то упустил? Есть ли способ заставить strcat работать с строками длиной более 16 символов?

Спасибо!

ответ

2

Вы не выделили более 16 байт. Вам нужно зарезервировать достаточное количество памяти для полученной строки, чтобы она соответствовала месту назначения.

+0

Благодарим за быстрый ответ! Не могли бы вы объяснить, как это сделать со строками? Я новичок в сборке;) – Devos50

+0

Nevermind, я нашел его. Я должен использовать буфер, скопировать сообщение в этот буфер с помощью strcpy, а затем я могу добавить безопасно :) – Devos50