Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 6.9. ЗАПИСЬ ПРОГРАММЫ

.doc
Скачиваний:
158
Добавлен:
13.05.2015
Размер:
792.06 Кб
Скачать

6.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 Н

в середине таблицы и ее КОП 21Н — то, что упоминается в колонке «содержимое» в табл. 6.10. Отметим, что эта команда согласно табл. 6.5 требует два дополнительных байта данных. Младший (10Н в этом примере) занесен пер­вым по адресу 2021Н, а старший (здесь 20Н) занесен по адресу 2022Н. Другие мнемоники в табл. 6.10 соответству­ют однобайтовым командам. Шестнадцатеричные КОП на­ходятся в соответствующей таблице и переносятся в колон­ку «содержимое». Программа в левых колонках записана в машинном коде и может быть введена в систему.

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

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

Рассмотрим пример, представленный на рис. 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. Последова­тельной.