УЗБЕКСКОЕ АГЕНТСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Кафедра сети и системы передачи данных
ЦИФРОВАЯ СХЕМОТЕХНИКА
Методическое указание к курсовым работам для студентов направления образования 5522000-«Радиотехника»
Ташкент 2008
Авторы: Д. Ю. Юнусов, Р. П. Абдурахманов, Х. Ю. Аббасханова,
«ЦИФРОВАЯ СХЕМОТЕХНИКА»/ТУИТ. 77 стр. Ташкент, 2008.
Курс "Цифровая схемотехника" (ЦС) состоит в изучении принципов построения и применения цифровых устройств различной функциональной сложности - от цифровых логических элементов (ЛЭ) до микропроцессоров (МП).
Данное методическое указание к курсовым работам рассматривает построение различных цифровых устройств на основе логических элементов.
© Ташкентский Университет Информационных Технологий, 2008
ВВЕДЕНИЕ
Цель курса "Цифровая схемотехника" состоит в изучении принципов построения и применения цифровых устройств различной функциональной сложности - от цифровых логических элементов (ЛЭ) до микропроцессоров (МП).
Курс ЦС включает изучение теоретического материала согласно программе, выполнение контрольной работы, прохождение лабораторного практикума, курсовую работу.
Для облегчения обработки теоретического материала согласно программе в данной работе даются методические указания и приводятся ссылки на литературу; в ряде случаев указывается несколько источников - для более полного охвата вопроса, а также с целью предоставить студенту возможность выбора из имеющейся на местах литературы.
Курс ЦС разбит на две части. В первой части основное внимание уделяется структурам и принципам построения цифровых устройств небольшой сложности. Для закрепления знаний по первой части курса студентам предлагается контрольная работа, состоящая из трех заданий. Во второй части рассматриваются принципы организации цифровых устройств высокой сложности, в частности МП и микро-ЭВМ, а также некоторые вопросы их применения.
Настоящая курсовая работа посвящена получению практических навыков программирования для микро-ЭВМ.
1. ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
1.1. Этапы проектирования микропроцессорных систем (МПС)
Рис.1.1. Основные этапы проектирования устройств на базе МП.
Одним из важнейших этапов проектирования является системный анализ, цель которого состоит в определении требований к проектируемой системе. Этот этап включает определение набора требований пользователя и построение функциональной спецификации, вытекающей из требований пользователя.
Требования пользователя определяют, что хочет или в чем нуждается пользователь или потребитель. Требования пользователя могут быть получены во время встречи с пользователем или покупателем с целью выявления его нужд и определения того, что пользователь хочет от системы. Другой подход используется при планировании ассортимента изделий, когда требования пользователей могут быть определены путем изучения рынка сбыта на основе спроса покупателей.
Функциональная спецификация должна определять, какие функции должны выполняться для удовлетворения требований пользователя и обеспечения интерфейса между системой и окружением.
Кроме того, часто приходится проводить синтез модулей для реализации функций аппаратным путем из-за отсутствия в микропроцессорных комплектах (МПК) соответствующих больших интегральных схем (БИС).
Следующий этап проектирования - выбор МПК, который необходимо осуществлять, исходя из трех основных моментов.
1.С точки зрения разработки программного обеспечения, необходимо анализировать такие характеристики МП, как набор команд и способы адресации, разрядность, число используемых регистров общего назначения, тип стековой памяти, способы обработки прерываний и т.п. Для секционных МП с микропрограммным уровнем необходимо, если требуется, выбрать систему команд, разработать микропрограммы их реализации, что связано с определенными трудностями , так как разработчику микропрограмм необходимо выбрать формат микрокоманд, хорошо изучить механизмы формирования адресов следующих микрокоманд, такты передачи кодов и возможные совмещения при передачах, учитывать задержки.
2.Исходя из системного проектирования, необходимо анализировать полноту МПС, которая должна содержать, помимо МП, БИС постоянных и оперативных запоминающих устройств (ПЗУ и ОЗУ), модули для организации интерфейса с периферийными устройствами, управления прямым доступом к памяти, шинные формирователи, буферные регистры, генератор тактов, системный контроллер. В [2] приведено влияние различных критериев выбора МПК (разрядность, набор команд и вид адресации, архитектура МП, микропрограммируемость, время выполнения команды, полнота серии и микросхем, документация и др.) на разработку и производство МПС.
3.С точки зрения разработки и отладки программного обеспечения, необходимо наличие таких программ, как транслятор символического языка в двоичный (объектный) код, редактирующая программа моделирования, без которых время и стоимость разработки МПС значительно увеличивается.
Рассмотрим подробнее этап разработки программного обеспечения МПС, который выполняется параллельно этапу разработки и отладки аппаратных средств МПС. После завершения этих этапов осуществляется интеграция программных и аппаратных средств и отладка МПС в резидентном режиме (*).
Главной задачей проектирования МПС является создание прикладных программ. Проектирование же аппаратных средств сводится к соединениям БИС в соответствии с рекомендуемыми конфигурациями, расчетом электрических нагрузок и временных соотношений.
Практика разработки МПС показывает, что экономические затраты на разработку программ по отношению к затратам на разработку аппаратуры неуклонно увеличиваются.
В настоящее время отсутствуют четкие количественные критерии и характеристики оптимальности программ. Естественная традиционная оценка их по длине и, следовательно, емкости памяти может отступить на второй план по сравнению с удобствами эксплуатации систем, гибкостью при расширении ее функциональных возможностей и т.п.
В общем, пока создание прикладных программ остается "более искусством, чем наукой", и здесь большую роль играют опыт и здравый смысл, которым очень трудно научить.
Разработка прикладных программ МПС включает в себя следующие крупные этапы, характерные для разработки любых программных средств:
· точную постановку решаемой проблемы и определение функциональных спецификаций;
· разделение проблемы на части и алгоритмизацию каждой из них - так называемое проектирование (конструирование) программы;
· собственно программирование (кодирование);
· проверку и отладку программы.
Остановимся на каждом из перечисленных этапов.
Разработка функциональных спецификаций. Успех проектирования в значительной мере определяется тем, насколько хорошо разработчик понял и сформулировал решаемую проблему и трансформировал ее в рабочие характеристики системы. Общие спецификации обычно в себя включают:
· четкое описание проблемы, решаемой системой;
* Резидентное программное обеспечение - набор служебных программ, реализованных в той же микро-ЭВМ, на которой будет работать прикладная программа пользователя.
· список аппаратных средств и внешних сигналов;
· описание связей программных модулей;
· полное описание системы с упором на интерфейс с внешним
· устройством (ВУ);
· инструкцию для пользователей с описанием входных и выходных данных, реакций на особые случаи и т.п.
Здесь целесообразно использовать графические представления решаемых задач в виде блок-схемы алгоритмов, диаграмм, таблиц.
Разделение проблемы на части и алгоритмизация. Большинство применений МПС связано с решением довольно сложных проблем, поэтому целесообразно разделить общую проблему на более простые и управляемые части. Программная реализация каждой из частей называется блоком или модулем. Сложные блоки разделяются на субблоки до такого уровня, чтобы разработка алгоритма работы каждого субблока стала достаточно простой. Такой метод называется проектированием сверху вниз или нисходящим проектированием.
Основные блоки выделяются из функциональных спецификаций и содержат управляющий блок (основную программу), блоки интерфейса с ВУ, блоки реакций на прерывания и блоки разнообразного преобразования данных, блок ввода-вывода (ВВ).
Большое значение имеет правильная организация структуры данных, которая зависит от того, как представлены данные и как они обрабатываются системой.
Следует задать и описать формат входных и выходных значений, промежуточных и окончательных результатов, выбрать способы размещения данных в памяти. Целесообразно представлять данные в виде таблиц, массивов, списков и т.д. Рациональная организация данных поможет сократить длину программы и уменьшить время ее выполнения.
После выделения функциональных блоков разрабатываются алгоритмы их работы с ориентацией на выбранный МП.
Кодирование. Преобразование блок схемы программы в операторы некоторого языка, воспринимаемого ЭВМ, традиционно называется программированием. Однако, такое преобразование правильно
спроектированной программы оказывается не слишком сложным, поэтому данный этап стали называть кодированием. Результатом кодирования является входная программа или входной код. В зависимости от возможности дальнейшего преобразования входных программ, кодирование может вестись на машинном языке, языке Ассемблера или языке высокого уровня.
Следует тщательно спланировать программу и обратить серьезное внимание на ее документирование. Обычно программа начинается с заголовка - комментария, содержащего основные характеристики программы: имя (название), дату составления, требования к памяти, собственно функции программы и особенности ВВ.
Для наглядного представления размещения элементов программы можно построить карту памяти с выделением следующих областей: специальной памяти, определяемой особенностью МП; рабочей памяти, стека, подпрограммы ВВ, буферных областей; общих областей для передачи параметров; памяти портов ВВ при использовании ВВ; резидентной памяти для системных программ. Целесообразно назначать области памяти в пределах страниц, что упрощает дешифрацию адресов и их преобразования.
Проверка и отладка. Тесно связанные друг с другом проверка и отладка программы заключается в локализации и удалении из программы ошибок. Проверка начинается с тщательного просмотра программы с последующим переходом к отладке программ низшего уровня, которые не вызывают других подпрограмм. Следует убедиться, что кодирование соответствует логике блок-схемы, что данные правильны, а циклы верно инициализируются и заканчиваются. Необходимо разработать конкретные примеры (тесты) для каждого блока. В тестах предусматриваются наихудшие случаи и предельные значения параметров. Закончив отладку простейших подпрограмм, можно переходить к подпрограммам следующего уровня и так до основной программы. Завершается отладка функциональным тестом, проверяющим работу программы в условиях эксплуатации. Иногда такой тест включается в прикладную программу как средство самоконтроля.
Существуют специальные вспомогательные средства, применяющиеся на каждом этапе проектирования. В [1,2] рассмотрено, каким образом некоторые из этих средств могут быть использованы для системной разработки, отладки и объединения программного обеспечения систем, основанных на использовании МП.
1.2. Микропроцессор КР580ВМ80А и его система команд
БИС КР580ВМ80А представляет собой 8-разрядный процессор, в котором совмещены операционное и управляющее устройства [1]. Управляющая память недоступна пользователю, в ней уже в процессе изготовления БИС записываются микропрограммы операций (микропрограммы, по которым выполняются команды). Таким образом, предусматривается использование некоторой фиксированной
системы команд, в которую пользователь не может внести изменений. В связи с этим данный микропроцессор относится к числу не программируемых, т.е. программируемых не на уровне микрокоманд, а на уровне команд.
На рис.1.2 приведена структурная схема БИС КР580ВМ80 А.
Опишем кратко ее узлы.
Регистры данных. Для хранения участвующих операциях данных предусмотрено семь 8-разрядных регистров. Регистр А называется аккумулятором, предназначен для обмена информацией с внешними устройствами (т.е. либо содержимое этого регистра может быть выдано на выход, либо со входа в него может быть принято число). При выполнении арифметических и логических операций один из операндов (число, участвующее в операции),находится в аккумуляторе, и в аккумулятор же помещается результат выполненной операции.
Шесть других регистров, обозначенных В, C, D, Е, Н, L, образуют так называемый блок регистров общего назначения РОН (название связано с тем, что регистры могут использоваться для хранения как данных, так и адресов). Эти регистры могут использоваться как одиночные 8-разрядные регистры. В случаях, когда возникает необходимость хранить 16-разрядные двоичные числа, они объединяются в пары ВС, DE, НL.
Буферные регистры БР1, БР2, W, Z , программно недоступные (т.е. регистры, к которым программист при составлении программы не может обращаться). Указатель стека SP (16-разрядный) служит для адресации особого вида памяти, называемого стеком (организация стека будет рассмотрена ниже).
Счетчик команд РС (16-разрядный) предназначен для хранения адреса команды; после выбора из оперативной памяти текущей команды содержимое счетчика увеличивается на единицу и таким образом, формируется адрес очередной команды (при отсутствии безусловных и условных переходов).
При обращении к памяти в качестве адреса может использоваться и содержимое любой пары регистров блока РОН.
При выдаче адреса содержимое соответствующих регистров передается в 16-разрядный регистр адреса РА, из которого далее через буферы адреса БА адрес поступает на 16-разрядную шину адреса. С этой шины адрес может быть принят в оперативную память. Число кодовых комбинаций 16-разрядного адреса равно 2 , каждая из этих кодовых комбинаций может определять адрес (номер) одной из ячеек оперативной памяти. Таким образом, обеспечивается возможность обращения к памяти, содержащей по 216=26*210=64 К 8-разрядных слов (байт).
Арифметико-логическое устройство (АЛУ).В 8-разрядном АЛУ предусмотрена возможность выполнения четырех арифметических операций (сложение с передачей переноса в младший разряд и без учета этого переноса, вычитание с передачей заема в младший разряд и без него), четырех видов логических операций (операций конъюнкции, дизъюнкции, неравнозначности, сравнения), а также четырех видов сдвига (сдвиг влево и вправо, циклический сдвиг влево и право). Операции сдвига выполняются только над содержимым аккумулятора.
Предусмотрена возможность выполнения арифметических операций над десятичными числами. При хранении десятичного числа разряды регистра делятся на две группы, по 4 разряда и в каждой группе разрядов хранится одна десятичная цифра, представленная в коде 8421. Таким образом, в регистре можно хранить 2-разрядное десятичное число. При выполнении операции суммирования десятичных цифр может потребоваться коррекция результата путем прибавления к нему 0110 . Такая коррекция результата в каждой 4-разрядной группе результата в микропроцессоре выполняется схемой десятичной коррекции (СДК).
Регистр признаков (РП). Этот 5-разрядный регистр предназначен для хранения определенных признаков, выявляемых в числе, которое представляет собой результат выполнения некоторых операций. Пять триггеров этого регистра имеют следующее назначение:
· триггер Тс (триггер переноса) из старшего разряда - если на выходе старшего разряда сумматора в результате выполнения команды сложения возникает сигнал переноса или в результате выполнения команды вычитания появляется сигнал заема, то признак переноса С = 1;
· триггер Тz (триггер нуля) - если результат выполнения команды равен 0, то признак нуля Z = 1;
· триггер Ts (триггер знака) - если результат выполнения команды отрицателен, то S = 1;
· триггер Тр (триггер четности) - если сумма по модулю 2 значений всех разрядов результата выполнения операции равна 0, то Р = 1;
· триггер Ty (триггер вспомогательного переноса) - если перенос возникает из 3-го разряда в 4-ый, то признак вспомогательного переноса СУ = 1; данный признак используется при выполнении операций суммирования десятичных чисел с участием десятичного корректора; кроме того, признак СУ используется при арифметических и логических операциях над 4-х разрядными словами.
Блок управления. Состоит из регистра команд, куда принимается первый байт команды, и управляющего устройства, формирующего управляющие сигналы, под действием которых выполняются микрооперации в отдельных узлах. Управляющее устройство содержит выполненную на программируемой логической матрице управляющую память, в которой хранятся микропрограммы отдельных операций. Однако, как уже указывалось, пользователь не может изменить содержимое управляющей памяти, а значит, и состава команд.
Буферы. Буферы данных и буферы адреса обеспечивают связь центрального процессора с внешними шинами данных и адреса. Особенность буферов состоит в том, что в каждом разряде они используют логические элементы с тремя состояниями. В них, кроме состояний лог.0 и лог.1, предусмотрено еще третье состояние, в котором они имеют практически бесконечное выходное сопротивление и оказываются отключенными от соответствующих шин. Использование таких буферов позволяет процессору отключаться от внешних шин (шин данных и адресов), предоставляя их в распоряжение внешних устройств, а также позволяет использовать одну и ту же шину данных как для приема данных (т.е. в качестве входной шины), так и для выдачи данных (т.е. в качестве выходной шины). Такое использование шины данных позволяет сократить число выводов микросхемы. На рис.1.3 показан принцип двунаправленного обмена данными между внутренней и внешней шинами данных. Если осуществляется прием данных (передача данных с внешней шины данных на внутреннюю шину данных), отключаются, переходя в третье состояние, выходные логические элементы; при выдаче данных (передача с внутренней шины на внешнюю шину) отключаются входные логические элементы.
внешняя шина данных
внутренняя шина данных
Рис.1.3. Принцип двунаправленной передачи внутренней
и внешней шинами данных
ФОРМАТ ДАННЫХ И КОМАНД
Данные (обрабатываемая информация и результаты обработки) хранятся в оперативной памяти и в процессоре в виде 8-разрядных двоичных чисел. Таким образом, слово данных имеет следующий формат:
(байт данных)
Для команд используются одно-, двух-, трехбайтовые форматы. Однобайтовый формат команды:
(код операции)
Большинство команд является однобайтовыми.
Двухбайтовый формат команды:
B1 (код операции)
(операнд или номер
устройства ввода/вывода)
В первом байте двухбайтовой команды указывается код выполняемой операции, во втором байте приводится число, являющееся операндом при выполнении операции, либо номером устройства ввода или вывода при обмене данными.
Трехбайтовый формат команды:
B1 (код операции)
B2 (младший байт адреса или
младший байт операнда)
B3 (старший байт адреса или
старший байт операнда)
Байты трехбайтовой команды имеют следующее назначение: в первом указывается код выполняемой операции, следующие два байта используются для указания двухбайтового адреса команды (при выполнении безусловных, условных переходов, обращении к подпрограммам), или адреса ячейки оперативной памяти, содержимое которого является операндом, или двухбайтового операнда. Во всех случаях В2 является младшим, В3 старшим байтом.
СПОСОБЫ АДРЕСАЦИИ
Для того чтобы могла быть выполнена определенная операция, в команде, кроме вида операции, должно содержаться указание, откуда берутся участвующие в операции числа и куда помещается результат выполненной операции (иначе говоря указание об источниках и приемнике операндов). Под способами адресации понимают способы, используемые для указания источников и приемников операндов.
В микропроцессоре используются следующие способы адресации.
Прямая адресация. При этом способе адресом операнда является указанный в команде (в байте кода адресации) адрес регистра микропроцессора. Адреса регистров приведены в таблице 1.1.
Таблица 1.1.
Регистр |
Адрес регистра, используемый в командах |
|
Регистр |
Адрес регистра, используемый в командах |
B C D E
|
000 001 010 011 |
|
H L M A |
100 101 110 111 |
Под М понимается ячейка оперативной памяти, адресом которой служит содержимое пары регистров HL.
Покажем некоторые примеры команд с прямой адресацией, взятых из приведенного в приложении 1 списка команд микропроцессора.
Таблица 1.2.
Мнемоника команды |
Кодовая комбинация команды |
Выполняемая операция |
MOV C,D ADD D |
01 001 010 10 000 010 |
C ← (D) A ← (A) + (D) |
Здесь под мнемоникой понимают сокращенное обозначение, облегчающее запоминание команды.
В кодовой комбинации команды 01001010 два старших разряда 01 определяют код операции (операция пересылки содержимого одного регистра в другой), в последующих двух 3-разрядных группах (001 и 010) приведены адреса регистров С и D. Команда представляет операцию пересылки в регистр С содержимого регистра D.
В команде 10000010 пять старших разрядов 10000 представляют вид выполняемой операции (операция суммирования); в трех младших разрядах 010 указан адрес регистра D, служащего источником операнда. При выполнении операции суммирования источником другого операнда и приемником результата выполненной операции является аккумулятор А.
Непосредственная адресация. При этом способе адресации операнды (один либо два) задаются непосредственно в команде вслед за байтом кода операции во втором либо втором и третьем байтах.
Ниже приведены примеры команд с непосредственной адресацией:
1. ADI B1 11 000 110 A ← (A) + <B2>
B2 01 001 100
2. MVI D B1 00 010 110 D ← <B2>
B2 01 001 110
3. LXI D B1 00 010 001 D ← <B3>; E ← <B2>
B2 01 100 101
B3 10 100 101
Команда с мнемоникой АDI предусматривает суммирование содержимого аккумулятора с числом, приведенным во втором байте команды ( в примере это число равно 4СH).
Команда MVI производит пересылку числа , приведенного во втором байте команды (в примере это число равно 4ЕH), в регистр D, адрес которого 010 указан в разрядах D5, D4, D3 первого байта команды.
Команда LXI производит пересылку чисел, приведенных во втором и третьем байтах (в примере 65H и А5H), соответственно в младший и старший регистры пары регистров DE. В разрядах D5, D4, D3 первого байта пары регистров указан адрес 010 одного из регистров этой пары.
Косвенная адесация. При этом способе адресации в команде указывается пара регистров блока РОН (путем указания адреса одного из регистров этой пары), содержимое которой служит адресом, по которому в оперативной памяти находится операнд.
Примеры команд с косвенной адресацией:
1. LDAX B 00 001 010 A ← [(BC)]
2. STAX B 00 000 010 [(BC)] ← (A)
Здесь запись [(ВС)] означает ячейку памяти , адресом которой служит содержимое пары регистров ВС.
По команде LDAX В аккумулятор загружается содержимым ячейки оперативной памяти, адресом которой служит содержимое пары регистров ВС (для указания именно этой пары регистров в разрядах D5 D4 D3 команды приведен адрес 001 регистра С).
По команде STAX B содержимое аккумулятора запоминается в ячейке, адресом которой служит содержимое пары регистров ВС (для указания пары регистров в разрядах D5 D4 D3 команды приведен адрес 000 регистра В).
ПРИНЦИП РАБОТЫ МИКРОПРОЦЕССОРА
На рис. 1.4 показана структурная схема микропроцессорного устройства на МПК серии КР580. Генератор тактовых импульсов (ГТИ) формирует две импульсные последовательности Ф1 и Ф2, необходимые для тактирования работы микропроцессора (рис.1.5).
Импульсы двух последовательностей не должны перекрываться во времени, должны иметь амплитуду 12 В. ПЗУ может быть использовано для хранения программы, ОЗУ - для хранения данных.
Ф1
Ф2
+12 В
+5 В
Земля
-5 В
Ф1
ожидание, готовноть,
разрешение, запрос пре-
подт. захвата рывания,
синхронизация сброс,
захват
Рис.1.4. Структурная схема МПУ
Общий принцип функционирования МПУ заключается в следующем. Из МП на шину адреса выдается адрес очередной команды. Считанная по этому адресу из памяти (например, из ПЗУ) команда поступает на шину данных и принимается в МП, где она исполняется. В счетчике команд МП формируется адрес следующей команды. После окончания исполнения данной команды на шину адреса поступает адрес следующей команды и т.д. В процессе исполнения команд могут потребоваться дополнительные обращения к памяти для вызова в МП дополнительных байтов команды (в случае двух - трехбайтовых команд), операндов или записи в память числа, выдаваемого из МП.
Рассмотрим подробнее процесс выполнения команды. Этот процесс разбивается на циклы, обозначенные М1, М2, М3, М4, М5. В каждом цикле производится одно обращение МП к памяти или УВВ (исключение составляет лишь выполнение команды DAD).
В зависимости от типа, команда может быть выполнена за один цикл (М1), либо за два цикла (М1, М2), либо за три цикла (М1, М2, М3) и т.д. Самые длинные по времени исполнения команды выполняются в пять циклов (М1, ..., М5).
Каждый цикл включает в себя несколько тактов, обозначаемых Т1, Т2, Т3, Т4, Т5. Циклы могут содержать три (Т1 ...Т3), четыре (Т1 ... Т4), либо пять (Т1 ... Т5) тактов. Первые три такта во всех циклах используются для организации обмена с памятью и УВВ, такты Т4 и Т5 (если они присутствуют в цикле) - для выполнения внутренних операций в МП.
0.48 < T < 2.0
Ф1
t
> 60 нс > 70 нс
> 80 нс
Ф2
t
> 0 нс > 220 нс
Рис.1.5. Тактовые последовательности импульсов
На рис. 1.6 показана временная диаграмма цикла из пяти тактов. Отсчет тактов производится от положительных фронтов импульсов Ф1. Рассмотрим цикл М1. В Такте Т1 содержимое счетчика команд выдается на шину адреса, адрес принимается памятью, где начинается процесс чтения байта команды из указанной ячейки.
В такте Т2 проверяется наличие сигнала (уровня логической единицы) на входе Готовность. Этот сигнал подается на вход МП через интервал времени, достаточный для завершения процесса чтения из памяти. Если на входе Готовность сигнал отсутствует (действует уровень логического 0), то МП устанавливается в режим ожидания, в котором каждый следующий такт рассматривается как такт Т2 до тех пор, пока не появится сигнал на входе ‘Готовность’. С приходом этого сигнала МП выходит из режима ожидания и переходит в такт Т3. В этом такте выданный из памяти байт команды с шины данных принимается в МП, где он помещается в
T1 T2 T3 T4 T5
Ф1
Ф2
Синхрон.
Строб
состояния
Рис.1.6. Сигналы синхронизации и строба состояния.
регистр команд. В такте Т4 анализируется принятый байт команды и выясняется, нужны ли дополнительные обращения в оперативную память. Если такие обращения не нужны (команда однобайтовая и операнды находятся в регистрах МП), то в этом же такте, либо с использованием дополнительного такта Т5, выполняется предусматриваемая командой операция.
Если необходимы дополнительные обращения в оперативную память, то после такта Т4 цикл М1 завершается и происходит переход к циклу М2. Пусть, например, команда однобайтовая, но в операции должен участвовать операнд, хранящийся в оперативной памяти. Тогда в цикле М2 происходят следующие процессы : в такте Т1 выдается адрес ячейки памяти, в такте Т2 проверяется наличие сигнала на входе Готовность (сигнал о том, что прошел интервал времени, достаточный для чтения из памяти). С появлением этого сигнала происходит переход к такту Т3, в котором выданное из памяти число с шины данных принимается в МП, и в этом же такте выполняется операция, предусмотренная командой.
При использовании большинства команд в случаях, когда происходят дополнительные обращения к памяти, первый цикл М1 содержит четыре такта, в каждом следующем цикле содержится три такта и происходит одно дополнительное обращение к памяти.
ИНФОРМАЦИЯ О СОСТОЯНИИ МИКРОПРОЦЕССОРА
В каждом цикле в интервале времени от момента положительного фронта импульса последовательности Ф2 в такте Т1 и до момента положительного фронта импульса Ф2 в такте Т2 микропроцессор выдает на выход Синхронизация уровень лог.1 и на шину данных информацию о состоянии. Элемент «И-НЕ» (см.рис.1.4) формирует строб, которым осуществляется прием информации о состоянии микропроцессора с шины данных в регистр состояния (временное положение строба состояния показано на рис.1.6). В табл.1.3 показано назначение отдельных разрядов кода состояния.
Таблица 1.3
Разряд |
Назначение сигнала |
D0 |
Подтверждение прерывания: используется для стробирования команды RST в микропроцессор из устройства, запрашивающего прерывание |
D1 |
Запись-вывод: уровень лог. «0» свидетельствует о том, что в данном цикле будет происходить запись (выдача информации из МП в оперативную память) или вывод (передача информации из МП в УВВ); уровень лог. «1» означает, что происходит чтение (приём из оперативной памяти) или ввод (приём УВВ) |
D2 |
Свидетельствует о том, что в данном цикле на адресной шине установлено содержимое указателя стека |
D3 |
Подтверждение останова: свидетельствует о том, что МП в состоянии останова |
D4 |
Свидетельствует о том, что в данном цикле на адресной шине установлен номер внешнего устройства и осуществляется вывод содержимого аккумулятора на устройство вывода |
D5 |
Свидетельствует о том, что в данном цикле МП принимает первый байт команды |
D6 |
Свидетельствует о том, что в данном цикле на адресной шине установлен номер устройства ввода и осуществляется ввод информации на устройство ввода в аккумулятор МП |
D7 |
Свидетельствует о том, что в данном цикле производится чтение (приём информации из памяти в микропроцессор) |
В табл.1.4 приведено соответствие сигналов состояния отдельным видам циклов.
Таблица 1.4
Вид цикла |
Состояние микропроцессора |
|||||||
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
Выборка первого байта команды |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
Чтение из памяти |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Запись в память |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Чтение стека |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
Запись в стек |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Ввод из УВВ |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Вывод на УВВ |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
Подтверждение прерывания |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
Подтверждение останова |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
Подтверждение прерывания при останове |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА
Система команд МП приведена в ПРИЛОЖЕНИИ 1. Команды разбиты на группы. Каждая группа может содержать несколько типов операций. Каждый тип операции характеризуется некоторой структурой кодовых комбинаций команд, где вместо Di должен быть поставлен адрес регистра и вместо Si - 3-разрядная кодовая комбинация, определяющая конкретный тип команды. В таблице указано число байтов, содержащихся в команде.
ОПЕРАЦИИ ЦИКЛИЧЕСКОГО СДВИГА
Операции циклического сдвига выполняются над содержимым аккумулятора и предусматривают четыре вида сдвига.
1. Сдвиг циклический влево (СЦЛ) без переноса (рис.1.7а): содержимое каждого разряда аккумулятора А передается в соседний старший разряд (А (А)), содержимое старшего разряда передается в младший разряд (А0 (А7)) и одновременно в триггер переноса (Тс (А7)).
2. Сдвиг циклический вправо (СЦП) без переноса (рис.1.7б): содержимое каждого разряда аккумулятора А передается в соседний младший разряд (А (А)), содержимое младшего разряда передается в старший разряд (А7 (А0)) и одновременно в триггер переноса (Тс (А0)).
а)
б)
в)
г)
Рис.1.7. Виды сдвигов: а) влево без переноса; б) вправо без
переноса; в) влево с переносом; г) вправо с переносом;
3. Сдвиг циклический влево с переносом (рис.1.7в): отличие от сдвига без переноса состоит в том, что триггер переноса Тс вводится в замкнутый контур, в котором осуществляется сдвиг; триггер переноса передает свое содержимое в младший разряд аккумулятора (А0 (Тс)) и принимает выдвигаемое из аккумулятора содержимое старшего разряда (Тс (А7)).
4. Сдвиг циклический вправо с переносом (рис.1.7г): отличие от сдвига без переноса в том, что триггер переноса передает свое содержимое в старший разряд аккумулятора (А7 (Тс)) и принимает выданное из аккумулятора содержимое младшего разряда (Тс (А0)).
СТЕК
Стек - память с определенной (упрощенной) формой адресации. В МПУ на МПК КР580 стек организуется следующим образом.
а)
Ячейки ОП
0
1
2 Ячейки
. команд
.
.
(SP)
. Ячейки
. стека
N
N-1
б) Старший байт слова Младший байт слова
Стек Стек Стек
Исходное Запись старшего Запись младшего
состояние байта слова байта слова
SP SP SP
A-1 A-2
A A A-1
A
в)
Стек Стек Стек
Чтение младшего Чтение старшего
байта слова байта слова
SP SP SP
Рис.1.8. Стек: а) организация стека в ОЗУ; б) процессы при записи в стек; в) процессы при чтении из стека;
В оперативной памяти (ОЗУ) команды размещаются в ячейках с младшими, последовательно нарастающими адресами. Стек использует ячейки со старшими адресами и по мере заполнения стека занимаются ячейки с адресами, последовательно убывающими. Таким образом, адреса этих двух частей памяти изменяются навстречу друг другу (рис 1.8,а).
Особенность организации стека состоит в следующем. Указатель стека SP содержит так называемый адрес входа в стек; при чтении из стека производится выборка содержимого ячейки по адресу входа в стек (по адресу, хранящемуся в SP); при записи в стек вводимое в стек число помещается в ячейку с адресом, на единицу меньшим содержимого SP; одновременно с записью и чтением изменяется содержимое SP: при записи уменьшается, а при чтении увеличивается на единицу.
Обмен со стеком производится двухбайтовыми словами, занимающими две ячейки памяти. Пусть указатель стека хранит адрес А. При вводе нового слова его байты должны быть помещены в пару соседних со входом в стек ячеек, имеющих адреса А1 и А2. Таким образом, ввод в стек сводится к следующей последовательности действий: содержимое SP уменьшается на единицу и по образующемуся в SP адресу помещается старший байт вводимого двухбайтового слова; затем содержимое SP вновь уменьшается на единицу и по образующемуся в нем адресу помещается младший байт вводимого слова (рис.1.8,б). Мы видим, что SP каждый раз указывает адрес последней ячейки, занятой под стек - так называемый вход в стек.
Вывод данных из стека производится также двухбайтовыми словами. При этом каждый раз доступна для чтения лишь ячейка, адрес которой содержится в SP . Если указатель стека хранит адрес А, то байты выводимого из стека слова выбираются из ячеек памяти, имеющих адреса А и А+1. Таким образом, выбор слова из стека сводится к такой последовательности действий: чтение младшего байта выводимого слова из ячейки, адресом которой служит содержимое SP, и увеличение содержимого SP на единицу; затем чтение старшего байта выводимого слова по хранящемуся в SP адресу и увеличение содержимого SP на единицу (рис.1.8,в).
О таком принципе функционирования, когда читается последняя помещенная в память информация, говорят как о принципе "последним вошел - первым вышел". Как видим при записи и чтении производится обращение в ячейку, адрес которой связан с содержимым SP . Это упрощает адресацию памяти, но исключает возможность обращения в произвольную ячейку памяти.
1.3. Приемы программирования микропроцессора КР580ВМ80А
1.3.1. Приемы программирования микропроцессора на языке кодовых комбинаций
Будем рассматривать программирование участков алгоритма н содержащих разветвление.
Пример 1. Требуется принять из ОЗУ два числа, хранящихся в соседних ячейках, и, вычислив разность чисел, поместить ее в ОЗУ на место второго числа. Будем считать, что адрес первого числа хранится в паре регистров HL , адрес второго числа на единицу больше содержимого этих регистров. На рис.1.9 приведена схема алгоритма решения данной задачи, построенная в операциях, выполняемых микропроцесссором серии КР580. Рассмотрим операции, выполняемые в каждом из блоков схемы алгоритма.
Блок 1 производит прием в аккумулятор содержимого ячейки ОЗУ (М), адресом которой служит содержимое пары регистров HL; таким образом в регистр А принимается первое из чисел; эта операция может быть выполнена командой пересылки регистр - регистр (мнемоническое обозначение команды MOV A,M).
Блок 2 формирует в паре регистров HL адрес второго числа; эта операция выполняется командой приращения пары регистров (мнемоника команды INX H).
1
2
3
4
Рис.1.9. Схема алгоритма вычитания чисел, хранящихся в памяти
Блок 3 производит вычисление разности содержимого аккумулятора (А) и содержимого ячейки ОЗУ (М), адресом которой служит содержимое пары регистров HL; операция выполняется командой вычитания SUB М. Блок 4 пересылает в память полученную в аккумуляторе разность; выполняющая эту операцию команда имеет мнемонику MOV М,А. В табл.1.5 приведена программа рассматриваемой задачи с представлением команд в кодовых комбинациях.
Команды программы при отсутствии условных и безусловных переходов размещаются в ячейках памяти с последовательно нарастающими адресами. При построении данной программы размещение команд произведено, начиная с ячейки, имеющей адрес 0050.
Таблица 1.5
Адрес команды в ОП (в 16-ричной системе) |
Команда |
Пояснения |
||
кодовая комбинация |
число байтов |
число тактов |
||
0050 0051 0052 0053 |
01 111 110 00 100 011 10 010 110 01 110 111 |
1 1 1 1 |
7 5 7 7 |
Блок 1: A ← (M) Блок 2: НL←(HL)+1 Блок 3: A←(A)-(M) Блок 4: M ← (A) |
Общее число тактов, необходимых для выполнения приведенных четырех команд:
Nт = 7 + 5 + 7 + 7 = 26
и общее время их исполнения:
tисп = NтT = 26 х 0,5 = 13 мкс .
Рассмотрим пример программирования с использованием содержимого триггеров регистра признаков. Пример 2. Требуется выполнить операцию арифметического сдвига вправо над содержимым регистра D. Особенность арифметического сдвига вправо состоит в том, что при сдвиге содержимое старшего (знакового) разряда регистра сохраняется неизменным (рис.1.10,а).
а)
б)
1
2
3
4
Рис.1.10 Арифметический сдвиг вправо: а) принцип; б) схема алгоритма;
Таким образом, при выполнении этой операции требуется предварительно запомнить содержимое старшего разряда и затем, сдвинув вправо содержимое регистра, вписать в его старший разряд цифру, которую ранее запомнили.
Эти действия выполняются в фрагменте программы, схема алгоритма которой представлена на рис.1.10,б. Так как операции сдвига выполняются только над содержимым аккумулятора, блок 1 пересылает в аккумулятор содержимое регистра D. Операции, выполняемые в последующих блоках, иллюстрируются табл.1.6.
Таблица 1.6
(Tc) |
(A) |
Выполняемая операция |
X 1 1 0 |
10110110 01101101 10110110 11011011 |
Исходное состояние Сдвиг влево без переноса Сдвиг вправо с перенсом Сдвиг вправо с переносом |
Выполняется операция циклического сдвига влево без переноса (блок 2). В результате выполнения этой операции знак числа передается в младший разряд аккумулятора и в триггер переноса Тс.
Затем дважды выполняется операция циклического сдвига вправо с переносом (блоки 3 и 4). В результате выполнения первой операции сдвига в аккумуляторе восстанавливается исходное число, а в триггере Тс оказывается продублированным знак числа. После выполнения второй операции сдвига в аккумуляторе оказывается число, являющееся результатом выполнения арифметического сдвига вправо.
В табл.1.7 приведена соответствующая схеме алгоритма на рис.1.10 программа с представлением команд в кодовых комбинациях.
Таблица 1.7
Адрес команды в ОП (в 16-ричной системе) |
Команда в кодовой комбинации |
Пояснения |
0071 0072 0073 0074 … |
01 111 010 00 000 111 00 011 111 00 011 111 … |
Блок 1: A ← (D) Блок 2: СЦЛ без переноса Блок 3: СЦП с переносом Блок 4: СЦП с переносом |
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕНИЙ
Пусть требуется проанализировать содержимое младшего разряда числа, хранящегося в регистре В. Если оно равно 0, то к содержимому регистра В следует прибавить содержимое регистра С; если оно равно единице, то к содержимому регистра В следует прибавить содержимое регистра D.Здесь блоки 1 и 2 осуществляют передачу содержимого младшего разряда регистра В в триггер Тс регистра признаков. Блок 3 реализует разветвление по содержимому триггера Тс: в зависимости от значения содержимого этого регистра в аккумулятор передается либо содержимое регистра С (блок 4) либо содержимое регистра D (блок 5). Блок 6 осуществляет сложение. Блок 7 полученную в аккумуляторе сумму пересылает в регистр В.
1
2
3
‘1’
‘0’
4 5
6
7
Рис.1.11. Схема алгоритма
В табл.1.8 показано размещение в ОП команд, реализующих рассмотренный алгоритм.
Таблица 1.8
Адрес |
Команда |
…
0167
0168
0169
016A
016B
016C
016D
016E
016F
0170
0171
0172
… |
…
Блок 1: A ← (B)
Блок 2: A ← СЦП (A)
Блок 3: УсП при (Тс)=1 к ячейке 0170
Блок 4: A ← (C)
Безусловный переход к ячейке с адресом 0171
Блок 5: A ← (D)
Блок 6: A ← (A) + (B)
Блок 7: B ← (A)
… |
Пусть команда, реализующая операцию блока 1, помещается в ячейку ОП с адресом 0167. При выполнении программы следующая команда будет считываться из соседней ячейки 0168 и в этой ячейке должна храниться команда, реализующая операцию блока 2. Затем из трех очередных ячеек 0169, 016А, 016В должна считываться трехбайтовая команда условного перехода по (Тс) =1 (блок 3): при (Тс)=0 не происходит нарушения естественного порядка следования ячеек, из которых при исполнении программы считываются команды, и очередная команда (блок 4) считываетчя из ячейки с адресом 016С; при (Тс) =1 происходит переход к ячейке 0170 (этот адрес приводится во втором и третьем байтах команды условного перехода), хранящей команду блока 5. Далее, независимо от того выполняется ли команда блока 4 либо команда блока 5, следующим действием должно быть выполнение операции, предусматриваемой блоком 6. После выполнения команды, считываемой из ячейки 0170, очередная команда блока 6 считывается из соседней ячейки 0171. Но если выполняется команда блока 4, то после ее выполнения переход к ячейке 0171 может быть выполнен трехбайтовой командой безусловного перехода, помещаемой в ячейки 016D, 016Е, 016F (во втором и третьем байтах этой команды указывается адрес перехода 0171). Затем из очередной ячейки 0172 считывается команда, выполняющая операцию блока 7.
В таблице 1.9 приведена программа данной задачи.
Таблица 1.9
Адрес команды в ОП |
Команда в кодовой комбинации |
Число байтов |
Пояснения |
… |
… |
… |
… |
0167 |
01 111 000 |
1 |
Блок 1: A ← (B) |
0168 |
00 001 111 |
1 |
Блок 2: A ← СЦП (A) |
0169 016A 016B |
11 011 010 01 110 000 00 000 001 |
3 |
Блок 3: УсП при (Тс)=1 к ячейке (В3В2)=0170 |
016C |
01 111 001 |
1 |
Блок 4: A ← (C) |
016D 016E 016F |
11 000 011 01 110 001 00 000 001 |
3 |
Безусловный переход к ячейке (В3В2)=0171 |
0170 |
01 111 010 |
1 |
Блок 5: A ← (D) |
0171 |
10 000 000 |
1 |
Блок 6: A ← (A) + (B) |
0172 |
01 000 111 |
1 |
Блок 7: B ← (A) |
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ
Рассмотрим выполнение операции кодового умножения двух восьмиразрядных чисел без знака. Пусть множимое хранится в паре регистров DE, где оно занимает младший регистр Е, старший регистр D пары регистров установлен в нуль. Будем считать, что множитель хранится в аккумуляторе А. Шестнадцатиразрядное произведениe будем формировать в паре регистров HL.
Процесс получения произведения организуем следующим образом. Будем анализировать разряды множителя, начиная с его старшего разряда. В соответствии с этим частичные произведения будут формироваться, начиная со старшего частичного произведения. Накопление суммы частичных произведений будем производить в паре регистров HL, т.е. к содержимому предварительно сброшенной в нуль регистровой пары HL вначале прибавим восьмое частичное произведение; затем, сдвинув на один разряд влево содержимое пары регистров HL, прибавим седьмое частичное произведение и т.д., пока не будут просуммированы все частичные произведения.
Таким образом, этот процесс носит циклический характер: цикл, содержащий операции сдвига влево содержимого пары регистров HL, формирования и прибавления к содержимому пары регистров HL очередного частичного произведения, должен быть повторен восемь раз.
Для счета числа повторений цикла организуем счетчик на регистре В. В этот регистр предварительно занесем число 8 и после каждого повторения цикла будем вычитать единицу из содержимого регистра В, проверяя затем, равно ли нулю его содержимое. При достижении нулевого значения производится выход из цикла.
На рис. 1.12 представлена схема алгоритма. Блок 1 производит установку нулевого значения в паре регистров HL. Блок 2 устанавливает в регистре В (счетчике) начальное значение 8. Блок 3 производит сдвиг на один разряд влево содержимого пары регистров HL; эта операция выполняется путем удвоения содержимого этой пары регистров: HL (HL) + (HL). Блок 4 предназначен для анализа очередного разряда множителя; для этого содержимое аккумулятора А сдвигается влево, в результате чего очередной разряд хранимого в нем множителя передается в триггер Тс регистра признаков. Блок 5 производит разветвление по содержимому триггера Тс. При (Тс)=1 в блоке 6 выполняется операция прибавления множимого (содержимого пары регистров DE) к сумме предыдущих частичных произведений в паре регистров HL.
1
2
3
4
5
0
1
6
7
8
0
1
Рис.1.12. Схема алгоритма операции кодового умножения
При (Тс) = 0 операция суммирования не выполняется, по команде условного перехода осуществляется переход к команде блока 7.
Таблица 1.10
Адрес ОП |
Команда |
…
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
125A
125B
125C
125D
125E
125F
|
…
Блок 1: HL ← 0
Блок 2: B ← 8
Блок 3: HL ← (HL) + (HL)
Блок 4: A ← СЦЛ (A) без переноса
Блок 5: УсП при (Тс)=0 к ячейке 125В
Блок 6: HL ← (HL) + (DE)
Блок 7: B ← B – 1
Блок 8: при (Тz)=0 к ячейке 1255 |
В табл. 1.11 приведена программа рассматриваемой операции умножения.
Блок 7 производит вычитание единицы из содержимого счетчика (регистра В), после чего блок 8 выполняет разветвление по содержимому триггера Тс регистра признаков. Если при выполнении команды блока 7 в регистре В образуется 0 значение, в триггере Тz устанавливается значение лог.1, происходит выход из цикла и переход к очередной команде. Если содержимое регистра В не равно нулю, то в триггере Тz устанавливается значение 0 и команда условного перехода производит переход к команде блока 3, вызывая очередное повторение цикла.
Таблица 1.11
Адрес команды в ОП |
Команда в кодовой комбинации |
Число байтов |
Число тактов |
Пояснения |
… 1250 1251 1252 |
… 00 100 001 00 000 000 00 000 000 |
…
3 |
…
10 |
… Блок 1: HL ← (B3 B2) (B3) = 0; (B2) = 0 |
1253 1254 |
00 000 110 00 001 000 |
2 |
7 |
Блок 2: В ← (В2) (В2) = 8 |
1255 |
00 101 001 |
1 |
10 |
Блок 3: HL ← (HL)+(HL) |
1256 |
00 000 111 |
1 |
4 |
Блок 4: А ← СЦЛ (А) без переноса |
1257 1258 1259 |
11 010 010 01 011 011 00 010 010 |
3 |
10 |
Блок 5: УсП при (Тс)=0 к ячейке 125В; (В3)=12 H; (B2)=5B H |
125A |
00 011 001 |
1 |
10 |
Блок 6: HL ← (HL)+(DE) |
125B |
00 000 101 |
1 |
5 |
Блок 7: В ← (В) – 1 |
125С 125D 125E |
11 000 010 01 010 101 00 010 010 |
3 |
10 |
Блок 8: УсП при (Tz)=0 к ячейке 1255 (В3)=12 H; (B2)=55 H |
… |
… |
… |
… |
… |
В табл. 1.10 показано размещение команд в ячейках ОП.В цикле выполняются команды блоков 3... 8. Определим количество тактов Nт1, требуемое для однократного прохождения цикла алгоритма. При этом будем полагать, что во всех разрядах множителя содержатся единицы (случай с точи зрения быстродействия наиболее тяжелый).
Nт1 = 10 + 4 + 10 + 5 = 49 тактов.
Число тактов при восьмикратном прохождении цикла:
Nт = 8 х Nт1 = 8 х 49 = 392 такта.
1.3.2. Программирование на языке Ассемблера
До сих пор, записывая команды,, мы пользовались языком кодовых комбинаций, единственно понятным для микропроцессора. Пользование этим языком вызывает трудности, связанные, во-первых, с необходимостью записи громоздких, труднозапоминаемых двоичных кодовых комбинаций (использование для этих кодовых комбинаций представления в восьмиричной либо шестнадцатеричной системах счисления не приводит к существенному облегчению записи программы), во-вторых, сложностью поиска ошибок в составленной программе из-за того, что записанная с помощью кодовых комбинаций программа оказывается трудно читаемой, плохо обозримой, и в-третьих трудностью внесения изменений в составленную программу.
Трудности программирования уменьшаются при использовании языка Ассемблера. В этом языке вместо кодовых комбинаций используется мнемоническая форма записи операций, выполняемых в БИС микропроцессора. Такой мнемонической записью (в виде сочетания букв, взятых из соответствующих английских слов) представляют вид выполняемой операции, операнды и адреса. Каждой команде на языке Ассемблера соответствует команда на языке кодовых комбинаций.
Язык Ассемблера упрощает запись команд, обеспечивает лучший обзор программы, облегчает поиск в ней ошибок, обеспечивает простоту внесения исправлений в записанную на этом языке программу.
Перед исполнением программа должна быть переведена с языка Ассемблера на язык кодовых комбинаций и в таком виде помещена в память микропроцессорного устройства. Такой перевод осуществляется с помощью программы трансляции, называемой Ассемблером. Языком Ассемблера можно пользоваться для программирования и в тех случаях, когда отсутствует программа для трансляции (отсутствует Ассемблер). Выполнение трансляции в этом случае производится вручную (такая трансляция называется ручным ассемблированием).
Язык Ассемблера (так же, как язык кодовых комбинаций) индивидуален для каждого микропроцессорного комплекта, т.е. каждый микропроцессорный комплект имеет свой язык Ассемблера, отличный от языков Ассемблера других комплектов.
Программа на языке Ассемблера представляется в виде последовательности предложений, каждое из которых занимает отдельную строку. В табл.1.12 показана запись на языке Ассемблера той же программы, которая на языке кодовых комбинаций приведена в таблице 1.9.
Каждое предложение языка Ассемблера содержит четыре фиксированных поля: поле метки, поле кода, поле операнда и поле комментария.
Поле метки. Если предложение снабжается именем, то оно записывается в поле метки и после имени ставится двоеточие. Имя строится в виде произвольно выбранной последовательности букв латинского алфавита и цифр, причем первым символом в имени должна быть буква. В приведенной табл.1.12 в программе использованы имена М1 и М2. Обычно именами снабжаются предложения, на которые производится условный либо безусловный переход. Одно и тоже имя не может встречаться в поле метки более одного раза. В противном случае возникает неясность, к какому предложению должен производится переход по соответствующим командам условного и безусловного перехода.
Таблица 1.12
Метка |
Код |
Операнд |
Комментарии |
M1: M2: |
MOV RRC JC MOV JMP MOV ADD MOV |
A , B
M1 A , C M2 A , D B B , A |
; Блок 1: А ← (В) ; Блок 2: А ← СЦП (А) ; Блок 3: УсП при (Тс)=1 ; Блок 4: А ← (С) ; Безусловный переход ; Блок 5: А ← (D) ; Блок 6: А ← (А) + (В) ; Блок 7: В ← (А) |
Поле кода. В этом поле записывается мнемоническое обозначение кода операции, приводимое в системе команд микропроцессора.
Поле операнда. В поле операнда приводятся участвующие в операции числа (непосредственные данные), указания об источниках и приемниках данных, участвующих в операции; в предложениях условных и безусловных переходов в этом поле указывается имя (метка) предложения, на которое осуществляется переход. Числовые данные могут представляться в различных системах счисления. Для указания выбранной для представления числа системы счисления после шестнадцатеричного числа ставится символ H (а если число начинается с буквы А, ...F, то перед числом ставится цифра 0), после десятичного числа можно ставить символ D (либо не записывать никакого символа); восьмиричное число заканчивается символом Q, двоичное - символом В.
Например, пусть требуется загрузить в регистры Е, С, D соответственно числа 101101B, 217Q, 37D и в пару регистров HL число А195H. Указанные действия описываются следующими предложениями на языке Ассемблера.
Метка |
Код |
Операнд |
Комментарии |
|
MVI MVI MVI LXI |
E, 101101B C, 217Q D, 37 H, 0A195H |
; загрузка регистра Е ; загрузка регистра С ; загрузка регистра D ; загрузка пары регистров HL |
Вместо идентификаторов (имен) внутренних регистров МП B, C, D, E, H, L, M, A допустимо применять их адреса в любой системе счисления. Например, приведенные выше действия можно записать следующими предложениями:
Метка |
Код |
Операция |
Комментарии |
|
MVI MVI MVI LXI |
3, 101101B 1, 217Q 10В, 37 100В, 0A195H |
; загрузка регистра Е ; загрузка регистра С ; загрузка регистра D ; загрузка пары регистров HL |
Здесь в первом и втором предложениях адреса регистров Е (011B) и С (001B) представлены в десятичной системе счисления; в третьем и четвертом предложениях в поле операнда адреса регистров D и Н записаны в двоичной системе счисления.
В качестве операндов могут быть указаны счетчик команд идентификатором РС и двухбайтовое содержимое аккумулятора вместе с регистром признаков - идентификатором PSW. В командах ввода (IN) и вывода (OUT) в поле операнда указывается номер устройства, с которым процессор обменивается данными.
В поле операнда допускается использование выражений, которые строятся путем связывания рассмотренных выше данных символами арифметических операции: +(сложение), - (вычитание), / (деление с выделением целой части частного), MOD (целый остаток от деления) и символами логических операций : NOT (инвертирование всех разрядов), AND (поразрядная конъюнкция), OR (поразрядная дизъюнкция), XOR (поразрядное суммирование по модулю 2), SHR и SHL (сдвиг первого операнда соответственно вправо и влево на число разрядов, задаваемое значением второго операнда; освобождающиеся при сдвиге разряды заполняются нулями).
Однако использование выражений лишает программу на языке Ассемблера наглядности, простоты ее чтения. Поэтому выражения при программировании на языке Ассемблера применяются редко.
Поле комментария. Начинается символом; (точка с запятой). Оно служит для записи любых пояснений смысла выполняемых действий, которые смогли бы облегчить чтение программы. Под комментарий можно выделять полные строки, начиная их с символа ;. Приведенная в комментарии запись нужна лишь программисту, при трансляции она игнорируется Ассемблером.
ПРИМЕРЫ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ
В табл.1.13 показана программа умножения, представляющая собой перевод на язык Ассемблера программы, приведенной в кодовых комбинациях в табл.1.11.
Таблица 1.13
Метка |
Код |
Операнд |
Комментарий |
LOOP2:
LOOP1: |
LXI MVI DAD RAL JNC DAD DCR JNZ |
H,0 B,8 H
LOOP1 D B LOOP2 |
; Блок 1: Обнуление HL ← 0 ; Блок 2: Подготовка счётчика ; Блок 3: Сдвиг влево Н ; Блок 4: Сдвиг влево А ; Блок 5: Условный переход ; Блок 6: Суммирование ; Блок 7: Счёт ; Блок 8: Условный переход |
Сложение многобайтных чисел. Пусть требуется сложить два четырехбайтных числа, каждое из которых занимает в ОП четыре ячейки с последовательно нарастающими адресами; адреса младших байтов первого и второго числа хранятся соответственно в парах регистров ВС и HL . Результат сложения необходимо поместить в память на место второго слагаемого.
Принцип сложения таких многобайтных чисел состоит в том, что в начале в МП вызываются младшие байты слагаемых. Байты суммируются, результат суммирования помещается в память на место младшего байта второго слагаемого; возникающий в процессе суммирования перенос из старшего разряда запоминается в триггере Тс регистра признаков. Затем в парах регистров ВС и HL формируется адрес вторых байтов слагаемых, которые затем вызываются в МП и суммируются вместе с хранящимися в триггере Тс переносом, возникшим при сложении байтов, и т.д.
1
2
3
4
5
6
7
8
9
Рис. 1.13 Схема алгоритма многобайтового сложения
Выполнение операции завершится после четырехкратного повторения указанных действий. На рис.1.13 приведена схема алгоритма и в табл. 1.14 - программа на языке Ассемблера.
Таблица 1.14
Метка |
Код |
Операнд |
Комментарий |
CYCLE:
K1: |
ANA MVI LDAX ADC MOV DCR JZ INX INX JMP … |
A D,4 B M M,A D K1 B H CYCLE … |
; Установка Тс ← 0 ; Подготовка счётчика ; Блок 3 ; Блок 4 ; Блок 5 ; Блок 6 ; Блок 7 ; Блок 8 ; Блок 9 ; безусловный переход … |
Программа деления. Операция алгебраического деления чисел содержит действия, связанные с определением знака частного, и действия, связанные с определением модуля частного и положительного остатка. Знак частного может быть определен выделением из чисел содержимого знаковых разрядов, затем суммированием их по модулю 2 и введением в знаковый разряд частного после того, как будет найден модуль частного. Ниже будем рассматривать наиболее сложную часть алгоритма деления, связанную с нахождением модуля частного.
Пусть делимое и делитель - целые положительные числа; делимое имеет 2n разрядов, делитель n разрядов, их старшие разряды - знаковые и содержат 0.
Рассмотрим алгоритм деления методом с восстановлением остатка. В качестве примера на котором будет иллюстрирован алгоритм деления, выберем деление числа 37 на 7. При этом должно получиться частное 5 и остаток 2. Представим делимое 8-разрядным двоичным числом 00100101В , делитель - 4 -разрядным двоичным числом 0111В .
Ниже показан процесс деления:
Делимое 00100101 011 делитель
Сдвиг влево 0100101
Вычитание 0111 0 1 0 1 частное
Отрицательный остаток 1 ← 1101101
Сложение 0111
Восстановленный остаток 1← 0100101
Сдвиг влево 100101
Вычитание 0111
Положительный остаток 001001
Сдвиг влево 01001
Вычитание 0111
Отрицательный остаток 1 ← 11011
Сложение 0111
Восстановленный остаток 1← 01001
Сдвиг влево 1001
Вычитание 0111
Положительный остаток 0010 остаток
Процесс деления сводится к следующей циклически повторяемой последовательности действий. В первом повторении цикла делимое, а в последующих повторениях цикла - остаток сдвигаются на один разряд влево и затем из него вычитается делитель; если полученный новый остаток - положительное число, то в очередной разряд частного (начиная с его старшего разряда) записывается 1; если новый остаток - отрицательное число, то в разряд частного заносится 0, а к остатку прибавляется делитель, и таким образом восстанавливается предыдущий сдвинутый остаток. Эти действия циклически повторяются n раз (n - число разрядов делителя). В результате образуется частное, а последний остаток является результирующим остатком операции деления.
Для построения программы выполнения операции деления в МП примем n = 8. При этом, делимое будет иметь 2n = 16 разрядов (2 байта) и для своего хранения потребует пары регистров. Используем для хранения делимого пару регистров ВС. При каждом сдвиге влево содержимого пары регистров ВС в освобождающийся правый разряд будем заносить значение очередного разряда частного. Таким образом, после окончания выполнения операции в регистре С образуется частное. Так как действия вычитания (или сложения) делителя должны производится над старшими восемью разрядами остатка, то эти операции будут выполняться над содержимым регистра В, а после окончания операции деления его содержимое будет результирующим остатком операции. Для хранения однобайтового делителя используем регистр D. На регистре E,предварительно загружаемом числом 8, построим счетчик числа повторений цикла.
На рис 1.14 показана схема алгоритма. Поясним некоторые ее особенности. Блок 2 осуществляет сброс в 0 содержимого триггера Тс регистра признаков, что может быть обеспечено выполнением любой логической операции АЛУ. Для выполнения сдвига влево содержимого пары регистров ВС использованы блоки 3 ... 8. Вначале содержимое регистра С передается в аккумулятор А, где оно сдвигается, после чего возвращается в регистр С. При сдвиге в младший разряд принимается из триггера Тс сформированное в нем значение очередного разряда частного, выдвигаемое содержимое старшего разряда принимается в триггер Тс, откуда оно при выполнении сдвига содержимого регистра В будет принято в младший разряд.
Далее аналогичные действия производятся с содержимым регистра В. При выполнении, в блоке 9, вычитания в случае отрицательного остатка возникает перенос 1 из старшего разряда, фиксируемый в триггере Тс, в случае положительного остатка этот перенос равен 0. Таким образом, значение очередного разряда частного может быть получено инвертированием содержимого триггера Тс, что и выполняет блок 10. Блоки 11, 12 выполняют действия, связанные с восстановлением положительного остатка. Блок 13 организует счет числа повторений цикла. После выхода из цикла в блоках 15 ... 18 производится передача в регистр В результирующего остатка операции деления и сдвиг содержимого регистра С с записью последнего сформированного в триггере Тс разряда частного.
11 1
1
0
2 12
3 13
4 0 14
1
5 15
6 16
7 17
8 18
9
10
Рис.1.14. Схема алгоритма деления
В табл.1.15 приведена записанная на языке Ассемблера программа, соответствующая рассмотренной схеме алгоритма операции деления.
Таблица 1.15
Метка |
Код |
Операнд |
Комментарии |
M2:
M1: |
MVI ANA MOV RAL MOV MOV RAL MOV SUB CMC JC ADD DCR JNZ MOV MOV RAL MOV |
E,B A A,C
C,A A,B
B,A D
M1 D E M2 B,A A,C
C,A |
; Блок 1 ; Блок 2 ; Блок 3 ; Блок 4 ; Блок 5 ; Блок 6 ; Блок 7 ; Блок 8 ; Блок 9 ; Блок 10 ; Блок 11 ; Блок 12 ; Блок 13 ; Блок 14 ; Блок 15 ; Блок 16 ; Блок 17 ; Блок 18 |
ПОДПРОГРАММА
Память микро-ЭВМ, построенной на основе МПК К580, может иметь не более 65536 однобайтных ячеек. Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограммы - последовательности команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами.
Для вызова подпрограммы и возврата из нее используются команды CALL<A2><A1> и RET.
Команда CALL<A2><A1> загружает в программный счетчик МП содержимое байтов <А2><А1>, записанных в последующих двух адресах памяти после адреса, где записан код команды CALL (CD). Содержимое байта <А2> записывается в младший регистр PCL программного счетчика, а третий байт <А1> команды в старший регистр PCH программного счетчика. Предварительно из программного счетчика извлекается адрес и подается в стек.
Команда возврата из подпрограммы RET, которая помещается в ее конце, извлекает из стека последнюю запись и помещает ее в программный счетчик.
Автоматическое сохранение и восстановление адреса основной программы при выполнении подпрограмм позволяет сделать подпрограммы вложенными, т.е. осуществить вызов одной подпрограммы из другой. Уровень вложенности для данной микро-ЭВМ определяется лишь размером стека.
Алгоритм работы простой подпрограммы временной задержки приведен на рис.1.15. Общее время задержки вычисляется по формуле
Td = t1 + (t2 + t3 +t4)N1 + t5 ,
где N1 - количество циклов, первоначально записанное в счетчике.
В качестве счетчика выбран регистр В. N записывается в регистр В из регистра С;
t1...t5 - время выполнения команд MOV, NOP, DCR, JNZ и RET.
Нет
Да
Рис.1.15. Алгоритм простой подпрограммы временной задержки
Ниже, в таблице 1.16., приведена подпрограмма временной задержки.
Таблица 1.16
Адрес |
Машинный код |
Метка |
Мнемокод |
Комментарии |
0900
0901
0902
0903
0906
|
41
00
05
С2 01 09
С9
|
DLY |
MOV B,C
NOP
DCR B
JNZ DLY
RET
|
Запись числа из регистра С в регистр В Нет операции
Уменьшить число В регистра В на 1 Если число, записанное в регистре В, не равно 0, то идти на DLY |
Команда NOP нужна для увеличения времени выполнения цикла, а следовательно, и общей задержки. Вместо команды NOP может быть записана любая последовательность команд, выполнение которых не изменяет содержимого регистров микропроцессора. Время записи числа N в регистр В и возврата из подпрограммы t1 + t5 фиксировано и в цикл не входит. Минимальная задержка для приведенной подпрограммы определяется при N1 = 01 и равна:
Td min = t1 + t2 + t3 + t4 + t5 .
Максимальная задержка имеет место при N1 = FF и вычисляется по формуле:
Td max = t1 +(t2 + t3 + t4) x 256 + t5.
ВВОД-ВЫВОД ДАННЫХ
К командам ввода вывода МП БИС КР580ИК80 относятся команды IN<A1> и OUT<A1>. При выполнении команды IN<A1> МП считывает число из входного устройства с адресом (А1) и записывает его в аккумулятор. При выполнении команды OUT<A1> МП записывает число из аккумулятора в выходное устройство с адресом (А1). Так как адрес устройства указывается в одном байте, то с помощью этих команд микро-ЭВМ может обмениваться информацией не более чем с 256 внешними устройствами.
В качестве простейших устройств ввода-вывода могут использоваться 8-разрядные регистры (например, многорежимный буферный регистр (МБР) К581ИР12).
В качестве устройства ввода-вывода могут применяться и более сложные схемы, например, программируемые устройства ввода-вывода информации в параллельном коде (КР580ВВ55).
В качестве устройства вывода информации, удобного для восприятия, часто используется дисплей. Рассмотрим метод подключения дисплея, состоящего из шести ячеек (семисегментных индикаторов), представляющих собой восемь светодиодов с общим анодом в одном корпусе. Каждый индикатор (рис.1.16,а) имеет семь светодиодов для отображения сегментов цифр, а восьмой светодиод отображает точку (рис.1.16,б).
a
b
a
c
d
f g b
e
f
e d c
g
h
.h
a) б)
Рис.1.16. Внешний вид (а) и схема семисегментной светодиодной матрицы (б).
Пронумеруем ячейки дисплея так, как показано на рис.1.17.
Рис.1.17. Нумерация ячеек дисплея.
Для уменьшения схемотехнического обеспечения, необходимого для подключения дисплея к микро-ЭВМ, часто применяют мультиплексный режим работы индикаторов. При этом для вывода на дисплей информации используется БИС КР580ВВ55. Три восьмиразрядных канала БИС КР580ВВ55 работают в режиме 0 : Каналы А и В настраиваются на выдачу информации для управления работой дисплея, а канал С - на прием информации для подключения клавиатуры.
К командам ввода-вывода К580 относятся команды IN<B2> и OUT<B2>. При выполнении команды IN<B2> МП считывает число из входного устройства с адресом, указанным во втором байте команды В2, и записывает его в аккумулятор. При выполнении команды OUT<B2> МП записывает число из аккмулятора в выходное устройство с адресом, заданном во втором байте команды В2. Так как адрес устройства указывается одним байтом, то с помощью этих команд МП может осуществлять обмен информацией не более чем с 256 внешними устройствами.
Шинные формирователи КР580ВА86 и КР580ВА87.
На рис. 3.34 показана логическая схема формирователя КР580ВА86, осуществляющего передачу 8-разрядных данных. На рисунке подробно изображена схема лишь одного разряда, схемы остальных разрядов аналогичны. В цепи передачи включены два повторителя, имеющие три состояния. При этом если один из повторителей находится в включенном состоянии, другой будет находится в выключенном (третьем) состоянии. Таким образом, если повторитель 1 установлен в включенное состояние, то повторитель 2 оказывается в выключенном состоянии и передача (в разряде, схема которого на рисунке представлена в развернутом виде) будет осуществляться через повторитель 1 в направлении от вывода 1 к выводу 19 (от А0 к В0). Если переключить повторители в обратное состояние, установив во включенное состояние повторитель 2, повторитель 1 окажется в выключенном состоянии и передача будет происходить через повторитель 2 в направлении от вывода 19 к выводу 1 (от В0 к А0), т.е. в обратном направлении.
Управление состоянием повторителей осуществляется элементами ИЛИ-НЕ 1 и 2 с помощью управляющих сигналов ВК и Т. Если на входе ВК установлен высокий уровень лог.1, то независимо от значения сигнала Т на выходах элементов ИЛИ-НЕ устанавливается низкий уровень лог.0 и во всех разрядах оба повторителя оказываются установленными в выключенное состояние, и не происходит передачи информации ни в прямом, ни в обратном направлениях. При комбинации ВК=0 и Т=1 происходит передача 8-разрядных данных в направлении от А к В. При комбинации ВК=0 и Т=0, наоборот, происходит передача 8-разрядных данных от стороны В к стороне А. Таким образом, шинный формирователь обеспечивает управляемую двунаправленную передачу 8-разрядных данных в соответствии с табл. 3.20.
Таблица 3.20.
Значения управляющих сигналов |
Направление передачи информации |
|
ВК |
Т |
|
0 0 1 |
0 1 Х |
От стороны В к стороне А От стороны А к стороне В Передача отсутствует |
Выходы В (при передаче в направлении от А к В) имеют большую нагрузочную способность, чем выходы А (когда происходит передача в направлении от В к А). Очевидно, шинных формирователь должен
системным шинам адреса и данных.
На рис. 3.35 приведена схема шинного формирователя КР580ВА87. Ее отличие от КР580ВА86 состоит лишь в том, что включенные в разряды повторители имеют инвертирующие выходы и при передаче происходит инвертирование передаваемых данных. В остальном работа этой микросхемы аналогична работе рассмотренной выше микросхемы КР580ВА86.
Буфер шины адреса. Шина адреса имеет 16 разрядов, и так как шинный формирователь содержит 8-разрядный канал, для построения буфера потребуются 2 микросхемы. Их включение показано на рис.3.36.
Шина адреса однонаправленная, в качестве входного канала в шинных формирователях выбран канал А, в качестве выходного – канал В. Передача информации от А к В в шинном формирователе обеспечивается при напряжении уровня лог.1 на входе Т, поэтому выводы Т микросхем шинных формирователей подключены к источнику питающего напряжения +5 В. К выводам ВК микросхем подается формируемый МП сигнал Подтверждение захвата. Передача адреса с выхода МП через шинный формирователь происходит при низком уровне сигнала Подтверждение захвата. В режиме захвата МП выдает сигнал Подтверждение захвата высокого уровня, этим сигналом выходы шинных формирователей переводятся в высокоомное (выключенное) состояние, МП оказывается отключенным от шины адреса. Элемент ¼ К155ЛИ1 используется для увеличения нагрузочной способности выхода Подтверждение захвата.
Буфер шины данных. Шина данных имеет 8 разрядов с двунаправленной передачей информации. Для построения буфера достаточно одной микросхемы шинного формирователя, включенной по схеме с управляемой двунаправленной передачей информации. Схема включения шинного формирователя показана на рис. 3.37.
Управление направлением передачи осуществляется с помощью сигнала Прием, формируемого микропроцессором. При высоком уровне сигнала Прием обеспечивается передача от шины данных к микропроцессору, при низком уровне – в обратном направлении. Шинный формирователь может выполнять функции буфера между шиной данных и устройствами ввода-вывода.
2. ЗАДАНИЕ К КУРСОВОЙ РАБОТЕ И МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЕГО ВЫПОЛНЕНИЮ.
2.1. Задание и варианты к курсовой работе.
В курсовой работе необходимо спроектировать систему тестирования микросхем (МС) ТТЛ серии К155, выпускаемых промышленностью, которая автоматически обнаруживает внутренние повреждения МС.
МП формирует входные сигналы в соответствии с таблицей истинности и подает их на входы исследуемой МС, затем считывает выходные сигналы и сравнивает их с табличными. Результат проверки отображается на индикаторах.
Требуется:
1. Исходя из задания составить схему организации ЗУ.
2. Спроектировать схему подключения заданной (согласно варианту) МС к процессору. Условные графические обозначения МС ТТЛ серии 155 даны в приложении 2.
3. Составить таблицу истинности логического устройства заданной МС. ( Ц и ВТ ч.1. [5]).
4. Разработать блок-схему и программу работы микропроцессорного устройства (МПУ).
5. Выполнить размещение программы в оперативной памяти (ОП), начиная с ячейки с символическим адресом ВEG. Подпрограмму опроса клавиатуры разместить в ОП, начиная с адреса с символическим наименованием «ОК». Подпрограммы высвечивания символов отображения рабочей и нерабочей МС разместить в ОП, начиная с ячейки с символическим наименованием «ВРМ» и «ВНМ», соответственно.
Варианты индивидуальных заданий приведены в таблицах 2.1, 2.3, 2.4, 2.5.
Рекомендуемые темы Курсовых Работ.
1. Автоматическое определение и контроль скорости движения, расхода горючего и его запаса.
2. МПУ используется в качестве синтезатора звуков, при нажатии на одну из 8 клавиш синтезатор должен выдавать звуковой сигнал с соответствующей частотой.
3. Цифровой вольтметр.
4. Электронные часы - будильник.
5. Применение МП в таксометре автомобиля.
6. Генератор синусоидальных колебаний с программируемой перестройкой частоты.
7. Генератор кода Морзе.
8. Автоматизированная проходная.
9. Система регулирования движения лифта.
10. Универсальный цифровой частотомер.
11. Таймер - электронное реле времени.
12. Генератор настройки музыкальных инструментов.
13. Разработка МПУ предназначенного для проверки в условиях серийного производства модулей ОЗУ емкостью 1 КБайт (1024 х 8).
14. Устройство автоматического контроля параметров сетевого напряжения.
15. Логический анализатор для проверки работоспособности МС серии К155.
Варианты индивидуальных заданий организации ЗУ.
Табл. 2.1
N варианта |
Емкость ЗУ |
Тип микросхемы |
Организация ячеек МС (бит) |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
512 х 8 4096 х 8 2048 х 8 4096 х 8 16384 х 8 32768 х 8 16384 х 8 8192 х 8 32768 х 8 4096 х 8 128 х 8 32768 х 8 4096 х 8 8192 х 8 32768 х 8 65536 х 8 2048 х 8 32768 х 8 4096 х 8 8192 х 8 |
К155РУ2 К155РУ5 К500РУ415 К541РУ2А КР537РУ3А КР132РУ6А КР537РУ10 К537РУ4А КР537РУ17 К537РУ8А К500РУ145 К53714А КР541РУ2А КР537РУ8А КМ132РУ5А К565РУ5В К537РУ13А КМ132РУ5А КР132РУ3А КР132РУ8А |
64 х 4 256 х 1 1024 х 1 1024 х 4 4096 х 1 16384 х 1 2048 х 8 4096 х 4 8192 х 8 2048 х 8 16 х 4 4096 х 8 1024 х 4 2048 х 8 4096 х 1 65536 х 1 1024 х 4 4096 х 1 1024 х 1 1024 х 4 |
Варианты индивидуальных заданий типа исследуемой МС.
Табл.2.3
Вариант N |
МС |
Вариант N |
МС |
0 1 2 3 4 5 6 7 8 9 |
К155ИД4 К155ЛЕ1 К155ИД1 К155ИД3 К155ЛИ4 К155ЛА1 К155ЛА3 К155ЛА4 К155ЛР1 К155ЛИ1 |
10 11 12 13 14 15 16 17 18 |
К155ЛР3 К155ТМ5 К155ЛР5 К155КП1 К155КП2 К155КП5 К155КП7 К155ЛЕ4 К155ЛЕ5 |
Варианты индивидуальных заданий для выбора клавиши запуска программы и высвечивания символов отображения работоспособности МС.
Табл.2.4
Вариант N |
Клавиша |
Вариант N |
Рабочая МС |
Не рабочая МС |
0 1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 7 8 9 F |
0 1 2 3 4 5 6 7 8 9 |
РАБ DA 1 РБ НН С7 АВ ЕВ LF 9H |
HP HE 0 НРБ 00 14 SS 0A 37 bLF |
Варианты индивидуальных заданий для размещения в памяти программы и подпрограмм.
Табл.2.5
Вариант N |
BEG |
OK |
BPM |
BHM |
0 1 2 3 4 5 6 7 8 9 |
0800 0325 0850 0875 08A0 08C5 08F0 0900 0925 0950 |
0900 0940 0980 09C0 0A00 0A2A 0A45 0A77 0ABB 0AE6 |
0920 0960 09A0 09E0 0A15 0A3F 0A5B 0A8C 0ACC 0A20 |
0940 0980 09C0 0A00 0A2A 0A45 0A6F 0AA5 0AE5 0815 |
ПРИЛОЖЕНИЕ 1
Система команд микропроцессора КР580ВМ80А.
Основные обозначения.
Таблица 1.1.
N коман-ды |
Мнемони-ческое обозначе-ние |
Формат команды (байты) |
Структура кода команды |
Описание команды |
||||
Команды пересылки кодов |
||||||||
1.
2.
3.
4.
5.
6.
7.
8.
9.
10. |
MOV r1,r2
MOV r,M
MOV M,r
MVI r,число
MVI М,число
LXI rp,число
LDA адрес
STA адрес
LDAX rp
STAX rp |
1
1
1
2
2
3
3
3
1
1 |
01DDDSSS
01DDD110
01110DDD
00DDD110
00110110
0rp0001
00111010
00110010
0rp1010
00rp0010 |
Содержимое регистра r2 передать в r1 r1<-(r2).
r<-(M). В регистр, заданный полем D, передается содержимое памяти, адрес которой указан парой регистров HL
M<-(r). Содержимое регистра r, заданного полем D, передается в память,адрес которой указан парой регистров HL
r<-(B1). Второй байт коман-ды записывается в регистр, указанный полем D.
M<-(B1). Второй байт команды записывается в ячейку памяти, указанную парой регистров HL
rl<-(B1), rh<-(B2). Втрой байт команды пересылается в младший rl регистр пары rp, третий байт в старший регистр rh пары rp.
A<-[(B2)(B1)]. Содержимое ячейки с адресом указанным B2,B1 загружается в регистр [(B2)(B1)]<-(A).
Содержимое А пересылается в ячейку ЗУ, указанную В2 и В1.
А<-[(rp)]. Загрузить А содержимым ячейки ЗУ, указанной регистровой парой rp.
[(rp)]<-(A). Содержимое А запоминается в ЗУ по адресу, указанному парой регистров rp. |
||||
Команды арифметических операций |
||||||||
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22. |
ADD r
ADD M
ADI число
ADC r
ADC M
ACI число
SUB r
SUB M
SUI число
SBB r
SBB M
SBI число
|
1
1
2
1
1
2
1
1
2
1
1
2 |
10000SSS
10000110
11000110
10001SSS
10001110
11001110
10010SSS
10010110
11010110
10011SSS
10011110
11011110 |
A<-(A)+(r). Содержимое А складывается с содержимым одного из регистров и результат записывается в А.
A<-(A)+(M). Адрес второго операнда указан в регистровой паре HL.
A<-(A)+число. Cодержимое аккумулятора сложить с числом.
A<-(A)+(r)+(Tc). Содержимое А складывается с содержимым одного из регистров и переносом, результат записывается в А.
A<-(A)+(M)+(Tc). Содержимое А складывается с содержимым ячейки памяти и переносом, результат записывается в А.
A<-(A)+(число)+(Tc). Содержимое А складывается с числом и переносом, результат записывается в А.
A<-(A)-(r). Вычесть содержимое регистра r из содержимого аккумулятора.
A<-(A)-(M). Из содержимого аккумулятора вычесть содержимое ячейки памяти, указанной парой регистров HL.
A<-(A)-число. Из содержимого аккумулятора вычесть число. A<-(A)-(r)-(Tc). Вычитание с заемом.
A<-(A)-(r)-(Tc). Из аккумулятора вычесть содержимое регистра с заемом.
A<-(A)-(М)-(Tc). Из аккумулятора вычесть содержимое ячейки памяти с заемом.
A<-(A)-(число)-(Tc). Из аккумулятора вычесть число с заемом. |
||||
Положительное/отрицательное приращение |
||||||||
23.
24.
25.
26.
27.
28.
29.
30.
|
INR r
INR M
DCR r
DCR M
INX rp
DCX rp
DAD rp
DAA
|
1
1
1
1
1
1
1
1 |
00DDD100
00110100
00DDD101
00110101
00RP0011
00RP1011
00RP1001
00100111 |
r<-(r)+1. Увеличить на 1 содержимое регистра. M<-(M)+1. Увеличить на 1 содержимое ячейки памяти. r<-(r)-1. Уменьшить на 1 содержимое регистра. M<-(M)-1. Уменьшить на 1 содержимое ячейки памяти. rp<-(rp)+1. Увеличить на 1 содержимое пары регистров. rp<-(rp)-1. Уменьшить на 1 содержимое пары регистров. ((H)(L))<-(H)(L)+(rh)(rl). Сложить содержимое двух пар регистров. Выполнить десятичную коррекцию содержимого аккумулятора. |
||||
Команды логических операций |
||||||||
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47. |
ANA r
ANA M
ANI число
XRA r
XRA M
XRI число
ORA r
ORA M
ORI число
CMP r
CMP M
CPI число
RLC
RRC
RAL
RAR
CMA |
1
1
2
1
1
2
1
1
2
1
1
2
1
1
1
1
1 |
10100SSS
10100110
11100110
10101SSS
10101110
11101110
10110SSS
10110110
11110110
10111SSS
10111110
11111110
00000111
00001111
00010111
00011111
00101111 |
A<-(A) (r). Логическое умножение с регистром r.
A<-(A) (M). Логическое умножение с памятью.
A<-(A) (число). Логическое умножение с числом.
A<-(A)Å(r). Сложение по модулю 2 (исключающее ИЛИ) с регистром r.
A<-(A)Å(M). Исключающее ИЛИ с ячейкой памяти.
A<-(A)Å(число). Исключающее ИЛИ с числом.
A<-(A)(r). Логическое сложение с регистром r.
A<-(A) (M). Логическое сложение с памятью.
A<-(A) (число). Логическое сложение с числом.
(A)<>(r). Содержимое аккумулятора сравнить с содержимым регистра.
(A)<>(M). Содержимое аккумулятора сравнить с памятью.
(A)<>(число). Сравнить с числом.
Циклический сдвиг влево.
Циклический сдвиг вправо.
Сдвиг влево.
Сдвиг вправо.
A<-НЕ (A). Инвертировать содержимое аккумулятора. |
||||
Команды переходов
|
||||||||
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58. |
JMP адрес
JC адрес
JNC адрес
JZ адрес
JNZ адрес
JP адрес
JM адрес
JPE адрес
JPO адрес
CALL адрес
RET |
3
3
3
3
3
3
3
3
3
3
1 |
11000011
11011010
11010010
11001010
11000010
11110010
11111010
11101010
11100010
11001101
11001001 |
Безусловный переход PC<-(B3)(B2)
Если произошло переполнение (Tc=1), то PC<-(B3)(B2), иначе PC<-PC+3.
Переход по отсутствию переполнения (Tc=0) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по нулевому результату (Tz=1) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по ненулевому результату (Tz=0) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по положительному результату (Ts=0) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по отрицательному результату (Ts=1) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по четному результату (Tp=1) PC<-(B3)(B2), иначе PC<-PC+3.
Переход по нечетному результату (Tp=0) PC<-(B3)(B2), иначе PC<-PC+3.
Вызов подпрограммы. [SP-1][SP-2]<-(PC),SP<-(SP)-2, PC<-(B3)(B2).
Возврат из подпрограммы. PC<-[SP][SP+1], SP<-(SP)+2. |
||||
Команды ввода вывода |
||||||||
59.
60. |
IN порт
OUT порт |
2
2 |
11011011
11010011 |
Ввод данных. A<-(порт)
Вывод данных. Порт<-(A) |
||||
Прочие операции |
||||||||
61.
62.
63. |
RST n
HLT
NOP |
1
1
1 |
11NNN111
01110110
00000000 |
Повторный запуск МП с адреса 8*NNN (0,8,16,…,56).
Останов.
Пустая команда. |
||||
ПРИЛОЖЕНИЕ 2.
1. Преснухин Л.Н., Воробьев Н.В., Шишкевич А.А. Расчет элементов цифровых устройств. М.: Высш.шк., 1991, 526 с.
2. Угрюмов Е.П. Цифровая схемотехника. Учеб. пособие для вузов.- 2- изд. перераб. и доп.-СПб. БХВ – Петербург. 2005.-800 с.:ил.
3. Калабеков Б.А. Цифровые устройства и микропроцессорные системы. Учебник.-М.:Горачая линия- Телеком.,2003 г.-336.
4. Суворов В.И., Юнусов Д.Ю. Методическое руководство по лабораторно-практическим занятиям по курсу «Основы цифровой техники и микропроцессоры» (№ 47). ТЭИС, 1984, 118 с.
5. Хокинс Г. Цифровая электроника для начинающих: Пер. с англ. М.: Мир, 1986, 232 с.
6. Гольденберг Л.М. и др. Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учеб. пособие для вузов. М.: Радио и связь, 1992, 256с.
7. Абдурахманов Р.П., Баширов Р.В., Амирсаидов У.Б. Задания к контрольной работе и методические указания к их выполнению по курсу «Цифровая и вычислительная техника». ТЭИС, 1995, 30 с.
8. Преснухин Л.Н., Воробьев Н.В., Шишкевич А.А. Расчет элементов цифровых устройств. – М.: Высш.шк., 1991. – 526 с.
9. Угрюмов Е.П. Проектирование элементов и узлов ЭВМ . – М.: Высш.шк., 1987. – 318 с.
10. Суворов В.И., Юнусов Д.Ю. Методическое руководство по лабораторно-практическим занятиям по курсу «Основы цифровой техники и микропроцессоры» (№ 47). – ТЭИС, 1984. – 118 с.
11. Гольденберг Л.М. Цифровые устройства и микропроцессорные системы.
12. Задачи и упражнения.: Учеб. Пособие для вузов. М.: Радио и связь, 1992.
13. Гольденберг Л.М. Цифровые устройства на интегральных схемах в связи. М.: Радио и связь, 1979, 232 с.
14. Абдурахманов Р.П., Баширов Р.В., Амирсаидов У.Б. Задания к контрольной работе и методические указания к их выполнению по курсу «Цифровая и вычислительная техника». – ТЭИС, 1995. – 30 с.
15. Преснухин Л.Н., Воробьев Н.В., Шишкевич А.А. Расчет элементов цифровых устройств. – М.: Высшая школа, 1991. – 526 с.
16. Угрюмов Е.П. Проектирование элементов и узлов ЭВМ . – М.: Высшая школа., 1987. – 318 с.
17. Суворов В.И., Юнусов Д.Ю. Методическое руководство по лабораторно-практическим занятиям по курсу «Основы цифровой техники и микропроцессоры» (№ 47). – ТЭИС, 1984. – 118 с.
18. Абдурахманов Р.П., Баширов Р.В., Амирсаидов У.Б. Задания к контрольной работе и методические указания к их выполнению по курсу «Цифровая и вычислительная техника». – ТЭИС, 1995. – 30 с.
Оглавление
Введение
1. ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ ………… 4
1.1. Этапы проектирования микропроцессорных
систем (МПС) ……………………………………………………………. 4
1.2. Микропроцессор КР580ВМ80А и его система
команд …………………………………………………………………… 10
ФОРМАТ ДАННЫХ И КОМАНД ………………………………………... 16
СПОСОБЫ АДРЕСАЦИИ …………………………………………………17
ПРИНЦИП РАБОТЫ МИКРОПРОЦЕССОРА ……………………………20
ИНФОРМАЦИЯ О СОСТОЯНИИ МИКРОПРОЦЕССОРА ……………..23
СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА ………………………….. 25
ОПЕРАЦИИ ЦИКЛИЧЕСКОГО СДВИГА ………………………………. 25
СТЕК ……………………………………………………………………….. 26
1.3. Приемы программирования микропроцессора КР580ВМ80А ………………………………………………………………..29
1.3.1. Приемы программирования микропроцессора
на языке кодовых комбинаций ……………………………….. 29
ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕНИЙ …………………………….33
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ ……………………………………………………………….36
1.3.2. Программирование на языке Ассемблера …………..40
ПРИМЕРЫ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ …………… 44
ПОДПРОГРАММА …………………………………………………………50
ВВОД-ВЫВОД ДАННЫХ ………………………………………………….53
Шинные формирователи КР580ВА86 и КР580ВА87. …………...55
2. ЗАДАНИЕ К КУРСОВОЙ РАБОТЕ И МЕТОДИЧЕСКИЕ
УКАЗАНИЯ К ЕГО ВЫПОЛНЕНИЮ. …………………………………… 60
2.1. Задание и варианты к курсовой работе. ………………..60
Рекомендуемые темы Курсовых Работ. ……………………..61
ПРИЛОЖЕНИЕ 1 Система команд микропроцессора КР580ВМ80А. Основные обозначения…………………………… 65
ПРИЛОЖЕНИЕ 2. Условные графические обозначения и назначения выводов микросхем ТТЛ серии К155. ………..71
СПИСОК ЛИТЕРАТУРЫ …………………………………………..……… 75