Данная программа имеет следующий алгоритм:
программа вызывает 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).
Ссылка на скачивание - внизу страницы.