инструкция insb

Discussion in 'WASM.ASSEMBLER' started by s_d_f, May 27, 2010.

  1. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Всем здрасти.
    Раньше как-то не обращал на это внимания, но сегодня был сильно озадачен.
    masm одинаково компилирует две инструкции.

    Опкод один 6Ch.
    Может кто знает, что это за безобразие:)
    И как всё-таки правильнее.
     
  2. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    esi - быть не может.
    есть только опкод insb es:[edi], dx
     
  3. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Да, только edi.
    В нескольких справочниках посмотрел, прочитал.
    Наверно в Microsoft думают совсем иначе:)
     
  4. cppasm

    cppasm New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2006
    Messages:
    923
    Ничего они не думают, опкод же правильный.
    Думать ты должен. :)
    А вообще можно просто писать:
    Code (Text):
    1. insb
     
  5. baldr

    baldr New Member

    Blog Posts:
    0
    Joined:
    Apr 29, 2010
    Messages:
    327
    Инструкция правильная, хоть и выглядит кривовато (к примеру, ins dword ptr es:[0], dx тоже верная инструкция). Если хорошо раскурить ман, видно следующее:
    С outs такая же картина, плюс ds может быть перекрыт префиксом, так что при определённой сноровке выстрелить себе в ногу можно даже этой внешне простой инструкцией.
     
  6. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    cppasm
    Если-бы не думал, то никогда и не заметил-бы этого.

    baldr
    Cпасибо за исчерпывающее объяснение.
    Сам я просто пользуюсь AMD`шным мануалом, и таких подвохов неожидал.
     
  7. Clerk

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    s_d_f
    И где описано что приёмник адресуется регистром Esi ?
    Если у вас есть маны и вы их не изучаете, то это всёравно что у вас их нет. Вначале матан, затем только вопросы.
     
  8. Rockphorr

    Rockphorr Well-Known Member

    Blog Posts:
    0
    Joined:
    Jun 9, 2004
    Messages:
    2,625
    Location:
    Russia
    s_d_f

    masm штука хитрая у меня без ошибок получалось указать ebx для инструкции movs или scas только это сути не меняет - все эти синтаксические конструкции превращаются в единственную семиотическую
     
  9. Ustus

    Ustus New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2005
    Messages:
    834
    Location:
    Харьков
    Масму, имхо этот операнд нужен только шоб понять размерность адреса - ставить ему 67 или нет. Поэтому возможно, что пойдет любой РОН.
     
  10. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Не думал, что кто-то отнесётся с таким непониманием.

    В масме есть еще и другие загибы.
    Например инструкции типа: lock add ebx,varka
    Компилирует то что просто несуществует и это не ud2.
     
  11. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    s_d_f
    OllyDbg почему-то расшифровывает инструкцию outsb как outs dx, byte ptr es:[edi] если бы не этот топик не обратил бы внимание, хотя должно быть ds:[esi], а вот вместо insb пишет правильно ins byte ptr es:[edi], dx надо бы Oleh Yuschuk сообщить
     
  12. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Там если постараться можно с десяток ошибок найти. И эта еще не самая серьёзная. Там нет поддержки 16-битной аддрессации.
    Code (Text):
    1. ;вот это олька будет воспринимать как данные
    2. xor bx,bx
    3. mov fs:[bx],esp
     
  13. s_d_f

    s_d_f New Member

    Blog Posts:
    0
    Joined:
    May 15, 2008
    Messages:
    342
    Там если постараться можно с десяток ошибок найти. И эта еще не самая серьёзная. Там нет поддержки 16-битной аддрессации.
    Code (Text):
    1. ;вот это олька будет воспринимать как данные
    2. xor bx,bx
    3. mov fs:[bx],esp
    Oleh Yuschuk - об этом не может не знать.