PDA

Просмотр полной версии : [Руководство] Установка IDE и первая программа на MASM.


Ivan_32
27.11.2008, 08:06
Думаю многие будущие ассемблерщики столкнулись с насущной проблемой под названием: неудобно компилировать. Ниже я опишу все что потребуется для нормальной жизни.

Перво наперво нужно определится с ассемблером. Поскольку сам лично я юзаю MASM то и тут его опишу.
Итак качаем MASMv9 ([Ссылки могут видеть только зарегистрированные и активированные пользователи]). Распаковываем , жмем установить. Лучше всего устанавливать на диск C:\ ,весит он немного, не придется корректировать пути для сред разработок.
------------------------------------------------------------------------------------------------------------
Переходим к следующему пункту. Вы удивитесь но под MASM32 есть целых 3 среды разработки. Но по слухам одна померла.

MASM-Bulider
Делфи-подобная среда разработки, достаточно удобные средства редактирования форм - фактически она их же и лепит вместе со всем кодом.
Офф-сайт ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

WinASM Studio
Что то очень похожее на предыдущее, но с большими сходствами с MSVS. Редактор ресурсов, всякие мелкие утилитки. Вобщем работать можно.
Офф-сайт ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

RadASM
А вот это то чем пользуюсь я. "Мультиязыковая" среда разработки.
Первое слово в кавычках потому что лично у меня получается нормально писать только на MASM-е. Да в общем то ничего другого и не нужно от нее. Редактор ресурсов тоже присутствует.
Офф-сайт ([Ссылки могут видеть только зарегистрированные и активированные пользователи])


Итак ничанаем настройку инструментария:

Первым будет MASMBuilder:
1. Открываем скачанный архив и распаковываем содержимое в желаемую папку. Например D:\Program_Files\MASMBuilder\
2. Запускаем и начинаем работать =)

Неожиданно не правда ли? Но такова правда, из всех сред эта единственная будучи распакованной сразу же дала возможность приступить к работе.:) Но это вовсе не означает что она лучшая.

Вторым будет WinASM Studio:
1. Распаковываем студию в желаемую папку.
2. Теперь в вернем меню найдите вкладку Tools->Options.
3. Во окне options вторым пунктом идет "Files and Paths".
4 Далее берем и переустанавливаем пути для:
Binary Path -> C:\MASM32\Bin
Include Path -> C:\MASM32\include
Library Path -> C:\MASM32\Lib
Это если у вас MASM32 установлен на Диск C:\.
5. При создании проекта нужно будет указать нормальную папку для проектов, не создавайте ее где попало... Например возьмите C:\WinAsm\Projects\New_Project.
После всех вышеперечисленных операций WinAsm Studio готова к работе.

Переходим к последней IDE, RadASM:
1.Качаем следущие пакеты с оффсайта:
2.2.1.4 IDE pack (878K)
RadASM programming pack (943K)
2.Распаковываем всё в одну папку.
3 Среда готова к разработке. Только при создании проекта нужно будет выбирать язык - MASM и тип проекта Win32, далее Win32 EXE и соглашатся на все что предложит студия.


Теперь когда мы со всем уже ознакомились перейдем к самому написанию программ:
В этом гайде я опишу как написать простейшее приложение Hello world.

Программа на MASM усложнена его препроцессором который условно делить исходник на 3 части.

1. В каждом исходнике первыми строками идет обьявление набора используемых комманд. .x86 от 1 до 6, я лично использую .586
Точка "." это что то вроде начального оператора сигнализируещго о том что следущее слово относится к препроцессору. Поэтом .586 это директива а 586 это просто число... Также после этого идет обьявление используемых библиотек и инклуд файлов.

";" это оператор комментирования, он только на одну строку, больше никаких других способов закомментировать строку нет. Аналог "//" в С++

Напишем эту часть для нашей программы:

.586 ;обьявляем набор комманд
.model flat,stdcall ;модель памяти
option casemap:none ; не будем утруждать компилятор различанием БоЛшИх и МаЛеНьКих БуКв

include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib
; в общем то это стандартный набор файлов для обычной программы.
2. Далее блок определенных и не определенных данных(зарезервированых) и констант.

Напишем и его:

.DATA
myString db "Hello world",0 ; каждая строка заканчивается нулевым символом.
myCaption db "Assembler application",0; db расщифровывается как define byte(char) , есть еще dw = define word(2 byte Short) dd =define double word(4 byte Int) Этим мы сигнализируем что каждый символ в нашей строке будет записан в ячейку в памяти , размером в 1 байт.
.data?
lpStr db 512 dup(?) ; вот главное отличие этих двух секций, в data реальный данные а тут резервирование памяти. Строка эта создана только как пример нам она не понадобится.
.const
Ten equ 10 ; equ - quevivalent, просто и незамысловато.=) Просто вместо числа 10 мы сможем подставить слово Ten.
Следущий блок это блок кода , он состоит и него самого:

.CODE
start: ;метка, она может называться как угодно главное что бы она была. Без нее программа не скомпилируется.
;тут мы напишем наш код
invoke MessageBox,0,addr MyString,addr myCaption,MB_OK ; вызов MessageBox-а аргументы: специальное поле стиля,адрес содержимого,адрес заголовка, вид кнопки. Ключевое слово addr поставленное рядом с переменной вернет его адрес.
invoke ExitProcess,0 ;безопасное завершение нашей программы
end start
Вот собственно и все=) Для чистоты экспиримента, откройте QEDIT ( поставляется вместе с MASM , лежит в корневом каталоге MASM-а), создайте файл HW.asm, откройте QEDIT-ом и нажмите Project->Assemble & Link , рядом с файлом HW.asm должен появится файл HW.exe =)

Вот вы и написали простейшее виндовое приложение =)
К слову все три студии сами пишут за вас регулярный код, тоесть вам не нужно писать одни и те жи вещи по 100 раз =)