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

Discussion in 'WASM.ASSEMBLER' started by nbyte, Nov 29, 2009.

  1. nbyte

    nbyte New Member

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

    Например, есть команда непосредственного операнда
    Code (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

    Blog Posts:
    0
    у первой инструкции нет бита D
     
  3. ohne

    ohne New Member

    Blog Posts:
    0
    т. к. невозможна ситуация

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

    nbyte New Member

    Blog Posts:
    0
    А как тут можно узнать у каких ещё команд кроме этой нету D бита, есть-ли тут какая-то "закономерность", если можно так выразится.

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

    rmn Well-Known Member

    Blog Posts:
    0
  6. ohne

    ohne New Member

    Blog Posts:
    0
  7. nbyte

    nbyte New Member

    Blog Posts:
    0
    Спасибо за ссылки.
    Нашел то, что
    Code (Text):
    1. MOV 1100 011w : mod 000 r/m : imm
    теперь ситуация прояснилась. :)