Модульное программирование

Модуль – продукт процесса разбиения большой задачи на ряд более мелких функционально самостоятельных подзадач. Этот процесс называется функциональной декомпозицией задачи.

Между структурными единицами программы (модулями) существуют управляющие и информационные связи. Применительно к языку ассемблера рассматривают несколько форм организации управляющих связей:

· Макроподстановки;

· Объединение в одну программу подпрограмм, написанных на языке ассемблера;

· Объединение в единый модуль подпрограмм, написанных на разных языках программирования.

В качестве информационных связей выделяют:

· Общие области памяти и общие программно-аппаратные ресурсы процессора;

· Унифицированная передача аргументов при вызове модуля;

· Унифицированная передача аргументов при возвращении управления из модуля.

Типы объединения модулей

<имя сегмента> SEGMENT <параметр(ы)>

[<объединение>]

Параметр «объединение» может принимать следующие значения: PUBLIC, COMMON, STACK.

Обращение к внешним идентификаторам

Внешние имена

Директива EXTRN (external, внешний):

EXTRN <имя>: <тип>, …, <имя>: <тип>

EXTRN X: BYTE; переменная X размером в байт

Общие имена

Директива PUBLIC

PUBLIC <имя>, …, <имя>

PUBLIC X

Процедуры

.

Описание подпрограммы в виде процедуры:

<имя процедуры> PROC <параметр>

<тело процедуры>

<имя процедуры> ENDP

При параметре NEAR или при его отсутствии процедура называется «близкой», при параметре FAR – «дальней».

Вызов процедур и возврат из них

Чтобы из основной программы вызвать процедуру, необходимо указать в команде перехода имя процедуры.

При обращении к процедуре основная программа обязана сообщить ей адрес возврата.

Как сообщить адрес возврата?

1. Передать через регистр: основная программа записывает в некоторый регистр адрес возврата, а процедура извлекает его оттуда и делает по нему переход.

2. Передать через стек: основная программа записывает адрес возврата в стек, а процедура считывает его и использует для перехода.

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

Вызов процедуры (переход с возвратом):

CALL <имя процедуры>

Возврат из процедуры (return):

RET


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: