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

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

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

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

2-я   3-ю;

3-я   4-ю;

4-я   5-ю;

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

4-я 3-й;

3-я 2-й;

2-я 1-й;

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

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

Программа нахождения медианы из 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

Останов