TASM, вынос процедур в отдельный файл для формата COM

Требуется разместить процедуры в отдельном файле. Раньше делал такое только с exe-шниками, провести аналогию с com не удалось, нагуглить ничего не нагуглил. Нужен рабочий пример или указание ошибки. Привожу часть кода:

основной файл, l3.asm
extrn ZaprosChisla:near, VyvodVBIN:near, VyvodVHEX:near
code segment public
assume cs:code
org 100h
start: 

; тут код

code ends 
end start


файл с процедурами, l3p.asm
public ZaprosChisla, VyvodVBIN, VyvodVHEX
code segment public 
assume cs:code

ZaprosChisla proc near 
;
ZaprosChisla endp 

VyvodVBIN proc near 
;
VyvodVBIN endp 

VyvodVHEX proc near 
;
VyvodVHEX endp 
code ends 
end


батник:
tasm\bin\tasm.exe l3.asm /l
tasm\bin\tasm.exe l3p.asm /l
tasm\bin\tlink.exe l3.obj+L3P.OBJ /t


Результат: при линковке
Fatal: Cannot generate COM file: invalid initial point address
  • Вопрос задан
  • 2902 просмотра
Решения вопроса 2
Я бы предположил, что при линковке файл l3p.obj встает до l3.obj а следовательно точка входа оказывается не на позиции 100h. Почему линковщик меняет явно указанный порядок следования объектных модулей и как его заставить не делать так - я не знаю.

Мой TLINK "на ура" собирает COM-файл из Ваших исходников по Вашему BAT-файлу.

А если поменять местами obj для моего TLINK, получаю ошибку:
C:\tasm>tlink.exe l3p.obj+L3.OBJ /t
Turbo Link  Version 2.0  Copyright (c) 1987, 1988 Borland International
Cannot generate COM file : data below initial CS:IP defined
Ответ написан
@Dartess Автор вопроса
Если Вам не трудно, залейте, пожалуйста, в архиве Ваш тасм+тлинк+файлы, которые скомпилились, на rghost или на другой фо. Буду копать дальше. Пока что проверил свои на втором пк и ещё одну связку с инета. Пока пусто.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы