помогите разобраться в коде

Тема в разделе "WASM.BEGINNERS", создана пользователем zAjac, 9 ноя 2009.

  1. zAjac

    zAjac Иван

    Публикаций:
    0
    Регистрация:
    25 апр 2009
    Сообщения:
    4
    Адрес:
    Украина, Киев
    Доброго времени суток.

    Код (Text):
    1.         mov dword_100230E8, 3768E9h
    2.         mov edx, dword_100230E8
    3.         sar edx, 18h <-- (1)
    4.         add edx, 1Fh
    5.         movsx   eax, dl
    Почитав форум. пришел к выводу что в строке (1) происходит целочисленное деление на какое-то число.
    Но вот только я не могу понять на какое число происходит деление.

    Подскажите пожалуйста, или киньте в меня ссылкой на литературу, где можно про это прочитать
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    sar reg32, imm32 == reg32 / (2 ^ imm32)
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Смотрим, на какое число разрядов выполняется сдвиг. Там написано 18h, т.е. 24. Значит, деление на 2**24, т.е. на 16 777 216 (если память на степени двойки не отшибло, лень в калькуляторе проверять).

    Фактически в результате выполнения этой и следующих двух строк в EAX будет сумма исходного старшего байта EDX и константы 1Fh (31).