Ассемблеровская вставка в visual studio

Тема в разделе "WASM.BEGINNERS", создана пользователем __EXP__, 11 апр 2010.

  1. __EXP__

    __EXP__ New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    12
    Как убрать эти ошибки перепробовал уже кучу вариантов.
    Код (Text):
    1. unsigned long cvtSeg,cvtOff;
    2. struct CVT* get_cvt()
    3. {
    4.    int a;
    5.    __asm { mov ah, 52h
    6.              int 21h
    7.              sub bx, 2
    8.          lea  cvtSeg, byte ptr  es  ;error C2415: improper operand type
    9.          lea cvtOff , bx               ;error C2415: improper operand type
    10.   };
    11.  
    12.     return ((struct CVT*)MK_FP(cvtSeg,cvtOff));
    13. }
     
  2. InsidE

    InsidE Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    357
    Адрес:
    Over the hills and far away...
    ээээ.....ты хочешь получить указатель на регистр?
     
  3. __EXP__

    __EXP__ New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    12
    Пытаюсь сделать аналог функции intdosx , ее прототип ни где найти не смог пришлось самому писать.
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    буквами напишите чего вы добиться пытаетесь
     
  5. __EXP__

    __EXP__ New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    12
    Да указатель на векторную таблицу связи.
     
  6. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Вы пишите DOS или Windows программу? Если Windows, то зачем вам:
    Несовпадение типов операндов.
    unsigned long имеет размер 4 байта, а bx - 2 байта, а byte ptr es - 1 байт.
     
  7. __EXP__

    __EXP__ New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2010
    Сообщения:
    12
    пробовал менять на разные варианты не помогло!
     
  8. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    для LEA первый операнд должен быть регистр
     
  9. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    не леа, а мов

    и наведите порядок с размерностями.
    должно быть short в случае es и bx
    mov. и все byte ptr долой. или почитайте хотябы как ptr используется и для чего

    и я не гарантирую, что после этого заработает. особенно, если все это 32 или 64 разрядное и под вынь