
Микропроцессоры Токхайм / 6.9. ЗАПИСЬ ПРОГРАММЫ
.doc6.9. ЗАПИСЬ ПРОГРАММЫ
Программист должен отлично знать соответствующий состав команд, быть хорошо знаком с расположением регистров, т. е. знать общую архитектуру микро-ЭВМ.
Этапы развития программы могут быть представлены следующим образом:
1. Определить и проанализировать задачу.
2. Начертить структурную схему решения.
3. Записать программу на ассемблере.
4. Записать или генерировать программу в кодах машины.
5. Запустить программу на решение.
6. Документировать программу.
Рассмотрим задачу записи программы, целью которой является сложение содержимого трех последовательных ячеек памяти и размещение суммы в памяти. На рис. 6.37, а представлена функциональная структурная схема решения этой задачи. Она не содержит адекватных деталей, которые позволяют перевести ее прямо в сегмент программы на ассемблере или машинном языке.
На рис. 6.37, б показана подробная функциональная схема организации решения, которая в ходе программирования зависит от системы, в то время как функциональная схема может быть использована для любого МП.
Затем следует записать версию подробной структурной схемы организации решения на ассемблере (такой сегмент программы приведен в табл. 6.9) в четыре типовых поля: метка; мнемоника; операнд; комментарий. Метки нас пока не интересуют. Комментарии оказывают большую помощь в понимании действия каждой команды программы.
Сравнивая подробную функциональную схему организации решения на рис. 6.37, б и список команд на ассемблере в табл. 6.9, мы установим, что каждая рамка схемы соответствует одной эквивалентной команде. Возьмем, например, первую прямоугольную рамку на рис. 6.37,б: команда загрузить 2010Н в пару HL эквивалентна команде на ассемблере L XI H 2010H, т.е. загрузить адрес 2010Н в пару HL в табл. 6.9.
Записанная версия должна быть переведена в состав бит из единиц и нулей, понимаемых микропроцессором, называемых машинным кодом. Это можно сделать вручную или с помощью специальных программ (на ассемблере). Учебное кодирование выполняется следующим образом:
Найти КОП каждой мнемоники в таблице состава команд (в нашем случае табл. 6.3—6.8).
Определить операнды (данные и адреса), когда это необходимо, передать командами из нескольких байт.
Установить адреса памяти в последовательности каждой команды и операнда.
Выполним наш пример сложения содержимых трех последовательных ячеек памяти и размещения их суммы в четвертой. Версия на ассемблере представлена в табл. 6.10. Две левые колонки содержат установленные адреса памяти и шестнадцатеричный КОП (или операнд). Содержимое соответствует 8-разрядиым словам, помещенным в память.
Мнемоникой и операндом первой строки команды на машинном языке являются LXI Н, 2010Н, для которых должен быть установлен КОП и в этом случае два операнда. Необходимая информация для этого типа команд (передать данные) находится в табл. 6.5. Мнемоника LXI Н
Затем нужно проверить программу — удовлетворительно ли она проходит, эта операция представляет собой процесс отладки программы (поиск и устранение ошибок). В конечном счете программа вводится в систему обычно с известными данными и результаты проверяются. Выполняют несколько тестов.
Последним этапом программирования является документирование. Документировать программу значит дать ее описание, указывающее, в какой последовательности должны выполняться операции. Сюда входят схемы вычислений, списки, данные, адреса, используемые подпрограммы и комментарии. Сильно развитые программы требуют тщательно разработанной документации.
Рассмотрим пример, представленный на рис. 6.38. В этом случае машинный код был введен в память программы по адресам 2020Н—202АН. Слагаемые (OFH, 09Н, 06Н) в рассматриваемом примере введены в память по адресам 2010Н-2012Н. Мы можем проследить этап за этапом выполнение программы сложения.
Хотя программы для реальных микро-ЭВМ довольно большие, они состоят из групп сегментов, идентичных тем, что мы только что видели. Обычно каждый сегмент записан и тестирован прежде, чем собрана для окончательного тестирования полная программа. Описанный состав команд является только одним из многих способов решения поставленной задачи. Программа этого типа называется последовательной в том смысле, что она не содержит ни ветвлений, ни переходов.
Упражнения
6.72. Программист должен знать архитектуру системы, состав команд МП, воображаемую память системы и регистры МП. Таким образом, регистры, предоставляемые программисту, даются обычно на схеме, называемой ________ (моделью, составом) программирования.
Перечислить последовательность шести приведенных этапов программы.
Графическое представление задачи (такое, как на рис. 6.37) называется _______.
После разработки подробной структурной схемы решения (см. рис. 6.37) следующим этапом является запись программы на (ассемблере, машинном языке).
6.76. При записи версии программы в машинных кодах
_______ (адреса, прерывания) памяти устанавливаются
командами.
6.77. Версия программы в машинных кодах использует
коды _______ (восьмеричные, операции) и операнды в
________(десятеричной, шестнадцатеричной) форме.
См. рис. 6.38. Каково содержимое пары регистров HL после выполнения команды 1?
См. рис. 6.38. Каково содержимое аккумулятора после выполнения команды 4?
См. рис. 6.38. Каково содержимое аккумулятора после выполнения команды 6?
См. рис. 6.38. Каково содержимое ячейки памяти 2013Н после выполнения команды 7?
См. рис. 6.38. Каково содержимое ячейки памяти 2013Н после выполнения команды 8?
Как называется этап тестирования программы?
См. рис. 6.38. Программа без ветвлений и переходов называется ________.
Решения
6.72. Моделью. 6.73. 1. Постановка и анализ задачи. 2. Построение структурной схемы решения. 3. Запись программы на языке ассемблер. 4. Запись или выдача программы в машинных кодах. 5. Запуск программы. 6. Документирование программы. 6.74. Структурной схемой решения. 6.75. Ассемблере. 6.76. Адреса. 6.77. Операции; шестнадцатеричной. 6.78. 2010Н. 6.79. OFH+09H=18H, что является содержимым аккумулятора. 6.80. OFH+09H+06H= 1ЕН. 6.81. Сумма еще не помещена, содержимое этой ячейки памяти непредсказуемо. 6.82. OFH + +09Н+06Н=1ЕН. 6.83. Запуск программы (отладка). 6.84. Последовательной.