Код (Text): // Листинг 2.9. Си-функция, тестирующая видеорежим //(setmodec.c) #include <stdio.h> #define VGA256 0X13 #define TEXT_MODE 0x03 extern set_mode(int mode); void main() { // устанавливаем режим 320*200 точек, 256цветов set_mode(VGA256); // ждём нажатия любой клавиши while (!kbhit()) {} // возвращаем компьютер в текстовый режим set_mode(TEXT_MODE); } // конец функции main Код (Text): ; Ассемблерная процедура, устанавливающая видеорежим ;(setmodea.asm) .model medium, c ; модель памяти - medium, соглашения языка ; си .code ; начало кодового сегмента public set_mode ; объявляем функцию как общедоступную set_mode proc far c vmode:word ; она получает 1 параметр mov ah,0 ; функция 0 прерывания 10h - установка режима mov al, byte ptr vmode ; номер режима, который вы хотите уста int 10h ; новить используем bios для установки ret ; режима, -возврат из процедуры set_mode endp ; конец процедуры end ; КОНЕЦ КОДОВОГО СЕГМЕНТА Делаю masm'ом объектик с параметрами /coff /c и собираю его с помошью bcc(borland c++) вместе с исходником си Чет не получается. Помогите, какие параметры нужны, или я не те ставлю. Другие ассмблеры и компиляторы не предлагать. Спасибо.
ajak Я конечно, так не делал, но если процедура объявлена дальней то и возврат из нее тоже должен быть дальним т.е. не ret а retf и вообще обошелся бы ассемблерной вставкой Код (Text): asm{mov ax, word ptr vmode ; номер режима, который вы хотите уста int 10h }
ajak Вы это про что? Вроде-бы намекнул, что борланд не понимает софф.. Для непонятливых. Новичкам категорически не рекомендуется пользоваться инструментами из разных поставок совместно. для упреждения вышеописаных проблем.
Вот откопал свою старую тему. http://www.wasm.ru/forum/viewtopic.php?id=8506 У меня тогда получилось к Builder-у прикрутить масмовский объектник. Но намного проще конечно тасм юзать.
Возьмите OpenWatcom. Его линкер понимает и соффы и омфы и ельфы. И код после С компилера лучше, чем после борландовского. И васм понимает большую часть масмового синтаксиса (в основном кроме высокоуровневого мусора). Единственная проблема у вас будет - разобраться со стилями вызова процедур и манглами (намек: опция Алиас линкера).