Ассемблер. Компиляция и компоновка
В этой статье мы рассмотрим процессы компиляции и компоновки программ на языке ассемблер для для операционных систем DOS и Windows. Напомню что компиляция - это процесс перевода файлов программы в так называемые объектные файлы. Объектные файлы - это файлы, в которых находится почти готовая программа в виде разрозненных кусков кода, связанных некоторой служебной информацией. Чтобы превратить эти куски кода в готовую программу используется компоновщик. Он выстраивает код в исполняемом файле в нужном порядке и создает готовый файл заданного формата. Этот получившийся файл уже можно исполнять.
Начнем с компиляции под DOS
В DOS существовало два вида исполняемых файлов: *.com и *.exe. Файлы *.com характеризуются тем, что весь код программы, данные и место для стека содержится в одном сегменте памяти, причем код программы должен находиться в сегменте со смещением в 256 байт (100h). Файлы формата *.exe не имеют ограничений на количество используемых сегментов памяти.
Для компиляции под DOS я использую компилятор MASM версии 6.11 и TASM версии 5.3
Компиляция и компоновка файлов *.com с помощью TASM:
\tasm32\bin\tasm53.exe test.asm, test.obj, test.lst /z /t /ml /m2 /l \tasm32\bin\tlink.exe test.obj /x /t /3
Компиляция и компоновка файлов *.exe с помощью TASM:
\tasm32\bin\tasm53.exe test.asm, test.obj, test.lst /z /t /ml /m2 /l \tasm32\bin\tlink test.obj, test.exe /x /3
Описание всех параметров можно получить, выполнив в командной строке tasm53.exe /? и tlink.exe /?
Компилятор MASM позволяет выполнять компиляцию и компоновку через вызов своей программы-оболочки ml.exe
Компиляция файлов *.com с помощью MASM:
\masm611\bin\ml.exe test.asm /AT /Fl /link
Компиляция файлов *.exe с помощью MASM:
\masm611\bin\ml.exe test.asm /Fl /link
Компиляция под Windows
Для компиляции под Windows используются компилятор MASM32 и TASM32.
Компиляция и компоновка файлов *.exe с помощью TASM32:
\tasm32\bin\tasm32.exe test.asm, test.obj, test.lst /zi /t /ml /m3 /q \tasm32\bin\tlink32 /x /Tpe /ap /c /V4.0 test.obj, test.exe, , user32.lib
Компиляция файлов *.exe с помощью MASM32:
\masm32\bin\ml.exe /c /coff test.asm \masm32\bin\link.exe /SUBSYSTEM:WINDOWS test.obj
После компиляции
После компиляции и компоновки у вас должен получиться исполняемый файл *.exe или *.com формата, в зависимости от того, какие параметры вы задавали компилятору.