Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2016, 12:25   #1
Teomir
Новичок
Джуниор
 
Регистрация: 09.05.2016
Сообщений: 2
По умолчанию Помоги разобрать кусочек кода ASM

Всем привет.

Я новичек, изучаю asm, на этапе чайника.

Немного запутался, помогите разобрать кусочек кода, а точнее что он выполняет, хочу повторить этот же код на Delphi.

Это листинг из дизасемблера:

004E0827 pusha
004E0829 pushf
004E082B xor eax,eax
004E082D xor edx,edx
004E082F xor ecx,ecx
004E0831 mov cl,4
004E0833 mov eax,dword ptr [ebp-4]
004E0836 rol edx,8
004E0839 rol eax,8
004E083C mov dl,al
004E083E push ecx
004E083F mov cl,byte ptr [ebp-5]; <-- Здесь всегда 1
004E0842 rol dl,1
004E0844 loop 004E0842
004E0846 pop ecx
004E0847 loop 004E0836
004E0849 mov eax,edx
004E084B mov dword ptr [ebp-4],eax
004E084E popf
004E0850 popa

----------------------------------------------------
Я думаю так, но что то не так)))

{ А тут не пойму что к чему}

var
dwValue: DWORD;
begin
for i:=0 to 3 do
begin
dwValue:=dwValue shl i or 1+i; { А тут не пойму что к чему}
end;
end;

Заранее огромное спасибо!
Teomir вне форума Ответить с цитированием
Старый 09.05.2016, 13:22   #2
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

Вижу знакомые операторы: "push , xor , mov , loop".
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 09.05.2016, 15:23   #3
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

В 4-хбайтовом числе каждый байт вращается независимо от остальных.
AbakBarama вне форума Ответить с цитированием
Старый 09.05.2016, 15:47   #4
Teomir
Новичок
Джуниор
 
Регистрация: 09.05.2016
Сообщений: 2
По умолчанию

Цитата:
Сообщение от AbakBarama Посмотреть сообщение
В 4-хбайтовом числе каждый байт вращается независимо от остальных.
Вы хотите сказать так?

var
dwValue: DWORD;
begin
for i:=0 to 3 do
begin
dwValue:=dwValue shl i or dwValue shr -i;
end;
end;

Но как быть с байтом который [ebp-5] не пойму я какую он играет роль
Teomir вне форума Ответить с цитированием
Старый 09.05.2016, 19:35   #5
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

Я не пишу на паскале. Алгоритм на словах: каждый из четырёх байтов вращается влево на [ebp-5] битов. Понятно, что разумные пределы [ebp-5] от 1 до 7.
AbakBarama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разобрать 2 строки кода на C ksvsvk Помощь студентам 4 12.04.2014 13:27
Разъясните кусочек кода Delphi kalachal Помощь студентам 2 09.01.2013 14:35
Кусочек кода на Delphi в С++ Geezer Помощь студентам 1 13.07.2011 23:39
Кусочек кода... 1900s БД в Delphi 0 20.03.2009 17:11