Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Команды подпрограммы

Читайте также:
  1. Возможность получения вознаграждения для команды проекта
  2. Вознаграждение членов команды.
  3. Действия, необходимые для построения команды
  4. ЖАН ТОДТ, начальник команды, Феррари
  5. Жесты и команды рефери
  6. Жизненный цикл команды.
  7. Значение, особенности и виды групповой работы. Особенности работы с местными сообществами (МС). Основные проблемы создания команды при работе с местными сообществами.

Подпрограммы как средство модульного программирования

В большинстве прикладных программ некоторые последовательности ко-манд встречаются не один раз,но оперируют разными данными.Такие после-довательности можно оформить в макрокоманды.Однако расширения мак-рокоманд целиком включаются в объектную программу и значительно уве-личивают ее длину.Гораздо удобнее включить повторяющуюся последова-тельность в объектную программу всего один раз,а в нужных точках вызы-вать ее для выполнения с текущими данными.Такая вызываемая последова-тельность команд,или своеобразная «программа в программе» называется подпрограммой или процедурой.

Подпрограмма представляет собой законченный модуль,который может вы-зываться любое число раз.Инициирование выполнения подпрограммы осущест-вляется путем указания ее имени в 3-байтной команде вызова CALL.Имя под-программы должно находиться в поле метки первой ее команды.При выполне-нии команды CALL текущее содержимое РС(адрес возврата) загружается в стек,а в РС загружается адрес перехода—второй и третий байт команды CALL. После этого начинает выполняться первая команда подпрограммы,затем вторая и т.д.Заключительной командой каждой подпрограммы должна быть 1-байтная команда возврата RET,которая извлекает адрес возврата из стека и передает его в РС.Следовательно,теперь будет выполняться команда,находящаяся в вызываю-щей программе сразу после команды CALL.

Практика программирования показывает,что целесообразно всегда запоми-нать содержимое регистров в начале и восстанавливать его в конце подпрог-рамм.Если,например, подпрограмма SUBR использует регистры А,В и С,она должна иметь следующий формат:

 

Метка Код Операнд Комментарий

 

SUBR: PUSH PSW;Запоминание содержимого регист-

PUSH B;ров в стеке

***

Команды подпрограммы

***

POP B;Восстановление прежнего содержи-

POP PSW;мого регистров

RET;Возврат

 

Подпрограммы с таким форматом быстрее и проще отлаживать.Из-за специфики стека содержимое регистров восстанавливается в обратном порядке.

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

 

Метка Код Операнд Комментарий

***

INR A

RZ

INX B

RET

 

Когда в подпрограмме требуется временное запоминание и восстановление содержимого регистров,этот фрагмент несколько изменяется:

 

Метка Код Операнд Комментарий

SUBR: PUSH PSW

PUSH H

***

INR A

JZ NOT

INX B

 

NOT: POP H

POP PSW

RET

 


Дата добавления: 2015-07-11; просмотров: 82 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Сетка коэффициентов по квалификационной группе служащих| CПОСОБЫ ПЕРЕДАЧИ ПАРАМЕТРОВ

mybiblioteka.su - 2015-2024 год. (0.008 сек.)