Знайомство з masm

Як можна компілювати виконувані файли для Win32?

Зрозуміло, що кожен раз з командного рядка вводити імена початкових кодів, obj-файлів і ключі - не дуже зручно.

Але цей процес легко спростити.


Перший крок до спрощення - змінна оточення ML

Припустимо, ми пишемо исходник praxZ.asm.

Нам хочеться компілювати його до тих пір, поки він нарешті-таки не запрацює, а для цього може знадобитися дуже багато спроб. Можна в командному рядку FAR'a виконати наступне:
SET ML = / coff praxZ.asm / link / SUBSYSTEM: WINDOWS

Тепер кожен раз, коли ми будемо виконувати ml без ключів з папки з ісходником, буде виконуватися компіляція нашого прикладу. При цьому така дія поширюється тільки на поточну консоль. Тобто в іншому екземплярі FAR'a настройка діяти не буде.


Наступний крок назустріч користувачеві - командний bat-файл

Тепер досить його запустити в надії, що цього разу в исходнике помилок немає.


У нульовому витку я використовував BUILD.BAT з папки MASM32 \ bin.

Щодо універсальний спосіб. З його допомогою можна компілювати asm-файли з різними іменами (як з ресурсами так і без). На виході ми отримуємо готовий PE-exe.


Заглянемо в BUILD.BAT:
@echo off

if exist "% 1.obj" del "% 1.obj"
if exist "% 1.exe" del "% 1.exe"

\ Masm32 \ bin \ ml / c / coff "% 1.asm"
if errorlevel 1 goto errasm

if not exist rsrc.obj goto nores

\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF "% 1.obj" rsrc.obj
if errorlevel 1 goto errlink

dir "% 1. *"
goto TheEnd

nores
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF "% 1.obj"
if errorlevel 1 goto errlink
dir "% 1. *"
goto TheEnd

errlink
echo _
echo Link error
goto TheEnd

errasm
echo _
echo Assembly Error
goto TheEnd

Ви не зрозуміли суть цих закорючек?

Тоді дуже уважно прочитайте ще раз Лікнеп молодого юзера.


А ті, хто зрозумів, напевно, вже помітили кілька обмежень використання цього файлу:
"MASM32" повинен бути встановлений в корінь і саме в папку MASM32.
Перед компіляцією видаляються попередні exe і obj з заданим ім'ям.
Якщо є файл ресурсів, то він вже повинен бути трансльований і обов'язково з ім'ям rsrc.obj.

Ну і як я вже писав:
Поточної папкою повинна бути папка з ісходником.
Файл в командному рядку вказується без розширення.
Розширення у исходника має бути asm.


Рекомендую вам створити хоча б ще один подібний файл для компіляції налагоджувальної версії exe.

Скопіюємо BUILD.BAT і назвемо копію, наприклад, BDBG.BAT.

Замінимо в ньому три відповідні рядки на:
.
\ Masm32 \ bin \ ml / c / coff / Zi "% 1.asm"
.
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF / DEBUG "% 1.obj" rsrc.obj
.
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF / DEBUG "% 1.obj"

Використовуючи наш BDBG, можна збирати PE-exe налагоджування.

Добре б зробити ще кілька файлів для компіляції dll і для повного складання з налагоджування. Але це ви вже самі.
Як компілювати виконувані com-файли для DOS?

Щоб компілювати такі вихідні, знадобляться:

Segmented Executable Linker (припустимо v5.31) і

ml.exe (обов'язково молодше 7-й версії).

Зі складу "MASM32 v9" підходить тільки ml.exe. А ось лінковщік доведеться брати додатковий.


Використовувати його можна приблизно з такою командним рядком:

LINK / TINY імя.obj, імя.com;

ключ / TINY - визначає міні-моделі, тобто звичайний формат com-файлу для DOS.

Як відомо - досконалість не має меж. Продовжимо задовольняти лінь програміста.

Навіть bat-файл не дасть такого комфорту, як.

Інтегроване середовище розробки (IDE, Integrated Development Environment)


Сьогодні найпоширеніші IDE для MASM'a - це:

MS Visual Studio,

Одного разу налаштувавши IDE, в подальшому ви будете економити купу часу і сил.

Достатньо всього декількох простих дій, і каркасний проект готовий до компіляції одним кліком мишки.

Але зізнаюся чесно, хороша настройка під себе - справа не така вже й проста. Вам як мінімум доведеться зрозуміти, для чого потрібна та чи інша опція, і підключити всі корисні додатки. Хоча тепер, коли ви так багато знаєте про компіляторі MASM'a, це буде набагато простіше.: Turned:

__________________
[B] CD і RW [/ B]

Схожі статті