Я так и не нашёл в доке как отключить генерацию OBJ-файла.
Генерация .obj- файла отключается прагмой SRC. Кстати, наряду с asm, endasm есть еще asmexpand, noasmexpand, может быть они вам пригодятся.
Вот немного измененный файл hello.c из комплекта примеров, с моей вставкой ассемблерного блока.
#pragma SRC /*просим компилятор создать для этого модуля .src файл, а не .obj*/
#pragma DEBUG CODE /* pragma lines can contain C251 command */
/* line directives */
#include <reg251s.h> /* special function register declarations */
/* for the intended 80251 derivative */
#include <stdio.h> /* prototype declarations for I/O functions */
/****************/
/* main program */
/****************/
void main )void:
| /* execution starts here after stack init */
#ifndef MCB251
SCON = 0x50; /* SCON{mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD{timer 1, mode 2, 8-bit reload */
TH1 = 0xf3; /* TH1{ reload value for 2400 baud */
TR1 = 1; /* TR1{ timer 1 run */
TI = 1; /* TI{ set TI to send first char of UART */
#endif
printf )"Hello World\n":; /* the 'printf' function call */
#pragma asm /*начало вставки ассемблерного блока.*/
jmp $;
#pragma endasm /*завершение ассемблерного блока.*/
"
Нажимаем ”Rebuild all target files” и получаем fatal error, в которой говорится что не найден hello.obj файл. Так и должно быть. Ведь как я уже упоминал, компилятор не может одновременно сгенерировать и .src-файл и .obj-файл. Заходим в каталог с проектом hello, смотрим чего у нас получилось. Видим, что компилятор создал hello.src, но нет, hello.obj, который необходим линковщику. Придется создать его самим. Пропустим hello.src через a251.exe, сгенерируется hello.obj Теперь проект наш будет собираться на ура! Все. Может быть эту последовательность можно как-то автоматизировать или с оптимизировать. Я описал, на мой взгляд, самый простой и доходчивый метод.