Помогите слинковать

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

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Код (Text):
    1. // Листинг 2.9. Си-функция, тестирующая видеорежим //(setmodec.c)
    2. #include <stdio.h>
    3.  
    4. #define VGA256 0X13
    5. #define TEXT_MODE 0x03
    6. extern set_mode(int mode);
    7. void main()
    8. {
    9.  // устанавливаем режим 320*200 точек, 256цветов
    10.  set_mode(VGA256);
    11.  // ждём нажатия любой клавиши
    12.  while (!kbhit()) {}
    13.  // возвращаем компьютер в текстовый режим
    14.  set_mode(TEXT_MODE);
    15. } // конец функции main
    Код (Text):
    1. ; Ассемблерная процедура, устанавливающая видеорежим ;(setmodea.asm)
    2. .model medium, c ; модель памяти - medium, соглашения языка
    3. ; си
    4. .code   ; начало кодового сегмента
    5. public set_mode ;    объявляем функцию как общедоступную
    6. set_mode proc far c vmode:word ; она получает 1 параметр
    7.  
    8. mov ah,0 ; функция 0 прерывания 10h - установка режима
    9. mov al, byte ptr vmode ; номер режима, который вы хотите уста
    10. int 10h         ; новить используем bios для установки
    11. ret         ; режима, -возврат из процедуры
    12. set_mode endp       ; конец процедуры
    13. end         ; КОНЕЦ КОДОВОГО СЕГМЕНТА
    Делаю masm'ом объектик с параметрами /coff /c
    и собираю его с помошью bcc(borland c++) вместе с исходником си
    Чет не получается. Помогите, какие параметры нужны, или я не те ставлю. Другие ассмблеры и компиляторы не предлагать. Спасибо.
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    ajak
    Я конечно, так не делал, но если процедура объявлена дальней
    то и возврат из нее тоже должен быть дальним т.е. не ret а retf
    и вообще обошелся бы ассемблерной вставкой
    Код (Text):
    1. asm{mov ax, word ptr vmode ; номер режима, который вы хотите уста
    2. int 10h
    3. }
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Насколько я помню борланд юзает омф, а не софф. И, возможно, манглит имена по-другому.
     
  4. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Ни так ни так не получается
     
  5. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    ajak
    Вы это про что?

    Вроде-бы намекнул, что борланд не понимает софф..
    Для непонятливых.

    Новичкам категорически не рекомендуется пользоваться инструментами из разных поставок совместно.

    для упреждения вышеописаных проблем.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вот откопал свою старую тему.
    http://www.wasm.ru/forum/viewtopic.php?id=8506

    У меня тогда получилось к Builder-у прикрутить масмовский объектник.
    Но намного проще конечно тасм юзать.
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Tasm мой исходник почему то не хавает, выдаёт туеву хучу ошибок. Могу показать что он пишет.
     
  8. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Ммм, а если я всё ж хочу с масмом какой мне тогда компиль взять для Си?
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    ajak
    MS Visual Studio.
     
  10. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Возьмите OpenWatcom. Его линкер понимает и соффы и омфы и ельфы. И код после С компилера лучше, чем после борландовского. И васм понимает большую часть масмового синтаксиса (в основном кроме высокоуровневого мусора). Единственная проблема у вас будет - разобраться со стилями вызова процедур и манглами (намек: опция Алиас линкера).
     
  11. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Да уж.
     
  12. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    ajak
    А почему ты не хочешь встроенный ассемблер от Борланда использовать - это дешевле всего.