В чем отличие lea ax, myvar от mov ax, offset myvar?

Тема в разделе "WASM.BEGINNERS", создана пользователем Skycorner, 28 май 2007.

  1. Skycorner

    Skycorner New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    21
    Собственно, Subj. Для чего вообще добавили первую инструкцию?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    в данном случае вроде бы ничем.
    Но lea можно использовать и по-другому. Например lea eax,[eax+eax*2] или lea eax,[eax+ebx+1]. Для того и ввели
     
  3. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Ассемблер когда это возможно заменяет lea на mov offset, например при lea dx,message. Как написал MSoft, с lea можно использовать такие операнды. Замечу, что не стоит путать скажем mov ax,[bx+si+100] и lea ax,[bx+si+100] - первая команда положит в AX слово из памяти по этому адресу, а вторая - сам адрес.
     
  4. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Что это за ассемблер такой, кто ему разрешил так делать:)
     
  5. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    TASM так делает, пока не скажешь nosmart :) Также в режиме smart он когда возможно меняет дальние переходы на близкие, на 8086\88 разрешает писать push const и push\pop [addr] и что-то ещё вроде оптимизировал. Про другие ассемблеры не знаю.
     
  6. Skycorner

    Skycorner New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    21
    Всем спасибо за вразумительные ответы :)
     
  7. TheBits

    TheBits Сергей

    Публикаций:
    0
    Регистрация:
    7 апр 2006
    Сообщения:
    50
    Адрес:
    St.Petersburg
    A86 так делает.