Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Lab5_SPO брошюра.doc
Скачиваний:
55
Добавлен:
12.04.2015
Размер:
206.85 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

высшего профессионального образования

«Курский государственный технический университет»

Кафедра вычислительной техники

Подключение ассемблерных модулей в программы на языке высокого уровня

методические указания к лабораторной работе

по курсу «Системное программное обеспечение»

для студентов направления 230100.62

КУРСК 2009

УДК 004.43

Составитель: Е.Ю. Емельянова

Рецензент

Кандидат технических наук Панищев В.С.

Подключение ассемблерных модулей в программы на языке высокого уровня [Текст]: методические указания к лабораторной работе по курсу «Системное программное обеспечение» для студентов направления 230100.62/ Курск. гос. техн. ун-т; сост.: Е.Ю. Емельянова. Курск, 2009. 23 с.: ил. 2, табл.2, прил.1. Библиогр.: с.19.

Описывается методика создания внешних ассемблерных модулей для подключения к программам, написанным на Delphi, C++ Builder, Visual C++. Приводятся примеры.

Для студентов направления 230100.

Текст печатается в авторской редакции.

Подписано в печать . Формат 6084 1/16.

Усл.печ.л. . Уч.-изд.л. . Тираж 20 экз. Заказ . Бесплатно.

Курский государственный технический университет.

Издательско-полиграфический центр Курского государственного технического университета. 305040 Курск, ул. 50 лет Октября, 94.

1. Цель работы

Научиться подключать скомпилированные объектные модули, написанные на Ассемблере, в программы на языках высокого уровня: Delphi, C++ Builder, Visual C++.

2. Задание

На языке ассемблера создать файл, содержащий процедуру для экспорта в программы на языке высокого уровня. Индивидуальным вариантом определяется заголовок процедуры и выполняемые действия. Файл скомпилировать в OBJ-формат.

В средах программирования Win32 (по выбору: C++ Builder, Delphi или Visual C++) создать программу и подключить к ней ассемблерный модуль. Программа на языке высокого уровня используется для тестирования ассемблерной процедуры: вводит от пользователя исходные данные, вызывает ассемблерную процедуру и отображает результаты её вычислений.

Варианты заданий приведены в Приложении (с.20).

Порядок выполнения работы смотрите на с.18.

3. Теоретическая часть

3.1. Конвенции вызова

В программах на С++ вы наверняка встречали в заголовках функций слова __fastcall, __stdcall и т.п. Это названия конвенций вызова.

Конвенцией вызова (calling convention) называется соглашение о способе передачи параметров в функции и процедуры. В Win32 существует четыре стандартных конвенции вызова: cdecl, stdcall, pascal и fastcall (register). Все прочие конвенции вызова (safecall, winapi и пр.) являются псевдонимами стандартных конвенций.

На языках высокого уровня конвенция вызова объявляется так:

  • C++ Builder, Visual C++ :

В прототипе функции указывается модификатор __cdecl, __stdcall, __pascal, __fastcall. Например,

int __stdcall MyFunc(int x);

Если конвенция явно не указана, по умолчанию в С++ Builder используется stdcall, а Visual C++ cdecl.

В заголовочном файле windef.h все прочие модификаторы (WINAPI, APIENTRY, CALLBACK и пр.) переопределяются директивой #define на одну из стандартных конвенций вызова.

  • Delphi:

Конвенция указывается после заголовка подпрограммы, например:

Function MyFunc( x:integer ):integer; stdcall;

Если конвенция не указана, по умолчанию используется register.

Конвенции вызова различаются порядком передачи параметров в подпрограмму и способом очистки стека от не нужных уже параметров после выхода из процедуры (таблица 1).

Таблица 1

Соседние файлы в папке Лабы СПО