Есть программа (TASM) находящая максимальное и минимальное слово из вводимой строки. Для поиска слов используется процедура SearchMinMax параметры в которую передаются через ячейки памяти. Вывод на экран с помощью процедуры ShowWords параметры в которую передаются через стек. Каким образом разделить программу так, чтобы основной код находился в одном файле main.asm, а процедуры в другом, proc.asm? Пробовал так: Основной файл main.asm Код (Text): model small .stack 100h extrn SearchMinMax:far, ShowWords:far StackSg segment STACK db 128 dup(?) StackSg ends DataSg segment public byte SZ=80 CR=13 Lf=10 min db SZ dup(?),'$' FH db 'c:\txt.txt',0 ... ;объявление переменных DataSg ends CodeSg segment public byte assume cs:CodeSg, ds:DataSg, ss:StackSg, es:DataSg start: mov ax,@data mov ds,ax ... call SearchMinMax ... call ShowWords ... mov ax,4c00h int 21h CodeSg ends end start Файл с процедурами proc.asm Код (Text): PUBLIC SearchMinMax, ShowWords codProc segment public byte assume cs:codProc SearchMinMax proc lea DI,str1 ;адрес строки str1 в DI ... ret SearchMinMax endp ShowWords proc mov bp,sp mov ah,09H ... ret ShowWords endp codProc ends end Компилировать пробовал так: Код: tasm /zi main tasm /zi proc tlink /v main+proc,myprog Но при компиляции proc.asm выдается ошибка, что переменные str1, min, max и т.д. не определены. Хотя по идее файлы должны объединятся, и объявление переменных в main.asm должно учесться в proc.asm? Буду благодарен за любую помощь
Guest in the shell объявление переменных в main.asm должно учесться в proc.asm Не должны. Ты ведь позаботился об extrn SearchMinMax:far, ShowWords:far в main.asm, позаботься и об обратном. Кстати почему far?
т.е. в модуле proc.asm надо просто перечислить все используемые переменные из main.asm extrn str1,min,max.. ?