Не могу поять отличие Public от Extern. То они вместе исп. то по отдельности. И ещё как собрать следующие модули а то чётне получается ================================================== #include <stido.h> int first = 1, second=2, third=0; void main(void) { printf("Add"); add_ext(); printf(third); } ====================== .model medium extrn first:word, second:word, third:word .code _add_ext proc far ; Заметьте что здесь с подчёркиванием функция!!! mov ax, first add ax, second mov third, ax _add_ext endp end
В С-шном куске надо объявить вашу асмовую ф-ю extern void add_ext(); или extern "C" void add_ext(); От этого зависит как С будет искать вашу ф. и как будет удалять параметры из стека. В асмовой ф. в конце нужно ret писать. После скомпиления обоих модулей смотрим в объектники как называются все эти first, second, ..., add_ext в обоих и добиваемся одинакового написания. Или юзаем линкер допускающий переименование (например wlink). public - экспорт имени. extrn - импорт имени. proc - сложный макрос. Включает экспорт имени. Как-что манглится смотрите в объектниках.