Единое окно доступа к образовательным ресурсам

Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере: Учебное пособие

Голосов: 10

Использование микропроцессорных средств, привело к существенному изменению процесса разработки вычислительной и управляющей аппаратуры. Главное внимание стало уделяться вопросам выбора структуры системы, организации подсистем ввода-вывода, создания программного обеспечения, отладки и тестирования. Особенность этого пособия заключается в том, что изложение принципов построения и программирования ЭВМ на базе микропроцессора ориентировано на широкий круг читателей, имеющих устойчивые знания основ цифровой (дискретной) техники. Принципы работы и архитектура микропроцессора рассматриваются на примере распространенного микропроцессора 80х86 фирмы Intel, являющимся базовым вариантом для одного из самых мощных направлений в развитии компьютеров.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
    Министерство образования Российской Федерации

   ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

            Кафедра промышленной электроники
          и информационно-измерительной техники



                                                  В.Н.Булатов




             УЧЕБНОЕ ПОСОБИЕ
       Архитектура микропроцессорной системы.
  Состав машинных команд и основы программирования
       микропроцессорной системы на ассемблере




                        Оренбург 1999


ББК 32.973.2Я7
     Б 90
УДК 681.327
                               Введение
      В конце двадцатого века микропроцессорные средства вычислительной
техники стали широко применяться в приборах бытовой техники, в различных
контрольно-измерительных устройствах, средствах управления и тому
подобное.
      С повышением надежности больших интегральных схем, в которых
реализованы микропроцессорные устройства, микропроцессорные средства
стали применяться и в технике военного и космического назначения. Это
связано с тем, что они обладают функциональной гибкостью, высокой
надежностью и способны реализовать сложные алгоритмы. На базе
микропроцессоров разработаны вычислительные машины нового класса, как
персональные компьютеры широкого применения, так и специализированные
компьютеры (например, бортовая ЭВМ) и контроллеры (микропроцессорные
цифровые автоматы). В связи с этим компьютерная грамотность становится
обязательной для любого специалиста.
      Использование микропроцессорных средств, привело к существенному
изменению процесса разработки вычислительной и управляющей аппаратуры.
Главное внимание стало уделяться вопросам выбора структуры системы,
организации подсистем ввода-вывода, создания программного обеспечения,
отладки и тестирования.
      Особенность этого пособия заключается в том, что изложение принципов
построения и программирования ЭВМ на базе микропроцессора ориентировано
на широкий круг читателей, имеющих устойчивые знания основ цифровой
(дискретной) техники.
      Принципы работы и архитектура микропроцессора рассматриваются на
примере распространенного микропроцессора 80х86 фирмы Intel, являющимся
базовым вариантом для одного из самых мощных направлений в развитии
компьютеров.
      Подробное описание набора часто используемых команд 80х86,
иллюстрируемое на примерах синтеза команд и составления фрагментов
элементарных программ, нацелено на детальное ознакомление с особенностями
программирования работы микропроцессоров.
      Разработка и отладка программного обеспечения является трудоемким
этапом проектирования микропроцессорных систем, требующим больших
затрат времени и средств. Специалистам, занимающимся вопросами
проектирования микропроцессорных систем, приходится использовать либо
промышленные       образцы    отладочных     комплексов,    либо   простые
специализированные комплексы собственного изготовления, либо их
комбинацию. Методика изучения материала в рамках, изложенного в данном
пособии, ориентирована на третий вариант, где:
      а) в качестве технического средства может быть использовано учебно-
отладочное устройство К-1810, разработанное на кафедре промышленной
2


электроники и информационно-измерительной техники ОГУ, или любой IBM-
совместимый компьютер;
      б) в качестве программного средства — составленная автором данного
пособия на основе DEBUG упрощенная программа редактора-отладчика
MONITOR.COM.
      Построение подсистем ввода-вывода представляет собой не менее
сложную проблему проектирования микропроцессорных систем. Подробное
описание портов ввода-вывода в наиболее часто используемых режимах
программируемых         интерфейсов      8255 (параллельный     порт)     и
8250 (последовательный порт), а также ознакомление с таймером 8253 и
контроллером      прерываний     8259,   примеры      их  подключения     и
программирования предполагают не просто ознакомиться с организацией
ввода-вывода, но и научиться практически программировать ввод-вывод.
      Изложенный в последующих главах материал, в силу своей
специфичности,      не   является    достаточным     для  освоения    основ
микропроцессорной техники. Процесс изучения можно считать достаточным,
если он будет подкреплен практическими занятиями:
      а) в составлении фрагментов схем микропроцессорной системы;
      б) в составлении фрагментов программ, демонстрирующих возможности
набора изучаемых команд;
      в) в программировании и отладке программ инициализации и
функционирования конкретного интерфейса микропроцессорной системы.




                                                                          3


               1 Основы микропроцессорной техники

      Микропроцессоры       и   функциональный      набор,    составляющий
микропроцессорный комплект, скорее понятие технологическое, чем
идеологическое. И связано оно, главным образом, с возможностью
современных технологий выращивания в маленьком объеме (1мм x 1мм x 1мм)
кристалла кремния сложнейших схем, содержащих до несколько сотен тысяч
полупроводниковых       элементов:   транзисторов,    диодов,    резисторов,
конденсаторов.
      Для того, чтобы вникнуть в существо вопроса, необходимо сделать
маленький экскурс в историю создания и развития ЭВМ.
      На всем протяжении истории развития человеческого общества человек
все время пытался создать некие автоматы (механизмы, устройства и т.п.),
которые могли бы заменить часть человеческой деятельности в области
производства. Особенно там, где сам человек это делает очень медленно,
непроизводительно. Так в середине двадцатого века появилась ЭВМ.
Необходимо сразу заметить, что было бы ошибочным считать, что ЭВМ
создавалась именно как вычислитель. Совсем нет. Человек замахнулся на
большее. Он захотел, чтобы она еще и умела думать как человек. И принимать
решения как человек.
      И вот совсем в другой области — в области функциональной
математики — в конце девятнадцатого века сформировалось самостоятельное
направление — логическая математика. С использованием достижений в этой
области ученые-математики на основе очень простых абстрактных моделей
процессоров создавали системы команд (как алфавит будущего языка). И чем
талантливее был придуман этот набор команд, тем большими возможностями
он обладал —сначала для создания слов, а потом предложений, а потом уже и
целых словесных произведений-программ.
      Таким образом, разработчикам физической ЭВМ оставалось только
выбирать лучший на их взгляд набор команд и реализовать его аппаратно. Надо
сказать, что не все разработчики ЭВМ идут этим путем. Вероятно, чтобы не
иметь проблем с патентной чистотой, некоторые разработчики технических
средств самостоятельно решают вопросы логической реализации процессоров.
Получаемые результаты не содержат классических форм, и их, как правило,
никак нельзя назвать превосходными. Так можно сказать и о некоторых
процессорах Intel.
      Можно пояснить это с помощью примера, основанного на потенциальных
возможностях национальных алфавитов. Рассмотрим           русский алфавит.
Он содержит 33 буквы, которые используются в строчном и заглавном
написании. Чтобы освоить пользование этим алфавитом, нужно — как
показывает опыт школьного обучения — совсем немного времени. Но это
никак не сказывается на его потенциальных возможностях. Скорее, наоборот.

4


Показательным является сравнение русского алфавита с китайским, каждый
элемент которого поглощает в себя гораздо больше, чем буква русского
алфавита. Это — событие, предмет или часть его. И сразу столько проблем. Во-
первых, этих иероглифов нужно тысячи, и, во-вторых, чтобы пользоваться ими,
приходится все время производить выбор, так как зачастую одно слово можно
обозначить несколькими комбинациями иероглифов. А любая избыточность,
если говорить о технических средствах, отягощает аппаратную реализацию,
делает ее громоздкой и менее надежной.
      При первом профессиональном знакомстве с ЭВМ необходимо
рассмотреть ее основные функции, для реализации которых и создавались
специализированные группы команд. Но прежде всего нужно отметить, что все
они реализуются посредством логических операций И, ИЛИ, НЕ и функции
запоминания.

1.1 Классификация команд и архитектура ЭВМ
      1.1.1 Команды передачи данных
      Аналогов два:
      а) загрузка данных: Ставите чемодан (данные=data) в камеру хранения
(приемник=dst); комментарий dst:= data («:=» — присвоить);
      б) пересылка данных: посылка из почтового отделения города Оренбурга
(источник=src) переправляется в город Челябинск (приемник=dst); что
пересылается —не знаем, может воздух — это неважно. Комментарий: dst:=
<src>, где <> - содержимое (в данном случае — содержимое источника).
      1.1.2 Операционные команды
      Операционные команды есть арифметико-логические команды. Их набор
стандартен:
      а) команды сложения и вычитания;
      б) логические команды И, ИЛИ, НЕ;
      в) команды сравнения.
      1.1.3 Команды сдвигов и приращений
      Выполняют:
      а) сдвиги влево и вправо на один или несколько разрядов; различают
логические и арифметические сдвиги (об этом позднее);
      б) увеличение и уменьшение на единицу; используются для организации
счетчиков.
      1.1.4 Команды ветвлений и переходов
      Сразу отметим, что ветвление — это тот же переход, только если
выполнилось определенное условие. Например, если результат последней
операции равен нулю, то перейти на указанное место (метку). Если нет, то
ничего не делать и перейти к выполнению следующей команды. Результат
(ноль или не ноль) хранится в специальном месте. Совокупность всевозможных
результатов называется словом состояния процессора (PSW).
      1.1.5 Команды ввода-вывода
      Самая малочисленная группа. Вводятся данные или выводятся данные —
все по отношению к процессору. Вводятся, значит, процессор принимает
                                                                           5


данные от внешнего устройства. Выводятся, внешнее устройство принимает
данные от процессора.
      1.1.6 Команды прерывания
      Представьте себе, что Вы читаете захватывающий детектив. И вдруг
телефонный звонок. Что вы делаете? Первый вариант: игнорируете звонок
(маскируете его). Второй вариант: вы вкладываете закладку на прерванном
месте (чтобы оперативно возвратится туда), берете трубку, разговариваете.
Возможно, за этим последуют еще какие-то действия, вызванные этим
прерыванием, но потом вы опять возвращаетесь к прерванному занятию.
Основные моменты этой процедуры:
      — Вы должны знать, куда вернуться из прерывания;
      — Вы должны знать, как обслужить прерывание, то есть где находится
телефонный аппарат, чтобы быстро и безошибочно подойти к нему, а не к
двери, приняв за телефонный звонок — звонок в дверь, и так далее.
Именно эти два момента и отражены в реализации процедуры обработки
прерываний в ЭВМ.
      Теперь рассмотрим команды в целом.
      Любая команда всегда начинается с кода операции (КОП). Код операции
имеет длину, равную, как правило (хотя бывают исключения), формату данных
процессора, то есть 1-му байту, 2-м байтам или 4-м байтам. Код операции —это
набор управляющих функций цифрового автомата процессора (ЦА), который
сам основан, как правило, на базе элементарного автомата Мура.
      Если КОП предусматривает использование одного или двух операндов,
то они должны располагаться в запоминающем устройстве (ЗУ) следом, причем
в той последовательности, в какой они будут востребованы процессором.
      Любое сообщение в ЭВМ представляется и обрабатывается побитно.
Но написание программ в двоичных кодах просто бессмысленно из-за
громоздкости и непроизводительности. Поэтому для обозначения двоичных
комбинаций в ЭВМ используют их свертки в шестнадцатеричном коде
(Н-коде). Один разряд этого кода поглощает сразу 4 двоичных разряда.
А специальные трансляторы уже в ЭВМ превращают их в двоичные
комбинации.
      Но даже такая форма для программиста, в случае написания больших
программ, неприемлема. Это сколько кодов команд надо помнить! Поэтому
каждая система команд дублируется машинным языком в ассемблере — языке
простых аббревиатурных обозначений. Например,
      MOV A,B
или
      MOV R1,R2.
      Здесь сокращение от MOVE (переслать) говорит о том, что в регистр A
пересылается содержимое регистра B (фирма Intel). Или для второго случая: в
регистр R2 пересылается содержимое регистра R1 (фирма DEC). Таким образом,
остается лишь запомнить некоторые дополнительные обозначения, но их
совсем немного.
      Можно привести еще ряд примеров:
6


      ADD B,D (add —прибавить, сложить);
      SUB C,A (subtract —вычесть);
      AND A,D (and —И, т.е. конъюнкция);
      OR A,D        (OR —ИЛИ, т.е. дизъюнкция);
и так далее.
      Так получилось, что основой ассемблера во всем мире стал английский
язык. А в 70-х годах у нас был свой ряд отечественных ЭВМ «Минск - ХХ»с
превосходной системой команд, где ассемблер выглядел так:
      ВЫЧ Р1,Р2.
Понятно, что что-то из чего вычитается. Но теперь все отечественные
разработки сразу «разговаривают» на английском, для того, чтобы российская
программная продукция не была ограничена только внутренним рынком.
      Итак, у каждого машинного двоичного кода команды есть его
отображение в виде команды на ассемблере, на котором достаточно быстро
можно научиться писать программы. Но кто же (или что) будет переводить из
ассемблера в двоичные коды? Для этого есть специальные трансляторы
(компиляторы). В данном пособии указанная процедура демонстрируется
вручную, чтобы лучше понять предмет изучения.
      А теперь, когда проанализированы основные функции ЭВМ, рассмотрим
структурную схему того, что уже можно назвать ЭВМ (рисунок 1). Поскольку
ЭВМ создавалась по образу и подобию человека, то и мы попробуем
характеризовать основные компоненты ЭВМ с этой, возможно не очень
корректной, точки зрения. Итак, сердцем ЭВМ является процессор, основу
которого составляет цифровой автомат ЦА. Он «разгадывает» очередной код
операции и в соответствии с ним производит определенные действия со всеми
составляющими ЭВМ. АЛУ тоже является частью цифрового автомата, но
выделено отдельно, так как оно программно доступно относительно выбора
операции: сложения, вычитания, конъюнкции, дизъюнкции и тому подобное.
      РОНы —локальная память малой емкости — сверхбыстродействующее
ОЗУ. Реализовано, как правило, на триггерах, объединенных по 8, 16 или 32 шт.
в регистры. Длина регистра зависит от длины слова, которым оперирует
процессор. Размер информационного слова принято считать 1 байт (1 Byte)=
8 бит (8 Bite), то есть равным 8-и разрядам. Поэтому, в отношении процессора
обычно оперируют терминами «однобайтовый», «двухбайтовый» и тому
подобное.
      Процессор подсоединяется к системной шине (магистрали) как активное
устройство (командир). Системная шина имеет множество разновидностей, но
любые системные шины можно объективно разделить на два вида, так
называемые Q-bus и MultiBus.
      Q-bus —шина со совмещенной шиной данных и адреса (ШДА). Что и в
какой момент находится на ШДА —можно узнать только по определенным
фронтам управляющих сигналов. Кроме этого, все запросы на прерывания и их
инициирование происходят по последовательному протоколу. Если вернуться к
рассмотренному примеру со звонком, то представьте себе не один, а несколько
телефонных аппаратов, но с общим звонком. И чтобы найти, какой телефон
                                                                            7


звонит, нужно последовательно снимать трубки, пока не будет обнаружен тот
единственный. Q-bus считается наиболее совершенной системой шины, так как
предусматривает очень надежный протокол установления связи с любым ком-
понентом ЭВМ. Алгоритм его приведен на рисунке 2 – на примере вывода
данных (из процессора в устройство).

                     Процессор

    Арифметико-логическое    Данные     Регистры общего    Постоянное    К внешнему     К внешнему К внешнему
         устройство                      назначения       запоминающее    устройству     устройству устройству
          (АЛУ)                             (РОНы)          устройство       №1             №i        №n
                                                               (ПЗУ)
    Цифровой                      Управление              Оперативное    Интерфейсное              Интерфейсное
    автомат                                               запоминающее   устройство                 устройство
     (ЦА)                                                  устройство      №1                           №n
               Код команды                                  (ОЗУ)        (адаптер)                 (адаптер)
                    Регистр кода
                     операции
                      (РКОП)

               Шина управления (ШУ)

               Шина адреса (ША)

               Шина данных (ШД)



               С и с т е м н а я        м а г и с т р а л ь
                        Рисунок 1 – Архитектура ЭВМ


                                   Вывод


                 Выставить адрес устройства на ШДА



                                                             Нет
                               Есть такой
                               адресат?

                                          Да

                       Выставить данные на ШДА




                                                             Нет                Подпрограмма
                             Данные приняты?                                  тяжелого останова



                                          Да
                                      Конец



8


                      Рисунок 2 – Протокол шины Q-bus.
      MultiBus —системная шина с разделенными шинами данных ШД и
адреса ША (рисунок 1). Кроме этого, все запросы на прерывание в MultiBus
поступают радиально (то есть, параллельно). Если, к примеру, в ЭВМ
предусматривается обработка 16 запросов на прерывание, то системная шина
должна иметь в составе шины управления 16 проводников для этих запросов, а
не 1, как это реализовано в Q-bus. И к сему, выдача процессором адреса и
данных устройства не предусматривается, как это делается в Q-bus.
Не предусматриваются       подтверждение    обнаружения      устройства   с
установленным адресом и подтверждение приема этим устройством данных.
Можно встретить иногда MultiBus с ответом распознавания адреса, но это
скорее исключение, чем правило.
      Все дело в том, что системные шины живут и развиваются как бы сами по
себе. Наилучший пример тому — железные дороги. Ширина колеи, высота
рельсов, нагрузка на единицу площади, закругления и угол наклона на
поворотах, габариты тоннелей, высота троллеи — все это уже навсегда, пока
существует железнодорожное сообщение. Что-то здесь будет меняться,
например, вместо деревянных шпал — железобетонные, но принципиально —
никогда. Замечательно, что все разработки, будь то электровоз, дрезина,
грузовой или пассажирский вагон и другие виды изделий транспортировки по
рельсам могут бесконечно модернизироваться и даже создаваться новые,
поскольку заранее известно, что «правила игры» остаются неизменными.
В этом смысле консерватизм параметров железнодорожного пути является
составляющей прогресса развития транспортных средств на железных дорогах.
Все сказанное совершенно адекватно и к системным шинам Q-bus и MultiBus,
не смотря на некоторые их очевидные недостатки.
      Подводя итог, можно сказать, что системная шина является кровеносной
системой ЭВМ. Обязательным элементом ЭВМ является постоянное
запоминающее устройство (ПЗУ). Все дело в том, что без ЗУ ЭВМ является
устройством с «пустыми мозгами», а точнее — без них. Хотя бы для того, чтоб
ЭВМ могла загрузить в себя чужой интеллект, нужна программа
первоначальной загрузки с какого-либо внешнего устройства, например, с
жесткого диска или компакт-диска. А для этого, как минимум, нужно настроить
соответствующий адаптер, потом через него привести в исходное состояние
дисковод, проверить область ОЗУ, куда будет загружаться этот самый
интеллект в виде операционной системы, а затем только загрузить
операционную систему. Вся описанная последовательность реализуется
программой, защитой в ПЗУ, и называется программой инициализации (INIT).
Следовательно, ПЗУ играет роль спинного мозга, который хранит программы
рефлекторных, а не сознательных действий.
      ОЗУ же предназначен как для хранения выполняемых программ, так и
результатов их выполнения. Кроме этого ОЗУ используется операционной
сисемой для регистрации состояния практически всех составляющих узлов
микропроцессорной системы. ОЗУ, как правило, по объему во много раз
меньше, чем объем внешних носителей информации. И что удивительно,
                                                                          9


незаметно стремление развивать объем ОЗУ до объема внешних носителей. Что
это? Факт, отражающий реальное положение дел в этой области? Или опять
философский подход к решению проблемы? Что человеческий мозг ограничен
по емкости, а размеры книжных полок и их количество ограничивать
теоретически нечем?
      Ну и, наконец, связь с внешним миром. Для того, чтобы это
интеллектуальное устройство не было бы изолировано от внешнего мира,
чтобы могло «слышать» и «видеть», «говорить» и «воздействовать»,
необходимо, как минимум, иметь входное и выходное интерфейсные
устройства. Какие функции они реализуют? Их две.
      Во-первых, с одной стороны они должны полностью сопрягаться с
системной шиной по протоколу системной шины, и с другой стороны – по
протоколу внешнего устройства сопрягаться с внешним устройством.
Протоколы установления связи и обмена для внешних устройств, как правило,
стандартизованы: RS-232, Centronics, IRPR и так далее. Знакомство с ними
произойдет при изучении соответствующих интерфейсных схем. Таким
образом, интерфейсные устройства (схемы) играют роль переводчиков. Отсюда
и название: интерфейс.
      Во-вторых, интерфейсное устройство должно быть согласовано по
электрическим параметрам с обоими «разговаривающими». А эти сигналы
бывают различными и по напряжению, и по мощности, и по составляющей
помехе. Поэтому, интерфейсные интегральные схемы (ИИС), как правило,
«обвязываются», то есть между ИИС и внешним устройством ставятся
специальные приемники и передатчики. Это схемное решение: интерфейсная
ИИС плюс обвязка —и называется адаптером.
      Теперь, когда в общих чертах обрисована структура и функции ЭВМ
минимальной конфигурации, можно перейти к понятиям: однокристальный
микропроцессор, микропроцессорный модуль, микропроцессорная секция
(секционный микропроцессор), однокристальная ЭВМ.

1.2 Секционный микропроцессор.
     Вернемся к рисунку 1. Если из состава микропроцессора извлечь
цифровой автомат, то микропроцессор превратится в микропроцессорную
секцию со входами управления функциями АЛУ и чтением-записью РОНов.
     Проигрыш — отсутствует реализация команд.
     Выигрыш — можно самим реализовывать любую систему команд
микропроцессора и обрабатывать любую длину слова (за 1 раз), так как
синтезировать цифровой автомат предоставляется самим. Для секционных
микропроцессоров даже существует такой термин: «Система команд
пользователя».Типичные отечественные представители этого семейства:
     К581 — 8р.,16р. n-МОП;
     К583 — 8xn р. И2П;
     К588 — 16&n р. КМОП;
     К589 — 2&n р. ТТЛШ;
     К1800 — 4&n р. ЭСЛ;
10



    
Яндекс цитирования Яндекс.Метрика