Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых)

 eXeL@B —› Программирование —› Объясните кусок кода на асме
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 мая 2006 02:24
· Личное сообщение · #1

Есть программа-тестовая оболочка. Написана на Delphi. Выдает по очереди 30 вопросов на которые надо ответить (checkbox'ы).
Я вроде нашел в программе участок, который проверяет (вроде бы - цикл по 30 перед выдачей результата), но увы не могу понять.

CODE:004599B7 mov edx, esi
CODE:004599B9 mov eax, [ebp+var_4]
CODE:004599BC call sub_45A5D4
CODE:004599C1 mov ebx, eax
CODE:004599C3 mov eax, ebx
CODE:004599C5 add eax, eax
CODE:004599C7 mov edx, ds:dword_45EC40
CODE:004599CD movzx eax, byte ptr [edx+eax*8+8]
CODE:004599D2 mov [ebp+var_90], eax
CODE:004599D8 fild [ebp+var_90]
CODE:004599DE fadd [ebp+var_28]
CODE:004599E1 fstp [ebp+var_28]
CODE:004599E4 wait
CODE:004599E5 inc esi //сколько раз цикл выполнился
CODE:004599E6 dec [ebp+var_44] //сколько осталось проходов цикла
CODE:004599E9 jnz short loc_4599B7

CODE:0045A5D4 sub_45A5D4 proc near ; CODE XREF: sub_4596C8+2F4p
CODE:0045A5D4 ; sub_4596C8+339p ...
CODE:0045A5D4 push ebx
CODE:0045A5D5 push esi
CODE:0045A5D6 push edi
CODE:0045A5D7 xor esi, esi
CODE:0045A5D9 mov ecx, ds:dword_45EC48
CODE:0045A5DF test ecx, ecx
CODE:0045A5E1 jle short loc_45A5FE
CODE:0045A5E3 mov eax, 1
CODE:0045A5E8
CODE:0045A5E8 loc_45A5E8: ; CODE XREF: sub_45A5D4+28j
CODE:0045A5E8 mov ebx, eax
CODE:0045A5EA add ebx, ebx
CODE:0045A5EC mov edi, ds:dword_45EC40
CODE:0045A5F2 cmp edx, [edi+ebx*8+0Ch]
CODE:0045A5F6 jnz short loc_45A5FA
CODE:0045A5F8 mov esi, eax
CODE:0045A5FA
CODE:0045A5FA loc_45A5FA: ; CODE XREF: sub_45A5D4+22j
CODE:0045A5FA inc eax
CODE:0045A5FB dec ecx
CODE:0045A5FC jnz short loc_45A5E8
CODE:0045A5FE
CODE:0045A5FE loc_45A5FE: ; CODE XREF: sub_45A5D4+Dj
CODE:0045A5FE mov eax, esi
CODE:0045A600 pop edi
CODE:0045A601 pop esi
CODE:0045A602 pop ebx
CODE:0045A603 retn
CODE:0045A603 sub_45A5D4 endp



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 21 мая 2006 09:55
· Личное сообщение · #2

INCH пишет:
но увы не могу понять.

Без самой программы изображать из себя Пентиум никому не захочется. Особенно не зная содержимое ячеек



Ранг: 44.7 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 21 мая 2006 10:30
· Личное сообщение · #3

Ссылку на прогу кинь...... А то как-то инетресно.... всякие адреса, а ничего не известно



Ранг: 20.3 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 мая 2006 11:26
· Личное сообщение · #4

А DeDe декомпилятор с Дельфей не судьба натравить?



Ранг: 88.0 (постоянный)
Активность: 0.070
Статус: Участник

Создано: 21 мая 2006 16:38 · Поправил: rep0A
· Личное сообщение · #5

INCH
Вот примерно так это будет выглядить на си:

int a = ?;
int b = ?;
int c = 0;

int f = ?;
int g[4][f];
int r;

int hz, hz2;
while(a != 0) {
if(f != 0) {
int d = 1;
for(int i = f; i != 0; i--) {
if(b = g[4][d*2]) r = d;
d++;
}
}
r = g[3][r];
hz = r;
__asm {
fild hz
fadd hz2
fstp hz2
wait
}
b++;
a--;
}




Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 21 мая 2006 22:34
· Личное сообщение · #6


__asm {
fild hz
fadd hz2
fstp hz2
wait
}


а это так:
float hz2;
hz2+=(float)hz;


 eXeL@B —› Программирование —› Объясните кусок кода на асме
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати