ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Описание подпрограммы (assembler)
  #1  
Старый 13.12.2009, 16:03
Кубик Рубик
Познающий
Регистрация: 10.04.2008
Сообщений: 51
Провел на форуме:
78866

Репутация: 0
По умолчанию Описание подпрограммы (assembler)

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


помогите разобрать каждую строчку.)))) и почему мы выделяем где-то 12 памяти, где-то 16 и тп

.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
inc 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]
 
Ответить с цитированием

  #2  
Старый 14.12.2009, 18:39
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Цитата:
Сообщение от Кубик Рубик  
strcat - добавляет копию строки, указанной как src к
концу строки, указанной как dest, заменяя при этом
последний знак строки dest первым знаком строки
src.


помогите разобрать каждую строчку.)))) и почему мы выделяем где-то 12 памяти, где-то 16 и тп

.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
inc 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]
это не памят выделяется, а позиция в стеке (+12 - первый параметр функции, +16 - второй)
 
Ответить с цитированием

  #3  
Старый 14.12.2009, 21:09
St0nX
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме:
2823587

Репутация: 106
Отправить сообщение для St0nX с помощью ICQ
По умолчанию

my_strcat:
push ecx пихаем еcx в стек
push edx пихаем edx в стек
mov edx, [esp+12] присваиваем edx значение верхушки стека + 12(эт первая строка)
find_end:
mov al, BYTE PTR [edx] один байт по адресу edx пихаем в al
inc edx сдвигаем адрес на 1
cmp al, 0 проверяем ни конец ли строки часом...
inc find_end тут какая то хрень по идее должен быть джамп если не конец
prepare:
mov ecx, edx адрес конца строки пихаем в еcx
mov edx, [esp+16] присваиваем edx верхушка стека + 16 (эт я так понял вторая строка)
copy:
mov al, BYTE PTR [edx] берем 1 байт суем в al
inc edx увеличиваем адресс
mov BYTE PTR [ecx-1], al пихаем в конец 1 строки этот байт
inc ecx сдвигаем адресс 1 строки
cmp al, 0 проверяем не конец ли 2 строки
jne copy
exit:
pop edx восстанавливаем регистр
pop ecx восстанавливаем регистр
mov eax, [esp+12] пихаем адресс результата в eax

Ты бы лучше книжку почитал какую и сам разобрался тут ничего сверх сложного нету.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторегистратор полноценных групп Вконтакте Ratt1e Покупка, продажа, услуги в Соц. Сетях 25 18.12.2009 10:56
[MySQL] Общее описание таблиц базы mysql Kuzya PHP, PERL, MySQL, JavaScript 0 18.08.2009 18:36
Сбор литературы для начинающего и опытного ассемблерщика -m0rgan- PHP, PERL, MySQL, JavaScript 2 02.12.2008 23:23
Описание .htaccess LoFFi Чужие Статьи 9 29.03.2008 05:14
Подвергаются атаке... »Atom1c« Сотовый фрикинг 3 11.12.2006 08:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ