Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р.1-12.СПРГ-1(40, укр).doc
Скачиваний:
5
Добавлен:
27.08.2019
Размер:
2.33 Mб
Скачать

1. 3 Формати файлів, що виконуються, які підтримуються у fasm

На відміну від інших асемблерів, при написанні програми вид файлу, що виконується, задається однією директивою format. Fasm підтримує наступні вихідні формати файлів, що виконуються:

а) за замовчуванням fasm генерує непереміщуваний двійковий образ, (програми „com” або „sys”);

б) використання директиви 'format mz' дасть можливість одержати переміщувану і мультисегментну „exe”-програму для реального режиму роботи мікропроцесора.

в) використання директиви 'format pe' змусить fasm генерувати файл, що буде виконуватися у Windows (у режимі командної оболонки або у графічному режимі);

г) coff (common object file format – стандартний формат об’єктного файлу), використайте директиву “format coff” або “format ms coff”.

д) формат elf - для операційної системи Unix.

Таким чином, FASM дозволяє створювати програми, що можуть бути запущеними у різних операційних системах у реальному або захищеному режимах мікропроцесора.

Директиви “use16” і “use32” указують асемблеру генерувати 16-бітний або 32-бітний код, зневажаючи настроюванням за замовчуванням для обраного формату виводу, “use64” включає генерування коду для довгого режиму процесорів x86

1.4 Каркасні програми на асемблері та С++

У fasm напишемо програму cdecl. asm та згенеруємо об’єктний модуль cdecl. obj, жирним текстом виділено обов’язкові елементи

format coff ; формат файлу

public _AddInts ; ім’я процедури

_AddInts:

push ebp

mov ebp, esp

mov eax, dword [ebp+8]

add eax, dword [ebp+12]

pop ebp

ret

У Microsoft Visual Studio. Net

1. Створимо консольний додаток Win32 console project

2. Скопіюємо в каталог проекту скомпільований асемблерний модуль, наприклад cdecl. obj

3. Підключимо цей модуль у проект (рисунки 9, 10)

У файлі new. cpp оголосимо зовнішню функцію:

// new. cpp: Defines the entry point for the console application.

#include “stdafx. h”

//!!! обратите внимание – имя вызываемой функции в общем случае

// не соотвествует имени ассемблерного модуля!!!!!

extern “C” int _cdecl AddInts (int i1, int i2);

int _tmain (int argc, _TCHAR* argv [])

{

int a, b, rez;

scanf ("%d %d”, &a,&b); // вводим целые значения

rez=AddInts (a, b);

// выводим целое значение и переходим на следующую строку

printf (“Rez=%d \n”, rez);

// задерживаемэкран вывода до нажатия любой клавиши

system (“pause”);

return 0;

Рисунок 9

Рисунок 10

2. Завдання на лабораторну роботу:

Створити каркасний додаток, та перевірити його роботу.

3. Методичні вказівки з оформлення звіту

Звіт до лабораторної роботи повинен містити:

тему лабораторної роботи;

формулювання мети і задач, що вирішуються в ході виконання роботи;

докладний звіт про порядок створення програми на мові асемблера;

докладний звіт про порядок створення додатку у Microsoft Visual Studio. Net на мові С++;

порядок підключення модулів до проекту на С++;

протокол роботи тестового каркасного додатку;

висновки.

4. Питання для самоперевірки.

Призначення й функції IDE.

Призначення й функції транслятора.

Призначення й функції інтерпретатора.

Призначення й функції компілятора.

Призначення й функції редактора зв’язків.

Призначення й функції налагоджувача.

Призначення й функції fasm

Відмінність fasm і IDE fasm

Порядок створення проекту на мові асемблера.

Порядок створення проекту на мові С++.

Який формат файлу треба вказати у програмі на fasm, щоб створити об’єктний файл?

Який формат файлу треба вказати у програмі на fasm, щоб створити файл, що виконується у Win32?

Як підключити асемблерний модуль до програми C++?

З яким видом додатків Windows Ви працювали при створенні каркасного додатку?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]