Изучение интерфейса среды программирования Flat Assembler (Fasm). Порядок создания проекта

На данный момент существует большое количество различных компиляторов для языка ассемблера, такие, как: masm, tasm и пр, но все они ориентированы на программирование под DOS. Для программирования под операционную систему Windows, также существует довольно большое количество компиляторов, но мы будем использовать Fasm, так, как он прост в использовании, в нём поддерживается использование микроинструкций и он имеет подсветку кода.

Flat Assembler(Fasm) – является «молодым», но очень перспективным компилятором, также, он полностью бесплатный, что даёт право использовать его в коммерческих целях. Fasm позволяет вести разработку приложения для следующих операционных систем:

· DOS;

· Windows: NT, XP, Vista, 7 (как для x86, так и для x64);

· основанные на Linux системы;

· FreeBSD;

· основанные на Unix системы;

· MenuetOS, KolibriOS (Fasm поставляется вместе с данными операционными системами).

Интерфейс Fasm содержит (рис. 1):

Изучение интерфейса среды программирования Flat Assembler (Fasm). Порядок создания проекта - student2.ru

Рисунок 1 – Главное окно Fasm’а

Рассмотрим каждый из элементов окна подробнее:

Командное менюглавного окна является статической не перемещаемой панелью, которое представляет собой иерархическое отображение всех допустимых операций в Fasm, как над самой средой, так и над проектом в целом.

Область редактирования кода является, по сути, обычным текстовым редактором, который предназначен для набора кода проекта с последующим его компилированием.

Панель вкладоксодержит все открытые *.asm файлы, используемые как в текущем проекте, так и не используемые в нём.

Строка состоянияслужит для отображения более подробной информации, как о положении курсора в области редактирования кода, так и информацию о том, делались ли изменения, после последнего сохранения проекта.

Весь текст относительно простой программы может быть полностью расположен в одном файле. Но такой подход становится недопустимым, когда обьём кода становится очень большим, что затрудняет поиск нужного участка кода. Понятно, что пролистать один из десяти файлов намного проще, чем один файл, содержащий в себе содержимое десяти.

Порядок создания проекта

Создание нового приложения в Fasm (рис. 2) осуществляется путём нажатия «File -> New», либо с помощью сочетания клавиш Ctrl+N. При создании нового файла текущий файл не будет закрыт – его можно будет выбрать на «панели вкладок» соответственно названию вашего проекта:

Изучение интерфейса среды программирования Flat Assembler (Fasm). Порядок создания проекта - student2.ru

Рисунок 2 – Создание нового приложения

После создания проекта нужно сразу же сохранить проект (и делать это периодически на всём промежутке написания приложения). Сочетание клавиш Ctrl+S позволяет быстро сохранить все текущие изменения, сделанные в данном проекте.

1.3 Примерный план использования компилятора

Традиционно примерный план использования компилятора следующий:

1. Пишем текст, программы, или открываем ранее написанный текст, сохранённый в файле *.asm, или вставляем текст, программы из буфера обмена.

2. Чтобы скомпилировать и запустить программу, жмём F9. Чтобы только скомпилировать - Ctrl+F9. Если текст, программы ещё не сохранён – компилятор попросит его сохранить перед компиляцией.

3. Если программа запустилась, тестируем её на правильность, если нет – ищем ошибки, на самые грубые из которых компилятор нам укажет.

После сохранения заготовки проекта можно приступить к созданию самого проекта. Для начала разработаем программу, которая при запуске просто выдаёт сообщение, содержащее определённый текст.

Введение в язык Ассемблера

Компилятор чувствителен к регистру, поэтому .Date и .date будут восприниматься как две разные инструкции.

Комментарии обозначаются с помощью символа «;», например:

; комментарий.

Существует два вида синтаксиса написания кода:

1. Intel синтаксис.

2. AT&T синтаксис.

Далее будет рассматриваться Intel синтаксис, т.к. он более распространен и понятен.

В win32 все программы выполняются в защищённом режиме, который доступен начиная с Intel 80286 (i286 – 16-битный x86 совместимый микропроцессор).

Каждую Win32 программу Windows запускает в отдельном виртуальном пространстве. Это означает, что каждая Win32 программа будет иметь 4-х гигабайтное адресное пространство, но это вовсе не означает, что каждая программа имеет 4 гигабайта физической памяти, а только то, что программа может обращаться по любому адресу в этих пределах. А Windows же в свою очередь сделает всё необходимое, чтобы память, к которой обращается программа, была доступна.

Каждая программа одна в своём адресном пространстве, в то время, как в Win16 дело обстоит не так. Все Win16 программы могут «видеть» друг друга, что невозможно в Win32. Эта особенность помогает снизить шанс того, что одна программа запишет что-нибудь поверх данных или кода другой программы.

Модель памяти также коренным образом отличатся от 16-битных программ. Под Win32, можно не беспокоиться о моделях памяти или сегментах. Сегмент – это область физической памяти заранее определённого размера. Для 16-разрядных процессоров размер сегмента физическое памяти не может превышать 64 Кбайт, в то время, как для 32-разрядных может достигать 4 Гбайт. Теперь память – это последовательное 4-х гигабайтное пространство.

На рис 1.3 представлен шаблон программы на языке Ассемблера:

 
  Изучение интерфейса среды программирования Flat Assembler (Fasm). Порядок создания проекта - student2.ru

Рисунок 1.3 – Шаблон программы

.data – начало сегмента данных;

.code - начало сегмента кода.

Метка – это символическое имя определённой ячейки памяти, предназначенное для использования в командах передачи управления в качестве операнда.

Транслятор ассемблера присваивает каждой метке три атрибута:

· имя сегмента кода, в котором эта метка описана;

· смещение, т.е. расстояние в байтах от начала этого сегмента;

· тип метки.

Применение меток оправданно во многих случаях. В одних лучше использовать метки ближнего типа, в других - дальнего.

Наши рекомендации