Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Помогите Исправить ошибку в программе (https://forum.antichat.xyz/showthread.php?t=164980)

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
я никак понять не могу как указать на предпоследний символ строки.


Время: 17:29