вопросы новичка по переводу алгоритмов

Тема в разделе "WASM.BEGINNERS", создана пользователем researchist, 5 ноя 2006.

  1. researchist

    researchist New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    21
    Приветствую всех гуру!
    у меня периодически возникают сложности в понимании некоторых кусков кода, прошу помощи в их переводе на русский язык.
    заранее благодарю!

    Код (Text):
    1. 00558A9E  |> /31DB          /XOR EBX, EBX                            ;  PROG.0041B600
    2. 00558AA0  |. |88C3          |MOV BL, AL
    3. 00558AA2  |. |AC            |LODS BYTE PTR DS:[ESI]
    4. 00558AA3  |. |32D8          |XOR BL, AL
    5. 00558AA5  |. |66:D1E3       |SHL BX, 1
    6. 00558AA8  |. |01FB          |ADD EBX, EDI
    7. 00558AAA  |. |66:8B1B       |MOV BX, WORD PTR DS:[EBX]
    8. 00558AAD  |. |32DC          |XOR BL, AH
    9. 00558AAF  |. |66:89D8       |MOV AX, BX
    10. 00558AB2  |.^\E2 EA         \LOOPD SHORT PROG.00558A9E
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.578
    Адрес:
    Russia
    В чем вопрос то ? Обьяснить каждую инструкцию надо ? Сказал бы хотя бы откуда этот кусок вырезан.. Может кто и ответит.
     
  3. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Похоже на какой-то поиск хеша чтоли
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.351
    подсчет контрольной суммы табличным способом.

    на входе:
    ESI - начало блока данных, для которого считается сумма
    ECX - размер блока
    EDI - адрес таблицы (размер таблицы - 512 байт)
    AX - Какое-либо начальное значение контрольной суммы ()

    на выходе в AX - рассчитанное значение контрольной суммы.

    ------------
    Код (Text):
    1. WORD CalcChecksum(BYTE* Data, DWORD Length, WORD* Table, WORD Initial)
    2. {
    3.     WORD wChecksum = Initial;
    4.  
    5.     for (DWORD i = 0; i<Length; i++)
    6.     {
    7.         wChecksum = Table[ Data[i] ^ (wChecksum & 0xFF) ] ^ (wChecksum >> 8);
    8.     }
    9.     return wChecksum;
    10. }