Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС2 Проектирование аппаратного и программного...doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
2.77 Mб
Скачать

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

Пример 3.4.

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

Из статической модели этой программы (см. примеры 3.1 – 3.3 и рис. 3.14, 3.15) следует, что для решения поставленной задачи необходимы следующие программные модули:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рис. 3.24. Алгоритм программы для ввода данных в ОЗУ (одноуровневое представление)

Рис. 3.25. Алгоритм программы для ввода данных в ОЗУ

(двухуровневое представление)

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

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

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