81 опкод

Тема в разделе "WASM.BEGINNERS", создана пользователем DeHunter, 22 июл 2005.

  1. DeHunter

    DeHunter New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    80
    Адрес:
    Ukraine/Kiev
    Здраствуйте.

    Недавно я начал разбиратся в опкодах и у меня возникла очень боьшая проблема с 81 ( 0x81, 081H ). Проблема заключается в том что в интеловской документации написано что этот опкод это add. Но как выяснилось с помошью OllyDbg это может быть и ксор,и ор ,и даже adc.

    Вот небольшой пример с OllyDbg.

    81C0 01020304 add eax, 4030201

    81ED 01020304 sub ebp, 4030201

    81CC 01020304 or esp, 4030201

    Я просто в ужасе ! Как такое можно дизасмить вобше ?

    Обьясните мне пожалуста значение этого опкода. Особено инетересует как испольщуется поле modrm в нём.

    Спасибо.
     
  2. DeHunter

    DeHunter New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    80
    Адрес:
    Ukraine/Kiev
    Помойму я разобрался.

    Вобшем в некоторых опкодах

    поле reg служит вторым опкодом.

    Если я не прав то поправте меня пожалуста.

    Если прав то думаю тему можно закрыть.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ты прав и тему можно закрыть ;)

    А выяснить это можно не только с помощью OllyDbg, но и простым поиском по интеловскому мануалу.

    И вообще, если в мануале встречаешь опкод типа ХХ /n, где n - любое число 0..7, то 100% есть другие инструкции с тем же XX, но другими значениями /n. Ищите да обрящите ;)
     
  4. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    leo

    Насчет 100% - это неверно:
    Код (Text):
    1.  
    2. mov [memory],immediate - C6+w /0, но все остальные (C6 /t, C7 /t, t!=0) - invalid instruction
    3. setcc reg/mem8 - 0F 4x /0, но здесь 0F 4x /t тоже означает setcc
    4.