Вопрос № 27779: И почемуж я компилирую вот так:
ml.exe start.ASM
ml.exe start.asm /c /Fl
link.exe start.obj,start.exe,,,,
во такой кадинг* и получается и *.com и *.exe ? в месте ????
...
Отвечает: Евгений Иванов
Здравствуйте, IngineringG!
потому что как делаешь, так и выходит.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 16.10.2005, 12:47 Оценка за ответ: 4
Отвечает: ASMодей
Здравствуйте, IngineringG!
Если хочешь получить *.com, то:
1. В программе указываешь модель памяти .model tiny
2. Компилятору указываешь ключ /AT
3. Компоновщику указываешь ключ /TINY и имя файла с расширением *.com
Если хочешь получить *.exe, то:
1. В программе указываешь модель памяти любую, кроме .model tiny
2. Компилятору НЕ указываешь ключ /AT
3. Компоновщику НЕ указываешь ключ /TINY и указываешь имя файла с расширением *.exe
Ответ отправил: ASMодей (статус: Профессионал)
Отправлен: 16.10.2005, 12:55
Отвечает: Лысков Игорь Витальевич
Здравствуйте, IngineringG!
А чего удивляешься-то? Что сказал, то и получил :)
ml.exe без ключа /c приводит не только к ассемблированию, но и к линковке. А т.к. у тебя модель tiny, то и, очевидно, получается com
Вторым вызовом ml.exe start.exe /c /Fl получаешь obj вместе с листингом
Ну и вызовом link-а получаешь exe.
Убери первый ml.exe - получишь только exe, уберешь две последние - только com
P.S. Сама программа весьма хитрая :) И зачем понадобилось бесконечно (в пределах сегмента, разумеется) себя переписывать? Она ж всегда будет аварийно зависать!
--------- Удачи!