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

Микропроцессоры Токхайм / 9.1. ПОСЛЕДОВАТЕЛЬНЫЕ ПРОГРАММЫ

.doc
Скачиваний:
162
Добавлен:
13.05.2015
Размер:
1.83 Mб
Скачать

Глава 9

ПРОГРАММИРОВАНИЕ МП INTEL 8080/8085

Для программиста микро-ЭВМ, построенные на МП Intel 8080/8085, представлены составом команд, памятью, регистрами общего назначения, счетчиком команд, порта­ми ВВ, индикаторами, указателем стека и стеком. Все эти элементы, за исключением памяти и УВВ, составляют часть МП.

В дальнейшем мы будем использовать состав команд МП Intel 8080/8085, данный в табл. 8.4 и изученный в гл. 8.

На рис. 9.1,б приведена часть регистра состояния, а также краткое описание каждого из пяти индикаторов.

Программы будут записаны на ассемблере. Используе­мый фирмой Intel формат делит каждую линию ассембле­ра на следующие поля:

МЕТКА КОП ОПЕРАНД КОММЕНТАРИИ

Элемент в поле метки решающий, он составляет «на­звание линии». Обычно метки будут иметь линии, отме­ченные переходом. Поле КОП содержит мнемонику, отно­сящуюся к выполняемой операции. Поле операнда (иногда оно называется аргументом) содержит данные, которые будут обработаны по указанному КОП. Поле комментариев может содержать полезную информацию описания функ­ций рассматриваемых команд.

Пусть имеем линию программы на ассемблере: DATA MOV А, М; Ввод данных в аккумулятор. Каж­дый из элементов этого примера принадлежит одному из полей. Вот их описание:

Поле МЕТКА содержит DATA (данные). Это имя ли­нии, и, вероятно, цель прошедшей (или будущей) команды перехода.

Поле КОП: MOV. Это указывает МП, что речь идет о команде передачи данных. Микропроцессор ищет следу­ющее поле (ОПЕРАНД), чтобы определить источник и на­значение передачи данных.

Поле ОПЕРАНД: А, М. Аккумулятор А является на­значением данных, память М — их источником. Адрес ячей­ки памяти указан парой регистров HL; в этом случае име­ем команду косвенной регистровой адресации.

Поле КОММЕНТАРИЙ: Ввод данных в аккумулятор. Это то, что появляется, когда операция выполнена. В этом случае данные передаются в аккумулятор из ячейки памя­ти, указанной парой HL. Точка с запятой (;) используется как разделитель между полем операнда и комментариями. Поля КОП и операнда должны быть заполненными, поля метки и комментариев заполняются по необходимости. Не­которые неявные команды требуют заполнения только по­ля КОП.

Напомним (см. гл. 6), что структурная схема, исходные программы на ассемблере и сам ассемблер оказывают по­мощь при программировании микропроцессорных систем. Объектная программа в форме листинга на ассемблере яв­ляется конечным этапом разработки для микро-ЭВМ.

9.1. ПОСЛЕДОВАТЕЛЬНЫЕ ПРОГРАММЫ

Рассмотрим функциональную структурную схему на рис. 9.2,а. Она является основой для составления последова­тельной программы, названной так, потому что в ней нет

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

На рис. 9.2,б представлена более подробная структур­ная схема этой же задачи для того, чтобы отразить в ней специфические действия микропроцессора — в данном слу­чае МП Intel 8080/8085. Согласно этой схеме можно запи­сать программу на ассемблере, как это показано в табл. 9.1. Заметим, что каждой команде этой программы соответст­вует элемент в форме прямоугольной ячейки на структур-

ной схеме (рис. 9.2,б). Так, например, первая ячейка со­держит: загрузить 2020Н в пару HL, что соответствует команде LXI Н, 2020Н программы на ассемблере в табл. 9.1.

Следующим этапом должен быть перевод программы-источника на ассемблере в его эквивалент на машинном

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

Заметим, что программа в табл. 9.2 не содержит эле­ментов в поле метки. Это связано с тем, что метки обычно используются для обозначения назначения команд ветвле­ния. Программы в табл. 9.1, 9.2 являются последователь­ными, т.е. не содержат ветвлений.

Упражнения

9.1. Список в табл. 9.1 является примером программы (с ветвлением, последовательной).

9.2. См. рис. 9.3. Результатом в памяти после выполнения программы табл. 9.2 будет (дать 8 бит). Это представление двоичного числа в (инверсном, дополни- тельном) коде.

9.3. См. рис. 9.3. Адресом ячейки памяти, в которую будет помещен результат после выполнения программы, станет

(дать шестнадцатеричное значение).

9.4. См. рис. 9.4. Здесь представлена структурная схема сегмента программы, которая вводит число в ASCII и

демаскирует 4 ______(старших, младших) бит. Результат

эквивалентен ______ (двоично-десятичному, двоичному)

числу.

9.5. См. рис. 9.4. Дополнить вторую и третью линии следующего сегмента программы;

9.6. Записать шестнадцатеричный машинный код для выполнения сегмента задачи 9.5. Программа начнется в ячейке памяти 2000Н в последовательности: