Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект, часть 4 (05.10.10), чистовик.doc
Скачиваний:
28
Добавлен:
29.04.2019
Размер:
15.45 Mб
Скачать

Составление программ, содержащих подпрограммы

Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограмм – последовательностей команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами.

Для вызова подпрограмм и возврата из них используются команды безусловного и условного вызова подпрограмм и возврата из них.

Команда безусловного вызова подпрограммы CALL b3b2 загружает в программный счетчик МП PC содержимое байтов b3b2, т.е. начальный адрес подпрограммы. При этом МП автоматически сохраняет в стеке адрес основной программы, к которому она будет обращаться после выполнения подпрограммы (адрес возврата).

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

Команды условного вызова подпрограмм и возврата из них позволяют вызвать подпрограмму и возвратиться из нее в зависимости от состояния заданных разрядов регистра флажков RF (аналогично командам условных переходов).

Таким образом, команды вызова подпрограмм и возврата из них используют стек и указатель стека SP. Поэтому при разработке таких программ необходимо назначить область стека, записывая в указатель стека SP адрес (нижняя граница стека) с помощью команд LXI SP, b3b2 или SPHL.

В качестве подпрограммы можно использовать программу, представленную в таблице 9. Входными параметрами подпрограммы суммирования ADDB (таблица 9) являются адрес первого слагаемого, записанный в паре регистров H-L, и число слагаемых, записанное в регистре B. Выходным параметром является сумма, старший байт которой записан в регистре C, а младший – в аккумуляторе AC.

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

Таблица 10 – Программа суммирования массива однобайтных чисел на языке

Ассемблера, содержащая подпрограмму

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

0800

LXI

H,0A00H

21 00 0A

; адрес первого слагаемого

0803

MVI

B,05H

06 05

; количество слагаемых

0805

CALL

ADDB

CD 09 08

; вызов подпрограммы

; сложения

0808

HLT

76

; останов

0809

ADDB:

XRA

AC

AF

; обнуление регистра AC

080A

MOV

C,AC

4F

; обнуление регистра C

080B

M1:

ADD

M

86

; суммирование

080C

JNC

M2

D2 10 08

; условный переход на

; M2, если (TC) = 0

080F

INR

C

0C

; увеличение содержимого

; регистра C на единицу

0810

M2:

INX

H

23

; увеличение содержимого

; пары регистров H-L на

; единицу

0811

DCR

B

05

; уменьшение на единицу

; содержимого счетчика

; циклов

0812

JNZ

M1

C2 0B 08

; условный переход на M1, если (TZ) = 0

0815

RET

C9

; возврат в основную

; программу

ИНТЕРФЕЙСНЫЕ БИС/СБИС