- •Декомпозиция задачи ввода данных в озу
- •Структуры данных
- •Разработка структуры данных программы для ввода данных в озу
- •Алгоритмизация программы
- •Подходы к алгоритмизации
- •Иерархическая организация алгоритма
- •Алгоритмизация программы для ввода данных в озу
- •1. Модуль "Тестовый контроль озу по шд" (dTstContr)
- •2. Модуль "Тестовый контроль озу по ша" (aTstContr)
- •3. Модуль "Вывод сообщений об ошибках" (ErMesOut)
- •4. Модуль "Ввод режимов" (ModeInput)
- •5. Модуль "Вывод сообщения о типе ввода" (InTpMesOut)
- •6. Модуль "Ввод с клавиатуры" (KbdInput)
- •7. Модуль "Контроль ввода с клавиатуры" (KbdInContr)
- •8. Модуль "Преобразование очередной цифры" (NxtDigTrf)
- •9. Модуль "Формирование информации" (InfoForm)
- •10. Модуль "Формирование массивов отображения" (DispForm)
- •11. Модуль "Вывод числовой информации" (NumInfOut)
- •12. Модуль "Функциональная подготовка" (FuncPrep)
- •3.4.4. Кодирование программы
- •Реализация логических конструкций структурного программирования
- •Кодирование программы для ввода данных в озу
- •3.4.5. Тестирование и отладка программы
- •3.4.6. Занесение программы на рабочий носитель
- •3.4.7. Оформление документации на программу
- •3.5. Проектирование аппаратных средств
- •3.5.1. Схемотехническое проектирование процессора
- •3.5.2. Схемотехническое проектирование памяти
- •Банкирование памяти
- •Организация банков памяти
- •Проектирование запоминающих устройств
- •3.5.3. Схемотехническое проектирование интерфейса
- •Организация ввода/вывода данных
- •3.5.4. Тестирование и настройка аппаратных средств
- •Тестирование статическими сигналами
- •Свободный прогон микропроцессора
- •3.6. Комплексная отладка микропроцессорной системы
- •Заключение
- •Список рекомендуемых источников
Алгоритмизация программы для ввода данных в озу
Пример 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. Алгоритм программы для ввода данных в ОЗУ
(двухуровневое представление)
В операторе "Системная подготовка" осуществляется инициализация сегментных регистров и дна стека, определяющая положение всех сегментов в памяти. Этот оператор должен выполняться на макроуровне, т. к. вызов модулей нижнего уровня при неинициализированном стеке невозможен.
Оператор "Функциональная подготовка" обеспечивает корректное исходное состояние наборов данных статической модели программы и может быть реализован как модуль нижнего уровня.
После разработки алгоритма макроуровня программы требуется разработать алгоритмы всех программных модулей нижнего уровня. Для этого прежде всего необходимо выбрать руководящую идею, которая может быть положена в основу работы рассматриваемого модуля, а затем реализовать ее.