Данная программа имеет следующий алгоритм:
программа вызывает 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 |
Останов |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.