2016-03-16 5 views
1

В настоящее время я пишу сборку программ, которые скомпилированы с помощью TASM и связаны с Turbo Linker. Я ищу способ скомпилировать и связать программу как 32-разрядную сборку, а не 16-битный. Я видел, что есть переключатель /3 для команды TLINK (который вызывает Turbo Linker в 32-битном режиме), но я не могу найти способ скомпилировать программу как 32-разрядную с TASM.Как запустить 32-разрядную программу TASM, скомпилированную на DosBox

Вкратце: Я хочу знать, как я могу скомпилировать простую 32-битную программу через среду DosBox с использованием TASM и TLINK.

+0

Почему вы отметили emu8086? – Jester

+0

Потому что он запускается через эмулятор DosBox и его эмуляция процессора 8086. –

+0

emu8086 - это другой эмулятор, а не dosbox. – Jester

ответ

3

Вы не можете. MS-DOS и, таким образом, DOSBox, могут запускать только 16-разрядные исполняемые файлы MS-DOS реального режима. Вы можете создавать 32-разрядные исполняемые файлы Windows с TASM и 32-разрядной версией TLINK, но эти исполняемые файлы будут работать только под Windows. (Вам не нужно передавать какие-либо специальные опции с помощью TASM, просто используйте 32-разрядные сегменты USE32 в вашей сборке.)

Для запуска 32-разрядного кода под MS-DOS вам необходимо использовать 32-разрядный DOS extender. Эти удлинители позволяют выполнять программы защищенного режима под MS-DOS, предоставляя интерфейсы защищенного режима интерфейсам реального режима, предоставляемым MS-DOS и BIOS. Обычно эти расширители DOS используют для создания файла, который содержит 16-разрядный исполняемый файл MS-DOS, который загружает расширитель DOS, который загружает 32-битную программу.

Как вы можете использовать такой расширитель DOS для создания 32-разрядной программы с использованием TASM, которая будет работать под DOSBox, зависит от конкретного расширителя DOS. Вероятно, вы, по крайней мере, собираетесь использовать другой компоновщик - тот, который создает любую форму исполняемого файла, который может загружать расширитель DOS. Некоторые могут вообще не работать с TASM.