Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы (книга Комаров) / Проектирование МП систем (ч 1).doc
Скачиваний:
158
Добавлен:
08.03.2015
Размер:
2.92 Mб
Скачать

Алгоритмизация программы для ввода данных в озу

Пример 6.7:

Выполнить алгоритмизацию программы работы устройства для ввода данных в ОЗУ.

Из статической модели этой программы (см. примеры 6.4, 6.6 и рис. 6.27, 6.28) следует, что для решения поставленной задачи необходимы следующие программные модули:

1) "Ввод режимов" (ModeInput);

2) "Ввод с клавиатуры" (KbdInput);

3) "Преобразование очередной цифры" (NxtDigTrf);

4) "Формирование информации" (InfoForm);

5) "Формирование массивов отображения" (DispForm);

6) "Вывод сообщения о типе ввода" (InTpMesOut);

7) "Вывод числовой информации" (NumInfOut);

8) "Вывод сообщений об ошибках" (ErMesOut);

9) "Контроль ввода с клавиатуры" (KbdInContr);

10) "Тестовый контроль ОЗУ по ШД" (DTstContr);

11) "Тестовый контроль ОЗУ по ША" (ATstContr);

12) "Подготовка".

В скобках указаны символьные имена, присвоенные соответствующим программным модулям с целью их дальнейшего использования. Выбранные имена отражают содержательный смысл этих модулей.

При алгоритмизации программы для ввода данных в ОЗУ необходимо разработать алгоритм ее макроуровня, а также алгоритмы работы всех программных модулей.

Разработка алгоритма макроуровня сводится к увязке во времени перечисленных программных модулей с помощью логической конструкции СЛЕДОВАНИЕ. Последовательность модулей в этой конструкции определяется логикой решения задачи. В общем случае модули целесообразно располагать в порядке появления обрабатываемых ими входных данных.

Построенная с учетом этого ГСА программы для ввода данных в ОЗУ приведена на рис. 6.37. Для повышения информативности ГСА на ней изображены входные и выходные данные для каждого программного исполнителя. Эти данные берутся из статической модели программы (см. рис. 6.27, 6.28) с учетом структуры данных (см. таблицу 6.4) и логики решения задачи. Недостатком приведенной ГСА является ее одноуровневый характер, не позволяющий получить четко структурированную программную документацию.

Для устранения этого недостатка необходимо перейти к двухуровневой ГСА, представленной на рис.6.38. В этом случае на макроуровне располагаются лишь вызовы программных исполнителей, а сами исполнители находятся на нижнем уровне управления.

При переходе к двухуровневому представлению алгоритма оператор "Подготовка" распадается на две части: "Системная подготовка" и "Функциональная подготовка" (FuncPrep).

В операторе "Системная подготовка" осуществляется инициализация сегментных регистров и дна стека, определяющая положение всех сегментов в памяти. Этот оператор должен выполняться на макроуровне, так как вызов модулей нижнего уровня при неинициализированном стеке невозможен.

Оператор "Функциональная подготовка" обеспечивает корректное исходное состояние наборов данных статической модели программы и может быть реализован как модуль нижнего уровня.

После разработки алгоритма макроуровня программы требуется разработать алгоритмы всех программных модулей нижнего уровня. Для этого прежде всего необходимо выбрать руководящую идею, которая может быть положена в основу работы рассматриваемого модуля, а затем реализовать ее.