Разбор команды непосредственного операнда

Тема в разделе "WASM.ASSEMBLER", создана пользователем nbyte, 29 ноя 2009.

  1. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Здравствуйте.
    Пишу диссасемблелер на tasm. И столкнулся со следующей тупиковый ситуацией.
    Попробую объяснить

    Например, есть команда непосредственного операнда
    Код (Text):
    1. mov word ptr [bx+1000h], 1234h
    её код в HEX следующий
    Подробный разбор этой команды
    [​IMG]
    Непонятность у меня и полный тупик вызывает следующее
    По D = 1 видно обмен между аргументами происходит из REG в R/M
    но почемуто с этой командой всё наоборот, тоесть из REG в R/M
    исходя из того, что например R/M = 111 = BX+offset

    При этом есть взять другую команду у которой D = 1 например
    [​IMG]
    то видно что тут всё нормально, тоесть из REG в R/M

    Ктонибудь может "пролить свет", в чём же тут дело?
     
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    у первой инструкции нет бита D
     
  3. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    т. к. невозможна ситуация

    "пролить свет" может пара первых глав мануала с Instruction Set Reference
     
  4. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    А как тут можно узнать у каких ещё команд кроме этой нету D бита, есть-ли тут какая-то "закономерность", если можно так выразится.

    Один момент я уже заметил. Можно проверять не является-ли первый аргумент значением. А ещё какие случаи есть?
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
  7. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Спасибо за ссылки.
    Нашел то, что
    Код (Text):
    1. MOV 1100 011w : mod 000 r/m : imm
    теперь ситуация прояснилась. :)