- •Общие сведения о микропроцессорах, основные определения и классификация
- •Общая структурная схема микропроцессора
- •Два подхода в построении уу микропроцессора
- •Структурная схема мп со схемной логикой управления
- •Принцип микропрограммного управления. Структурная схема мп на основе программируемой логики управления
- •Типовая структурная схема мпс с мультиплексируемой шиной адресов и данных
- •Управление памятью и внешними устройствами
- •Структура микропроцессора к1821вм85а
- •Блок регистров мп к1821вм85а
- •Блок управления мп к1821вм85а
- •Синхронизация и последовательность действий мп к1821вм85а
- •Система прерываний
- •Последовательный ввод-вывод
- •Система команд мп к1821вм85а
- •Пример выполнения программы
- •Приемы программирования микропроцессоров
- •Язык Ассемблера
- •Программирование последовательных участков алгоритма
- •Программирование циклических вычислительных процессов
- •Составление программ, содержащих подпрограммы
- •Общие сведения об интерфейсных схемах
- •Шинные формирователи
- •Буферные регистры
- •Параллельные периферийные адаптеры (ппа)
Составление программ, содержащих подпрограммы
Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограмм – последовательностей команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами.
Для вызова подпрограмм и возврата из них используются команды безусловного и условного вызова подпрограмм и возврата из них.
Команда безусловного вызова подпрограммы 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 |
; возврат в основную ; программу |
ИНТЕРФЕЙСНЫЕ БИС/СБИС