double arrow

Процедуры. Процедура (или подпрограмма) – это основная функциональная единица декомпозиции (разделения на несколько частей) некоторой задачи

Процедура (или подпрограмма) – это основная функциональная единица декомпозиции (разделения на несколько частей) некоторой задачи. Процедуры являются средством реализации модульного программирования. Синтаксис описания процедуры следующий:

Имя_процедуры PROC [[модификатор_языка]язык] [расстояние]

[ARG список_аргументов]

[RETURNS список_аргументов]

[LOCAL список_аргументов]

[USES список_регистров]

Команды, директивы

Языка макроассемблера

RET

[имя_процедуры] ENDP

Из этого описания видно, что обязательными являются небольшое количество параметров, Хочу обратить Ваше внимание на то, что хотя в конце процедуры имя не является обязательным, рекомендую его обязательно писать, т.к. это облегчает чтение программы и возможную ее модификацию. Разница описания процедуры на языке Ассемблера и на языках высокого уровня только в деталях, которые хорошо усваиваются только на практике. Принципиальных различий немного, среди которых:

- атрибут расстояние. Он может принимать значения NEAR и FAR. 1-ый вариант – для обращения к процедуре, описанной в текущем сегменте кода, 2-ой вариант – для обращения к процедуре из другого сегмента кода (внешней по отношению к текущему сегменту кода). По умолчанию предполагается NEAR. В этой связи следует обратить внимание, что основная процедура программы на ассемблере должна всегда иметь атрибут расстояния FAR, т.к. для программы-загрузчика она является внешней;

- процедуру можно помещать в любом месте программы, но таким образом, чтобы управление передавалось процедуре только в нужное время. Учитывая это, процедуру можно размещать в начале программы (до первой исполняемой команды) или в конце программы (после возвращения управления операционной системе) или в другом модуле. Если Вы все же решите поместить процедуру внутри другой процедуры или основной программы, то не забудьте предусмотреть обход процедуры, поставив перед началом процедуры команду JMP;

- Обращение к процедуре происходит по команде

- CALL [модификатор] имя_процедуры

- Модификатор принимает такие же значения, как и в команде JMP, за исключением SHORT PTR.


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



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