П.Г. Демидова
Кафедра компьютерной безопасности и математических методов
обработки информации
Связь разноязыковых
модулей
Лабораторный практикум на ЭВМ
Методические указания
Рекомендовано
Научно-методическим советом университета
для студентов специальности Прикладная математика
и информатика
Ярославль 2006
1
УДК 004.5
ББК В 18
С 24
Рекомендовано
Редакционно-издательским советом университета
в качестве учебного издания. <...> Н.Б. Чаплыгина
С 24
Связь разноязыковых модулей : лабораторный практикум на
ЭВМ : метод. укзания / сост. <...> Цель лабораторных работ по практикуму на ЭВМ – изучение
архитектуры связи программы и подпрограммы, получение навыков
компоновки программ из модулей, написанных на разных языках
программирования: языке высокого уровня С++ или Pascal и машинно-ориентированном языке Ассемблере. <...> Так, например, если в данной части программы используются многократно выполняемые
циклические фрагменты или обращение к некоторым аппаратным
средствам, которое затрудняется использованием языка высокого
уровня, то данный модуль можно реализовать на машинноориентированном языке Ассемблере. <...> Существуют различные способы включения ассемблерного кода в программы. <...> Большинство современных компиляторов с языков высокого уровня имеют специальные операторы, позволяющие
прямо в тексте исходной программы делать ассемблерные вставки. <...> Такое средство, называемое встроенным Ассемблером, позволяет
использовать инструкции Ассемблера наравне с командами языка
высокого уровня. <...> В то время как при использовании встроенного Ассемблера Borland C++ сам выполняет спецификацию сегментов,
передачу параметров, ссылки на переменные С++, и т.д. <...> Вызов программой на языке С++
функции на Ассемблере
В интерфейсе Ассемблера и C++ есть два основных аспекта. <...> Во-вторых, код Ассемблера должен правильно работать с вызовами функций, соответствующими соглашениям языка С++, что
включает в себя доступ к передаваемым параметрам, возврат <...>
Связь_разноязыковых_модулей_.pdf
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Ярославский государственный университет им. П.Г. Демидова
Кафедра компьютерной безопасности и математических методов
обработки информации
Связь разноязыковых
модулей
Лабораторный практикум на ЭВМ
Методические указания
Рекомендовано
Научно-методическим советом университета
для студентов специальности Прикладная математика
и информатика
Ярославль 2006
1
Стр.1
УДК 004.5
ББК В 18
С 24
Рекомендовано
Редакционно-издательским советом университета
в качестве учебного издания. План 2006 года
Рецензент
кафедра компьютерной безопасности и математических методов
обработки информации Ярославского государственного университета
им. П.Г. Демидова
Составители:
О.В. Власова. Н.Б. Чаплыгина
Связь разноязыковых модулей : лабораторный практикум на
С 24
ЭВМ : метод. укзания / сост. О.В. Власова, Н.Б. Чаплыгина; Яросл.
гос. ун-т. – Ярославль : ЯрГУ, 2006. – 40 с.
Цель лабораторных работ по практикуму на ЭВМ – изучение
архитектуры связи программы и подпрограммы, получение навыков
компоновки программ из модулей, написанных на разных языках
программирования: языке высокого уровня С++ или Pascal и машинно-ориентированном
языке Ассемблере.
Методические указания предназначены для студентов 1-го курса
математического факультета, обучающихся по специальности
010200 Прикладная математика и информатика (дисциплина «Практикум
на ЭВМ», блок ОПД), очной формы обучения. Методические
указания будут полезны и студентам других специальностей, интересующимся
вопросами взаимосвязи разноязыковых программ.
Ил. 7
УДК 004.5
ББК В 18
© Ярославский государственный университет, 2006
© О.В. Власова, Н.Б. Чаплыгина, 2006
2
Стр.2
Оглавление
Введение ................................................................................................ 3
1. Вызов программой на языке С++ функции на Ассемблере .... 4
Пример 1. Постановка задачи ............................................................. 5
2. Встроенный Ассемблер ................................................................ 18
Пример 2. Очистка экрана ................................................................ 19
Пример 3. Преобразование строки символов ................................... 21
3. Вызов функции С++ из ассемблерной программы ................. 24
Пример 4. Вычисление суммы двух целых чисел .............................. 24
Пример 5. Вычисления с плавающей точкой .................................... 27
4. Вызов программой на языке Pascal функции
на Ассемблере ........................................................................ 31
Пример 6. Скалярное произведение линейных массивов ................. 32
Пример 7. Использование внешних имен переменных ..................... 37
Литература ......................................................................................... 38
39
Стр.39
Связь
разноязыковых
модулей
Лабораторный практикум на ЭВМ
42
Стр.42