Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по МО.doc
Скачиваний:
47
Добавлен:
01.06.2015
Размер:
353.79 Кб
Скачать

5. Контрольные вопросы

  1. Что такое «ближние» и «дальние» подпрограммы?

  2. Как определяется, «ближний» или «дальний» вариант команды call использован в программе?

  3. Какие еще способы передачи параметров можно предложить, кроме двух, описанных в данной работе?

  4. Может ли массив быть параметром процедуры?

  5. Нельзя ли адресовать параметры в стеке через регистр SP, не используя BP?

  6. Что и как нужно изменить в программе из примера, если ис­пользуется версия ассемблера, не поддерживающая понятие структуры?

  7. Изменить описание подпрограммы из примера с использова­нием упрощенных директив описания подпрограмм.

  8. Что означает операнд команды ret?

  9. Какой последовательностью команд можно было бы заменить команду ret 6?

Лабораторная работа 8 Использование подпрограмм на языке ассемблера в программах на языках c и pascal1. Цель работы

Цель настоящей работы – выработка навыков подготовки раз­ноязыковых программ в операционной системе MS-DOS.

2. Основные сведения

2.1. Введение

Каждый язык программирования обладает своими достоинст­вами и недостатками. Поэтому при разработке больших проектов может возникнуть необходимость написания отдельных частей программы на различных языках программирования, например:

  • вся программа на каком-либо языке высокого уровня (ЯВУ), а для доступа к нестандартной аппаратуре или нестандартного доступа к стандартной требуется написание подпрограмм на языке ассемблера;

  • в программе на ЯВУ необходимо повысить эффективность вы­полнения какого-либо фрагмента и для этого переписать его на языке ассемблера;

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

Вся конкретная информация и примеры рассмотрены для сис­темы программирования (СП) Borland C++ Version 3.1 и Borland Pascal Version 6.0 фирмы Borland International, Inc. и ориентиро­ваны на программирования в DOS.

2.2. ТерминЫ и сокращения

Подпрограмма – фрагмент программы, оформленный таким образом, что к нему можно обращаться (вызывать) из других фрагментов программы и возвращаться в точку вызова. При вы­зове подпрограммы ей можно передавать параметры и она может возвращать значение.

Процедура – подпрограмма, не возвращающая значения (см. процедуры Паскаля).

Функция – подпрограмма, возвращающая значение (см. функ­ции Паскаля или Си).

Параметр – фрагмент данных, передаваемый подпрограмме, и возможно, изменяемый ею. Внешние (глобальные) данные пара­метрами не являются.

Формальный параметр – обозначение (идентификатор) пара­метра в подпрограмме.

Фактический параметр – выражение или идентификатор пе­ременной, подставляемый при обращении (вызове) подпрограммы.

Прототип подпрограммы – описание заголовка подпрограммы с описанием формальных параметров.

Основной язык – язык, на котором написана вызывающая про­грамма, язык подпрограммы – язык, на котором написана подпро­грамма.

Сокращения:

СП – система программирования

ЯП – язык программирования

ЯВУ – язык программирования высокого уровня

ИМ – исходный модуль

ОМ – объектный модуль

2.3. Соглашения о связях

Вообще говоря, для каждого транслятора с языка высокого уровня существует свое собственное соглашение о связях между подпрограммами. То есть соглашение о том, в какие машинные команды и конструкции языка ассемблера транслируются опера­торы языка высокого уровня, служащие для описания и вызова подпрограмм.

Понятие «соглашение о связях» включает следующие аспекты: преобразование имен подпрограмм и переменных, передача и воз­врат управления, передача и возврат данных, преобразование дан­ных при передаче и возврате, трансляция и компоновка подпро­грамм в единую программу.