Микропроцессоры с изменяемой (наращиваемой) разрядностью слова и микропрограммным управлением (секционные микропроцессоры) на примере микропроцессора К1804, страница 13

Данная программа имеет следующий алгоритм:

программа вызывает 1 подпрограмму;

1 подпрограмма вызывает 2 подпрограмму;

2-я   3-ю;

3-я   4-ю;

4-я   5-ю;

5 подпрограмма возвращает управление 4-й;

4-я 3-й;

3-я 2-й;

2-я 1-й;

1-я подпрограмма возвращает управление основной программе;

Если в данной программе будет отсутствовать хоть одна команда RET, то выполнение программы нарушится, поскольку нарушится естественный порядок считывания сохраненных ССП подпрограмм, приостановленных на время исполнения следующих подпрограмм.

2  Программа нахождения медианы из 15 чисел

Для нахождения медианы из 15-ти элементов необходимо отсортировать весь массив. Медианой будет 8-ой элемент отсортированного массива. Сортировка массива производится по алгоритму «пузырька» по возрастанию.

Нужно последовательно проверить два соседних элемента массива и в случае надобности поменять их местами. Эту операцию надо повторить n-1 – раз где n – это количество элементов в массиве.

Структурная схема

 Таблица №10

Адрес

Команда

Мнемоника

Комментарии

000

001

LXI  B

Загрузка количества элементов

001

017

B2

В регистр  ВС

002

000

B3

003

061

LXI SP

Инициализация стека

004

200

B2

с адреса 200

005

000

B3

006

041

LXI H

В регистре НL начальный адрес массива

007

300

B2

010

000

B3

011

305

PUSH B

Записать в стеке кол-во сортируемых элементов

012

321

POP D

Переслать в регистр DЕ

013

176

MOV A,M

В аккумулятор очередной элемент

014

043

INX H

Переход на следующий элемент

015

276

CMP M

Сравнение его с аккумулятором

016

332

JNC

Если следующий больше то

017

030

B2

менять  их местами не надо

020

000

B3

021

365

PUSH PSW

Запоминаем аккумулятор

022

176

MOV A,M

В аккумулятор текущую ячейку

023

053

DCX H

Возврат к предыдущей

024

167

MOV M,A

Пересылка в нее из аккумулятора

025

043

INX H

Возврат к следующей

026

361

POP PSW

Восстанавливаем аккумулятор

027

167

MOV M,A

Пересылаем в память

030

035

DCR E

Уменьшаем переменную цикла

031

302

JNZ

Если не ноль , то повторить

032

013

B2

 с адреса 013

033

000

B3

034

015

DCR C

Уменьшить кол-во проверяемых элементов

035

302

JNZ

Если не ноль то повторить с адреса 006

036

006

B2

037

000

B3

040

166

HLT

Останов