logo search
Шпорки

5 . Организация подпрограмм и использование стековой области памяти.

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

При работе с подпрограммами используется ЗУ со стековой адресацией. Если в главной программе есть обращение к подпрограмме, то после этого данные могут быть стерты подпрограммой. Во избежание программист может сохранить полезные данные в стековой области, что позволяет беспрепятственно пользоваться регистрами. Это есть главное назначение стековой области памяти. Для стековой области отводится специальная область оперативной памяти, называемая стеком. От глубины стека зависит допустимая степень вложенности программ. Адрес вершины стека хранится в специальном регистре SP – указатель стека. Стековая адресация позволяет первым прочесть слово, которое было записано последним. Таким образом, порядок чтения из стека является обратным порядку записи в стек. Запись информации в стек называется загрузкой данных в стек, а чтение из стека – извлечение данных из стека. Стек используется при работе с подпрограммой, когда необходим возврат в программу после выполнения подпрограммы. Обращение к стеку при записи – PUSH, при чтении – РОР.

PUSH PSW

PUSH BC

PUSH DE

PUSH HL

PSW – регистровая пара A, F(аккумулятор, флаговый регистр )

РОР HL

РОР DE

РОР BC

РОР PSW

Вызов подпрограммы осуществляется командой CALL addr, где addr означает начальный адрес подпрограммы. По этой команде содержимое программного счетчика (РС) записывается в стек, а в программный счетчик записывается начальный адрес подпрограммы из адресной части команды, что обеспечивает переход к подпрограмме. Подпрограмма обязательно заканчивается словом RETURN (возврат). Команда RETURN возвращает содержимое программного счетчика, обеспечивающее возврат в место из которого программа вызывалась..

Кроме того, в системе команд имеются команды обращения к подпрограммам и возврата с контролем условий.