PDA

Просмотр полной версии : Помогите Исправить ошибку в программе


Ann_Pretty
20.12.2009, 21:45
strcat - добавляет копию строки, указанной как src к
концу строки, указанной как dest, заменяя при этом
последний знак строки dest первым знаком строки
src.

.intel_syntax noprefix
.globl my_strcat
.type my_strcat, @function
my_strcat:
push ecx
push edx
mov edx, [esp+12]
find_end:
mov al, BYTE PTR [edx]
inc edx
cmp al, 0
jne find_end
prepare:
mov ecx, edx
mov edx, [esp+16]
copy:
mov al, BYTE PTR [edx]
inc edx
mov BYTE PTR [ecx-1], al
inc ecx
cmp al, 0
jne copy
exit:
pop edx
pop ecx
mov eax, [esp+12]
ret

при запуске пишет "ошибка сигментации" :( :confused:
ребята, очень прошу, помогите!!!!!!!!

lukmus
20.12.2009, 21:55
ошибка сегментации, это очень часто переполнение буфера

Ann_Pretty
20.12.2009, 22:15
Хм... Ну я так поняла, что я обращаюсь к памяти, куда нельзя. А где именно?

Ann_Pretty
21.12.2009, 20:29
Я пробовала еще просто заменить al
на dl, тогда происходит зацикливание.
Мне кажется что ошибка в этой строчке mov BYTE PTR [ecx-1], al
я никак понять не могу как указать на предпоследний символ строки.