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

Передача параметров в программе

Если прикладная программа МП-системы хранится в ОП, можно органи-зовать область параметров сразу после команды CALL. В этом случае передать подпрограмме начальный адрес области параметров удобно через стек. Когда выполняется команда CALL,адрес возврата ,фактически являющийся адресом первого параметра,включается в стек,а управление передается первой команде подпрограммы .Команда XTHL производит обмен содержимого регистров (H,L) и двух верхних ячеек стека. Следовательно, адрес первого параметра из верхушки стека загружается в регистры(H,L).Команда MOV r, M считывает значения параметров во внутренние регистры микропроцессора для обработки подпрограммой.

После считывания каждого параметра производится инкремент регистров (H,L). На рисунке показано последовательное считывание параметров, но это не обязательно,если содержимое регистров (H,L) не модифицируется другими командами.

Рисунок

ОП СТЕК

1000: CALL SUBR

1003: PARAM1 1003(1005)

1004: PARAM2

1005: следующая команда

SUBR: XTHL (H, L) 1003

MOV r, M

INX H

MOV r, M

INX H

XTHL CTEK  1005

.

.

.

RET

. После передачи параметра производится заключительный инкремент регистров (H,L),затем выполняется еще одна команда XTHL.Она включает в стек адрес ячейки,находящейся сразу же за последним параметром,т.е. адрес очередной команды вызывающей программы. В регистрах (H,L) восстанавливается их содержимое до вызова подпрограммы.Заключительная команда RET возобновляет выполнение вызывающей программы.

Передача параметров через стек

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

Однако в микропроцессоре I8080 имеется только один указатель стека SP, поэтому передача параметров через стек оказывается несколько громоздкой. Пусть в стек командами PUSH загружены несколько параметров. Когда выпол-няется команда CALL,сверху параметров в стеке окажется адрес возврата. Обес-печить доступ к параметрам можно путем извлечения адреса возврата из стека и запоминанием его в специальной ячейке RETAD.После этого командами POP из стека извлекаются параметры. Подпрограмма, таким образом, приобретает следующий формат:

МЕТКА КОД ОПЕРАНД КОМЕНТАРИЙ

SUBR: POP H ; Исключение и

SHLD RETAD ; запоминание адреса воз-

*** ;врата

Извлечение параметров

и обработка

***

LHLD RETAD ; Адрес возврата в ре-

; гистрах (H,L)

PCHL ; Возврат

Достоинство передачи параметров через стек заключается в том, что здесь

требуется сравнительно небольшой объем памяти.