
Микропроцессоры Токхайм / 9.1. ПОСЛЕДОВАТЕЛЬНЫЕ ПРОГРАММЫ
.docГлава 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Н в последовательности: