Текст
                    М И КРОПРОЦЕССОР ы
И МАШИННОЕ
ПРОЕКТИРОВАНИЕ
МИКРОПРОЦЕССОРНЫХ
СИСТЕМ

МИКРОПРОЦЕССОРЫ И МАШИННОЕ ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
Microprocessors and microcomputer development systems Designing microprocessor-based systems MOHAMED RAFIQUZZAMAN California State Polytechnic University HARPER & ROW, PUBLISHERS, New York Cambridge, Philadelphia, San Francisco, London, Mexico City, Sdo Paulo, Sydney 1984
М. Рафикузаман МИКРОПРОЦЕССОРЫ И МАШИННОЕ ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ. В 2-х книгах Кн. 1 Перевод с английского канд. техн, наук Е. К. МАСЛОВСКОГО, канд. техн, наук Л. В. ШАБАНОВА МОСКВА «МИР» 1988
ББК 32.973 Р26 УДК 681.325.5-181.48.001.63 AlVaKo 22/05/2011 Рафикузаман М. Р26 Микропроцессоры и машинное проектирование микропроцес- сорных систем: В 2-х кн. Кн. 1. Пер. с англ.-М.: Мир, 1988- 312 с., ил. ISBN 5-03-001135-8 Широкое применение микропроцессорных систем в науке и технике привело к небывалому росту их выпуска за рубежом и в нашей стране Поэтому тради- ционные методы проектирования и отладки стали заменяться машинными Дан- ная монография известного американского автора является одной из первых в этом важном направлении. В ней рассматриваются современные системы проек- тирования микрокомпьютеров с иллюстрацией изложенного конкретными приме- рами Много внимания уделено описанию микропроцессоров Интел, Моторола, Зилог, а также соответствующему программному обеспечению. Для выбора типа языка высокого уровня приведены сравнительные данные по языкам Бейсик, Фортран, Пл-1, Паскаль и Кобол Монографию можно использовать и как справочное по- собие по аппаратным и программным средствам микропроцессоров В русском переводе выходит в двух книгах Для специалистов, разрабатывающих вычислительные машины, и студентов, изучающих вычислительную технику р 2405000000-^ ч 041 (01)—88 ББК 32.973 Редакция литературы по информатике и робототехнике Монография Мохамед Рафикузаман МИКРОПРОЦЕССОРЫ И МАШИННОЕ ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ Книга 1 Научный редактор В С Соболев Младший научный редактор М. Н. Стасюк. Художник Е М Баринова. Ху- дожественный редактор Н. М. Иванов Технический редактор И М Кренделева Корректор В. С. Соколов ИБ № 5641 Сдано в набор 1202 87. Подписано к печати 03 12.87 Формат 70 х 1001/]6 Бумага офсетная № 1 Гарнитура тайме Объем 9,75 бум л. Усл печ л 25,35 Усл кр-отт 46,70 Уч-изд л 26,99. Изд № 41/4173 Тираж 50000 экз Зак 1198 Цена 2р 30 коп ИЗДАТЕЛЬСТВО «МИР» 129820, ГСП, Москва, И-110, 1-й Рижский пер, 2 Можайский полиграфкомбинат Союзполиграфпрома при Государственном комитете СССР по делам изда- тельств, полиграфии и книжной торговли г Можайск, ул Мира, 93 ISBN 5-03-001135-8 (русск.) ISBN 5-03-000568-4 ISBN 0-06-045312-5 (англ.) Copyright © 1984 by Harper & Row, Publi- shers, Inc. © перевод на русский язык, «Мир», 1988.
ПРЕДИСЛОВИЕ К ПЕРЕВОДУ Проектирование даже довольно про- стых микропроцессорных систем без при- менения развитых средств автоматизации представляет собой очень сложную инже- нерную задачу. Поэтому созданию техни- ческих и программных средств автомати- зации процесса проектирования в послед- нее время уделяется серьезное внимание. На русском языке уже имеется целый ряд книг, посвященных микропроцессорам и микропроцессорным системам. Однако предлагаемая читателям книга М. Рафи- кузамана мало в чем пересекается с ними, поскольку, во-первых, внимание автора сосредоточено на изложении не принци- пов работы микропроцессоров и их про- граммного обеспечения, а методов авто- матизации проектирования, и, во-вторых, рассматриваются только те методы, ко- торые уже нашли широкое применение. Автор касается одного из наиболее перспективных с практической точки зре- ния направлений автоматизации-спе- циальных вычислительных систем, назы- ваемых системами поддержки микропро- цессорных разработок, или инструмен- тальными системами. (В отечественной литературе их часто называют автомати- зированными рабочими местами разра- ботчиков.) В книге подробно рассматри- ваются технические средства и программ- ное обеспечение таких систем, отмечают- ся специфические черты аппаратных и особенно-программных средств, нали- чие которых отличает эти вычисли- тельные системы от универсальных ЭВМ. Книга знакомит советского читателя с современными тенденциями в разработ- ке систем поддержки, с различиями во взглядах на эти системы наиболее из- вестных зарубежных фирм-изготовителей. Одно из важнейших достоинств книги со- стоит в ориентации ее на широкий круг читателей: она может использоваться и как учебное пособие, и как справочное руководство по применению систем под- держки разработок, и как источник ин- формации о современном состоянии рас- сматриваемой области техники. Книга полезна и тем разработчикам, которые не имеют возможности непосредственно ис- пользовать развитые инструментальные системы: излагаемая автором структури- рованная методология применима при работе с любыми средствами проектиро- вания микропроцессорных систем. И хотя в книге подробно описывается лишь одна система поддержки микропроцессорных разработок, она дает полное представле- ние о принципах работы любой системы аналогичного назначения. Специалисты, знакомые с микропро- цессорной техникой, с серией микропро- цессоров Интел 8085 или довольно близ- кими по функциональным возможностям сериями Интел 8080 и К58О, с типичными схемами памяти и интерфейсов ввода-вы- вода, могут начинать чтение книги с гл. 9. Предшествующие ей главы носят вспомогательный характер, помогая на- чинающим работать с микропроцессор- ной техникой понять многочисленные примеры, которые иллюстрируют прин- ципы действия инструментальных систем. Отдельный интерес могут представить гл. 6 и 7, дающие некоторое представле- ние о современных 8-, 16- и 32-разрядных микропроцессорах. В ряде разделов подробно описы- ваются некоторые типы интегральных схем, однако не следует относиться к та- ким описаниям, как к законченным прак- тическим руководствам. Поскольку глав- ная цель книги-изложение методики проектирования, автор, по всей видимо- сти, не ставил перед собой задачу дать
6 Предисловие к переводу технически корректные и исчерпывающие описания принципов работы отдельных микросхем. Так что знакомство с описа- ниями нужных микросхем по этой книге отнюдь не освобождает от необходимо- сти использовать более подробную тех- ническую документацию при проектиро- вании на их основе микропроцессорных систем. В целом книга интересна широкому кругу читателей: от студентов, изучаю- щих основы микропроцессорной техники, до разработчиков автоматизированных рабочих мест (АРМ) и их пользователей. Можно надеяться, что методы, изло- женные в книге, сохранят свое значение и для последующих поколений микропро- цессорных систем, а некоторые из них найдут хотя бы частичное применение и в других сферах инженерной деятельно- сти, где требуется создание систем авто- матизации проектирования. А. А. Менн
ПРЕДИСЛОВИЕ Микропроцессоры находят в настоя- щее время самое широкое и разнообраз- ное применение в управлении технологи- ческими процессами, в системах связи, в цифровых приборах, в электронных играх, в домашнем хозяйстве и ряде дру- гих сфер. Поэтому научным работникам и инженерам, специализирующимся в области вычислительной техники, край- не необходимо уметь конструировать микропроцессорные системы различного назначения на уровне интегральных схем. Инструментальным средством проекти- рования их аппаратного и программного обеспечения являются микрокомпью- терные макетные системы поддержки разработок. Цель настоящей книги состоит в том, чтобы познакомить читателей с основны- ми концепциями построения таких си- стем, с характеристиками типичных 8-, 16- и 32-разрядных микропроцессоров и интерфейсных интегральных схем, при- меняемых при разработке микропроцес- сорных систем. Процесс поэтапного ма- шинного проектирования рассматривает- ся на целом ряде реальных практических примеров, представленных в упрощенном виде. Книга содержит все материалы, необ- ходимые для понимания существа изла- гаемых концепций, в том числе целый ряд разделов по вопросам архитектуры микроЭВМ и программирования. При этом предполагается, что читатель зна- ком с основами цифровой логики и в ка- кой-то мере с микропроцессорной техни- кой, однако последнее условие не являет- ся обязательным, поскольку соответ- ствующие основные сведения даются в книге. Благодаря такой структуре книга может служить достаточно хорошим справочным пособием. Автор предпочел сосредоточить вни- мание на общих характеристиках и прин- ципах организации микрокомпьютерных систем поддержки разработок, поло- жив в основу результаты лабораторных экспериментов с конкретной системой проектирования и конкретными микро- процессорами. В частности, рассматри- вается макетная система поддержки раз- работок HP 64000 фирмы Hewlett- Packard и микропроцессор 8085 фирмы Intel. Система HP 64000 используется в книге в качестве типичного примера ма- кетной системы по той причине, что, во- первых, это единственная широкодоступ- ная, простая в обращении система с гибкой функциональной клавиатурой, во-вторых, это универсальная система машинного проектирования, ориентиро- ванная на многотерминальный режим работы, и, в-третьих, она предостав- ляет пользователю средства, типичные для всех автоматизированных систем проектирования, такие, как редакторы текстов, компиляторы, ассемблеры, ре- дакторы связей, отладчики и логические анализаторы. В книге описывается процесс разра- ботки микропроцессорной системы на уровне интегральных схем с применением микропроцессора Intel 8085 и инте- гральных схем поддержки, а также под- робно излагается методика поэтапного проектирования конкретной прикладной системы. Если читатель сумеет понять принципы использования макетной си- стемы HP 64000, ему в дальнейшем не со- ставит особого труда выполнить разра- ботку любой микропроцессорной си- стемы с использованием иной системы проектирования и любого другого мик- ропроцессора. Книга состоит из 12 глав. Первая гла- ва содержит введение в проблему, описа- ние основных свойств макетных систем поддержки разработок и их роль в созда- нии аппаратных и программных средств микропроцессорных изделий. В гл. 2-4 рассматриваются архитектура типичных
8 Предисловие микроЭВМ и их программирование, а также принципы построения аппа- ратных средств, основой которых служит микропроцессор Intel 8085. Гл. 5 посвя- щена методам ввода-вывода данных, реа- лизованным в этом микропроцессоре и широко используемым при разработках систем на основе микропроцессора 8085, которые рассматриваются в гл. 10 и И. В гл. 6 и 7 обсуждаются типичные 8-, 16- и 32-разрядные микропроцессоры, а в гл. 8 подробно рассматриваются интер- фейсные интегральные схемы типичных микропроцессоров. Сюда входят кри- сталлы постоянных запоминающих устройств (ПЗУ), многократно програм- мируемых ПЗУ (ППЗУ), ЗУ с произволь- ной выборкой (ОЗУ), схем ввода-вывода, клавиатуры и устройства управления до- ступом к памяти. В гл. 9 излагаются ос- новы систем поддержки микрокомпью- терных разработок; здесь рассматри- ваются редакторы текстов, компиляторы, ассемблеры, редакторы связей, эмуля- торы и логические анализаторы. В гл. 10 содержится обзор распространенных ма- кетных систем; это системы фирм Intel, Tektronix, GenRad (в прошлом Future- data) и Hewlett-Packard. Теоретические ос- новы построения и принципы функциони- рования конкретной макетной системы HP 64000 подробно рассмотрены в гл. 11. Соответствующая методология машин- ной разработки аппаратных и про- граммных средств систем на основе мик- ропроцессора 8085 изложена в гл. 12. Книга может использоваться для самых различных целей. Она, например, может служить пособием по начальному курсу проектирования микропроцес- сорных систем, который читается в тече- ние одной четверти или одного семестра в рамках двух- или четырехгодичных про- грамм по машиностроению, теории вы- числительных систем и технике проекти- рования. Предполагается, что студенты знакомы с цифровой логикой, а также с булевой алгеброй, картами Карно, ос- новными устройствами на транзисторах и МОП-приборах и рядом других вопро- сов. Книга может быть также использо- вана специалистами промышленной сферы, которые желают углубить свои знания в области микропроцессоров, си- стем поддержки микрокомпьютерных разработок и методологии проектирова- ния. Автор хотел бы выразить свою ис- креннюю признательность Кейту Гуэрину и Скотту Стьютвиллю из фирмы Hewlett- Packard, Джиму Холмену из фирмы Disneyland, Джону Макинтайру из фирмы Tektronix, Тому Маккеннону из фирмы GenRad, Джефу Морицу из фирмы Beckman Instruments, а также студентам С. Кикагаве, Дейву Джонсону, Тому Пол- ларду и другим коллегам, которые про- смотрели рукопись и сделали ряд ценных замечаний. Автор выражает благодар- ность фирмам Intel, Hewlett-Packard, Tektronix, GenRad, Advanced Micro Devices, Motorola и Zilog за их любезное разрешение перепечатать различные диа- граммы, таблицы и программы, приво- димые в книге. Ответственный редактор Джон Уилиг и технический редактор Дэвид Никол из- дательства Harper & Row проделали огромную работу для того, чтобы эта книга увидела свет. Я многим обязан д-ру У. С. Миллеру из Виндзорского университета в Канаде и достопочтенному Сэму Брецфилду, ге- неральному консулу Республики Бангла- деш, за то, что они поддерживали и во- одушевляли меня в течение всей работы над книгой. Наконец, автор хотел бы выразить признательность Кристи Кемп за перепе- чатку и выверку рукописи. Я посвящаю эту книгу трем дорогим для меня людям: моему деду-покойному мистеру Миру Али, моему тестю-покой- ному мистеру Шамсулу Хаку и моему шурину - покойному мистеру Мархубу Хасану. Я всегда буду помнить их за по- стоянную поддержку во время подготов- ки рукописи к изданию. Я также признателен моим родите- лям, жене Ребе, сыну Тито и моим брать- ям и сестрам за их бесконечное терпение и помощь. Мохамед Рафикузаман
Глава 1 ВВЕДЕНИЕ В МИКРОКОМПЬЮТЕРНЫЕ СИСТЕМЫ ПОДДЕРЖКИ РАЗРАБОТОК И КОНСТРУИРОВАНИЕ СИСТЕМ НА ОСНОВЕ МИКРОПРОЦЕССОРОВ Эффективное проектирование микро- процессорных систем невозможно без применения микрокомпьютерных систем поддержки разработок, которые исполь- зуются на этапах конструирования, на- ладки, а иногда и на стадии документи- рования проектируемых систем. В этой вводной главе будут рассмотрены свой- ства и компоненты типичных микро- компьютерных макетных систем, а также методы проектирования и наладки кон- кретных микропроцессорных изделий. 1.1. Основные особенности макетных систем Когда на рынке появились первые 4- и 8-разрядные микропроцессоры, цена ап- паратных средств микропроцессорных си- стем была столь высокой, что влияла на общую стоимость проектирования в большей степени, чем расходы по опла- те труда разработчиков (участвующих в логическом проектировании, создании программного обеспечения, проведении его отладки и т.д.). В условиях постоян- ного снижения цен на компоненты новых микропроцессоров расходы на заработ- ную плату при разработке новых микро- процессорных изделий стали играть бо- лее существенную роль. Основной целью использования микрокомпьютерных си- стем машинного проектирования являет- ся упрощение стадии разработки каждого такого изделия и, следовательно, дости- жение максимальной эффективности тру- да разработчиков-независимо от того, будет это один специалист или большая группа. Макетные системы поддержки разра- боток позволяют вести параллельно про- ектирование программных и аппаратных средств таким образом, что основные проектные решения проверяются и кор- ректируются еще до того, как начнется моделирование реальных аппаратных средств. Некоторые макетные системы позволяют моделировать работу про- граммных средств, прежде чем специали- сту по разработке программного обеспе- чения станут доступны какие-либо аппа- ратные средства в их окончательном ви- де. Макетные системы поддержки разра- боток подразделяются на две категории: либо системы, поставляемые фирмой- изготовителем оборудования, либо си- стемы, создаваемые другими фирмами на базе покупных ЭВМ. Основное различие между ними заключается в номенклатуре микропроцессоров, которые могут разра- батываться с помощью той или другой системы. Применение систем первого ви- да ограничивается возможностями кон- кретных наборов интегральных схем, вы- пускаемых поставщиком системы (фирма- ми Intel, Motorola, RCA и др.). В этом случае, например, макетная система фирмы Intel не может быть использована для разработки системы, в которой при- меняется микропроцессор фирмы Motorola. Ко второй категории относятся более универсальные системы (фирм Tektronix, Hewlett-Packard, AMI и др.), в которых имеются программное обеспе-
10 Глава 1 чение и аппаратные средства эмуляции, необходимые для разработки большин- ства распространенных микропроцессо- ров. Внутри каждой из двух категорий воз- можны три основных типа макетных си- стем: системы индивидуального пользо- вания, системы с разделением времени и сети проектирования. Система индиви- дуального пользования имеет один або- нентский пункт (станцию проектирова- ния), который обеспечивает работу толь- ко одного человека. Эти системы дешевы и могут использоваться при разработке небольших систем. Системы с разделе- нием времени обычно включают в себя один «глупый» (не интеллектуальный) терминал, связанный посредством линий передачи данных с центральной микро- компьютерной системой, которая управ- ляет всеми операциями. Сеть проектиро- вания (сетевая система поддержки разра- боток) обычно состоит из нескольких интеллектуальных экранных терминалов (ЭТ), с помощью которых можно выпол- нять большинство проектных работ. Эта система может быть связана линиями передачи данных с более мощной цен- тральной ЭВМ. Центральная ЭВМ в се- тевой системе обычно следит за распре- делением памяти на магнитных дисках и должна загружать те или иные про- граммы в ЭВМ рабочих станций пользо- вателей. Сети проектирования становятся все более популярными, потому что обладают более высокой производитель- ностью, что в свою очередь позволяет пользователю быстрее и легче разра- батывать программы. Стоимость сетевой системы в расчете на одну станцию оказывается меньшей, чем стоимость си- стемы индивидуального пользования, что объясняется большим количеством стан- ций в сетевых системах. Микрокомпьютерная макетная систе- ма представляет собой комбинацию ап- паратных средств, необходимых для кон- струирования микропроцессора, и про- граммных средств, управляющих аппа- ратными средствами. Основными компо- нентами последних являются цен- тральный процессор, экранный терминал, запоминающее устройство большой ем- кости (гибкий или жесткий диск) и обыч- но внутрисхемный эмулятор (ВСЭ). Центральный процессор (ЦП)-это сердце макетной системы. Будь то микро- процессор в системе индивидуального по- льзования или мощный процессор в си- стеме коллективного пользования с раз- делением времени, ЦП всегда управляет работой системы проектирования в це- лом. В системе индивидуального пользо- вания с помощью ЦП реализуются функ- ции программных средств операционной системы, обрабатываются сигналы устройств ввода-вывода, выполняются инструментальные программы (редактор, ассемблер, редактор связей и т.п.) и рас- пределяется память между выполняемы- ми программами. В большой сетевой си- стеме коллективного пользования ЦП может распределять память на дисках, в то время как локальный процессор мо- жет быть занят обработкой сигналов устройств ввода-вывода (УВВ) и выпол- нением инструментальных программ. ЭТ обеспечивает интерфейс между пользователем и операционной системой или выполняемой программой. Пользова- тель вводит команды или данные с клавиа- туры ЭТ, а выполняемая программа выво- дит данные пользователя на экран терми- нала. В ранних макетных системах ЭТ не применялись, а для связи пользователя с системой использовался механический телетайп. Скорость взаимодействия совре- менных ЭТ с операционной системой бо- лее чем в 10 раз превосходит скорость ра- боты телетайпов прежних моделей. Экранный терминал системы индиви- дуального пользования может быть непос- редственно подсоединен к ЦП, в то время как терминалы в системах с разделением времени могут быть связаны с удаленны- ми ЭВМ посредством телефонных линий (с применением модемов). В качестве ЗУ большой емкости для хранения данных пользователя необходи- мо иметь какой-либо дисковый накопи- тель. Некоторые современные сложные операционные системы и инструмен- тальные программы высокого уровня тре- буют для работы больших объемов памя- ти с произвольной выборкой (ЗУПВ), а для данных пользователя (например, для тек-
Введение в микрокомпьютерные системы поддержки разработок 11 ста разрабатываемой программы) остает- ся совсем небольшая ее часть. По этой причине операционная система должна распределять доступную для использова- ния память, а не работающие в тот или иной период части программы хранить на диске. Распространенный метод управле- ния памятью состоит в организации овер- лейных файлов. Оверлей-это часть про- граммы, которая не всегда требуется и потому не хранится в ограниченном про- странстве ОЗУ. При необходимости овер- лей считывается с диска и замещает в па- мяти другую часть программы, которая временно не нужна. Применение оверлеев и других методов управления памятью по- зволяет пользоваться сложными програм- мами на распространенных в настоящее время малых машинах, что было бы невоз- можно в противном случае. На диске хра- нятся также файлы пользователя, напри- мер программа на входном языке. В большинстве макетных систем инди- видуального пользования в качестве ЗУ большой емкости применяются гибкие ди- ски, в то время как в системах с разделе- нием времени и сетевых системах стремят- ся для той же цели использовать жесткие диски. В дисковых системах памяти стои- мость и рабочие характеристики устройств непосредственно связаны. Так, стоимость накопителей на гибких дисках ниже, но за- то и емкость памяти также оказывается меньшей, чем в случае жестких дисков. Время выборки гибкого диска (интервал от момента запроса данных до момента окончания их поиска) тоже велико по срав- нению с временем выборки жесткого диска или стандартного ОЗУ. Однако, хотя вре- мя выборки жесткого диска намного мень- ше, а емкость памяти намного больше, вы- сокая цена этого устройства может сде- лать его недоступным для приобретения рядовым пользователем. Если все же вы- бирается жесткий диск, то его стоимость окупается за счет сокращения длительно- сти процесса проектирования. Что касается ВСЭ, то его следует при- знать тем самым бесценным средством, которое превращает ЭВМ общего назначе- ния в макетную систему поддержки разра- боток. Это аппаратное устройство связы- вает макетную систему с разрабатываемой целевой микропроцессорной системой. Плата ВСЭ вставляется в гнездо целевой системы на место микропроцессора, кото- рому ВСЭ идентичен по электрическим схемам и по функциям. Контролируя пове- дение ВСЭ, макетная система способна ис- полнять тестовые программы для разра- батываемого микропроцессора. В то вре- мя как ВСЭ управляет работой целевой системы, макетная система может фикси- ровать и выводить необходимые данные (например, содержимое регистров). При помощи ВСЭ и ОЗУ макетной системы от- ладка программы и ее ввод в действие мо- гут быть выполнены быстрее, чем это бы- ло бы сделано в случае использования ПЗУ целевой системы. Посредством ВСЭ в программу могут вводиться кон- трольные точки, в которых разработчик желает остановить программу и прокон- тролировать ее состояние, а пользова- тель-проверять ход выполнения прог- раммы и при необходимости осущест- влять ее повторный запуск с той же точки. Ошибка в программе может быть испра- влена в ОЗУ в считанные секунды, в то время как процесс программирования ППЗУ может занять несколько минут до- рогостоящего времени машинного проек- тирования. Поскольку конфигурация аппа- ратных средств и программное обеспече- ние целевых систем все более усложняют- ся, ВСЭ становится незаменимым инстру- ментом для разработки микропроцессо- ров. Перечисленное выше оборудование совместно образует базовую макетную си- стему, однако большинство систем под- держки разработок имеет и другие устрой- ства, например устройства печати и закре- пленные программаторы ППЗУ. Печатаю- щее устройство необходимо для выдачи пользователю документальной копии тек- ста разрабатываемой программы. И хотя множество простых программ можно це- ликом разработать с помощью ЭТ, устройство печати нужно для подготовки документации, обеспечивающей дальней- шую работу над программами. После того как программа полностью отлажена и прошла тестирование, с помощью про- грамматора осуществляется загрузка ма- шинного кода в ППЗУ для проведения за-
12 Глава 1 Рис. 1.1. Блок-схема типичной макетной си- стемы поддержки разработок. ключительных испытаний рабочей про- граммы прототипа. На рис. 1.1 предста- влена типичная макетная система под- держки разработок. Аппаратные средства, конечно, необхо- димы в любой системе машинного проек- тирования, однако от них мало проку, если нет соответствующих программных средств поддержки разработки. По мере усовершенствования макетных систем на операционную систему перекладывается выполнение многих рутинных операций, что делает работу пользователя макетной системы более продуктивной. Многие ма- кетные системы являются самоорганизую- щимися в том смысле, что они освобо- ждают пользователя от необходимости разыскивать соответствующие команды и процедуры в руководствах по эксплуата- ции. Основные программы, необходимые для разработки микропроцессоров,- это операционная система, текстовый редак- тор, ассемблер, редактор связей, компиля- тор и отладчик. На операционную систему возлагаются функции управления выпол- нением инструкций пользователя. Опера- ционная система (например, СР/М, МР/М, UNIX) реализует функции ввода- вывода, управления памятью и загрузки программ для выполнения из внешней па- мяти большой емкости в ОЗУ. Чем боль- ше сама система проектирования, тем мощнее и «способней» должна быть ее операционная система. Редактор используется для ввода и корректировки программы пользовате- ля. Независимо от того, написана ли эта программа на языке ассемблера или на языке высокого уровня (например, на Па- скале), она сначала подлежит вводу в ма- кетную систему с использованием редак- тора. Редактор дает возможность вводить и редактировать исходную программу, вставлять и удалять одиночные символы или целые строки. Первые программы-редакторы позво- ляли редактировать за один раз только од- ну строку и поэтому назывались по- строчными. В них вначале определялась строка, подлежащая редактированию, а за- тем при помощи специальных команд из- менялось ее содержимое. Современные редакторы в большин- стве своем являются контекстными, и при работе с ними каждый сегмент программы на входном языке отображается в реаль- ном времени на экране дисплея. Текст ис- ходной программы выдается на экран не построчно, а целиком, т. е. в контексте, от- куда и происходит название редактора подобного типа. При редактировании ис- ходной программы внесенное изменение сразу же отображается на экране. В отли- чие от построчного редактора, в котором для организации редактирования исход- ной программы используется команда сложной структуры, в контекстном редак- торе предусмотрены простые команды управления курсором, дающие пользова- телю возможность указывать те части программы, которые должны быть изме- нены. Текст изменения, подлежащий встав- ке взамен прежнего, может вводиться по-
Введение в микрокомпьютерные системы поддержки разработок 13 еле установки курсора в определенное положение. Многие редакторы способны, кроме того, осуществлять блочные опера- ции, при которых группы строк или даже целые файлы могут переноситься в другое место или дублироваться. После того как исходная программа приобрела окончательный вид, она дол- жна быть преобразована в шестнадцате- ричный (объектный) код, с тем чтобы обес- печивалась возможность ее выполнения целевым процессором. Если при этом ис- ходная программа написана на языке ас- семблера, то соответствующее преобразо- вание выполняется ассемблером; если же при программировании использован язык высокого уровня, то преобразование ис- ходной программы осуществляется ком- пилятором. Ассемблер транслирует записанные в коде ASCII символьные данные, вво- димые под управлением редактора, в объектный или шестнадцатеричный код, используемый в целевом микропроцессо- ре. При этом помимо стандартных команд языка ассемблер должен уметь распозна- вать так называемые псевдооператоры, ко- торые представляют собой специальные команды управления самим ассемблером, предназначенные для генерации формати- рованных сообщений или данных в ходе трансляции программы. Например, опера- тор ORG используется для установки на- чального адреса программы или адреса точки ее запуска. Существуют и такие псевдооператоры, которые дают возмож- ность пользователю озаглавливать ка- ждую страницу листинга, форматировать листинги в целях обеспечения удобства чтения, вставлять таблицы данных в текст программы, устанавливать символические обозначения программ и т.д. Во многих современных ассемблерах предусмотрена возможность работы с ма- крокомандами. Макрокоманда-это сово- купность команд языка ассемблера, имею- щая специальное обозначение в исходном коде. Макрокоманде присваивается имя, к которому пользователь обращается тог- да, когда надо выполнить соответствую- щий набор команд. Разница между макро- командой и стандартным оператором обращения к подпрограмме CALL в языке ассемблера заключается в том, что макро- команда выполняется только тогда, когда она указана явно; и если вызываемая под- программа представляет собой суще- ствующую в одном экземпляре цепочку команд, в которой содержится команда возврата RET, то макрокоманда-много- кратно повторяемый код, фактически вста- вленный в окончательную объектную про- грамму. Использование макрокоманды обеспечивает экономию времени ввода программы с клавиатуры, поскольку по- вторяющиеся цепочки команд в этом слу- чае нет необходимости вводить каждый раз повторно. В большинстве своем современные ас- семблеры -двухпроходные: они генери- руют объектный код в результате двукрат- ного считывания программы на входном языке. При первом проходе запоминаются все метки и символы, используемые в про- грамме, им присваиваются соответствую- щие адреса и значения, после чего вся эта информация сводится в большую таблицу. При втором проходе генерируется объектный код в абсолютных или относи- тельных адресах и всякий раз, когда встре- чается метка, происходит обращение к та- блице, из которой берутся адрес или данные, заменяющие метку. Первые ассем- блеры были однопроходного типа; ис- пользование меток в них было затруднено, поскольку в программе на входном языке метку следовало определять до того, как она могла быть использована, что делало очень неудобными передачи управления и ссылки вперед. Редакторы связей применяются для объединения отдельных программ (или да- же частей одной-единственной про- граммы) в конечную рабочую программу. Это обычно необходимо делать тогда, ког- да над одной программой работает много программистов и каждый пишет один из ее модулей. После того как каждый такой модуль написан и успешно оттранслиро- ван, редактор связей манипулирует от- дельными модулями, осуществляет все из- менения адресов, необходимые для соеди- нения их вместе, и формирует конечную программу, которая затем выполняется с адреса, определенного в процессе редак- тирования связей. Таким образом, каждая
14 Глава 1 самостоятельная часть программы может быть написана и отлажена для работы с какого-то определенного адреса, а затем связана с другими частями для фактиче- ского исполнения в иных адресах. На вы- ходе редактора связей генерируется про- грамма в абсолютных адресах на машин- ном языке целевого микропроцессора, называемая абсолютным кодом. Загрузка абсолютного кода произво- дится отладчиком, который является не- оценимым средством интерактивного ис- полнения и тестирования полностью ском- понованных и связанных пользователь- ских программ. В некоторых простых макетных систе- мах, где центральный процессор (ЦП) идентичен целевому микропроцессору, аб- солютный код может загружаться и испол- няться ЦП без участия аппаратных средств пользователя. Этот способ при- емлем для проверки логики программы, однако он не может быть использован для проверки работоспособности программы в реальных условиях эксплуатации на ап- паратных средствах пользователя. В большинстве макетных систем для окончательной отладки программ приме- няется эмулятор, который представляет собой программу, обеспечивающую воз- можность выполнения одним процессо- ром машинного кода, написанного для другого процессора. Можно создавать эмуляторы для самых различных процес- соров, и это дает проектировщику возмож- ность разрабатывать для всех них про- граммы на основе использования единой макетной системы. С подключением эму- лятора пользователь может анализиро- вать работу программы, останавливая ее в нужных местах для контроля текущего состояния или получая динамические данные о функционировании программы (например, данные о состоянии регистров или ячеек памяти). Кроме того, эмуляторы позволяют пользователю модифициро- вать текст программы без повторного ре- дактирования и ассемблирования, что в свою очередь дает возможность вносить и проверять незначительные изменения еще до включения их в исходную програм- му. Некоторые программисты предпочи- тают пользоваться удобствами програм- мирования на языках высокого уровня, из- бегая детализации, характерной для языка ассемблера. В этом случае преобразование операторов входного языка типа Паскаля или ПЛ /М в машинный код целевого ми- кропроцессора осуществляется с по- мощью компиляторов, обеспечивающих существенную экономию времени про- граммирования. При этом, однако, генери- руется недостаточно эффективный ма- шинный код, который может оказаться слишком большой длины применительно к имеющемуся объему памяти микропро- цессорной системы и, следовательно, бу- дет неприемлем. В заключение отметим, что постоянное совершенствование макетных систем бу- дет играть решающую роль в установле- нии окончательной стоимости микропро- цессорных комплексов. Ведь чем легче и быстрее разработчик сможет создавать те или иные программы, тем ниже будет и конечная цена проектируемого микро- процессора. По мере постепенного сниже- ния цен на аппаратные средства и увеличе- ния расходов по оплате труда развитые макетные системы будут становиться все более и более необходимыми для эконо- мичного производства микропроцес- сорных систем. 1.2. Блок-схема процесса разработки системы Процесс разработки микропроцес- сорных систем обычно включает три эта- па: создание программных средств, кон- струирование аппаратных средств и разра- ботку средств диагностики программ. Системному программисту поручается за- дача создания прикладного программного обеспечения, а конструктор логических устройств решает задачу создания аппара- туры, и оба специалиста, как правило, за- нимаются совместно проектированием средств диагностики для тестирования разрабатываемой системы. В случае не- больших систем с работой на всех трех этапах способен справиться один специа- лист, в то время как в проектировании крупных систем может быть занято по не-
Введение в микрокомпьютерные системы поддержки разработок 15 Рис. 1.2. Последовательность действий по раз- работке микропроцессорной системы. скольку специалистов на каждом этапе ра- боты. На рис. 1.2 представлена блок-схема целостного процесса проектирования ми- кропроцессорной системы. Заметим, что в целях экономии времени разработка про- граммных и аппаратных средств может осуществляться параллельно.
16 Глава 1 1.2.1. Разработка программных средств На первом шаге разработки про- граммных средств формулируются техни- ческие требования к системе и составляет- ся блок-схема процесса решения нужных задач, которая обеспечит реализацию за- данных требований. Блок-схема должна быть надлежащим образом структуриро- вана, чтобы гарантировалась высокая эф- фективность логики программ. После того как она готова, можно приступать к напи- санию исходной программы на языке ас- семблера или на языке высокого уровня. Фрагменты блок-схемы могут быть роз- даны различным разработчикам про- граммных средств для кодирования от- дельных модулей, которые будут после отладки связаны воедино. К этому вре- мени нужно получить как можно больше сведений об используемых аппаратных средствах, с тем чтобы в зависящие от них части программы можно было ввести со- ответствующие данные. Написанную исходную программу можно далее вводить посредством редак- тора. При этом всюду, где есть такая воз- можность, в исходном тексте программы следует применять метки, а вместо непос- редственных значений данных употреб- лять те или иные символы. Например, если в регистр А необходимо загрузить содер- жимое счетчика 26Н, то способ самодоку- ментируемого задания этой процеду- ры микропроцессору 8085 состоял бы в написании следующего фрагмента про- граммы: их исправление. Многие развитые ассемб- леры способны транслировать исходные программы для самых различных микро- процессоров, а для указания конкретного их типа в исходный код вводится спе- циальная команда. Обычно выходом ассемблера являются объектный код и листинг программы. Объектный код позже используется редак- тором связей, а листинг может быть вре- менно помещен в дисковый файл или вы- дан на печатающее устройство ввода-вы- вода, если оно свободно. Теперь редактор связей может обра- титься к объектному коду, сгенерирован- ному ассемблером, и сформировать окон- чательный абсолютный код, который бу- дет исполняться целевой системой. На стадии эмуляции этот абсолютный код должен загружаться в ОЗУ макетной си- стемы, после чего можно проводить тести- рование программы с использованием контрольных точек останова или пошаго- вого режима работы. В последнем случае разработчик имеет возможность наблю- дать за исполнением каждой команды про- граммы и следить за ее выполнением. В пошаговом режиме работы содержимое регистров может выдаваться на экран дис- плея для разрешения каких-либо вопросов, возникающих в процессе прогона про- граммы. Koi да все программные ошибки устра- нены, окончательный абсолютный код можно загружать в ППЗУ для использова- ния в прототипе, разработанном группой проектирования аппаратных средств. MVI A,COUNT;PRESET COUNT VALUE COUNT EQU 26H Максимально используя всевозможные символы и метки, легко возвращаться на- зад и изменять те или иные значения (на- пример, COUNT) в строках, где они опре- делены, а не искать каждый раз нуж- ное место в программе на входном языке. Сразу после ввода готовый исходный код может быть оттранслирован с по- мощью ассемблера, который обнаружи- вает синтаксические ошибки и печатает со- ответствующие сообщения, облегчающие 1.2.2. Разработка аппаратных средств Блок-схема используемых аппаратных средств должна разрабатываться на осно- ве сформулированных требований к систе- ме. В ней должны быть указаны все ос- новные элементы аппаратного оборудова- ния и способы их взаимодействия. Приняв эту блок-схему за основу, можно далее со- ставить логическую схему системы. Осо- бое внимание следует обращать на то,
Введение в микрокомпьютерные систёмы поддержки разработок 17 чтобы в проектируемой системе использо- вались наиболее эффективные из имею- щихся логических элементов. При наличии пространственных ограничений важно, чтобы число элементов системы было ми- нимальным. Если же имеются ограниче- ния по стоимости, то число элементов мо- жет быть увеличено за счет применения более дешевых узлов при условии, что они способны выполнять заданные функции. На основе логической схемы создаются далее таблица монтажных соединений и схема размещения элементов системы. Это должно далаться особенно тщатель- но, с тем чтобы гарантировалась правиль- ность соединения всех выводов, поскольку в большинстве случаев разработчик не бу- дет принимать участия в конструировании опытного образца и, следовательно, не сможет обнаружить никаких ошибок, до- пущенных в процессе его создания. Выпол- нив указанную работу, можно собрать опытный образец и выявить ошибки мон- тажа, после чего в целях обеспечения нор- мальной работы прототипа проводится его наладка с использованием электронно- го испытательного оборудования: осцил- лографов, измерительных приборов, логи- ческих пробников и логических анализато- ров. По завершении наладки электрической части опытного образца может быть вы- полнена его функциональная проверка с помощью внутрисхемного эмулятора макетной системы поддержки разработ- ки, который контролирует точность адре- сации, правильность работы устройств ввода-вывода и т. п. На этом создание про- тотипа заканчивается, и он оказывается го- товым к проведению заключительной диагностической проверки. 1.2.3. Разработка средств диагностики Теперь и группа разработки программ- ного обеспечения, и группа конструирова- ния аппаратных средств могут сконцен- трировать свое внимание на диагностиче- ской проверке системы. Для этого необхо- димо иметь такие диагностические сред- ства, которые позволяли бы разработчи- кам в результате всестороннего контроля убедиться в полном соответствии параме- тров системы заданным. Если, например, разрабатываемая система по своему ха- рактеру предназначена прежде всего для осуществления операций ввода-вывода, то должна быть создана диагностическая программа, обеспечивающая всестороннее тестирование именно устройств ввода-вы- вода. Некоторые узлы сложной системы в принципе не могут пройти полную тесто- вую проверку из-за того, что для их тести- рования при всех возможных комбинациях входов необходимо гораздо больше вре- мени, чем его отводится на испытания. В связи с этим важен тщательный отбор контрольных входных данных, чтобы они действительно отображали типичные входы. Подобно другим программным сред- ствам, диагностическая программа тоже разрабатывается в макетных системах поддержки разработок с применением ре- дактора, ассемблера и ряда других инстру- ментальных средств. Законченная диагно- стическая программа выполняется затем на целевой системе с использованием вну- трисхемного эмулятора для проверки пра- вильности функционирования всех аппа- ратных узлов системы. На этой стадии можно исправить любые ошибки в аппа- ратных средствах, и диагностическая про- грамма должна прогоняться до тех пор, пока не будут устранены все дефекты. Ког- да таким образом проверены и налажены все аппаратные средства, эта программа может быть использована для контроля рабочей программы опытного образца системы. Заключительным шагом разработки является подтверждение правильности ра- боты всей системы в целом путем проведе- ния динамических проверок прототипа с применением окончательно отрабо- танных системных программных средств. Как и в случае диагностических программ, тестовые данные, используемые на заклю- чительном шаге, должны быть отобраны самым тщательным образом, чтобы га- рантировалась полная достоверность ре- зультатов испытаний.
18 Глава 1 1.3. Пример разработки аппаратных и программных средств конкретной прикладной системы Для иллюстрации применения опи- санных ранее методов машинного проек- тирования проведем разработку одного простого контроллера, который должен управлять восемью осветительными лам- пами, имитируя обстановку жилого дома включением в случайные моменты време- ни света в одних помещениях и одновре- менным выключением его в других частях дома. Такая система могла бы быть легко построена с использованием про- извольных логических схем, однако на ее примере можно хорошо проиллюстриро- вать разработку микропроцессорных си- стем. Проанализировав технические требова- ния, разработчик решает в этом случае, что применение комплекта микросхем Intel 8085 обеспечивает выполнение необ- ходимых функций системы, гарантируя одновременно компактность схемы кон- троллера. Микросхема 8755 предназна- чается разработчиком для хранения про- грамм (образуя 8-разрядное СППЗУ ем- костью 2К байт), а микросхема 8155 используется как средство моделирования моментов наступления событий и как ОЗУ (представляя собой программируемый таймер и 8-разрядное ОЗУ емкостью 256 байт). Блок-схема разрабатываемой си- стемы приведена на рис. 1.3. К восьми лампочкам Рис. 1.3. Блок-схема устройства, задающего последовательность включения и выключения осветительных ламп. 1.3.1. Разработка программных средств Как только разработчик решил, что порт А микросхемы 8755 будет служить портом вывода данных, фактически стала известной вся информация, касающаяся аппаратных средств. Поскольку в системе желательно формировать события, проис- ходящие в случайные моменты времени, в схеме контроллера должны использо- ваться таймер 8155 в качестве датчика времени и какой-либо генератор слу- чайных чисел для выбора временного ин- тервала между моментами включения и выключения ламп. Далее в соответствии с блок-схемой со- ставляется программа на языке ассембле- ра микропроцессора 8085, которая затем проходит редактирование. Для эффектив- ного проведения отладки программы очень важны комментарии в исходном тек- сте на языке ассемблера, которые поэтому записываются в специально отведенную для них область памяти. Вслед за этим ис- ходная программа транслируется, редак- тируется, связывается и прогоняется с ис- пользованием эмулятора для проверки правильности ее работы. В это время должны быть исправлены все ошибки, об- наруженные в ходе выполнения програм- мы.
Введение в микрокомпьютерные системы поддержки разработок 19 1.3.2. Аппаратные средства На основе блок-схемы системы (рис. 1.3) необходимо разработать ее логи- ческую и монтажную схемы. Как отмеча- лось ранее, в примере используется мини- мальный комплект микросхем стандарт- ного микропроцессора Intel 8085. Для реле, включающих и выключающих лампочки напряжением НОВ переменного тока, не- обходимо иметь отдельную цепь управле- ния. Кроме того, нужно выбрать подходя- щую микросхему задатчика времени для таймера 8155. После составления монтажной схемы может быть осуществлена сборка и налад- ка макета аппаратных средств. На первом этапе наладки следует выявить ошибки в монтаже, а также проверить правиль- ность подвода питания и заземления к гнездам ИС еще до того, как в них будут установлены микросхемы. Включив пита- ние, можно проверить работу цепей управ- ления реле и проконтролировать уровни подаваемого на них напряжения. После первой наладки это аппаратное средство может быть испытано с помощью вну- трисхемного эмулятора, обеспечивающего контроль УВВ, таймера и ОЗУ. 1.3.3. Диагностическая проверка Единственная рабочая функция систем- ной программы, нуждающаяся в провер- ке,-это выбор очередности включения и выключения реле. Для проведения со- ответствующего тестирования необходи- мо иметь диагностическую программу, ко- торая будет определенным образом упо- рядочивать данные, поступающие к порту А микросхемы 8755. Поскольку в реальной действительности моделируемые отрезки времени измеряются несколькими часами, в диагностической программе необходимо использовать более короткие интервалы, чтобы полный цикл работы программы можно было проследить относительно бы- стро. Полностью разработанная диагно- стическая программа может затем редак- тироваться, транслироваться, связываться редактором и проверяться с помощью эмулятора подобно всем другим разрабо- танным раньше программным средствам. После того как осуществлен прогон диагностической программы и установле- на правильность функционирования аппа- ратных средств, законченная программа, написанная для разрабатываемой си- стемы, может быть загружена в ППЗУ и включена в состав программного обеспе- чения прототипа. На этом разработка устройства, управляющего последователь- ностью включения и выключения освети- тельных ламп, завершается; конечное из- делие оказывается испытанным и готовым к непосредственному использованию.
Глава 2 ПРИНЦИПЫ ПОСТРОЕНИЯ МИКРОЭВМ1’ Эта глава прежде всего знакомит чита- теля с аппаратными средствами, на ко- торых строится любая микропроцессор- ная система. Затем обсуждаются прин- ципы построения программных средств и языки программирования. В конце главы приводится пример совместного функцио- нирования аппаратных и программных средств как целостного логического устройства. 2.1. Введение в микропроцессорные системы Появление микропроцессоров привело к резким изменениям в методологии про- ектирования логических систем. При тра- диционных подходах, характеризуемых применением так называемой «произволь- ной» или «жесткой» логики, системы строятся из отдельных логических блоков (триггеров, вентилей и счетчиков), выбор которых диктуется конкретным назначе- нием системы. Эти блоки соединяются ме- жду собой таким образом, чтобы обеспе- чивалась необходимая структура потока данных. При использовании произвольной логики в каждом случае требуется свое ре- шение, и поэтому различные системы имеют очень мало общего. Такой подход напоминает разработку аналоговых схем, при которой структура схемы соответ- 0 Эта глава написана на основе фир- менных материалов Practical Microproces- sors-Hardware, Software and Troubleshooting, copyright 1979. Перепечатано с разрешения фирмы Hewlett-Packard. ствует выполняемой ею функции. Будучи однажды реализованной, функция схемы с трудом поддается изменению. Микропроцессор, напротив, позволяет создать систему управления общего назна- чения, которая затем может быть адапти- рована для самых различных целей по- средством небольших изменений схемы. Индивидуальность каждой отдельной си- стемы обусловливается последователь- ностью команд (называемой программой), которые управляют работой системы. Следовательно, существуют два разных аспекта микропроцессорных систем: физи- ческие компоненты (называемые аппа- ратными средствами) и программы (назы- ваемые программными средствами). 2.1.1. Базовая микропроцессорная система Рассмотрим систему с клавиатурой и цифровым дисплеем, подобную в опре- деленном смысле карманному калькулято- ру. В такой системе при нажатии клавиши на экране дисплея должна появляться со- ответствующая цифра. Это характерный пример естественного использования микропроцессоровХ). Как он реализуется, показывает блок-схема системы, приведен- ная на рис. 2.1. Микропроцессор (назы- ваемый для краткости процессором) является «мозгом» системы. В нем заклю- чена вся логика, необходимая для распоз- навания и выполнения совокупности ко- манд (программы). В его запоминающем !) В отличие от рассмотренного в гл. 1 «надуманного» примера-Прим, перев.
Принципы построения микро ЭВМ 21 Рис. 2.1. Базовая микропроцессорная система, устройстве хранится программа, но могут храниться и данные. Микропроцессору необходимо обмени- ваться информацией с клавиатурой и дис- плеем. Порт ввода, через который процес- сор может считывать данные, связывает его с клавиатурой, а порт вывода, куда процессор может пересылать данные,-с дисплеем. Отдельные узлы микроЭВМ связаны тремя шинами. Шина представляет собой группу проводов, обеспечивающих парал- лельное соединение устройств системы. Для выборки содержимого ячеек памяти или портов ввода-вывода в микропроцес- соре используется адресная шина. Адреса ячеек можно уподобить номерам секций стеллажа для раскладки почтовой коррес- понденции; они указывают ячейки памяти, в которые информация должна быть зане- сена или из которых ее следует взять. Как только микропроцессор выберет определенную ячейку посредством адрес- ной шины, он пересылает информацию на шину данных. Информация может идти от процессора к ЗУ или к порту вывода либо от порта ввода или ЗУ к процессору. Заме- тим, что микропроцессор участвует во всех пересылках данных, т. е. обычно данные не поступают непосредственно от одного по- рта к другому или из ЗУ к порту. Третья шина называется управляющей. Эта шина представляет собой группу про- водов, несущих сигналы, которые сооб- щают ЗУ и устройствам ввода-вывода (УВВ) о готовности микропроцессора вы- полнить очередную пересылку данных. По управляющей шине передаются и такие сигналы, которые позволяют УВВ или ЗУ обращаться к процессору с запросами. Один разряд двоичной информации (1 или 0) называется битом (сокращение от binary digit-двоичная цифра). Один циф- ровой сигнал высокого или низкого уров- ня передает 1 бит информации. Микропро- цессор обрабатывает не каждый от- дельный бит данных, а группы бит, называемые словами. В настоящее время наиболее распространенные микропроцес- соры работают с 8-разрядными словами (байтами), и поэтому такие микропроцес- соры называются 8-разрядными. Приме- нительно к 8-разрядному микропроцессо- ру термины «байт» и «слово» означают одно и то же. Однако при этом необходи- мо помнить, что термин «слово» исполь- зуется также и для обозначения группы из 16 и более двоичных разрядов.
22 Глава 2 2.1.2. Программы Для того чтобы заставить систему вы- полнять поставленную задачу, требуется задать соответствующую последователь- ность команд. Например: 1. Считать данные с клавиатуры. 2. Выдать данные на дисплей. 3. Повторить (вернуться к шагу 1). Чтобы микропроцессор мог выполнить какую-либо из предписанных задач, ко- манды должны быть представлены в коде, понятном микропроцессору, и записаны на машинном языке в память микропроцес- сорной системы. Микропроцессор на- чинает работу с чтения из памяти первой машинной команды. Распознавая смысл выбранной команды, он выполняет ука- занное в ней действие. Затем процессор считывает команду из следующей ячейки памяти и выполняет соответствующее дей- ствие, и далее этот процесс последователь- ного обращения к ячейкам ЗУ повторяет- ся. Существуют, однако, определенные ко- манды, которые заставляют микропроцес- сор нарушить последовательность про- смотра ячеек памяти и обратиться за очередной командой не к следующей, а к какой-нибудь совсем другой ячейке. Сле- довательно, программа может заставить микропроцессор вернуться и к любой предыдущей команде, формируя цикл, подлежащий повторному выполнению. Это даёт возможность реализовывать многократно повторяющиеся действия при помощи относительно короткой про- граммы. 2.1.3. Ввод-вывод Полная микропроцессорная система, включающая микропроцессор, память, по- рты ввода и вывода, называется микро- компьютером или микроЭВМ. Устрой- ства, подключаемые к портам ввода и вывода (например, клавиатура и дис- плей), называются внешними устройства- ми или устройствами ввода-вывода. Внеш- ние устройства образуют интерфейс ме- жду системой и пользователем. Они могут также связывать микрокомпьютер и с ка- ким-либо внешним оборудованием. Обра- щение к ЗУ типа накопителей на маг- нитных лентах или дисках происходит так же, как и к внешним устройствам. Примером применения микропроцес- соров в приборостроении служит выпол- ненный на базе микропроцессора цифро- вой вольтметр (рис. 2.2). Внешними устройствами ввода этого прибора являются аналого-цифровой преобразова- тель и селекторные переключатели диапа- зонов и функций; внешним устройством вывода служит цифровой индикатор. Базо- вая микроЭВМ остается при этом неиз- менной независимо от того, применяется ли она в калькуляторе или в вольтметре; различия в этих двух случаях заключаются во внешних устройствах и программах. Все устройства в микропроцессорной системе обмениваются информацией с ми- кропроцессором, используя одну и ту же группу проводов (шину данных). Микро- процессор выбирает лишь одно какое-ли- бо устройство, с которым будет произво- дить обмен информацией через шину данных, а остальные отключает. Такая способность микропроцессора избира- тельно подключать и отключать раз- личные устройства обеспечивается нали- чием на их выходе, подсоединенном к шине, логической схемы с тремя состоя- ниями (шинного формирователя). На рис. 2.3 показано, как такой форми- рователь используется в микропроцессор- ной системе,-он присутствует на выходе каждого устройства, передающего инфор- мацию на шину данных. Микропроцессор вырабатывает управляющие сигналы (передаваемые по управляющей шине на- ряду с другими), отпирающие формирова- тель только того устройства, с которого будут считываться данные. Одновременно аналогичные формирователи остальных устройств блокируются. На рис. 2.4 пока- заны основные входные и выходные сиг- налы микропроцессора. Это шестнадцать адресных выходов, которые управляют адресной шиной, и восемь информа- ционных выходов, связанных с шиной данных. Информационные выходы являются двунаправленными, т. е. через них данные могут и вводиться, и выво- диться. Управляющие сигналы READ
Принципы построения микроЭВМ 23 Рис. 2 2. Микропроцессорный цифровой во- льтметр. Рис. 2.3. Шинные формирователи с тремя со- стояниями в микропроцессорной системе. и WRITE координируют пересылку дан- ных на шину данных. Два сигнала, показанные в левой части схемы, реализуют дополнительные функ- ции управления. Вход RESET (СБРОС) служит для инициализации внутренних схем микропроцессора. Вход INTERRUPT (ПРЕРЫВАНИЕ) разрешает микропро- цессору остановить выполнение текущей задачи и перейти к другой, которая должна быть выполнена немедленно. Принципы использования этих и некоторых других не упомянутых здесь сигналов описаны в гл. 3. Две связи, показанные в верхней части схемы, идут к внешнему кристаллу, ко- торый применяется для установления ча- стоты генератора автоколебаний в микро- процессоре. Выход этого генератора назы- вается системным отсчетом времени. Генератор тактовых импульсов синх- ронизирует работу всех устройств системы и задает скорость выполнения команды. Обычно микропроцессор состоит из трех частей: управляющего устройства (УУ), арифметико-логического устройства (АЛУ) и регистров. УУ контролирует все операции пересылки и преобразования данных, происходящие в микропроцессо- ре, и синхронизирует их. АЛУ выполняет арифметические и логические операции. В кристалле микропроцессора находятся также четыре основных регистра: счетчик команд (СК); регистр команд (РК); счетчик данных (СД), называемый также реги-
24 Глава 2 От кварцованного задающего генератора Рис. 2.4. Основные сигналы микропроцессора, стром адреса памяти (РАП), и аккумуля- тор (А). СК хранит программные адреса и обычно указывает очередную команду, подлежащую исполнению. Сама команда находится при этом в регистре команд. РАП (регистр адреса памяти) хранит адрес данных. Наконец, аккумулятор содержит, как правило, данные либо результаты арифметических или логических операций. В 8-разрядных микропроцессорах ширина разрядной сетки А и РК составляет восемь бит, а СД и СК-16 бит. 2.1.4. Запоминающие устройства Обычно в микропроцессорных систе- мах для хранения программ и данных ис- пользуются запоминающие устройства на интегральных схемах, которые способны к запоминанию большого числа бит ин- формации на одном кристалле. В настоя- щее время существуют однокристалльные ЗУ емкостью свыше 65 000 бит. В ЗУ ем- костью 65 536 бит может храниться более 8000 буквенно-цифровых символов, т. е. около трех страниц текста этой книги, на кусочке кремния площадью всего прибли- зительно 2 см2. Простейшим запоминающим устрой- ством является триггер, который хранит один бит информации. Регистры содержат до восьми триггеров на одном кристалле микросхемы, причем все они имеют соб- ственные контакты для ввода и вывода данных и соединяются общей шиной синх- ронизующих импульсов. Технология изготовления БИС позво- ляет размещать на одном кристалле тыся- чи триггеров, но при этом возникают новые проблемы, связанные с тем, что невозможно сделать индивидуальные выводы для каждого из них. Решением этой проблемы является использование адресных входов для выбора нужной ячей- ки памяти (триггера). Дешифратор ми- кросхемы ЗУ декодирует соответствую- щий адрес и связывает выбранную ячейку памяти с информационными выводами микросхемы. На рис. 2.5 показана скелетная схема запоминающего устройства емкостью 8 бит (большинство реальных ЗУ имеет значительно большую емкость). Для про- стоты рассмотрены только цепи вывода данных, которые функционируют следую- щим образом. Двоичные адресные входные сигналы преобразуются дешиф- ратором и подаются на восемь отдельных выходов, причем один выход соответ- ствует одной комбинации адресных линий. Эти сигналы управляют тристабильными схемами шинных формирователей на вы- ходе каждой ячейки памяти (триггера). Данные из адресуемой ячейки пересы- лаются в линию вывода данных. Такой подход позволяет использовать один ин- формационный вывод для всех ячеек кри- сталла памяти. В каждой ячейке ЗУ чаще всего хранит- ся несколько бит информации, а не один, как в приведенном выше примере (в зави- симости от конкретной интегральной
Принципы построения микроЭВМ 25 Рис. 2.5. Принципиальная схема 8-разрядного ЗУ, показывающая, как для выборки всех ячеек памяти используется одна линия данных; зафиксирован момент выборки ячейки 5 (1012). схемы это может быть 1, 4 или 8 бит). Если схема имеет восемь информационных вы- водов, то каждая ячейка памяти способна хранить 8 бит. Заметим попутно, что хотя ЗУ может содержать тысячи ячеек, доступ в каждый момент времени может осущест- вляться лишь к одной из них. Число адресуемых ячеек зависит от числа адресных линий. Имея одну адрес- ную линию, можно выбрать одну из двух ячеек: с адресом 0 или с адресом 1. Имея две адресные линии, можно выбрать одну из четырех ячеек с адресами 00, 01, 10 и И. Общее правило таково: Число адресуемых ячеек = 2N, где N- количество адресных линий. Запо- минающие устройства на интегральных схемах, используемые с микропроцессора- ми, делятся на две больших категории: ПЗУ и ЗУПВ. ПЗУ (постоянное запоми- нающее устройство)-это память, из ко- торой можно производить только считы- вание. Информация записывается в нее в процессе изготовления кристалла или с помощью специальной процедуры про- граммирования, предшествующей уста- новке микросхемы памяти в систему. Ча- сто программу, записанную в ПЗУ, отно- сят к программно-аппаратным средствам. ЗУПВ (запоминающее устройство с произвольной выборкой)-это память, в которую данные могут быть записаны, а затем считаны. В действительности ЗУПВ - это неправильное название; произволь- ная выборка означает, что время доступа к любой ячейке памяти одинаково, но та- ким свойством обладает и ПЗУ. Более пра- вильно было бы называть ЗУПВ памятью с оперативной записью и считыванием,
26 Глава 2 или просто ОЗУ, однако аббревиатура ЗУПВ широко используется для обозначе- ния ОЗУ именно на интегральных схемахЧ Примером ЗУ без произвольной выборки является устройство записи ди- скретных данных на магнитную ленту: время доступа к конкретной ячейке в та- ком устройстве зависит от положения ленты в момент поступления сигнала записи. Отличительной чертой полупроводни- ковых ОЗУ является их энергозависи- мость: при отключении питания храня- щаяся в них информация теряется, а после восстановления питания в ОЗУ содержат- ся уже совершенно неизвестные данные. Этой проблемы не существует в случае ПЗУ, поэтому они и используются в каче- стве запоминающих устройств для по- стоянного хранения программ и данных. Поскольку содержимое ПЗУ не может быть изменено, в качестве ЗУ для вре- менного промежуточного хранения про- Рис. 2.6. 8-разрядное ПЗУ емкостью 2К байт (ПЗУ 2К х 8). п В дальнейшем для запоминающих устройств с произвольной выборкой будет ис- пользоваться аббревиатура ОЗУ, более рас- пространенная в отечественной литературе.- Прим. перев. грамм и данных должны использовать- ся ОЗУ. На рис. 2.6 показано ПЗУ на 2048 слов длиной 8 бит и общей емкостью 16 384 бит. Когда употребляют большие числа, представляющие собой степень двойки, часто для обозначения числа 1О24(210) используют символ К. Таким образом, ПЗУ, показанное на рисунке, имеет емкость 2К байт, или 16К бит. А по- скольку каждая ячейка содержит 8 бит, это запоминающее устройство обозначается как ПЗУ 2К х 8. Если уровень сигнала выборки (CS) кристалла ПЗУ низкий, то его выходные формирователи разблокированы. Когда же приходит сигнал высокого уровня, ин- формационные выходы приобретают вы- сокое (полное) сопротивление. Наличие выходов с тремя состояниями позволяет связывать линии данных многих ЗУ вместе и выбирать конкретное устройство посред- ством подачи на его вход сигнала выбор- ки, имеющего низкий уровень. На рис. 2.7 показано ОЗУ 1К х 8. Это ОЗУ содержит 1024 8-разрядных ячейки. Линии данных в этом ЗУ являются двунап- равленными, поскольку информация мо- жет и записываться в память, и считывать- ся. ОЗУ имеет дополнительную линию
Принципы построения микроЭВМ 27 Выбор — микросхемы Адреса < р Данные READ/WRITE ♦ Рис. 2.7. 8-разрядное ОЗУ емкостью 1К байт (ОЗУ 1К х 8). управления WRITE (ЗАПИСЬ). Для запо- минания информации в ОЗУ выбирается нужный адрес, данные пересылаются по линиям данных, и шина WRITE переходит в состояние, характеризуемое низким уровнем потенциала. После этого посту- пает сигнал выбора нужной микросхемы ОЗУ и данные запоминаются. Состояние шины записи определяет направление по- тока данных. Обычно она возбуждается низким уровнем сигнала и часто называет- ся шиной чтения/записи (RD/WR или R/W). Это обозначение показывает, что при высоком уровне сигнала происхо- дит считывание, а при низком-запись данных. Отметим, что вход чтения/записи не работает до тех пор, пока не будет по- дан сигнал выборки кристалла. 2.1.5. Мини- и микроЭВМ МикроЭВМ функционально похожи на мини-ЭВМ, и на самом деле разница ме- жду ними становится все менее и менее за- метной. Центральный процессор (ЦП) микроЭВМ-это микропроцессор. ЦП ми- ни-ЭВМ обычно представляет собой пе- чатную плату, на которой размещаются десятки сложных, но более быстродей- ствующих интегральных схем. Основное функциональное различие состоит в том, что мини-ЭВМ обычно имеют большее быстродействие, большие габариты и бо- лее высокую стоимость. Как только мик- ропроцессоры стали конкурировать с ми- ни-ЭВМ по скорости и производительно- сти, были разработаны новые более быстродействующие и более мощные мо- дели мини-ЭВМ. В схемах этих новых ми- ни-ЭВМ часто используются микропро- цессоры. Таким образом, несмотря на то что основные различия в быстродействии, производительности и габаритах остают- ся, граница между микроЭВМ и мини- ЭВМ становится все более неопределен- ной. В настоящее время микроЭВМ нахо- дят применение в тех системах, для которых мини-ЭВМ была бы слишком громоздкой и дорогой. 2.2. Системы счисления и булева алгебра В этом разделе мы рассмотрим деся- тичную, двоичную, восьмеричную и шест- надцатеричную системы счисления, а так- же арифметические и булевы операции.
28 Глава 2 2.2.1. Десятичная и двоичная системы счисления Большинство человечества пользуется десятичной системой (системой счисления с основанием 10), в которой различные числа от 0 до 9 могут быть представлены одной цифрой. В микропроцессорах используется двоичная система, или система с основа- нием 2. В этой системе одной цифрой пред- ставляются всего два числа: 0 и 1. Преобразование двоичного числа в де- сятичное можно выполнить следующим образом: 100112 = 1 х 24 + 0х 23 + 0х 22 + 1 х х 21 + 1 х 2° = = 16 + 0 + 0 + 2+1 = 1910. Обратное преобразование десятичных чи- сел в двоичные производится непрерыв- ным делением преобразуемого числа на 2 с одновременным слежением за получаю- щимися остатками. Например 9-2 = 4 4-2 = 2 2-2 = 1 1-2=0 остаток 1 остаток 0 остаток 0 остаток 1 910 = 1 0 0 2.2.2. Восьмеричная система счисления Человеку труднее пользоваться в рабо- те двоичными числами, чем десятичными. Причина этого кроется в том, что двоичные числа содержат слишком много нулей и единиц. Чтобы уменьшить эти трудности и представлять двоичные числа в более компактной форме, используется восьме- ричная система счисления, или система с основанием 8. В этой системе двоичное число разбивается на группы бит, по три в каждой, считая справа. Например, двоич- ное число 100 0102 может быть преобразо- вано в восьмеричное следующим образом: 100 010 4 2« 2.2.3. Шестнадцатеричная система счисления Другой компактной формой представ- ления двоичных чисел является шестнад- цатеричная система счисления, или систе- ма с основанием 16. Двоичное число представляется в этой системе группами бит, по четыре в каждой, считая справа. Поскольку четырьмя битами можно выра- зить десятичные числа от 0 до 15, требует- ся найти способ отображения десятичных чисел от 10 до 15 посредством одного сим- вола. Для этой цели употребляются буквы от А до F. В качестве примера шестнадцатерично- го числа рассмотрим следующее: 0101 1111 -у- -у'-0101 11112 = 5F16 Табл. 2.1 показывает взаимосвязь деся- тичных, двоичных и шестнадцатеричных чисел. Шестнадцатеричные числа предпочти- тельнее восьмеричных, поскольку, напри- мер, 8-разрядное двоичное число может быть представлено двумя шестнадцате- ричными цифрами, в то время как восьме- ричных цифр для той же цели требуется три. 2.2.4. Обозначение позиций двоичных разрядов Часто при манипулировании двоичны- ми числами возникает необходимость обращения к конкретному разряду или группе разрядов. Крайний правый разряд называется самым младшим разрядом, а крайний левый-самым старшим разря- дом. При обращении к группе разрядов, стоящих в начале или конце слова, раз- ряды, стоящие слева, именуются старши- ми (или самыми старшими), а разряды, стоящие справа,-младшими (или самыми младшими). 2.2.5. Основные булевы операции Существуют четыре основные булевые операции: ИЛИ, И, ИСКЛЮЧАЮЩЕЕ
Принципы построения микроЭВМ 29 Таблица 2.1. Шестнадцатеричное и двоичное представления десятичных чисел Десятичное число Шестнадцатеричное представление Двоичное представление 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 А 1010 11 В 1011 12 С 1100 13 D 1101 14 Е 1110 15 F 1111 ИЛИ и НЕ. Обычно в микропроцессорах предусматриваются команды для выпол- нения этих операций. Все указанные опера- ции, за исключением НЕ, выполняются при двух переменных на входе, и в каждом случае получается только один выход. Операция НЕ характеризуется одним вхо- дом и одним выходом. Операция ИЛИ (табл. 2.2) Если обе входные переменные А и В вентиля ИЛИ имеют значение 0, то на выходе его появится 0. Во всех остальных случаях выход принимает значение 1. Обычно для обозначения этой операции используются символы « + » или « V». Таблица 2.2. Таблица ис- тинности вентиля ИЛИ Входы Выход = А В = А V В 0 0 0 0 1 1 1 0 1 1 1 1 Операция И (табл. 2.3) Если обе входные переменные А и В вентиля И принимают значение 1, то на выходе появляется 1. Во всех остальных случаях выход принимает значение 0. Опе- рация обозначается символами «.» (точка) или « А ». Таблица 2.3. Таблица ис- тинности вентиля И Входы Выход = = А А В А в 0 0 0 0 1 0 1 1 0 1 0 1 Операция ИСКЛЮЧАЮЩЕЕ ИЛИ (табл. 2.4) Если обе входные переменные А и В вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ имеют одинаковое значение, то выход принимает значение 0. В остальных слу- чаях выход равен 1. Операция обозначает- ся символами ф или V. Таблица 2.4. Таблица ис- тинности вентиля ИСКЛЮЧАЮЩЕЕ ИЛИ Входы А В Выход = = А© В 0 0 0 0 1 1 1 0 1 1 1 0
30 Глава 2 Операция НЕ НЕ инвертирует любую двоичную циф- ру или группу цифр, т. е. НЕ 1 = 0 НЕ 0= 1 Остальные логические функции реали- зуются с использованием четырех ос- новных логических операций. Например, комбинация И и НЕ дает функцию И-НЕ, а комбинация ИЛИ и НЕ-функцию ИЛИ- НЕ. двоичное вычитание: Уменьша- емое 0010 0 1 1 1 (391О) Вычитаемое 0001 1010 — (261О) 0000 1 1 0 12 = (1310) С помощью дополнительного кода это вы- читание можно выполнить следующим образом: Дополнительный код вычитаемого = 0001 1010= 1 1 100101 _______4- 1 11100110 2.2.6. Арифметические и логические операции Двоичное сложение Для сложения двух двоичных цифр су- ществуют четыре возможные комбинации: Первое Второе слага- 4- слага- = Резуль- 4- Перенос емое емое тат 0 4- 0 0 0 4- 1 1 1 + 0 1 1 + 1 = 04-1 Рассмотрим сложение следующих двух 8-разрядных чисел: Промежуточный перенос 1 1 ,0 101 00 1 1 (831О) + 001 1 1000 (561О) 1000 10 1 12 (1391О) Двоичное вычитание Двоичное вычитание можно выпол- нить, применяя арифметику двоичного дополнения. Двоичное дополнение (дополни- тельный код) двоичного числа можно по- лучить, заменив в числе нули единицами, а единицы-нулями, прибавив затем еди- ницу. На первом шаге этого преобразова- ния формируется обратный код числа. Двоичное вычитание может быть вы- полнено прибавлением дополнительного кода вычитаемого к уменьшаемому. В ка- честве примера рассмотрим следующее Уменьшаемое Дополнительный код вычитаемого 0 0 1 0 0 II I 1110 0110 0 000 110 1 = 13„) Этот игнорируемый перенос означает, что результат положительный. Отсутствие цифры переноса означает, что результат имеет отрицательный знак, и окончательный ответ представляет со- бой дополнительный код результата сло- жения уменьшаемого с дополнительным кодом вычитаемого. Логические операции Булевы операции над двумя числами, каждое из которых состоит более чем из одного разряда, можно выполнять пораз- рядно, начиная с самого младшего разря- да. Например 0101 0011 V 0 0 1 1 10 11 Операция ИЛИ 0 111 10 11 Рассмотрим другой пример: 0110 1010 Л 0110 0101 Операция И 0 110 0000 2.2.7. Представление чисел Системы, в которых применяются ми- кропроцессоры, часто используются для
Принципы построения микроЭВМ 31 вычисления сложных математических функций в широком диапазоне чисел; при- мером такой системы является рассмот- ренный ранее электронный калькулятор. Однако приведенные в этой главе при- меры ограничивались положительными целыми числами от 0 до 255, а функ- ции - выполнением простых логических операций, сложением и вычитанием. В дан- ном разделе обсуждаются способы пред- ставления более широкого диапазона чи- сел и выполнения сложных математиче- ских операций. Отрицательные числа Рассмотрим задачу представления по- ложительных и отрицательных чисел 8-разрядными словами. Поскольку не су- ществует ни одного способа представить восемью битами более чем 256 различных чисел, их диапазон ограничивается величи- нами ± 127. Первые 128 чисел, от 0 до 127 (7F в шестнадцатеричной системе), опреде- ляются как положительные числа. Отрица- тельные числа получаются обратным от- счетом от нуля. Так же и в аппаратном реверсивном счетчике - если содержимое регистра равно 0000 0000 и происходит уменьшение этого числа на единицу, то следующим показанием счетчика будет 1111 1111 (FF в шестнадцатеричной систе- ме). Следовательно, FF является шестнад- цатеричным представлением числа — 1. Такое представление носит название до- полнения до двух (или дополнительного кода числа). В табл. 2.5 приведены допол- нительные коды чисел от — 8 до +7. Заметим, что самый старший разряд показывает знак числа. Если этот разряд равен нулю, то число положительное, если единице - отрицательное. Процедура вычисления дополнитель- ного кода проста. Для положительных чи- сел дополнительные коды совпадают с их представлением в двоичной системе (как показывают первые восемь строк табл. 2.5). В случае отрицательных чисел для определения дополнительного кода необходимо произвести следующие дей- ствия: 1. Записать двоичное представление абсолютной величины числа (например, 00000101 для числа —5). 2. Произвести инвертирование (полу- чить обратный код) двоичного числа (на- пример, для числа 00000101 это будет 11111010). 3. Прибавить единицу для получения дополнительного кода числа (например, 11111010 + 1 = 11111011 = = дополнительный код числа — 5). Такую же процедуру нужно проделать и для получения абсолютного значения от- Таблица 2.5. Дополнительные коды чисел от —8 до +7 Десятичное число Двоичный дополнительный код 7 0000 0111 6 0000 0110 5 0000 0101 4 0000 0100 3 0000 0011 2 0000 0010 1 0000 0001 0 0000 0000 -1 1111 1111 — 2 1111 1110 -3 1111 1101 — 4 1111 1100 -5 1111 1011 -6 1111 1010 — 7 1111 1001 -8 1111 1000
32 Глава 2 рицательного числа по его дополнитель- ному коду: следует образовать дополне- ние числа, выражающего дополнительный код, и затем прибавить единицу. Рассмотрим, например, дополни- тельный код числа 11111011: 11111011 = 0000 0100 0000 0100 + 1 = = 00000101 = 5 Следовательно, 11111011 есть дополни- тельный код отрицательного числа — 5. Заметьте, что число 11111011 можно было бы также интерпретировать как деся- тичное число 251, если бы его рассматри- вали как правильное двоичное число, а не как дополнительный код. Поэтому необхо- димо уметь отличать числа, являющиеся дополнительными кодами, и помнить, что с ними нужно обращаться соответствую- щим образом. Дополнительные коды очень удобны для арифметических действий. Выражаю- щие их числа при сложении, вычитании, умножении или делении также дают числа, представляющие собой дополнительные коды. Обычно они используются в микро- процессорных системах, которые должны оперировать как с положительными, так и с отрицательными числами. Большие и малые числа Несмотря на то что дополнительный код обеспечивает возможность представ- ления отрицательных чисел, их диапазон пока еще ограничивается целыми числами, абсолютная величина которых менее 129. Диапазон этот можно расширить несколь- кими способами в зависимости от требуе- мой его ширины и необходимой степени точности. Самый простой способ расширения диапазона чисел, который можно предло- жить,-увеличить количество двоичных разрядов в представлении каждого числа. Это часто достигается использованием двойного слова для выражения одного числа (рис. 2.8). В микропроцессоре 8085 та же цель может быть достигнута исполь- зованием двойных регистровых команд, которые обрабатывают 16 бит одновре- менно. Использование двойной длины слов для представления одного числа на- зывается представлением с двойной точ- ностью. В 8-разрядных микропроцессорах этот способ позволяет представлять числа в диапазоне от 0 до 65 535, или от — 32 767 до + 32 767. Ясно, что двойная точность расширяет диапазон целых чисел, но как быть с числа- ми, меньшими единицы или лежащими, скажем, в интервале между 3 и 4? На рис. 2.9 показан способ представления та- ких значений в форме с фиксированной за- пятой. В этом примере для запоминания чисел используются два байта. Первый байт-это целая часть числа, т. е. та часть, которая стоит слева от десятичной (в дей- ствительности от двоичной)запятой. Вто- рой байт-это дробная часть числа, т.е. часть, стоящая справа от двоичной запя- той. Указанный способ позволяет, напри- мер, представлять столь малые числа, как 2 - 8 = 1 /256, а также дробные числа, на- пример 3,17. Однако разрешающая спо- собность для дробных чисел при этом способе представления ограничивается ве- личиной 1/256 (примерно 0,004), а предста- вляемые числа лежат в диапазоне + 127. Область применения указанного спосо- ба представления чисел можно расширить, если использовать для записи каждой ча- сти числа не один, а несколько байт; одна- ко до тех пор, пока это будет требовать от- носительно большого объема памяти для хранения каждого числа, представление С С Р Старший байт С м р Младший байт Рис. 2.8. Схема обеспечения двойной точности (ССР-самый старший разряд; СМР-самый младший разряд).
Принципы построения микроЭВМ 33 Подразумеваемая двоичная запятая Целая часть Дробная часть Рис. 2.9. Схема представления чисел в форме с фиксированной запятой. Мантисса Порядок Рис. 2.10. Схема представления чисел в форме с плавающей запятой. в форме с фиксированной запятой таких чисел, как 360 000 000 000 или 0,000000297, будет оставаться неприемлемым. Заметим, что эти числа содержат много нулей, ко- торые просто «держат место» в соответ- ствующих позициях. Такие числа могут быть без труда представлены с использо- ванием экспоненциального представления, при котором отдельно представляются мантисса и порядок числа. Мантисса-это собственное значение числа, лежащее в диапазоне от 0 до 1. Например, число 360 000 000 000 можно записать как 0,36 х х 1012 (0,36-мантисса, а 12-порядок), а число 0,000000297-как 0,297 x 10" 6 (0,297 - мантисса, а — 6 - порядок). Предположим далее, что для представ- ления каждого числа используются 2 бай- та, как показано на рис. 2.10. Один байт отводится для мантиссы, а другой-для порядка числа. Диапазон представляемых таким способом чисел при условии, что и мантисса, и порядок хранятся в виде до- полнительных кодов, составляет + 101127. Это очень широкая область значений, так как 10127-действительно очень боль- шое число, а 10"127-очень малое. Такой способ, называемый представле- нием в форме с плавающей запятой, упот- ребляется обычно при работе с числами, значения которых изменяются в широком диапазоне. В целях повышения разрешаю- щей способности этого представления ча- сто для записи числа используется более 2 байт (при этом увеличивается количе- ство разрядов мантиссы). Заметим, что используемый способ представления чисел должен указываться в явном виде, с тем чтобы обеспечивалось правильное декодирование каждого числа. Одни и те же два информационных байта могут декодироваться совершенно по-раз- ному, если их запись интерпретировать как пару чисел в дополнительном коде, как одно число с фиксированной запятой или как одно число с плавающей запятой. Про- граммные средства обработки числовых данных должны «знать», какой именно способ представления чисел используется в каждом конкретном случае. Представление десятичных чисел Большинство микропроцессорных си- стем оснащается десятичными устройства- ми ввода-вывода, каковыми являются, на- пример, клавиатура и дисплей. А посколь- ку десятичная форма чисел является естественной для большинства людей, то и большая часть микропроцессорных си- стем должна предусматривать именно эту форму. Трудность заключается здесь в отыска- нии удобного метода записи десятичных чисел с использованием двоичной процес- сорной логики. Предположим, например, что с клавиатуры считывается десятичное число 28. Оно должно быть преобразовано в двоичный эквивалент 0001 1100 (1С-в шестнадцатеричной форме). Однако, если далее это число должно быть выведено на экран десятичного дисплея, оно долж- но подвергнуться обратному преобра- зованию в две десятичные цифры «2» и «8». Альтернативный способ заключается
34 Глава 2 в том, чтобы взять каждую из десятичных цифр 2 и 8 и преобразовать их независимо в два 4-разрядных двоичных числа, ко- торые затем упаковываются в один байт; в результате число 28 будет закодировано как 00101000. Такое преобразование назы- вается двоично-десятичным кодированием десятичных чисел. Заметим, что в этом случае двоичные значения от 1010 до 1111 никогда не употребляются. Обыкновенно двоично-кодированное представление десятичных чисел исполь- зуется в системах, имеющих десятичные устройства ввода-вывода, чтобы избежать процесса десятично-двоичного преобразо- вания. Единственный недостаток этого способа заключается в том, что он не эф- фективен в смысле использования памяти. Самое большое десятичное число, которое можно запомнить в одном байте, исполь- зуя этот способ, равно 99, тогда как в чисто Таблица 2.6. Символы стандартного кода ASCII двоичном представлении это 255. Арифме- тические действия с двоично-десятичными числами также не удобны, поскольку эта система счисления не является «естествен- ной». Однако большинство микропроцес- соров снабжено специальными командами для обработки двоично-десятичных чисел (см. описание команды DAA в приложении А). Представление буквенно-цифровых данных Многие микропроцессорные системы должны производить действия не только над цифрами, но и над буквами. Например, в терминале вычислительной машины должно осуществляться считывание сим- волов с клавиатуры и пересылка их в па- мять ЭВМ. Поэтому буквы тоже должны быть представлены тем или иным спосо- бом в виде двоичных чисел. 00 NUL 20 Пробел 40 @ 60 • 01 SOH 21 I 41 А 61 а 02 STX 22 42 В 62 b 03 ЕТХ 23 # 43 С 63 с 04 EOT 24 $ 44 D 64 d 05 ENQ 25 °/о 45 Е 65 е 06 АСК 26 & 46 F 66 f 07 BEL 27 • 47 G 67 g 08 BS 28 ( 48 Н 68 h 09 НТ 29 ) 49 I 69 i 0А LF 2A * 4А J 6А j ОВ VT 2B + 4В К 6В k ОС FF 2C 4С L 6С I 0D CR 2D — 4D М 6D m 0Е SO 2E 4Е N 6Е n 0F SI 2F / 4F О 6F 0 10 DLE 30 0 50 Р 70 P 11 DC1 31 1 51 Q 71 q 12 DC2 32 2 52 R 72 r 13 DC3 33 3 53 S 73 s 14 DC4 34 4 54 Т 74 t 15 NAK 35 5 55 и 75 u 16 SYN 36 6 56 V 76 V 17 ETB 37 7 57 W 77 w 18 CAN 38 8 58 X 78 X 19 EM 39 9 59 Y 79 У 1А SUB ЗА 5А Z 7А z 1В ESC ЗВ 5В [ 7В I 1С FS ЗС < 5С \ 7С I 1D GS 3D = 5D I 7D 1Е RS ЗЕ 5Е Л 7Е 1F US 3F ? 5F 7F Исключение символа
Принципы построения микроЭВМ 35 Для этого существует широко распро- страненный код ASCII, называемый стан- дартным американским кодом для обмена информацией (табл. 2.6). В нем каждому символу присваивается определенное зна- чение (двоичное). Заметим, что так же, как и при любых других способах представле- ния данных, важен контекст, в котором они находятся. Например, 0101 0100 может быть как двоичным представлением деся- тичного числа 84, так и двоично-деся- тичным представлением десятичного чис- ла 54 (символ Т в коде ASCII). Некоторые коды табл. 2.6 являются управляющими и имеют специальное назначение. Напри- мер, код 0А используется для вывода одной строки данных на печатающее устройство или на экран дисплея. Кодирование символов - операция в достаточной мере произвольная, и по- этому существует множество самых раз- личных кодов. В настоящее время наибо- лее распространен код ASCII, а в прошлом очень популярным был другой код, так на- зываемый код Бодо. В машинах фирмы IBM используется расширенный двоично- десятичный код для обмена информацией EBCDIC (Extended Binary Coded Decimal Interchange Code). Табличный поиск Общая задача программирования со- стоит в преобразовании одного представ- ления чисел или кодов в другое. Рассмо- трим, например, задачу вывода шестнад- цатеричной цифры на 7-сегментный инди- катор. Для этого необходимо каким-то образом указать, какие его сегменты дол- жны включаться при индикации соответ- ствующего символа. Здесь требуется вы- полнять преобразование данных из двоич- ного кода в семизначный (7-сегментный). Делается это с применением способа, который называется табличным поиском. Суть его состоит в том, что отображение каждого символа в виде комбинации нужных сегментов хранится в памяти в форме списка, именуемого таблицей. Рис. 2.11. Алгоритм табличного поиска для преобразования двоичного кода в 7-сег- ментный.
36 Глава 2 Первая запись таблицы содержит ком- бинацию сегментов символа 0, следую- щая -1 и т. д. Для перевода двоичного кода в семизначный последний просто отыски- вается в таблице. На рис. 2.11 показана блок-схема программы, преобразующей таким образом двоичные данные в 7-сег- ментный код. Сначала преобразуемое двоичное число прибавляется к адресу пер- вой записи в таблице, в результате чего определяется адрес табличной записи, со- держащей требуемый 7-сегментный код. Содержимое адресуемой ячейки затем считывается, и преобразование на этом заканчивается. 2.3. Основы построения программных средств В предыдущих разделах говорилось о том, что микропроцессорная система со- стоит из аппаратных и программных средств. В этом разделе обсуждаются раз- личные аспекты создания программных средств (или программирования) системы. Программы первоначально пишутся так, как это удобно разрабатывающему их человеку (программисту). Но затем они подлежат преобразованию в другую фор- му и должны храниться в коде, понятном микропроцессору, который будет считы- вать коды из памяти по одному за одно обращение и выполнять указанные в них операции. Важным аспектом является то, что ЭВМ, обладая высоким быстродействием и точностью, не способны к самостоятель- ному творчеству. ЭВМ могут иметь дело и со случайными явлениями, но только в тех пределах, для которых они были запрограммированы. Кажущиеся мыслительные способности таких машин являются следствием функ- ционирования множества заложенных в них программ. Использование микро- процессоров позволяет частично встраи- вать этот мнимый интеллект в созда- ваемые на их основе изделия, чего очень трудно добиться, применяя устройства с «жесткой» логикой. 2.3.1. МикроЭВМ как логическое устройство Микропроцессорные системы часто ис- пользуются для замены схем, выпол- ненных на стандартных логических эле- ментах. Для того чтобы проиллюстриро- вать различие между «запрограммиро- ванным» и обычным «жестким» логиче- ским устройством, рассмотрим примене- ние микропроцессора для реализации простой логической схемы И. В такой микропроцессорной схеме не- обходимо иметь порт ввода для входов вентиля и порт вывода для его выхода (рис. 2.12). Микропроцессор выполняет операцию И, используя команды, которые хранятся в ЗУ. Так как у вентиля И всего один выход, достаточно иметь однораз- рядный порт вывода. Для микропроцессора, выполняющего функцию вентиля И, нужна соответствую- щая программа. Ниже приводится пере- чень команд, которые реализуют эту функ- цию: 1. Считать сигналы из порта ввода. 2. Перейти к шагу 5, если все входные сигналы высокого уровня; иначе перейти к шагу 3. 3. Установить низкий уровень выход- ного сигнала. 4. Перейти к шагу 1. 5. Установить высокий уровень выход- ного сигнала. 6. Перейти к шагу 1. Сначала считываются сигналы из по- рта ввода. Затем проверяется, все ли входные сигналы имеют высокий уровень, поскольку в этом и состоит суть операции И. Если все входные сигналы высокого уровня, устанавливается высокий уровень выходного сигнала; в других случаях вы- ходной сигнал будет иметь низкий уро- вень. После выполнения этой процедуры программа возвращается к первому шагу и повторяется неопределенное число раз, поэтому на выходе непрерывно повто- ряются изменения на входе.
Принципы построения микроЭВМ 37 Поток данных Поток команд Шина данных Рис. 2.12. Микропроцессорный вентиль И. Имя программы Рис. 2.13. Символы блок-схем. 2.3.2. Блок-схемы Блок-схемы являются графическим способом представления программных операций. В их состав входят блоки раз- личного типа, которые между собой связы- ваются линиями. Существуют три ос- новных типа блоков, используемых при составлении блок-схем (рис. 2.13). Блок прямоугольной формы описывает каждую операцию программы. Блок ромбической формы используется для обозначения опе- рации принятия решения, например при проверке переменной величины. Блок овальной формы означает начало блок- схемы, причем название программы рас- полагается внутри него. Блок подобной формы используется также для обозначе- ния конца блок-схемы. Существует много других специальных символов, однако в данном разделе они не используются. На рис. 2.14 представлена блок-схема вентиля И. На каждой линии программы расположен блок, за исключением двух ко- манд «Перейти к», которые просто пред- ставлены линией. Эти линии соответ- ствуют потоку команд от одного блока к другому. Хотя блок-схема содержит ту же ин- формацию, что и перечень программ, она имеет более наглядный вид. Когда Вы впервые составляете программу, то связь Ваших мыслей с документом (програм- мой) обеспечивает блок-схема. Переме- щаясь по блок-схеме, можно проследить логику. Затем на основе блок-схемы мож- но написать рабочую программу. Блок- схемы оказываются также полезными в тех случаях, когда возникает необходи- мость обращения к написанной ранее про- грамме для выяснения ее назначения и функций.
38 Глава 2 Рис. 2.14. Блок-схема микропроцессорного вентиля И. 2.3.3. Языки программирования Для написания программ очень удобен английский язык, так как его понимают большинство людей, но, к сожалению, для микропроцессора он совершенно непоня- тен. Язык, который понимает микропро- цессор, называется машинным языком (ча- сто называемый машинным кодом). По- скольку микропроцессоры непосредствен- но имеют дело только с цифровыми сигналами, команды машинного языка представляют собой двоичные коды (на- пример, 00111100). Микропроцессор кон- струируется так, чтобы обеспечивалось распознавание конкретной группы кодов, которая называется системой команд. Человеку нелегко пользоваться ма- шинным языком, поскольку, например, не- ясен смысл приведенного выше кода 0011 1100. Чтобы облегчить работу с ма- шинным языком, можно использовать шестнадцатеричное представление, при ко- тором код ООП 1100 заменяется на ЗС. Од- нако и это еще не дает ключа к пониманию смысла команды. Можно далее заменить код каждой ко- манды коротким именем, называемым мнемоническим. Например, код ЗС, ко- торый для микропроцессора 8085 означает «увеличить содержимое регистра А», вы- глядит в этом случае как INRA. Мнемони- ка оказывается гораздо проще для запо- минания, чем машинные коды. Присвоив мнемоническое (символьное) имя коду каждой команды, вы можете писать про- грамму, используя вместо кодов мнемони- ку, которая легко может быть преобразо- вана в машинные коды после написания программы. Следовательно, в данном слу- чае нет никакой нужды помнить ма- шинные коды, а смысл каждой команды запоминается гораздо легче, чем ее код. Программы, написанные с использова- нием мнемонических обозначений, назы- ваются программами на языке ассемб- лера. Машинный язык определяется главным образом конструкцией кристалла микропроцессора и не подлежит измене- нию. Мнемоника же языка ассемблера раз- рабатывается изготовителем микропро- цессора с ориентацией на обеспечение удобства программирования и не зависит от конструкции процессора. Можно, на- пример, написать INC А вместо INR А и не допустить при этом ошибки, если и то и другое имя будет преобразовано в ма- шинный код как ЗС. В этой книге мы будем следовать условным обозначениям, приня- тым в языке ассемблера микропроцессора Intel 8085. Несмотря на то что язык Ассем- блера несравненно удобнее, чем ма- шинный язык, на нем все же трудно писать сложные программы. Для упрощения про- граммирования разработаны языки высо- кого уровня. Они похожи на английский язык и никак не зависят от конструкции микропроцессора. Типичной для такого языка могла бы быть команда LET COUNT = 10 или PRINT COUNT. Эти ко- манды по своей структуре гораздо слож- нее тех, которые способен понять микро- процессор. Поэтому микроЭВМ, в ко- торых используются языки высокого уров-
Принципы построения микроЭВМ 39 Рис. 2.15. Блок-схема программы счета до 10. ня, снабжаются также длинными сложны- ми программами, которые переводят про- грамму, написанную на языке высокого уровня, на машинный язык. Такие транс- лирующие программы постоянно хранят- ся в памяти ЭВМ и называются компиля- торами. Принципы их работы мы проиллю- стрируем простым примером программи- рования. На рис. 2.15 изображена блок- схема программы, выполняющей счет до десяти. В этой программе нет входа и вы- хода-содержимое выделенной ячейки па- мяти просто изменяется от нуля до десяти, а затем все повторяется сначала. Рассматриваемые далее программы предназначены для формирования у чита- теля общего представления о том, как вы- глядят и чем отличаются различные языки программирования. При этом нет никакой необходимости запоминать детали изло- жения, поскольку в следующих разделах программирование будет обсуждаться значительно подробнее. Язык высокого уровня Перевод программы с языка блок- схемы на язык высокого уровня весьма прост. В следующем примере используется одна из разновидностей языков высокого уровня-язык Бейсик, преимущества кото- рого состоят в простоте и тесном сходстве с английским языком. В табл. 2.7 приведен текст программы. Первые две строки точно соответствуют двум первым блокам на блок-схеме. В пер- вой строке в ячейку памяти с именем COUNT (СЧЕТЧИК) заносится нуль. Вто- рая строка LET COUNT = COUNT + + 1-это просто иная форма высказыва- ния «увеличить показание счетчика». Третья и четвертая строки реализуют функцию блока выбора решения. Третья строка означает, что если COUNT = 10 (показание счетчика равно 10), то следую- щей должна выполняться команда, запи- санная в первой строке. Если же COUNT не равно 10 (показание счетчика не равно 10), эта команда выполняться не будет, а программа перейдет к четвертой строке, которая предписывает «перейти ко второй строке». Таким образом, команды третьей и четвертой строк выполняют действия, требуемые блоком выбора решения в схе- ме рис. 2.15. Попытайтесь теперь само- стоятельно проследить шаг за шагом ра- боту программы, чтобы понять, каким образом показание счетчика оказывается равным 10. Таблица 2.1. Программа счета до 10, напи- санная на языке Бейсик строки Команда Описание команды 1 LET COUNT = 0 Сбросить счетчик в «0» 2 LET COUNT = COUNT + 1 Дать приращение показанию счетчика 3 IF COUNT = 10 THEN 1 Перейти к строке 1, если показание счет- чика равно 10 4 GO TO 2 В противном случае перейти к строке 2
40 Глава 2 Язык ассемблера Язык ассемблера-это не какой-то один конкретный язык программирования, а целый класс языков. Каждый микропро- цессор имеет свой собственный машинный язык и, следовательно, собственный язык ассемблера (разрабатываемый изготовите- лем микропроцессора). В нашем примере используется язык ассемблера микропро- цессора Intel 8085, описание которого бу- дет приведено в последующих разделах. Табл. 2.8 содержит текст программы на языке ассемблера, выполняющей счет до 10. Эта программа уже менее понятна, чем программа на языке Бейсик, хотя она реализует ту же функцию. Напомним, что конкретные свойства языка ассемблера не- посредственно связаны с особенностями самого микропроцессора. Именно поэто- му данная программа отличается от про- граммы на Бейсике, который в большей мере ориентирован на обеспечение сход- ства языка программирования с обычным английским языком, чем на конкретные особенности машинного языка микропро- цессора. В трех столбцах табл. 2.8 располагают- ся метки, команды и комментарии. Метка выполняет ту же функцию, что и номер строки, и вместо того, чтобы нумеровать строки, вы просто придумываете для каж- дой строки свое имя (называемое меткой), по которому к ней следует обращаться в дальнейшем. Для идентификации место- положения метки используется двоеточие (:). Метка присваивается строке только тогда, когда в программе имеется несколь- ко команд, обращающихся к данной стро- ке, и позволяет легко идентифицировать строку, к которой требуется перейти в ходе выполнения программы. Комментарий помогает лучше понять программу. Его начало обозначается в ас- семблере точкой с запятой (;). Программы на языках высокого уровня не требуют большого числа комментариев, так как на- звания команд информативны сами по се- бе. Однако при программировании на язы- ке ассемблера комментарии оказываются весьма удобным и ценным средством. Они полезны как для людей, не знающих про- граммирования, но желающих разобрать- Таблица 2.8 Программа счета до 10, напи- санная на языке ассемблера Метка Команда Комментарий START: MVI A,0 ;Сбросить регистр A LOOP. INR А CPI 10 JZ START JMP LOOP в «0» ;Дать приращение числу в регистре А ;Сравнить содержи- мое регистра А с числом 10 ;Вернуться к началу, если А = 10 ;Повторить ся в программе, так и для самих програм- мистов, когда они захотят вернуться к использованию давно написанной про- граммы. В рассматриваемом примере первой выполняется команда MVI А, 0 (непосред- ственная засылка нуля в аккумулятор). Ак- кумулятор, называемый также регистром арифметического устройства, представ- ляет собой ячейку памяти внутри микро- процессора. С ней и работает команда MVIA, 0, которая эквивалента команде LET COUNT == 0 в Бейсике, за тем исклю- чением, что вместо придумывания имени для переменной (COUNT) мы воспользо- вались заранее присвоенным именем (А) регистра в микропроцессоре. Несколько позже станет ясно, почему этот регистр на- зывается аккумулятором, а пока его мож- но считать обыкновенной ячейкой памяти, в которую команда загрузила данное со значением «нуль». Следующая команда INR А предписы- вает «дать приращение значению числа, содержащегося в аккумуляторе». Посколь- ку в нем уже хранится какое-то число, по- ступающая команда равнозначна команде LET COUNT = COUNT + 1 языка Бейсик. Три очередных команды совместно ре- ализуют функцию выбора решения. Ко- манда CPI 10 (непосредственное сравне- ние) содержит инструкцию «сравнить зна- чение числа в аккумуляторе с числом 10». Независимо от результата сравнения эта команда не содержит каких-либо непос- редственных указаний на дальнейшие дей- ствия. Она просто устанавливает в «1» спе- циальный триггер в микропроцессоре,
Принципы построения микроЭВМ 41 Таблица 2.9. Программа счета до 10, написанная на машинном языке Адрес ячейки памяти /шестнадцатеричный/ Содержимое ячеек памяти В шестнадцате- ричном коде В двоичном коде 07F0 ЗЕ 00111110 07F1 00 00000000 07F2 ЗС 00111100 07F3 FE 11111110 07F4 ОА 00001010 07F5 СА 11001010 07F6 F0 11110000 07F7 07 00000111 07F8 СЗ 11000011 07F9 F2 11110010 O7FA 07 00000111 называемый флажком, когда значение со- держимого регистра А оказывается равным 10. Затем следующая команда JZ START проверяет состояние триггера- флажка. Если сравниваемые значения равны, эта команда обнаруживает, что флажок выставлен, и произойдет переход к строке программы с меткой START. Ко- манды CPI 10 и JZ START вместе выпол- няют функцию оператора IF COUNT = 0 THEN 1 языка Бейсик. Последняя команда JMP LOOP вызывает в программе пере- ход к строке с меткой LOOP (ЦИКЛ). Эта команда эквивалентна по своему действию оператору GO ТО 2 языка Бейсик. Машинный язык Заканчивая разбор примера, рассмот- рим табл. 2.9, в которой представлен текст программы на машинном языке, соответ- ствующий только что проанализирован- ной нами программе на языке ассемблера. Теперь функции этой программы стали со- вершенно непонятными, а трудности ра- боты с машинным языком-очевидными. Однако самый веский довод в пользу при- менения машинного языка заключается в том, что это единственный язык, непос- редственно воспринимаемый микропро- цессором. Отметим попутно, что, начав рассмотрение примера с описания про- граммы на простом английском языке, мы пришли в конечном итоге к последова- тельности нулей и единиц, удобной для хранения в памяти микроЭВМ. Чтобы понять машинный код, обра- тимся к табл. 2.10, в которой для сравне- ния приведены все три написанные нами программы. Каждая команда в них на- чинается с кода операции, указывающего на необходимое действие. Все коды опера- ций микропроцессора 8085 содержат во- семь разрядов (1 байт) и, следовательно, занимают одну ячейку памяти, поскольку каждая такая ячейка способна хранить 8 бит данных, которые могут быть пред- ставлены двумя шестнадцатеричными цифрами. За кодом операции могут следо- вать 0, 1 или 2 информационных байта-в зависимости от конкретного назначения команды. Первый байт машинного кода (ЗЕ) с адресом 07F0-3TO код операции ко- манды MVI А, однако он представляет со- бой лишь часть команды, предписываю- щую пересылку некоторых данных в аккумулятор. Теперь нам требуется еще одна ячейка памяти для указания нужных данных. Значит, следующая ячейка (имею- щая адрес 07F1) содержит число 00, кото- рое и должно быть занесено в аккумуля- тор. В третьей ячейке размещается код опе- рации второй команды INR А. Этот код операции (ЗС) предписывает микропроцес- сору дать приращение содержимому акку- мулятора. Поскольку никаких дополни- тельных данных, связанных с этой коман- дой, не требуется, она занимает всего одну ячейку памяти. Код FE представляет собой код опера- ции команды сравнения CPI. Так же, как и в случае команды MVI А, 0, ячейка памя-
42 Глава 2 Таблица 2.10. Программа счета до 10, реализованная на трех различных языках. БЭЙСИК Ассемблер микропроцессора 808 5 Машинный язык микропроцессора 8085 Номера строк Команды Метки Команды Адреса ячеек Содержимое ячеек 1 LET COUNT = 0 START: MVI A,0 07F0 ЗЕ Код операции 07F1 00 Данные 2 LET COUNT = COUNT + 1 LOOP: INR A 07F2 зс Код операции 3 IF COUNT = 10 THEN 1 CPI 1010 07F3 FE Код операции 07F4 0А Данные JZ START 07F5 СА Код операции 07F6 07F7 F0 I 07 J Адрес 4 GO TO 2 JMP LOOP 07F8 СЗ Код операции 07F9 07FA F2 I 07 I Адрес ти, следующая за той, в которой хранится код операции, содержит данные, тре- буемые командой. Поскольку машинный язык представлен в табл. 2.10 в шестнадца- теричной форме, соответствующее данное (десятичное число 10) записано как шест- надцатеричное число 0А. Команда CPI сравнивает значение содержимого аккуму- лятора с числом 10 и выставляет флажок (как указано выше), если оба значения равны. Команда JZ имеет код операции СА, который размещается по адресу 07F5. Этот код предписывает микропроцессору передачу управления в случае, если флаг установлен в состояние «1»; следующие две ячейки памяти указывают адрес, по ко- торому надо осуществить такой переход. В связи с тем что адреса в микропроцессо- ре 8085 16-разрядные, для хранения одного адреса требуются две 8-разрядные ячейки. Обе части адреса хранятся в порядке, обратном естественному: младшая поло- вина записывается первой, а старшая - вто- рой. Следовательно, адрес 07F0 хранится как F007. Команда языка ассемблера JZ START означает, что процессору пред- писывается переход к команде с меткой START, и в машинном коде должен в даль- нейшем использоваться действительный адрес, который соответствует метке START (в данном случае адрес 07F0). Последняя команда JMP LOOP коди- руется аналогично. Единственное отличие состоит в том, что предписываемая ею передача управления не зависит ни от ка- ких условий. Команда имеет код СЗ, и ее адрес (07F2) хранится так же, как адрес ко- манды JZ. Заметим, что программа на машинном языке содержит ряд байтов, каждый из ко- торых может иметь одно из трех значений: либо код операции, либо данные, либо адреса команд перехода. Для установле- ния конкретного назначения того или ино- го байта необходимо знать его контекст, по которому внутренние схемы микропро- цессора определяют, должны ли следовать за кодом операции данные или адрес. Та- ким образом, микропроцессор способен распознавать три различные по смыслу группы байтов. Наиболее легкими для программиста являются языки высокого уровня. Однако при этом для перевода написанных про- грамм на машинный язык в памяти ми- кроЭВМ необходимо хранить длинные транслирующие программы. Машинные программы, получаемые трансляцией с языков высокого уровня, менее эффек- тивны также и в смысле обеспечиваемой скорости выполнения предписываемых действий, и по степени использования па- мяти. Та же самая программа, написанная на языке ассемблера, обычно выполняется быстрее и занимает меньше места в ЗУ.
Принципы построения микроЭВМ 43 Язык ассемблера широко используется для программирования микроЭВМ. Он более труден для освоения, чем языки вы- сокого уровня, однако трансляция исход- ной программы с языка ассемблера на ма- шинный язык выполняется намного легче, чем в случае программирования на языке высокого уровня. В ситуациях, когда про- грамма должна выполняться как можно быстрее или должна занимать как можно меньше места в памяти, язык ассемблера является самым подходящим. Програм- мирование на языке ассемблера полезно и в плане обучения, поскольку дает наилуч- шее представление о том, как работает конкретная микропроцессорная система. Машинный язык-это единственный язык, непосредственно воспринимаемый микропроцессором, но программирование на нем все же очень трудно и неудобно. Поэтому обычно программы пишутся на языке ассемблера, а уж затем трансли- руются на машинный язык специальной программой, которая называется ассем- блером. Задачи и вопросы 2.1. Назовите одно преимущество, ко- торое делает микропроцессорные системы более гибкими по сравнению с устройства- ми на тех или иных логических схемах. 2.2. Определите три группы сигналов, связывающих воедино различные блоки микропроцессорной системы. 2.3. В чем состоит различие между бай- том и словом для 8-разрядного микропро- цессора? 2.4. В чем состоит различие между ми- кропроцессором и микроЭВМ? 2.5. Почему в микропроцессорах наря- ду с ПЗУ используются ОЗУ? 2.6. Чем отличается аккумулятор от счетчика команд? 2.7. Определите основные различия машинного языка, языка ассемблера и языка высокого уровня? 2.8. Назовите одно преимущество вен- тиля И, выполненного на базе микропро- цессора, по сравнению со стандартной ло- гической схемой И. 2.9. Каково назначение меток в про- граммах на языке ассемблера? 2.10. Выполните следующие действия и запишите ответы в шестнадцатеричной системе: 3F16 А9 351О 6Е16 -2А16 +А1 -491О -7А16 2.11. Какое число отображает двоичный код 1111 0001? Выберите пра- вильный ответ: a) F1, б) - F1, в) 0Е, г) 0F. 2.12. Какое самое большое число мо- жет быть представлено с использованием двойной точности в процессоре, который работает с 4-бит словами? 2.13. В чем заключается преимущество использования двоично-десятичных чи- сел?
Глава 3 АППАРАТНЫЕ СРЕДСТВА МИКРОПРОЦЕССОРНЫХ СИСТЕМ И СПОСОБЫ ВВОДА/ВЫВОДА1) В этой главе рассматриваются ос- новные типы аппаратных средств ми- кроЭВМ и типичные способы ввода-выво- да данных, в том числе концепция шины, способы декодирования адресов, запоми- нающие и внешние устройства и основные методы организации ввода-вывода. 3.1. Принципы построения базовых аппаратных средств микропроцессорных систем В этом разделе обсуждаются раз- личные варианты шинной архитектуры и процедуры декодирования адресов. При этом основное внимание сосредоточено на разъяснении назначения основных блоков типичной системы, а не на рассмотрении широкого разнообразия конструктивных возможностей. 3.1.1. Концепция шины Основу конструкции микропроцес- сорных систем составляют сигнальные шины, которые обычно не используются в устройствах на традиционных логиче- ских схемах. Эта особенность связана с тем, что в микропроцессорной системе существует необходимость информацион- ного обмена многочисленных устройств с процессором. На рис. 3.1 показано, ка- Эта глава содержит материалы, перепе- чатанные из Practical Microprocessors-Hard- ware, Software and Troubleshooting, copyright 1979. Перепечатано с разрешения фирмы Hewlett-Packard. ким образом такой обмен может обеспечи- ваться при традиционной методологии проектирования. Процессор в этом случае должен иметь множество выходов по чис- лу устройств и мультиплексор, реализую- щий выбор конкретного устройства для ввода данных. Такой способ организации обмена очень быстро приводит к громозд- ким конструкциям по мере того, как под- ключаются все новые и новые устройства. Обычно по информационным каналам передается одновременно 8 бит информа- ции, так что любой канал должен состоять из восьми проводов (линий). Следователь- но, для простой системы с тремя внешни- ми устройствами (рис. 3.1) потребуется 48 таких линий: 24-для ввода данных и 24-для вывода. Более сложная система могла бы иметь десятки запоминающих устройств и портов ввода-вывода, для обеспечения взаимодействия которых по- требовались бы уже сотни соединительных линий. Ключ к эффективному решению проб- лемы взаимосвязи устройств дает исполь- зование концепции, отображенной на рис. 3.2. Легко заметить, насколько при этом упрощаются схемы соединений: те- перь единственная группа из восьми соеди- нительных линий используется и для обес- печения взаимосвязи всех устройств, и для пересылки данных к процессору и от про- цессора. Такую структуру можно непре- рывно расширять ценой лишь незначи- тельного усложнения внутренних связей, однако, поскольку все устройства при этом пользуются одними и теми же каналами информационного обмена, вводить или выводить данные в любой момент време- ни может только одно из них. Необходи-
Аппаратные средства микропроцессорных систем 45 Рис. 3.1. Реализация информационного обме- на при традиционных методах проектирова- ния. Рис. 3.2. Схема информационного обмена с использованием шины для уменьшения чис- ла взаимосвязей.
46 Глава 3 мое управление выбором конкретного устройства обеспечивается адресной и управляющей шинами, возбуждение ко- торых регулируется процессором. 3.1.2. Шина с тремя состояниями Возможность совместного использова- ния шины данных многочисленными устройствами обеспечивает шинный фор- мирователь с тремя состояниями. Пояс- ним его работу сначала на примере про- стой однопроводной шины, поскольку принципы ее организации остаются неиз- менными при любом количестве проводов в шине (типичная шина данных состоит из восьми линий). Шина с тремя состояниями похожа по своему назначению на групповую теле- фонную линию, к которой подсоединяют- ся несколько абонентов. С ней могут быть связаны многочисленные источники и при- емники сообщений. Для примера на рис. 3.3 показана шина цифровой схемы с четырьмя источниками (их роль выпол- няют формирователи с тремя состояния- ми) и двумя приемниками (обычные венти- ли). Для работы в каждый момент времени управляющее логическое устройство ини- циирует работу только одного формиро- вателя (источника). Если бы в этот момент были разблокированы сразу несколько ис- точников, информация, передаваемая по шине, потеряла бы смысл. Как только ка- кой-то из формирователей разблокирует- ся, данные с его выхода пересылаются на информационную шину. Все остальные аналогичные устройства в это время за- блокированы. Их выходы находятся в со- стоянии, характеризуемом высоким пол- ным сопротивлением (на холостом ходу), и поэтому они не оказывают никакого влияния на логическое состояние шины. Микро- процессор Логическое устройство управления Разрешающий вход Вход данных О Разрешающий вход Вход данных 1 Разрешающий вход Вход данных 2 Разрешающий вход Вход данных 3 Линия шины ---► Строб данных А ---Выход данных А Строб данных В Выход данных В Источники сообщений Приемники сообщений Рис. 3.3. Однопроводная шина с 3 состояния- ми и подключенные к ней 4 источника и 2 при- емника сообщений.
Аппаратные средства микропроцессорных систем 47 Строб данных А Строб данных В Строб дани ых С Строб данных D Рис. 3.4. Логический блок управления выби- рает устройство, которое должно участвовать в передаче данных. К шине может подсоединяться боль- шое количество приемников, а так как единственная их функция-это прием данных, в один и тот же момент времени может быть разблокирован не один, а не- сколько приемников сообщений, хотя, как правило, данные, передаваемые по шине, предназначаются конкретно лишь одному из них. Поэтому логическое управляющее устройство формирует специальные сиг- налы (стробы данных), сообщающие выб- ранным приемникам, что данные на шине предназначаются именно им. Строб данных может быть использован, напри- мер, для синхронизации операций пере- сылки данных с шины в триггер. К входам Линия шины Рис. 3.5. Источники/приемники двунаправлен- ного действия, подсоединенные к линиям шины.
48 Глава 3 логического устройства управления под- ключаются адресная и управляющая шины, идущие от микропроцессора (рис. 3.4). Только что рассмотренные нами устройства характеризуются однонаправ- ленным действием: это либо передатчики, либо приемники, но ни одно из устройств не может работать и на прием, и на переда- чу. Такие устройства двунаправленного действия, однако, существуют, и на рис. 3.5 показана шина с двумя источника- ми/приемниками сообщений. Для про- стоты на рисунке изображены только два таких устройства, но их могло бы быть и гораздо больше. Каждый источник/ при- емник получает два управляющих сигна- ла: разрешающий для отпирания выхода формирователя с тремя состояниями и строб данных для открывания входа. Примером двунаправленного устройства служит ОЗУ, способное работать и на чте- ние, и на запись данных. Чтобы понять, как протекает этот про- цесс, предположим, что устройство А на рис. 3.5 должно передать порцию данных устройству В. Логическое устройство управления устанавливает разрешающий сигнал на выходе устройства А в состояние «истина» (разрешение), а аналогичный сиг- нал на выходе устройства В-в состояние «ложь» (запрет). Затем, по истечении неко- торого времени задержки, достаточного для того, чтобы данные поступили на вход устройства В, блок управления посылает импульс в его линию строба данных. По этому сигналу устройство В считывает с шины данные, поступившие туда с устройства А. Заметим, что к шине может быть подключено множество других устройств, но до тех пор, пока разрешаю- щие сигналы на их выходах будут нахо- диться в состоянии «ложь», они не будут участвовать в процессе передачи данных. 3.1.3. Системная шина Шина данных микропроцессорной си- стемы представляет собой двунаправлен- ную шину с тремя состояниями. Это такая же шина, как и однопроводная, за тем лишь исключением, что в ней имеется во- семь линий вместо одной. Чтобы исполь- зовать все восемь линий шины данных, каждый передатчик должен иметь восемь шинных формирователей (по одному на каждую линию), а каждый приемник-во- семь входов. Роль источников/приемников сообщений выполняют микропроцессор и ОЗУ. Порты ввода-это источники, ко- торые принимают входные сигналы из внешней среды системы и пересылают их на шину данных. Порты вывода являются приемниками, которые снимают данные с шины и передают их во внешнюю среду системы. Естестванно, что ПЗУ тоже мо- жет быть только источником (передатчи- ком). На рис. 3.6 показана схема связи рас- смотренных устройств с шиной данных. Микропроцессор, ПЗУ, ОЗУ и порты вво- да имеют на выходе шинные формирова- тели с тремя состояниями, отпираемые входными сигналами выбора микросхемы (CS). По этим сигналам информация из выбранного устройства перемещается на шину данных. Микропроцессор действует в системе как контроллер. Он гарантирует, что в лю- бой момент времени попытка использова- ния шины предпринимается не более чем одним устройством. Если микропроцессо- ру необходимо считать данные из ПЗУ, он сначала блокирует свои собственные ин- формационные выходы и лишь потом формирует управляющие сигналы, тре- бующиеся для отпирания ПЗУ. После это- го выходные информационные сигналы ПЗУ появляются на шине данных, и мик- ропроцессор считывает их оттуда. Таким же образом осуществляется считывание данных из ОЗУ или порта ввода. Чтобы записать данные в память устройства (такого, как ОЗУ или порт вы- вода), микропроцессор сначала пересылает их на шину данных. Затем он формирует управляющие сигналы, по которым на со- ответствующее устройство подается им- пульс записи. С приходом этого импульса данные фиксируются внутренними схема- ми устройства-приемника. Как правило, поток данных проходит через микропроцессор. Например, чтобы переслать данные с входа в память, микро- процессор сначала считывает их из порта
Аппаратные средства микропроцессорных систем 49 Рис. 3.6. Устройства, имеющие выходы с тре- мя состояниями, устанавливают связь с ми- кропроцессором через шину данных. ввода и только потом записывает в ОЗУ, а поскольку эту пересылку невозможно осуществить непосредственно, пересы- лаемые данные временно должны хра- ниться в самом микропроцессоре. Итак, любая пересылка данных внутри микропроцессорной системы осущест- вляется с использованием одной общей шины данных, к которой подключаются все устройства. Логическое устройство управления по сигналам, формируемым микропроцессором, управляет каждым устройством, определяя моменты, в ко- торые оно должно вывести данные на ши- ну или считать их оттуда. Микропроцессор 8085 способен обра- батывать одновременно 8 бит данных и потому называется 8-разрядным. Суще- ствуют и другие микропроцессоры, ко- торые обрабатывают одновременно боль- шее или меньшее количество информации. Многие из первых микропроцессоров име- ли 4-разрядную шину данных, а в неко- торых из новейших конструкций исполь- зуется 16-разрядная шина. Выше мы показали, как шина данных используется совместно многими устрой- ствами в процессе информационного об- мена. Однако для его организации необхо- димо реализовать какой-то определенный способ выбора микропроцессором кон- кретного устройства для работы с шиной данных. Эта функция выбора обеспечи- вается совместно адресной и управляющей шинами. Поскольку адресная шина однонапра- вленная, принцип ее функционирования проще, чем соответствующий механизм шины данных. При использовании адрес- ной шины каждая ячейка памяти (и порт ввода/вывода) имеет свой собственный однозначный адрес. Поэтому перед нача- лом любой пересылки информации с ис- пользованием шины данных микропроцес- сор должен указать конкретный адрес пересылки. Этот адрес точно определяет ячейку памяти (или порт ввода/вывода), к которой микропроцессору необходимо получить доступ. Таким способом микро- процессор может выбирать любой блок системы, с которым он должен взаимодей- ствовать. Адресная шина микропроцессо- ра 8085, состоящая из 16 линий, обеспечи- вает прямую адресацию 216 = 65 536 ячеек памяти и портов ввода/вывода. Эти линии имеют обозначения Ао, А1? А2, ..., А15, причем Ао соответствует самому младше- му разряду. Частью логического устройства упра- вления является дешифратор адреса. Он формирует сигналы выборки устройства, когда на адресной шине появляется опре- деленный адрес (или область адресов). Для примера на рис. 3.7 показан дешифратор адреса 3000, который в шестнадцатерич- ной системе представляется двоичным числом ООП 0000 0000 0000. Выход этого дешифратора находится в состоянии «ис- тина» (логический нуль) только тогда, ког- да именно данный адрес поступает на
50 Глава 3 Рис. 3.7. Дешифратор адреса, настроенный на управление портом с адресом 3000. адресную шину. Этот выходной сигнал ис- пользуется затем для разблокирования по- рта, которому присвоен адрес 3000. Теперь читателю ясно, как адресная шина используется для выборки конкрет- ной ячейки памяти или порта ввода-выво- да и как выбранные информационные сиг- налы переносятся шиной данных. Весь процесс информационного обмена коор- динируется управляющей шиной, которая несет управляющие сигналы, в большин- стве своем генерируемые микропроцессо- ром (лишь несколько из них служат входа- ми процессора). В этом разделе рассматри- ваются только те сигналы, которые упра- вляют считыванием данных из портов ввода/вывода и из памяти или записью в них. Микропроцессор 8085 формирует два основных управляющих сигнала: READ (ЧТЕНИЕ) и WRITE (ЗАПИСЬ). Если сиг- нал READ имеет низкий уровень, это озна- чает, что выполняется операция считыва- ния и микропроцессор предписывает адре- суемому устройству вывести данные на шину данных. Низкий уровень сигнала WRITE означает, что выполняется опера- ция записи, а данные на ту же шину пере- сылает микропроцессор, предписывающий адресуемому устройству запомнить эти данные. Главное отличие управляющей шины от адресной шины и шины данных заклю- чается в том, что каждая ее линия выпол- няет свою собственную единственную функцию. Что же касается адресной шины и шины данных, то в них по любой из ли- ний передается один и тот же тип инфор- мации (1 бит адреса или данных). Следует помнить, однако, что мы описываем управляющие сигналы именно микропроцессора 8085 и что в других ми- кропроцессорах они могут быть совсем иными: хотя цель выполняемых при этом пересылок одна и та же, достигаться она может самыми различными путями. 3.1.4. Порты ввода и порты вывода На рис. 3.8 показан фиксатор порта вы- вода, имеющего адрес 3000. Как только этот адрес появляется на адресной шине (на что указывает выход дешифратора)
Рис. 3.8. Информация с шины данных запо- минается в фиксаторе во время выполнения микропроцессором операций записи по адресу 3000. Рис. 3.9. Входные данные пересылаются на шину данных при считывании микропроцессо- ром информации по адресу, который присвоен формирователю с тремя состояниями.
52 Глава 3 и управляющий сигнал WRITE переходит от низкого уровня к высокому, на вход фиксатора поступает тактовый импульс. В результате снятые с шины данные «за- щелкиваются» в фиксаторе. Микропроцес- сор, следовательно, может вызывать по- явление указываемых программой данных на выходе фиксатора, записывая в нашем случае эти данные по адресу 3000. Порты ввода подключаются анало- гичным образом (рис. 3.9) с той лишь раз- ницей, что для разблокирования порта ввода входами вентиля И становятся вы- ходной сигнал дешифратора адреса и управляющий сигнал READ (вместо пре- жнего WRITE). Порт вывода представляет собой 8-разрядный формирователь с тре- мя состояниями, который, будучи разбло- кирован, пересылает на шину данных входные сигналы. Микропроцессор, если он разблокирован, может снимать входные сигналы с этой шины, выполняя операцию считывания по соответствующе- му адресу и запоминая затем считанные данные в одном из своих внутренних регистров. 3.1.5. Декодирование адреса при наличии многих ЗУ и внешних устройств Предположим, что дешифратор адреса нужен для управления не одним, а во- семью портами ввода-вывода. Для этого могли бы быть использованы восемь де- шифраторов адреса, подобных представ- ленному на рис. 3.7, однако существует и более простой способ декодирования. На рис. 3.10 показан дешифратор адреса, ко- торый формирует сигналы выборки для адресов 3000, 3001, 3002, ..., 3007. Для этих адресов в 16-разрядном адресе изменяют- ся только три младших разряда (Ао, At и А2). Поэтому 13 других разрядов могут быть декодированы общей схемой, подоб- ной той, которая представлена на рис. 3.7. Выход этой схемы используется для раз- блокирования дешифратора, реализован- ного например, на микросхеме 74LS138. Этот дешифратор формирует затем во- семь отдельных выходных сигналов, по одному для каждой возможной комбина- ции Ао, А1? А2. Дешифратор блокируется (все выходы устанавливаются в состояние «ложь»), если 13 старших разрядов не со- ответствуют требуемому адресу. В боль- шинстве случаев для выбора определенно- го устройства нет никакой необходимости декодировать все 16 разрядов адреса. Они показаны в наших примерах лишь для то- го, чтобы подчеркнуть, что система в слу- чае необходимости способна обеспечить требуемые возможности адресации. Декодирование адресов ЗУ аналогично декодированию адресов группы портов ввода-вывода. Для того чтобы убедиться в этом, достаточно представить ПЗУ как устройство с сотнями 8-разрядных портов ввода в одной микросхеме, причем каждый порт соответствует одной ячейке памяти. Когда ПЗУ программируется, в его ячейки через эти порты записываются для по- стоянного хранения нужные комбинации единиц и нулей. Что же касается ОЗУ, то каждую его ячейку можно мысленно счи- тать снабженной как портом ввода, так и портом вывода, которые связаны друг с другом. Предположим, что дешифратор адреса нужен для небольшого ПЗУ емкостью 256 байт. На рис. 3.11 показана схема, которая выполняет декодирование. Младшие раз- ряды адреса в адресной шине соединены непосредственно с ПЗУ, которое имеет внутренний дешифратор адреса, выбираю- щий одну из 28 = 256 ячеек. Восемь стар- ших разрядов адреса декодируются внеш- ним дешифратором, который разблоки- рует ПЗУ тогда, когда конкретная область его адресов появляется на адресной шине в линиях, соответствующих старшим раз- рядам адреса. Заметьте, что декодируются все 16 разрядов адреса: половина деши- фратором адреса в ПЗУ и половина внеш- ним дешифратором. Сигнал READ и вы- ходной сигнал внешнего дешифратора подаются на вход вентиля И для выработ- ки разрешающего сигнала для ПЗУ, т. е. используется способ, рассмотренный ра- нее применительно к портам ввода. Так как в большинстве микропроцес- сорных систем имеется несколько микрос- хем ЗУ, для них требуется более сложный дешифратор адреса. Предположим, напри- мер, что четыре микросхемы ПЗУ ем-
Аппаратные средства микропроцессорных систем 53 Рис. 3.10. Интегральная схема дешифратора обеспечивает простой способ увеличения числа выбираемых устройств. Рис. 3.11. Внутренний дешифратор адреса в ПЗУ уменьшает количество адресных линий, которые были бы необходимы при использо- вании внешнего дешифратора адреса.
54 Глава 3 а б > г Л Номер ПЗУ । Номер ячейки ПЗУ Адреса Разряд адреса 15 14 13 12 11 10 9 817 6 5 4 3 210 0 — г 0 0000 00 0 0 । 0 0 0 0 0 0 0 0 1 1 0000 00 00 ’.00000001 2 2 0000 оо oojooooooio ПЗУ 0 ПЗУ 0 4 1 1 255 1 1 255 0000 00 00|11111111 256 1 Г 256 0000 00 01100000000 257 257 0000 00 01100000001 ПЗУ 1 ПЗУ 1 J | | 511 511 0000 00 01'11111111 512 С 512 0000 00 1 oloooooooo 513 513 0000 00 1 0|00000001 ПЗУ 2 ПЗУ 2 < ’ 766 1 766 0 0 0 0 00 10111111111 767 Г 767 0000 00 11100000000 768 768 0000 00 1 1^0 0 0 0 0 0 01 1 ПЗУ 3 ПЗУ 3 X 1 1 1023 L 1023 0000 00 1 1 [ 1 1 1 1 1 1 1 1 Рис. 3.12. Адреса, присвоенные каждому из четырех 256-байтовых ПЗУ системы. костью по 256 байт имеют области адре- сов, показанные на рис. 3.12, а. Адресные линии должны в этом случае указывать выбираемую микросхему ЗУ и адресуемое в ней слово. На рис. 3.12,6 адреса приве- дены в двоичной форме, так что нетрудно видеть, что происходит с каждым разря- дом адреса. Восемь младших разрядов определяют ячейку внутри микросхемы ПЗУ, а восемь старших - адресуемую ми- кросхему. Обратите внимание, что при декодиро- вании только разряды А8 и А9 определяют отличие одной выбираемой микросхемы от другой. Причина, по которой изме- няются только эти два разряда адреса, за- ключается в том, что для декодирования 1024 адресов (210= 1024) требуется ровно 10 разрядов, а разряд А9 как раз и является десятым по счету. Поэтому четыре воз- можных комбинации бит А8 и А9 опреде- ляют один из четырех блоков, содержащих по 256 адресов каждый (в соответствии с емкостью каждого ПЗУ). Полный 16-раз- рядный адрес приведен здесь потому, что микропроцессор способен адресовать до 64К ячеек. На рис. 3.13 показано, как реализуется такой способ адресации. Восемь младших разрядов адреса поступают непосред- ственно в адресные линии всех четырех ПЗУ, поскольку эти разряды определяют конкретную ячейку внутри микросхемы. Затем дешифратор адреса анализирует во- семь старших разрядов адреса и форми- рует сигнал выбора микросхемы. Два самых младших разряда (из той половины кода адреса, которая содержит старшие разряды) А8 и А9 служит двоичными вхо- дами дешифратора. Остальные старшие разряды адреса используются для разбло- кирования дешифратора только тогда, когда все соответствующие им сигналы имеют низкий уровень. Проанализируйте эту схему совместно с таблицей распреде- ления адресов, представленной на рис. 3.12,6, и вы убедитесь в их полном взаимном соответствии. Заметим, что управляющий сигнал считывания READ
Рис. 3.13. Схема декодирования адресов, рас- считанная на четыре 256-байтовых ПЗУ, пока- занных на рис. 3.12.
56 Глава 3 используется как разрешающий сигнал для разблокирования дешифратора, что эквивалентно подаче этого сигнала одно- временно с каждым из выходных сигналов дешифратора на вход вентиля И. Несмотря на существование множества вариантов подобного подхода к декодиро- ванию адресов, описанный выше способ отличается совершенством и простотой. Он служит хорошей иллюстрацией основ- ного принципа: младшие разряды адреса пересылаются непосредственно в адресные линии, а старшие разряды декодируются для формирования сигналов выбора ми- кросхемы, так как в любой момент време- ни может быть осуществлена выборка лишь одной из них. Другие схемы отли- чаются количеством разрядов, пересы- лаемых непосредственно в ЗУ (в зависимо- сти от числа слов, хранимых в каждой микросхеме памяти), и способом декоди- рования старших разрядов для формиро- вания сигнала выбора микросхемы. Адреса ОЗУ декодируются аналогично ПЗУ, но с помощью нескольких дополни- CS WR Функция 0 0 Запись 0 1 Считывание 1 X Операции нет Рис. 3.14. Таблица истинности для схемы управления ОЗУ. (О-низкий уровень; 1-высо- кий уровень; х-любой.) тельных схем управления записью (вход в ОЗУ)_и_считыванием (выход ОЗУ). Кроме входа CS (выбор микросхемы) ОЗУ имеет также вход WRITE. На рис. 3.14 показана таблица истинности для схемы управления ОЗУ. Входной сигнал CS должен иметь низкий уровень независимо от того, будет выполняться считывание или запись. Если сигнал WRITE имеет высокий уровень («не истина»), в то время как сигнал CS-низ- кий, информация из ОЗУ выводится на Рис. 3.15. Схема декодирования адресов и цепь управления ОЗУ емкостью 1К байт, ра- ботающая согласно истинностной таблице, приведенной на рис. 3.14.
Аппаратные средства микропроцессорных систем 57 шину данных, чтобы процессор мог их счи- тать. Для этого сигналом CS отпираются шинные формирователи с тремя состоя- ниями^ на выходе ОЗУ. Если сигнал WRITE имеет при этом низкий уровень, отпирания выходных формирователей ОЗУ не происходит, а переданные на шину данные записываются для хранения в ячей- ку, адрес которой поступил по адресной шине. Схема, выполняющая требуемую се- лекцию, показана на рис. 3.15. Сигнал CS имеет в ней низкий уровень, если сигнал выборки адреса ОЗУ и сигнал READ, либо сигнал WRITE также низкого уровня. Ли- ния WRITE соединена со входом WRITE ОЗУ, имеющим внутреннее подключение к схеме И, на второй вход которой подает- ся сигнал CS; таким образом, сигнал WRITE игнорируется до тех пор, пока уро- вень сигнала CS остается низким. 3.2. Декодирование адресов Всем устройствам, которые связаны с микропроцессором, присвоены опреде- ленные адреса. Схемы декодирования адресов гарантируют, что доступ к шине получает именно то устройство, которое адресовано микропроцессором. 3.2.1. Дешифратор адреса Рассмотрим более детально аппа- ратные средства декодирования адресов, чтобы понять, почему изложенный выше подход привел к упрощению схем деши- фраторов. На рис. 3.16 показаны цепи управления и схемы декодирования адре- са, характерные для типичного микропро- цессора. Заметим, что линии Ап, А12 и А13 определяют одну из восьми адресуемых областей. Эти три линии используются для подачи двоичных сигналов выборки на вход микросхемы 74LS138, представляю- щей собой двоичный дешифратор «один из восьми». Это устройство обеспечивает во- семь раздельных выходов - по одному для каждого из блоков емкостью 2К байт, ко- торые используются в системе. Указанный способ реализуется относительно простой схемой декодирования адреса. Эта просто- та является прямым следствием того фак- та, что каждому устройству отводится одинаковый по величине блок адресов. Дешифратор 74LS138 имеет три разре- шающих входа: два-для сигналов низко- го уровня и один-для высокого. Любой выход может находиться в состоянии «ис- тина» только в том случае, когда все три указанных входа находятся в том же со- стоянии. Ни один выход не может перейти в состояние «истина», если сигналы линий А14 и А15, подключенные к двум разре- шающим входам, действующим при низ- ком уровне входного сигнала, не являются сигналами низкого уровня. При этом, правда, возникает ограничение, состоящее в том, что адреса устройств должны зани- мать первые 16К общего адресуемого про- странства объемом 64К._____ ________ Подключение линий READ и WRITE к разрешающим входам дешифратора даст гарантию того, что устройства, под- соединенные к шине, будут разблокиро- ваться только во время выполнения опера- ций считывания или записи. Такое под- ключение позволяет исключить непосред- ственную разводку линий READ или WRITE на входы многочисленных венти- лей, управляющих формированием сигна- лов выбора устройств. По этой причине третий разрешающий вход дешифратора соединен с выходом вентиля ИЛИ, на вход которого поступают сигналы READ и WRITE. Благодаря такому включению выходные сигналы выбора устройств имеют значение «истина» только тогда, когда осуществляется либо считывание, либо запись. Адресная шина несет содер- жательную информацию лишь во время выполнения этих двух операций, поэтому разрешение выдачи сигналов выбора устройств только в эти периоды времени предотвращает несвоевременное считыва- ние или запись данных подключенными к шине устройствами. Однако в некоторых микропроцессорных системах такой спо- соб формирования разрешающих сигна- лов может оказаться ненужным. Необходимо отметить также, что вы- борка ПЗУ и портов ввода должна осу- ществляться только при выполнении опе- рации считывания. Если же допустить
58 Глава 3 Рис. 3.16. Схема декодирования адресов, ис- пользуемая в типичном микропроцессоре. возможность их выборки как во время считывания, так и во время записи, то на шине данных может возникнуть конфликт- ная ситуация. Если, скажем, выполняется запись в ПЗУ, то микропроцессор пересы- лает информацию на шину данных. Но ре- жим записи в ПЗУ невозможен. Следова- тельно, ПЗУ, будучи разблокированным, в ходе выполнения операции записи тоже предпримет попытку вывода данных на ту же шину. Подобная ситуация совершенно неприемлема, так как может привести да- же к повреждению электрических цепей. Во избежание такого опасного исхода сигнал READ должен подаваться на вход вентиля И вместе с сигналом выборки ПЗУ, что ре- ализуется подключением линии READ к одному из разрешающих входов ПЗУ. На рис. 3.16 показано, как такое соедине- ние выполняется для порта ввода данных с клавиатуры (KYRD). Что касается портов вывода, то здесь ситуация несколько иная. Рассмотрим для примера линию OUT на рис. 3.16. По- скольку порт вывода, управляемый этой линией, может быть разблокирован либо сигналом READ, либо сигналом WRITE, разрешение записи в порт будет выдавать- ся при обеих командах. Если при этом де- лается попытка считывания данных из по- рта вывода (что не имеет смысла), то вместо считывания все равно происходит запись, но в порт загружаются неопреде- ленные данные. В принципе такая опера- ция допустима, поскольку она не приводит к конфликтной ситуации в аппаратных средствах (т. е. не вызывает никаких нару- шений в электрических цепях). Следова- тельно, для портов вывода нет необходи- мости пропускать сигнал WRITE через вентиль И совместно с сигналом выбора устройства. В какой-то мере по-иному формируется сигнал выборки ОЗУ: он должен иметь значение «истина» при выполнении и считывания, и записи в пределах адрес- ного пространства ОЗУ. Присутствующий в линии выборки ОЗУ вентиль IC11A свя- зан со схемой защиты при записи, которая помогает предохранять содержимое ОЗУ от случайного разрушения. Это необходи- мо потому, что иногда относительно мел- кая ошибка программирования может стать причиной непредсказуемого поведе- ния микропроцессора (обычно из-за интер- претирования данных как команд). Часто в результате такой ошибки во всех ячейках ОЗУ запоминаются ненужные данные, ко- торые могут стереть введенную перед этим программу. В целях предотвращения подобной си- туации можно применить для защиты па- мяти фиксатор, выходной сигнал которого подается на вход PROT схемы защиты, приведенной на рис. 3.16. При срабатыва- нии фиксатора ОЗУ оказывается надежно
Аппаратные средства микропроцессорных систем 59 защищенным, поскольку в этом режиме из него можно считывать данные, но невоз- можно производить запись. Управляющая программа автоматически инициирует срабатывание фиксатора защиты всякий раз, когда выполняется прогон какой-либо программы. В других случаях фиксатор сбрасывается, обеспечивая возможность ввода данных или модифицирования про- грамм. Так как иногда может возникнуть необ- ходимость использования ОЗУ для хране- ния промежуточных данных, получаемых в процессе выполнения той или иной про- граммы, защитой охватываются только первые три четверти пространства адре- сов. Адресные линии А8 и А9 указывают ту четверть ОЗУ, к которой происходит обра- щение. В случае когда сигналы обеих ли- ний имеют высокий уровень, защита не ра- ботает, поскольку адресуется последняя четверть ОЗУ. Линии А8 и А9 образуют входы вентиля И, выходной сигнал кото- рого вместе с сигналом READ пропускает- ся затем через вентиль ИЛИ. Сигнал, сни- маемый с выхода этого вентиля, подается на вход следующего вентиля ИЛИ. Выход- ной сигнал последнего является разре- шающим сигналом для ОЗУ. Существует и несколько других мето- дов декодирования адреса. Выбор метода в каждом конкретном случае зависит от многих факторов, в том числе от емкости памяти, от количества внешних устройств, от потребности в расширении системы, от типов используемых ЗУ и УВВ и от тре- буемого быстродействия. В ряде случаев указанные устройства снабжаются от- дельными выводами для разрешающих сигналов, и тогда эти выводы могут быть задействованы в схемах декодирования адресов. 3.2.2. Декодирование методом линейной выборки Линейная выборка, простейший из всех методов декодирования, не связана с ис- пользованием логических дешифраторов адреса. Старшие разряды адреса при этом методе непосредственно определяют вы- бор конкретной микросхемы. На рис. 3.17 представлен пример декодирования мето- дом линейной выборки. Выборка ОЗУ осу- ществляется всякий раз, когда сигнал А15 имеет высокий уровень, что соответствует всем адресам от 8000 до FFFF. Выборка Выбор ЗУПВ Выбор ПЗУ Выбор порта ввода Выбор порта вывода Рис. 3.17. Дешифратор, работающий по прин- ципу линейной выборки.
60 Глава 3 ПЗУ производится всегда, когда сигнал А14 имеет высокий уровень, что справед- ливо для адресов от 4000 до 7FFF. Заметим, что ПЗУ выбирается также в том случае, если оба сигнала А14 и А15 имеют высокий уровень, что соответствует адресам от С000 до FFFF, перекрываю- щимся с адресным пространством ОЗУ. Поэтому и то и другое ЗУ оказываются разблокированными, если предпринимает- ся попытка выполнить считывание по ка- кому-либо из пересекающихся адресов, что неизбежно должно привести к кон- фликтной ситуации на шине данных. Из-за этой потенциальной угрозы программы никогда не должны производить считыва- ние по адресу, в котором оба самых стар- ших разряда соответствуют значению «ис- тина». Другой недостаток метода линей- ной выборки состоит в том, что большая часть адресного пространства оказывается неиспользуемой, и, следовательно, этот метод пригоден только для систем, не тре- бующих большого объема памяти. 3.2.3. Декодирование с помощью логического компаратора Один из наиболее простых и гибких ме- тодов декодирования связан с использова- нием логического компаратора, который каждый раз обеспечивает выбор одного из Рис. 3.18. Дешифратор на основе логического компаратора. Выбор устройства
Аппаратные средства микропроцессорных систем 61 2* возможных адресных полей при нали- чии N адресных входов. На рис. 3.18 пока- зана схема, которая формирует сигнал вы- бора конкретного устройства системы по шести старшим разрядам адреса. Для это- го сигнал каждого входа А компаратора сравнивается с сигналом соответствующе- го ему входа В. Когда все они совпадают (т. е. совпадают все шесть пар входных сиг- налов), на выходе компаратора появляется сигнал низкого уровня. Для установки уровня логических сигналов на входах В компаратора используются переключа- тели. Этот метод особенно полезен в тех случаях, когда на платах ЗУ и внешних устройств имеются переключатели или перемычки, при помощи которых в систе- ме задаются адреса каждой платы. Функ- цию компаратора может также выполнять схема с вентилями ИСКЛЮЧАЮЩЕЕ ИЛИ. 3.2.4. Декодирование с применением комбинационных логических схем В системах с весьма ограниченными требованиями к схемам декодирования ча- сто применяются стандартные логические схемы. На рис. 3.19 показан вентиль И-НЕ на четыре входа с предшествующими ему инверторами, который декодирует адреса от 9000 до 9FFF. Низкий уровень выходно- го сигнала устанавливается тогда, когда адресные линии А12-А15 находятся в со- стоянии 1, 0, 0, 1. Инвертируя либо не ин- вертируя те или иные адресные входы та- кого вентиля, можно формировать разре- шающие сигналы для любого из устройств. 3.2.5. Декодирование с выделением памяти для УВВ В некоторых микропроцессорах (вклю- чая 8080 и 8085) используется одна допол- нительная управляющая линия, которая служит для указания типа адресуемого устройства - УВВ или ЗУ. В микропроцес- соре 8085 эта линия маркируется как Ю/М (рис. 3.20). Управление линией осущест- вляется выполняемой командой. Во время всех информационных обменов с ЗУ сиг- нал Ю/М имеет низкий уровень. Когда вы- полняется одна из двух команд ввода-вы- вода IN или OUT, уровень сигнала Ю/М изменяется на высокий, в результате чего происходит отпирание портов ввода-выво- да; при низком уровне сигнала Ю/М раз- блокируетсялЗУ. В случае высокого уровня сигнала Ю/М разрешаются операции вво- да-вывода, и адрес соответствующего пор- та ввода-вывода указывается восемью ли- ниями адреса. При использовании этого способа декодирования ЗУ и УВВ имеют разные области адресов, что увеличивает общее адресуемое пространство в системе (в рассматриваемом примере на 28 = 256 байт) и позволяет достичь высокой степе- ни гибкости конструкции дешифратора. К тому же команды IN и OUT, определяю- щие 1 из 256 портов ввода/вывода, всего лишь 2-байтовые. По сравнению с исполь- зованием 3-байтовых команд типа LDA и ST А, применяемых при организации вво- да/вывода с распределением памяти, это позволяет экономить один байт памяти программ на каждый обмен с УВВ. В за- ключение отметим, что при декодирова- нии с распределением общего адресного пространства и для памяти, и для УВВ самый старший разряд адреса А15 обычно Выбор устройства Рис. 3.19. Дешифратор на основе логических вентилей.
62 Глава 3 используется для различения ЗУ и УВВ: если А15 = 0, то выполняются операции обмена с памятью, в противном случае ра- ботает УВВ. 3.3. Запоминающие и внешние устройства 3.3.1. Типы ЗУ Если микропроцессор можно уподо- бить сердцу системы, то шина данных - это ее кровеносная система, а запоминающие и внешние устройства - ее ортаны. Полупроводниковые ЗУ бывают двух принципиально различных типов: ОЗУ и ПЗУ. Каждая из этих разновидностей на- считывает множество возможных вариан- тов; некоторые наиболее распростра- ненные из них обсуждаются в этом разде- ле. 3.2.2. ПЗУ и ОЗУ Почти во всех микрокомпьютерных си- стемах ОЗУ используются для хранения данных или как память, «программируе- мая» пользователем. Существуют два ти- па ОЗУ: статические и динамические. В статических ОЗУ каждый элемент памя- ти представляет собой триггер, поэтому интегральная схема ОЗУ емкостью 1К бит содержит 1024 триггера. Каждый триггер может находиться в возбужденном состоя- нии, соответствующем запоминанию еди- ницы, либо в сброшенном, означающем хранение нуля. Схемы декодирования адреса, размещенные внутри кристалла ОЗУ, выбирают каждый раз конкретный триггер, указываемый сигналами адрес- ных линий. Состояние триггера не изме- няется, если в нем не запоминаются новые данные или не прерывается подвод пита- ния к ОЗУ. В динамических ОЗУ элементом памя- ти являются располагающиеся внутри кристалла конденсаторы. Как правило, на- личие заряда на конденсаторе означает хранение единицы, отсутствие-хранение нуля. Такой метод запоминания позволяет осуществлять более плотную компоновку кристаллов ЗУ за счет упрощения кон- струкции ячеек памяти. Однако при этом возникает проблема утечки заряда конден- сатора, в результате которой через не- сколько миллисекунд единица превра- щается в нуль. Следовательно, конденса- торы должны все время подзаряжаться (регенерироваться). Регенерация состоит в периодическом считывании содержимо- го последовательно расположенных адрес- ных ячеек ОЗУ. В процессе считывания данных микросхема ОЗУ обеспечивает их автоматическую перезапись в ту же ячейку, из которой производилось считывание. В результате на всех конденсаторах, где хранятся единицы, восстанавливаются полные заряды, а на конденсаторах, где хранятся нули, заряды по-прежнему отсут- ствуют. Динамические ЗУ обычно регене- рируются, по крайней мере каждые 2 мс. Для обеспечения постоянной регенера- ции динамических ОЗУ необходимы спе- циальные дополнительные схемы, которые приводят к некоторому усложнению си- стем, и именно по этой причине в малых системах предпочитают использовать бо- лее простые статические ЗУ. Однако дина- мические ОЗУ имеют целый ряд преиму- ществ перед статическими: они более дешевы при одинаковой емкости и потре- бляют меньше энергии, вследствие чего самые большие ОЗУ (рассчитанные на хра- нение максимального количества бит) за- частую вообще бывают только динамиче- ского типа. В системах с развитой па- мятью всегда находят применение более дешевые и менее энергоемкие динамиче- ские ОЗУ, почти во всех случаях однораз- рядные. В некоторых микропроцессорах специально предусматриваются встроен- ные схемы регенерации, которые упро- щают использование динамических ОЗУ. Многие распространенные микро- схемы памяти имеют всего один разряд. Так, микросхема 2102 (вида IK х 1) была первым недорогим статическим ЗУ с раз- рядной организацией. Поскольку каждая такая микросхема обеспечивает считыва- ние или запись одновременно только 1 би- та, для того, чтобы записать или считать 1К байт данных, необходимо иметь восемь микросхем. На рис. 3.21 показано ОЗУ ем- костью 1К х 8, собранное на микросхемах 2102. Здесь, подобно тому, как это сделано
Аппаратные средства микропроцессорных систем 63 Сигналы выбора портов Сигналы выбора ЗУ Рис. 3.20. Применение декодирования с от- дельной зоной адресного пространства УВВ увеличивает общее адресное пространство на 256 байт. Рис. 3.21. ЗУ емкостью 1К байт, построенное на микросхемах 2102 [ОЗУ 1К х 1]. в микросхеме 2114, все адресные и упра- вляющие линии объединены в шину. Ка- ждая микросхема обменивается с шиной данных только одним битом. Микросхема ОЗУ 2102 имеет раздельные контакты для ввода и вывода данных, которые бывают полезны в специализированных системах, где не нужны двунаправленные шины данных. В большинстве применений ми- кропроцессоров эти выводы просто соеди- няются вместе. К числу других распространенных кри- сталлов ЗУ можно отнести микросхемы 2141 (статическое ОЗУ 4К х 1), 2104 (дина- мическое ОЗУ 4К х 1) и 2116 (динамиче- ское ОЗУ 16К х 1). Из восьми микросхем 2116 можно собрать ЗУ емкостью 16К бит; для достижения такого же результата по- требовалось бы 128 микросхем 2102!
64 Глава 3 ПЗУ обеспечивают возможность по- стоянного долговременного хранения про- грамм и данных, чего нельзя сказать об ОЗУ, в которых информация теряется при прекращении подачи энергии. Большин- ство ПЗУ, предназначенных для примене- ния в микропроцессорных системах, 8-раз- рядные. Всего существуют четыре типа ПЗУ, рассматриваемые ниже. ПЗУ первого типа-с масочным программированием- программируются изготовителем инте- гральных схем путем конструирования нужного заказчику кристалла. Обычно со- здание маски для конкретной программы связано с довольно большими единовре- менными затратами, но выпускаемые за- тем ПЗУ получаются относительно де- шевыми. ПЗУ с масочным программиро- ванием часто используются в изделиях, выпускаемых в достаточно больших объе- мах, потому что они имеют наименьшую стоимость и наивысшую плотность распо- ложения бит. Второй тип ПЗУ-это программируе- мое постоянное запоминающее устрой- ство, которое пользователь программи- рует электрическим способом, применяя для этого специальное устройство, назы- ваемое программатором. Однако, после того как такое ПЗУ запрограммировано, его содержимое уже не может быть изме- нено. Многократно программируемое по- стоянное запоминающее устройство (ППЗУ) в основном похоже на ПЗУ второ- го типа, за исключением того, что его со- держимое можно стирать, а само устрой- ство - перепрограммировать. Программи- руемые биты хранятся в нем в виде зарядов на конденсаторах с почти нулевой утечкой. Стирание производится ультра- фиолетовым лучом, который пропускается через стирающее окно в корпусе инте- гральной схемы. Эти ЗУ более всего под- ходят для применения в опытных образцах изделий и при выпуске изделий мелкими партиями. Новейшим типом ПЗУ является элек- трически перепрограммируемое постоян- ное запоминающее устройство (ЭППЗУ), которое может стираться электрическим способом без изъятия из схемы устрой- ства, где оно используется. Преимущество ЭППЗУ по сравнению с ППЗУ с ультра- фиолетовым стиранием заключается в том, что в нем можно стирать отдельные небольшие участки, а не всю записанную информацию целиком. Однако ЭППЗУ дороже ППЗУ и пока что менее удобны в эксплуатации. Используются они во мно- гих системах, где данные подлежат дли- тельному хранению, но иногда должны из- меняться. Характерные примеры примене- ния ЭППЗУ-это цифровые механизмы настройки телевизоров, градуированные преобразователи и автоматические теле- фонные наборные устройства. 3.4. Типичные методы ввода- вывода для микропроцессоров Существуют три основных метода вво- да-вывода, обеспечивающих взаимодей- ствие микропроцессора с внешним окру- жением: программируемый, с прерыва- нием программы и с прямым доступом к памяти. В первом случае ввод-вывод осу- ществляется по инициативе микропроцес- сора и обмен данными с внешним устрой- ством происходит под управлением ми- кропроцессора, который для этой цели выполняет соответствующую программу. При вводе-выводе с прерыванием про- граммы инициатива принадлежит внешне- му устройству, которое подключается к входу сигнала прерывания микропроцес- сора. Для того чтобы передать данные, УВВ повышает или понижает (в зависимо- сти от типа микропроцессора) уровень это- го сигнала. Микропроцессор в ответ завер- шает выполнение текущей команды, пере- сылает как минимум содержимое счетчика команд в стек и переходит на программу, называемую подпрограммой обработки прерываний, с целью завершения инфор- мационного обмена. Ввод-вывод с прямым доступом к па- мяти инициируется внешним устройством, но пересылка данных между внешним устройством и памятью микропроцессора происходит без какого-либо участия по- следнего. Обычно для обеспечения такого типа пересылок в системе должны предус- матриваться микросхемы управления прямым доступом.
Аппаратные средства микропроцессорных систем 65 Задачи и вопросы 3.1. Чем различаются шина данных и управляющая шина? 3.2. Какое максимальное число запо- минающих устройств емкостью 1К байт могла бы иметь система с 16-разрядной адресной шиной? 3.3. Назовите адрес устройства, кото- рое выбирается на рис. 3.22. 3.6. Назовите способ декодирования адресов, наиболее расточительный с точки зрения использования доступного адрес- ного пространства. 3.7. Какой способ декодирования мож- но использовать для адресации наиболь- шего числа ячеек памяти и портов ввода- вывода? 3.8. Определите основные различия между статическим и динамическим ОЗУ. Сигнал выбора устройства Рис. 3.22. Схема декодирования адресов для задач 3.3 и 3.4. 3.4. Измените схему на рис. 3.22 так, чтобы она работала с портом ввода-выво- да. 3.5. Дайте определение термина «ввод- вывод с распределением памяти». 3.9. Определите на уровне выпол- няемых функций преимущества и недо- статки каждого из способов декодирова- ния адреса, описанных в разд. 3.2. 3.10. Проанализируйте достоинства и недостатки различных методов органи- зации ввода-вывода.
Глава 4 ТИПИЧНЫЕ 8-РАЗРЯДНЫЕ МИКРОПРОЦЕССОРЫ И МИКРОЭВМ До сих пор мы рассматривали микро- процессор в качестве черного ящика, т.е. устройства с известными свойствами, вну- тренняя структура которого не представ- ляет интереса. Однако некоторые сведения о внутреннем устройстве микропроцессо- ра все же полезны для получения ясного представления о функционировании ми- кропроцессорных систем. В этой главе приведены краткие сведения об устройстве некоторых из распространенных 8-раз- рядных микропроцессоров и микроЭВМ. Для этой цели выбраны процессоры фирм Intel, Motorola и Zilog. Процессор Intel 8085 рассматривается более подробно, по- скольку в последующих главах процедуры проектирования аппаратных и про- граммных средств с применением ти- пичных макетных микрокомпьютерных систем поддержки разработок демонстри- руются на примере именно этого процес- сора. В данной главе описываются архи- тектура и программные средства микро- процессора 8085. Более детальные сведе- ния об организации ввода-вывода инфор- мации приводятся в гл. 5. Отметим, что все 8-разрядные микро- процессоры требуют применения отдель- ной интегральной схемы управления прямым доступом к памяти для осущест- вления обмена данными в режиме прямо- го доступа. Однокристальные 8-разрядные микроЭВМ сами по себе не предназначены для осуществления ввода-вывода данных в этом режиме. Принципы, описанные в этой главе, могут облегчить понимание устройства любого 8-разрядного микро- процессора или микроЭВМ. 4.1. Микропроцессор 8085 фирмы Intel 4.1.1. Введение1* На рис. 4.1 представлена упрощенная блок-схема микропроцессора 8085. Акку- мулятор соединен с шиной данных и ариф- метико-логическим устройством (АЛУ). АЛУ выполняет все преобразования данных, как, например, увеличение числа на 1 или сложение двух чисел. Временный регистр обеспечивает дру- гой вход АЛУ. Этот регистр недоступен программисту и управляется автоматиче- ски схемой управления микропроцессора. Флаговый регистр представляет собой набор триггеров, которые указывают определенные характеристики результата самой последней операции, выполненной АЛУ. Например, признак нуля устанавли- вается, если результатом операции являет- ся нуль. Признак нуля проверяется коман- дой JZ. Регистр команд, дешифратор команд, счетчик команд и логические схемы управ- ления и синхронизации используются для выборки команд из памяти и управления их выполнением. Предположим, напри- мер, что команда, которую нужно выпол- нить, находится в ячейке с адресом 0200. Прежде всего необходимо прочитать из памяти код операции, т. е. произвести вы- Этот раздел содержит материалы, за- имствованные из книги Practical Micro- processors-Hardware, Software and Trouble- shooting, copyright 1979. Перепечатано с разре- шения фирмы Hewlett-Packard.
Типичные 8-разрядные микропроцессоры и микроЭВМ 67 Рис. 4.1. Упрощенная блок-схема микропро- цессора 8085. борку команды, как это показано на рис. 4.2. Счетчик команд (СК), который со- держит требуемый адрес 0200, воздей- ствует на адресную шину, в результате че- го выбирается ячейка памяти с адресом 0200. ПЗУ выдает содержимое ячейки 0200 (предположительно код операции) на шину данных, и микропроцессор запоминает код операции в регистре команд. 4.1.2. Выводы и сигналы микро- процессора 80851) На рис. 4.3 представлены выводы и сигналы микропроцессора 8085А. Назна- чение каждого вывода описывается в та- блице на с. 69-71 11 Этот раздел содержит материалы, пере- печатанные с любезного согласия фйрмы Intel Corporation. 4.1.3. Командный цикл и выполнение команд1) Информация из регистра команд посту- пает на дешифратор команд (ДК), который распознает код операции и выдает сиг- налы управления на устройство управ- ления и синхронизации. Устройство управ- ления и синхронизации напоминает собой процессор внутри процессора. Имеющееся в интегральной схеме микропроцессора ПЗУ содержит микрокод или микропро- грамму, которая точно указывает процес- сору, что надлежит делать, чтобы выпол- нить каждую команду на машинном п Этот раздел содержит материалы, за- имствованные из книги Practical Micro- processors-Hardware, Software and Trouble- shooting, copyright 1979. Перепечатано с разре- шения фирмы Hewlett-Packard.
Микропроцессор 8085А Рис. 4.2. Схема считывания кода операции из памяти для команды MVI А. Рис. 4.3. Схема расположения выводов микро- процессора 808 5А. Источник перепечатано с разрешения фирмы Intel, copyright 1976 XiC 1 40 3 vcc Х2 С 2 39 □ HOLD RESET OUT С 3 38 □ HLDA SOD С 4 37 □ CLK (OUT) SID С 5 36 □ RESET IN TRAP С 6 35 □ READY RST 7 5 С 7 34 3 IO/M RST 6 5 Е 8 33 3 s, RST 5 5 Е 9 32 3 RD INTR Е 10 31 □ WR 8085A INTA Е 11 30 □ ALE AD0 Е 12 29 3 So AD, Е 13 28 3 A15 ad2 Е 14 27 3 A14 AD3 □ 15 26 3 A.3 ad4 E 16 25 □ ai2 ad5 e 17 24 □ An AD6 E 18 23 □ Лю ad7 c 19 22 3 A9 vss E 20 21 □ A8
Типичные 8-разрядные микропроцессоры и микроЭВМ 69 Обозначение сигнала As ~ А15 (Тристабильный выход) AD0-AD7 (Тристабильный вход- выход) ALE (Выход) So, St и Ю/М (Выход) Назначение Адресная шина самые старшие 8 разрядов адреса памяти или 8 разрядов адреса ввода-вывода Мультиплексная шина адреса/данных: 8 млад- ших разрядов адреса памяти (или адреса ввода- вывода) появляются на этой шине в течение пер- вого такта машинного цикла (Т-состояние). В течение второго и третьего тактов она стано- вится шиной данных Разрешение фиксации адреса: этот сигнал появ- ляется в течение первого такта машинного цик- ла и разрешает фиксацию адреса внутрисхемным фиксатором Состояние машинного цикла: RD (Выход, 3 состояния) WR (Выход, 3 состояния) READY (Вход) HOLD (Вход) Ю/М Si So Состояние 0 0 1 Запись в память 0 1 0 Чтение из памяти 1 1 0 1 1 0 Запись при вводе-выводе Чтение при вводе-выводе 0 1 1 1 1 1 Выборка кода операции Подтверждение прерывания * 0 0 Останов * X X Захват * X X Сброс * _ третье состояние (высокий импеданс). X- значение безразлично. Si может использоваться в качестве предвари- тельного указателя состояния чтения/записи Сиг- налы Ю/М, So и Sj устанавливаются в начале машинного цикла и остаются неизменными в течение всего цикла. Задний фронт сигнала ALE может использоваться для фиксации состояния этих линий Управление чтением: низкий уровень на выходе RD указывает, что должно быть произведено чтение из выбранной ячейки памяти или из устройства ввода-вывода Управление записью: низкий уровень на выходе WR указывает, что информация с шины данных должна быть записана в выбранную ячейку па- мяти или устройства ввода-вывода Если сигнал READY имеет высокий уровень в течение цикла чтения или записи, это указывает на то, что память или внешнее устройство го- товы пересылать или получать информацию Если сигнал READY имеет низкий уровень, центральный процессор будет ожидать целое число циклов, пока не появится высокий уровень сигнала READY, прежде чем завершить цикл чтения или записи Сигнал HOLD (ЗАХВАТ) указывает, что другие устройства запрашивают использование адресной шины или шины данных. Центральный процес-
70 Глава 4 HLDA (Выход) INTR (Вход) INTA (Выход) RST5.5, RST6.5, RST7.5 (Входы) TRAP (Вход) RESET IN (Вход) RESET OUT (Выход) cop, получив запрос захвата, откажется от ис- пользования этой шины, как только завершится текущая операция передачи данных по шине. Внутренние процессы в микропроцессоре могут продолжаться. Процессор может опять получить доступ к шине только после того, как сигнал HOLD исчезнет. Когда прием сигнала HOLD подтверждается, линии адреса данных R D, WR и Ю/М переходят в третье состояние HOLD ACKNOWLEDGE (ПОДТВЕРЖДЕНИЕ ЗАХВАТА): указывает, что центральный процес- сор получил запрос захвата (сигнал HOLD) и что он освободит шину в следующем цикле. Как только сигнал HOLD исчезает, уровень сигнала HLDA становится низким, и процессор снова захватывает шину через время, равное половине длительности цикла INTERRUPT REQUEST (ЗАПРОС ПРЕРЫВА- НИЯ): используется как прерывание общего назначения. Этот сигнал воспринимается только в течение цикла, следующего за последним циклом выполнения текущей команды и при наличии состояний HOLD и HALT. С появле- нием сигнала INTR запрещается увеличение содержимого СК и формируется сигнал INTA. В течение этого цикла могут выдаваться ко- манды RESTART или CALL для перехода к выполнению подпрограммы обработки преры- вания. Прием сигнала INTR разрешается и зап- рещается программным путем. Он запрещается сигналом RESET (СБРОС) и немедленно после того, как прерывание принято INTERRUPT ACKNOWLEDGE (ПОДТВЕРЖДЕ- НИЕ ПРЕРЫВАНИЯ): выдается взамен сигнала RD (с аналогичной синхронизацией) в течение цикла команды после того, как принят сигнал INTR; может использоваться для приведения в действие микросхемы управления прерываниями 8259 или активизации какого-либо другого порта прерываний RESTART INTERRUPTS (ПРЕРЫВАНИЯ ПОВ- ТОРНОГО ЗАПУСКА): эти три входа имеют такую же временную диаграмму, как и INTR, за тем исключением, что они вызывают авто- матическую выдачу внутренней команды RESTART Немаскируемое прерывание при возникновении непредусмотренной ситуации, вызывающее вы- полнение команды RESTART. Оно распознается в тот же момент, что и INTR или RST5.5-7.5. Этот сигнал не может быть замаскирован либо заблокирован запретом прерывания никаким способом. Имеет самый высокий приоритет из всех прерываний Устанавливает СК в нуль и сбрасывает триггеры разрешения прерывания и подтверждения зах- вата HLDA Указывает на то, что произведен сброс цен- трального процессора. Может использоваться в качестве сигнала сброса системы
Типичные 8-разрядные микропроцессоры и микроЭВМ 71 Хь Х2 Xi и Х2 подсоединяются к микросхеме либо (Вход) LC- или RC-цепочке для запуска внутреннего синхро генератора. Xi может служить также вхо- дом для внешних синхроимпульсов, поступающих через логический вентиль. Входная частота де- лится на два для получения требуемой процес- сором внутренней частоты CLK Выход синхроимпульсов для системной синхро- (Выход) низации. Период сигнала CLK вдвое больше периода входных сигналов Xj и Х2 SID Линия последовательных входных данных. Дан- (Вход) ное с этой линии загружается в разряд 7 ак- кумулятора при каждом выполнении команды RIM SOD Линия последовательных выходных данных. Вы- (Выход) ходной сигнал SOD устанавливается или сбра- сывается в соответствии с командой SIM Vcc Питание + 5 В Vss Земля Микропроцессор 8085А Рис. 4.4. Схема считывания данных для команды MVI А. Источник перепечатано с разрешения фирмы Intel, copyright 1976
72 Глава 4 языке. Система микрокоманд, которая является частью конструкции микропро- цессора и обычно не может быть изменена, определяет машинный язык микропроцес- сора. Процесс написания программ на языке микрокоманд (обычно выпол- няемый изготовителем микропроцессора) называется микропрограммированием, и его не следует смешивать с процессом написания тех программ, которые должны выполняться микропроцессором. Например, чтобы выполнить команду MVI А, устройство управления и синхро- низации прежде всего считывает код опе- рации ЗЕ и затем увеличивает адрес в счет- чике команд. Дешифратор команд опреде- ляет, что вслед за этим кодом операции находится байт с данными, поэтому содер- жимое ячейки, имеющей адрес, указанный в СК, считывается в аккумулятор (рис. 4.4). Микропрограмма теперь указывает схеме управления, что команда выполнена. Содержимое СК увеличивается на едини- цу, и в РК считывается следующий байт программы (следующий код операции). За- тем начинается выполнение этой команды. Такая повторяющаяся последователь- ность действий, выполняемых микропро- цессором, называется циклом выборки-ис- полнения. Собственно выполнение предусмот- ренных программой действий происходит в фазе исполнения. Микропроцессор 8085 может выполнять операции четырех ос- новных типов: 1) считывание данных из памяти или с входного порта; 2) запись данных в память или на вы- ходной порт; 3) внутренние операции микропроцес- сора; 4) передачу управления другой ячейке памяти. Первые два типа операций понятны са- ми по себе. Третий тип (внутренние опера- ции) включает действия с регистрами (та- кими, как аккумулятор) без доступа к памяти или портам ввода-вывода. На- пример, содержимое одного регистра мо- жет быть передано в другой регистр или содержимое некоторого регистра может быть увеличено либо уменьшено на 1. Че- твертая группа включает команды типа JMP, CALL и RET. 4.1.4. Машинные циклы1) Процессы выборки и выполнения команд делятся на машинные циклы. Первым машинным циклом для каждой команды является выборка кода операции из памяти. Для каждого обращения к па- мяти или устройству ввода-вывода тре- буется далее дополнительно один ма- шинный цикл, чтобы обеспечить пересыл- ку данных. Машинный цикл состоит из выдачи адреса на адресную шину и после- дующей пересылки информации по шине данных. Большинство внутренних опера- ций микропроцессора (таких, как увеличе- ние на 1 содержимого аккумулятора) за- вершается в том же машинном цикле, что и выборка кода операции. Простые коман- ды, например INR А, занимают, таким образом, лишь один машинный цикл, тог- да как команда STA требует для своего вы- полнения четырех циклов: трех-для чте- ния команды и одного-чтобы записать содержимое аккумулятора в память. 4.1.5. Выполнение программы1) Вообще говоря, микропроцессор счи- тывает из памяти команды последователь- но одну ячейку за другой, выполняя ука- занные действия. Исключения возникают тогда, когда встречается команда перехо- да, обращения к подпрограмме или воз- врата из подпрограммы. Другим исключе- нием является прием сигнала прерывания. Любое из этих событий приводит к тому, что микропроцессор прерывает последова- тельную выборку команд и начинает вы- полнение команд совсем с другого адреса. Отметим, что коды операций и данные взаимно перемешаны в памяти. Некоторая ячейка может содержать код операции, две Этот раздел содержит материал, заим- ствованный из книги Practical Micro- processors-Hardware, Software and Trouble- shooting, copyright 1979. Перепечатано с разре- шения фирмы Hewlett-Packard.
Типичные 8-разрядные микропроцессоры и микроЭВМ 73 очередных-адрес перехода, следующая- код операции, а идущая за ней-фрагмент исходных данных. Такое расположение ин- формации в памяти определено, конечно, программой-компоновщиком (ассембле- ром). За обеспечение правильной последо- вательности кодов операций и данных в памяти отвечает программист, микро- процессор же может различить их только по контексту. Коды операций, адреса пере- ходов и данные-это всего лишь двоичные комбинации, хранящиеся в памяти; считы- ваются они абсолютно одинаково и пере- даются все по одной и той же шине данных. Микропроцессор всегда должен безошибочно различать, что он считывает в данный момент: код операции или эле- мент данных, и поступать соответствую- щим образом. Предполагается, что первая ячейка, считываемая процессором, содер- жит код операции, который и определяет его дальнейшие действия. Если код опера- ции требует наличия 1 байт данных, ми- кропроцессор «знает» (благодаря деши- фратору команд), что следующий байт информационный, и обрабатывает его со- ответствующим образом. Далее считается, что за этим байтом данных следует оче- редной код операции. Если же элемент данных ошибочно интерпретируется как код операции, то система обычно пол- ностью выходит из-под контроля (возни- кает аварийная ситуация). 4.1.6. Краткая характеристика системы команд микропроцессора 80851) В табл. 4.1. приведен полный перечень команд микропроцессора 8085. Некоторые из них уже рассматривались нами ранее, но теперь мы вновь вернемся к этим командам, чтобы облегчить знакомство с новыми. Подробное описание назначе- ния команд микропроцессора 8085 приво- дится в приложении А. 1} Этот раздел содержит материал, заим- ствованный из книги Practical Micro- processors - Hardware, Software and Trouble- shooting, copyright 1979. Перепечатано с разре- шения фирмы Hewlett-Packard. При рассмотрении структуры команд удобно использовать ряд сокращенных символических обозначений, в связи с чем ниже под термином «данное» будет пони- маться произвольная 8-разрядная величи- на, а обозначение «адрес» будет соответ- ствовать некоторому 16-разрядному адре- су. 1. Наиболее часто используемые ко- манды микропроцессора 8085 Команды манипулирования данными MVI, INR, СМА. Одна из основных опера- ций микропроцессора - загрузка данных в аккумулятор. Эта операция выполняется по команде MVI А [данное] (загрузка ак- кумулятора непосредственная). Подлежа- щий загрузке элемент данных содержится в байте, следующем за кодом операции. Для манипулирования данными, нахо- дящимися в аккумуляторе, можно исполь- зовать две ранее указанные команды: INR А (увеличить содержимое аккумулятора на 1) и СМА (преобразовать код в обратный). Команды проверки условий и передачи управления CPI, JMP, JZ. Для проверки ве- личины числа, содержащегося в аккумуля- торе, может использоваться команда вида CPI [данное] (сравнение непосредствен- ное). Она сравнивает данные, содержащие- ся во втором байте команды, с содер- жимым самого аккумулятора и соответ- ствующим образом устанавливает флаги процессора. До сих пор мы упоминали только один флаг-нулевой, который вы- ставляется в случае, когда результат опе- рации равен нулю. Команда JZ [адрес] (переход по нулю) проверяет нулевой флаг (выставленный по предположению пред- шествующей командой, например коман- дой CPI) и при наличии такового иници- ирует переход к команде, находящейся в ячейке [адрес]. Имеется также команда безусловного перехода JMP [адрес], кото- рая вызывает передачу управления незави- симо от состояния флагов. Адрес перехода для обеих этих команд хранится в двух ячейках памяти, непосредственно следую- щих за кодом операции. Команды обращения к памяти и ввода- вывода LDA, STA. Команды LDA [адрес] и STA [адрес] (загрузить в аккумулятор
74 Глава 4 Таблица 4.1. Система команд микропроцессора 8085 Команда Код Длина в байтах Число тактов 8085' Машинные циклы ACI DATA CE data 2 7 FR ADC REG 1000 1SSS 1 4 F ADC M 8E 1 7 FR ADD REG 1000OSSS 1 4 F ADD M 86 1 7 FR ADI DATA C6 data 2 7 FR ANA REG 1010 OSSS 1 4 F ANA M A6 1 7 FR ANI DATA E6 data 2 7 FR CALL LABEL CD addr 3 18 S R R W W* CC LABEL DC addr 3 9/18 SR*/SRR W W* CM LABEL FC addr 3 9/18 SR«/SRR WW* CMA 2F 1 4 F CMC 3F 1 4 F CMP REG 1011 1SSS 1 4 F CMP M BE 1 7 FR CNC LABEL D4 addr 3 9/18 SR«/SRRWW* CNZ LABEL C4 addr 3 9/18 Sfr/SRRWW* CP LABEL F4 addr 3 9/18 SR»/SRRWW* CPE LABEL EC addr 3 9/18 SR’/SRR WW* CPI DATA FE data 2 7 FR CPO LABEL E4 addr 3 9/18 SR*/SRRW W* CZ LABEL CC addr 3 9/18 SR«/SRRWW* DAA 27 1 4 F DAD RP OORP 1001 1 10 FBB DCR REG 00SSS101 1 4 F* DCR M 35 1 10 FR W DCX RP OORP 1011 1 6 S* DI F3 1 4 F El FB 1 4 F HLT 76 1 5 FB IN PORT DB data 2 10 FRI INR REG 00SSS100 1 4 F* INR M 34 1 10 FRW INX RP OORP 0011 1 6 S* JC LABEL DA addr 3 7/10 FR/FRRf JM LABEL FA addr 3 7/10 FR/FRRf JMP LABEL C3 addr 3 10 FRR JNC LABEL D2 addr 3 7/10 FR/FRRf JNZ LABEL C2 addr 3 7/10 FR/FRRf JP LABEL F2 addr 3 7/10 FR/FRRf JPE LABEL EA addr 3 7/10 FR/FRRf JPO LABEL E2 addr 3 7/10 FR/FRRf JZ LABEL CA addr 3 7/10 FR/FRRf LDA ADDR ЗА addr 3 13 FRRR LDAX RP OOOX 1010 1 7 FR LHLD ADDR 2A addr 3 16 FRRRR Типы машинных циклов: F -четырехтактовый период выборки команды; S -шеститактовый период выборки команды; R -чтение из памяти; I -ввод с внешнего устройства; W -запись в память; О -вывод на внешнее устройство; В -незанятость шины
Команда Код Длина в байтах Число тактов 8085 Машинные циклы LXI RP, DATA 16 OORP 0001 data 16 3 10 FRR MOV REG, REG 01DD DSSS 1 4 F* MOV M,REG 0111 OSSS 1 7 F W MOV REG.M 01DOD110 1 7 FR MVI REG,DATA OOODD110 data 2 7 FR MVI M.DATA 36 data 2 10 FR W NOP 00 1 4 F ORA REG 1011 OSSS 1 4 F ORA M BG 1 7 FR ORI DATA F6 data 2 7 FR OUT PORT D3 data 2 10 FRO PCHL E9 1 6 S* POP RP 11RP0001 1 10 FRR PUSH RP 11RP0101 1 12 SWW* RAL 17 1 4 F RAR 1F 1 4 F RC D8 1 6/12 S/SRR* RET C9 1 10 FRR RIM(8085A only) 20 1 4 F RLC 07 1 4 F RM F8 1 6/12 S/SRR* RNC DO 1 6/12 S/SRR* RNZ CO 1 6/12 S/SRR* RP FO 1 6/12 S/SRR* RPE E8 1 6/12 S/SRR* RPO EO 1 6/12 S/SRR* RRC OF 1 4 F RST N 11XXX111 1 12 SWW* RZ C8 1 6/12 S/SRR* SBB REG 1001 1SSS 1 4 F SBB M 9E 1 7 FR SBI DATA DE data 2 7 FR SHLD ADDR 22 addr 3 16 FRRWW SIM (8085A only) 30 1 4 F SPHL F9 1 6 S* STA ADDR 32 addr 3 13 FRRW STAX RP 000X 0010 1 7 F W STC 37 1 4 F SUB REG 1001 OSSS 1 4 F SUB M 96 1 7 FR SUI DATA D6 data 2 7 FR XCHG EB 1 4 F XRA REG 10101SSS 1 4 F XRA M AE 1 7 FR XRI DATA EE data 2 7 FR XTHL E3 1 I 16 FRRWW Условные обозначения X -изменяющийся или факультативный двоичный разряд, DDD -двоичный код, определяющий регистр-приемник (В = ООО, С = 001, D = 010, Память = 110), SSS -двоичный код, определяющий регистр-источник (Е = 011, Н = 100, L = 101, А = 111), RP -пара регистров (ВС = 00, HL = 10, DE = 01, SP = 11), DATA - < число > , REG - < регистр > , М -адрес ячейки памяти, хранящийся в паре регистров Н и L, LABEL -< метка >, PORT -< номер порта ввода-вывода > , addr 1 ADDR |-<адрес>; data -<код данных > Примечания ^-для микропроцессора 8О8ОА пятитактовый цикл выборки команды, -для микропроцессора 8О8ОА число машинных циклов больше независимо от проверяемого кода условия, • -для микропроцессора 8О8ОА при этих условиях появляется дополнительный цикл чтения R Все мнемонические обозначения являются собственностью фирмы Intel, copyright 1976
76 Глава 4 и запомнить его содержимое) пересылают данные между буферным регистром и па- мятью или портами ввода-вывода. Адрес ячейки памяти или порта ввода-вывода определяется 2 байтами, следующими за кодом операции. Команды обращения к подпрограммам CALL, RET. Для организации использова- ния стандартных подпрограмм необхо- димы еще две команды. Команда CALL [адрес] служит для перехода на подпро- грамму, а команда RET [возврат] сигна- лизирует об окончании работы с подпро- граммой. Адрес перехода задается в команде CALL точно так же, как и в команде передачи управления. Команда RET не содержит указания на адрес и вы- зывает переход на команду, непосред- ственно следующую за последней выпол- ненной командой CALL. Команды управления прерываниями SIM, El, DI. Управление прерываниями осуществляют три команды. Команда УСТАНОВИТЬ МАСКУ ПРЕРЫВАНИЙ (SIM) используется для того, чтобы опре- делить разрешенные и запрещенные пре- рывания. Эта команда копирует содержи- мое аккумулятора в регистр масок преры- ваний процессора. Команда РАЗРЕШИТЬ ПРЕРЫВАНИЯ (EI) дает разрешение на выполнение выбранных прерываний. Команда ЗАПРЕТИТЬ ПРЕРЫВАНИЯ (DI) запрещает всякие прерывания. 2. Разнообразие системы команд Большинство основных функциональ- ных возможностей процессора 8085 обес- печивается именно рассмотренным не- большим набором команд. По мере ознакомления с другими командами чита- телю станет очевидным факт, что их имеется больше, чем это необходимо. На- личие разных модификаций команд облег- чает написание программ, поскольку пред- оставляет возможность выбора из ряда альтернатив. Здесь прослеживается пря- мая аналогия с разработкой схемы процес- сора, так как можно реализовать любую логическую схему только на элементах И- НЕ. И действительно, есть ЭВМ, целиком построенные таким образом. Однако си- стема существенно упрощается при ис- пользовании других устройств, таких, как схемы ИЛИ-HE, триггеры, мультиплек- соры, счетчики и сумматоры. 3. Регистры общего назначения До этого момента мы не упоминали одну из основных составных частей микро- процессора 8085: регистры общего назна- чения (РОН). В нем имеется шесть таких 8-разрядных регистров, которые могут ис- пользоваться для временного хранения данных. На рис. 4.5 представлена блок- схема микропроцессора 8085, где показаны эти регистры, обозначенные буквами В, С, D, Е, Н и L. На рисунке изображен также указатель стека. Для организации использования РОН необходимо несколько дополнительных команд. Команда MVI, по которой данные загружаются в аккумулятор, может в дей- ствительности работать с любым реги- стром. Например, команда MVI D [дан- ное] вызывает загрузку данного в регистр D; ее общий формат имеет вид MVI г [дан- ное], где г обозначает любой из регистров (А, В, С, D, Е, Н или L). Хотя аккумулятор является специальным регистром, храня- щим результат вычислений, он может ис- пользоваться и в качестве РОН. Команда INR также распространяется на любой ре- гистр; общий ее формат-INR г. Напри- мер, команда INR Н увеличивает на 1 со- держимое регистра Н. Теперь, когда нам стали доступны все рассмотренные регистры, полезно иметь возможность пересылать данные из одно- го регистра в другой. Команда, которая осуществляет это, имеет вид MOV rl, г2. По этой команде данное из регистра г2 переносится в регистр rl. Например, команда MOV А, Н вызывает перенос со- держимого регистра Н в аккумулятор, но содержимое самого регистра Н при этом не изменяется. Заметим, что регистр- источник и регистр-приемник записывают- ся в порядке, обратном естественному, по- этому команду MOV А, Н следует трактовать как указание «перенести в акку- мулятор содержимое регистра Н». В спра- вочной таблице языка ассемблера, кото- рую предоставляет фирма Intel, приводит- ся полный перечень команд в мнемониче-
Типичные 8-разрядные микропроцессоры и микроЭВМ 77 Рис. 4.5. Упрощенная блок-схема микропро- цессора 8085, показывающая регистры общего назначения. ской и шестнадцатеричной формах и даются все разновидности команды MOV. Эта таблица служит удобным сред- ством перевода мнемонических команд ас- семблера в шестнадцатеричный ма- шинный код и наоборот. Регистры общего назначения полезны в случаях, когда про- грамма работает с несколькими различны- ми переменными. Каждый регистр в этом случае может иметь свое конкретное на- значение, и до тех пор, пока достаточно шести регистров, нет необходимости ис- пользовать для запоминания данных ОЗУ. Например, в программе, которая под- считывает число случаев совершения ше- сти различных событий, может использо- ваться по одному регистру для каждого из них. Заметим, что в табл. 4.1 в команде MOV указан «регистр» М. В действитель- ности это не регистр, а ссылка на ячейку, адрес которой запоминается в регистрах Н и L. Последние в свою очередь содержат некоторый адрес, указывающий нужную ячейку памяти. Такой метод называется косвенной адресацией, поскольку команда определяет не действительный адрес дан- ного, а место, где этот адрес запомнен (в данном случае - регистры Н и L). Напри- мер, если регистр Н содержит число 12, a L-число 37 (рис. 4.6), то команда MOV А, М загрузит в буферный регистр содер- жимое ячейки памяти с номером 1237. Ре- зультат будет точно такой же, как и при выполнении команды LDA 1237. Этот пример иллюстрирует, как одно и то же действие может выполняться дву- мя различными способами. Команда MOV А, М однобайтовая, но зато она тре- бует, чтобы в регистры Н и L предвари- тельно был загружен нужный адрес. В то же время команда LDA 1237 имеет длину 3 байта, однако зачастую именно она является более предпочтительной, по- скольку не требует загрузки адреса в ре- гистры Н и L. Косвенная адресация полез-
78 Глава 4 Процессор Рис 4.6. Косвенная адресация с использова- нием регистров Н и L. на, в частности, при обработке таблично- организованных данных. Одним из основных стандартных бло- ков всех цифровых устройств является ло- гическая схема, реализующая логическую операцию НЕ, И, ИЛИ и ИСКЛЮЧАЮ- ЩЕЕ ИЛИ. Выполнение каждой из этих операций может быть организовано и про- граммным способом. Так, операция НЕ осуществляется командой СМА (преобра- зовать число в аккумуляторе в дополни- тельный код), по которой инвертируется каждый бит числа в аккумуляторе. Опера- ция И реализуется командой ANA г (логи- ческое умножение числа в аккумуляторе). Например, команда ANA D инициирует логическое умножение содержимого реги- стра D и числа в аккумуляторе с оставле- нием результата в регистре А. Отметим, что содержимое другого регистра (в на- шем примере регистра D) остается при этом без изменения. Каждая модификация этой команды (в зависимости от исполь- зуемого регистра) имеет свой код опера- ции. Как уже говорилось ранее, логическая операция И выполняется отдельно над каждым битом числа в аккумуляторе. На- пример, если его содержимое А =1011 0110, a D = ООН 1100, то в результате вы- полнения команды ANA D получим ООП 1100 (регистр D) И 1011 ОНО (аккумулятор) ООН 0100 (аккумулятор) Операция логического сложения (ИЛИ) осуществляется командами ORA г, а опе- рация ИСКЛЮЧАЮЩЕЕ ИЛИ-коман- дой XRA г. Процесс выполнения этих ко- манд аналогичен команде ANA, за исклю- чением разницы в логических функциях. Поскольку все эти команды не требуют за- дания каких-либо адресов и значений данных, их код занимает только один байт (графа «Код операции» табл. 4.1). Логические команды обычно приме- няются для того, чтобы выделить опреде- ленные разряды слова; такое действие на- зывают , маскированием. Предположим, например, что к входному порту подсоеди- няются восемь переключателей, и для то- го, чтобы проверить только один разряд (один переключатель), процессор должен игнорировать значения всех остальных. На рис. 4.7 изображена блок-схема про- граммы, которая проверяет положение переключателя, связанного с разрядом 3 входного порта: если переключатель вы- ключен, выходные светодиоды будут воз- буждены, в противном случае они тоже бу- дут находиться в выключенном состоянии. На рис. 4.8 приведен листинг нужной
Типичные 8-разрядные микропроцессоры и микроЭВМ 79 Рис. 4.7. Блок-схема программы, проверяю- щей 3-й разряд порта ввода. программы. Эта программа сначала считывает данные с входного порта в акку- мулятор А. Затем в регистр В заносится нужное значение маски, после чего про- изводится логическое умножение содержи- мого регистров В и А (выполняется опера- ция И). В результате все разряды, кроме разряда 3, устанавливаются в нуль. (По- скольку 0-1 = 0и1-1 = 1, значение любого разряда после логического умножения на 1 не изменяется.) Последней в программе используется команда JZ, осуществляю- щая условный переход, если выставлен ну- левой флаг состояния, который указывает, что значение всего байта (а следовательно, и 3-го разряда) равно нулю. Команда XRA А реализует операцию ИСКЛЮЧАЮЩЕЕ ИЛИ только над со- держимым аккумулятора, а поскольку в случае единственного числа результат этой операции равен нулю, указанная команда просто очищает регистр А, ис- пользуя всего 1 байт памяти. Отметим, что команде MVI А, 0, дающей тот же эффект, требуется 2 байта памяти. Другая часто необходимая опера- ция-сдвиг данных вправо или влево; она реализована аппаратно, с использованием сдвигового регистра. В микропроцессоре 8085 предусмотрены команды, осущест- вляющие операцию сдвига непосредствен- но в аккумуляторе: команда цикличе- ского сдвига вправо (RRC) и команда циклического сдвига влево (RLC). Команды относятся только к содержимо- му регистра А. Термин «циклический» оз- начает, что самый младший бит перено- сится в самый старший разряд (или наоборот), как это показано на рис. 4.9. Предположим, например, что аккуму- лятор содержит двоичное число 0010 0001. После выполнения команды RRC в нем появится число 1001 0000. Заметим, что самый младший разряд переместился на место самого старшего. Это произошло потому, что данные «поворачиваются» как бы по кругу, в котором самый старший разряд данных соседствует с самым млад- шим; аналогично при выполнении сдвига вправо самый младший разряд устанавли- вает флаг переноса. Чтобы пронаблю- дать действие команд циклического пере- носа, напишите программу, соответству- ющую блок-схеме, представленной на рис. 4.10. Наиболее важной арифметической опе- рацией является сложение двух чисел. Команда ADD г прибавляет содержимое указанного регистра к содержимому акку- мулятора и оставляет в нем результат. На- пример, команда ADD D складывает со- держимое регистра D с числом в аккуму- ляторе; если при этом в регистре D находится число 1001 ООН, а в регистре А-число 10101010, то результат выполне- ния этой команды будет иметь вид Десятичное представление 147 + 170 317 Двоичное представление 1001 ООН (регистр D) 4- 1010 1010 (аккумулятор) 1 ООН 1101 (аккумулятор)
80 Глава 4 Адрес Содержи- Метка Команда Комментарии 0800 — START: LDA 2000 , Считать данные из входного порта в аккумулятор 0801 — 0802 — 0803 — MVI B, 08 , Установить маску в В (двоичное чис- ло 0000 1000) 0804 — 0805 — ANA В ; Установить все биты, кроме 3-го, в нуль 0806 — JZ OFF ; Аккумулятор = 0? 0807 — 0808 — 0809 — ON: — — ; Включить светодиоды 080А — 080В — — — 080С — 080D — 080Е — JMP START 080F — 0810 — 0811 — OFF — — ; Выключить светодиоды 0812 — 0813 — — — 0814 — 0815 — 0816 — JMP START 0817 — 0818 — Рис. 4.8. Программа для проверки 3-го разря- да. Циклический сдвиг влево /R L С/ Циклический сдвиг вправо /R R С/ Рис. 4.9. Схема выполнения команд цикличе- ского сдвига.
Типичные 8-разрядные микропроцессоры и микроЭВМ 81 Рис. 4.10. Блок-схема для упражнения по про- граммированию. Заметим, что сумма превосходит число 2551О, т.е. длина полученного числа превы- шает восемь двоичных разрядов. Чтобы реагировать на такое переполнение, про- цессор имеет флаг переноса, который функционирует как девятый разряд акку- мулятора и может быть проверен коман- дами JC (переход по наличию переноса) и JNC (переход по отсутствию переноса). Эта проверка аналогична проверке нулево- го флага. Приводимые ниже для примера две следующие друг за другом команды складывают числа, находящиеся в реги- стре D и в аккумуляторе, и осуществляют переход к ячейке 0820, если сформирован признак переноса; в противном случае (когда результат меньше 256) выполнение программы продолжается со следующей команды: A DD D JC 0820 Флаг переноса используется также при сложении чисел, длина которых превы- шает 8 бит. Для хранения каждого из чисел в этом случае используются два регистра (или больше). Первыми складываются младшие разряды чисел, и бит переноса из младшего байта (если он возникает) при- бавляется к старшему байту. Разряд пере- носа выполняет, таким образом, роль свя- зующего звена между 2 байтами. Все флаги процессора объединены в 1 байт, как это показано на рис. 4.11. В этом разделе используются только флаг переноса и нулевой флажок. Знаковый флаг является просто копией самого стар- шего разряда и используется в операциях двоичной арифметики в дополнительном коде. Не все команды воздействуют на все флаги: команда MOV, например, не влияет ни на один из них. В описании, которое приведено в приложении А, указано, на ка- кие конкретно флаги воздействует каждая команда. По команде SUB г производится вычи- тание содержимого указанного в ней реги- стра (например, регистра В в случае SUB В) из числа в аккумуляторе. Команда вы- читания использует флаги переноса в каче- стве указателя заема из старшего разряда. Если после выполнения команды SUB В установлен флаг переноса, это указывает на то, что число в регистре В больше числа в аккумуляторе. Важно отметить команды DCX и INX, не влияющие ни на один флаг состояния. Эти команды обычно применяются для организации счетчика циклов при числе циклов 256 и более. Так как обе команды не меняют положения флагов, для провер- ки содержимого счетчика циклов на нуль применяются другие команды. Это иллю- стрируется следующим фрагментом про- граммы :
82 Глава 4 Цикл: LXI Н, [16-разрядное ; Загрузить начальное число] ; значение 16-разрядного — ; счетчика — ; Первая команда цикла DCX Н ; Уменьшить содержимое — ; счетчика на 1 MOV А,Н ; Занести Н в А, чтобы ; проверить на нуль ORA L ; Логическое сложение А ; и L JNZ LOOP ; Переход по нулю Заметим, что в этом примере команду DCX можно заменить на INX, загрузив в 16-разрядный счетчик из пары регистров Н - L двоичное дополнение к числу циклов. 4.1.7. Подпрограммы и стек1) Большие программы можно упрощать, используя для выполнения повторяющих- ся блоков подпрограммы. Предположим, например, что некоторая программа дол- жна выполнять последовательность вы- числений, включающую несколько умно- жений. В этом случае можно написать одну общую подпрограмму умножения, которая затем будет использоваться каждый раз при необходимости произве- сти умножение. Подпрограммы приме- няются также для разделения программы на небольшие модули. Для обращения к программе в микро- процессоре 8085 имеется команда CALL. При ее выполнении микропроцессор за- поминает содержимое СК (адрес возврата) в стеке, т. е. части запоминающего устрой- ства со специально организованным до- ступом. Микропроцессор осуществляет переход на этот адрес возврата после вы- полнения в конце подпрограммы команды RET. Программа затем продолжает рабо- ту с команды, непосредственно следующей за командой CALL. 1} Kenneth L. Short, Microprocessors and Programmed Logic copyright 1981. Перепечата- но с разрешения издательства Prentice-Hall, Inc., Englewood Cliffs, N.J. Предположим, что для сохранения адреса возврата используется 16-раз- рядный регистр. Можете ли вы сказать, ка- кая при этом возникает проблема? А со- стоит она в том, что если какая-то подпрограмма вызывает другую (вложен- ную подпрограмму), то первый адрес воз- врата теряется. Разрешить возникающую проблему можно путем использования для запоминания адресов возврата специаль- ной группы (стека) последовательно распо- ложенных ячеек памяти. На рис. 4.12 изо- бражена цепочка операций, в которой программа А вызывает подпрограмму В, а та в свою очередь обращается к подпро- грамме С. Содержимое стека и СК на каж- дом шаге видно из рис. 4.13. Последова- тельность развития событий при этом следующая: 1) выполняется главная программа; 2) главная программа вызывает под- бит 7 6 5 4 3 2 1 0 Самый Самый Рис. 4.11. Флаги микропроцессора.
Типичные 8-разрядные микропроцессоры и микроЭВМ 83 Основная программа Рис. 4.12. Цепочка операций при обращении из основной программы к подпрограмме А, которая вызывает подпрограмму В. программу А. Адрес возврата запоминает- ся в стеке, и в СК загружается начальный адрес подпрограммы А; 3) подпрограмма А вызывает подпро- грамму В. Адрес возврата в подпрограмму А помещается в стек, а в СК загружается начальный адрес подпрограммы В; 4) подпрограмма В выдает команду возврата. Последний из запомненных в стеке адресов загружается в СК, и управ- ление возвращается в подпрограмму А; 5) подпрограмма А осуществляет воз- врат управления в главную программу. Стек можно представить себе в виде стопки пластинок, уложенных друг на дру- га; в такую стопку можно поместить про- извольное число пластинок, однако заби- рать их можно будет только в обратном порядке. Подобный стек называют стеком магазинного типа (с дисциплиной обслу- живания типа «последним пришел- первым обслужен»). Поскольку в микро- процессоре 8085 для организации стека ис- пользуется ОЗУ, он может быть про- извольно большим. Специальный регистр процессора (указатель стека) содержит адрес верхушки стека. Местоположение стека в памяти устанавливается путем за- грузки в указатель стека желаемого ад- реса. Команды CALL и RET осуществляют манипулирование стеком автоматически; возможна также работа со стеком вруч- ную. Команда PUSH обеспечивает запо- минание в стеке содержимого пары реги- стров, а команда POP считывает эти данные обратно в регистры. Поскольку стек предназначен для хранения адресов, которые имеют длину 16 разрядов, в одном обращении запоминаются сразу два регистра. Команда PUSH В, например, проталкивает в стек содержимое реги- стров В и С. Команда POP В восстанавли- вает состояние обоих этих регистров, считывая данные из верхушки стека. Регистры В и С обычно используются для временного запоминания содержимо- го других регистров. Например, если неко- торая программа использует регистры В и С для хранения каких-то данных и вызы- вает затем подпрограмму, которая также должна обращаться к этим регистрам, то исходная подпрограмма может обеспе- чить сохранение текущего состояния этих регистров (значение, установленное вызы- вающей программой) посредством команды PUSH В. После этого регистры В и С могут использоваться вызванной подпрограммой, а перед окончанием ее выполнения для восстановления первона- чального состояния регистров В и С ис- пользуется команда POP В. Рассмо- тренные операции сохранения и восстанов- ления состояния регистров могут выпол- няться также в главной программе непос- редственно перед командой CALL и после нее. 4.1.8. Алгоритмы математических операций Как видно из предыдущего изложения, система команд микропроцессора 8085 (как и большинства других 8-разрядных микропроцессоров) ограничена самым уз- ким кругом простых команд. Прямые арифметические действия этого микропро-
84 Глава 4 CALL В Счетчик команд Текущий адрес основной программы Начальный адрес подпрограммы А Стек Начальный адрес подпрограммы В RET Адрес возврата в подпрограмму А RET Адрес возврата в основную программу Рис. 4.13. Схема функционирования стека. цессора сводятся всего лишь к сложению и вычитанию, но, если бы это были дей- ствительно единственно возможные опе- рации, вычислительная мощность микро- процессора оказалась бы резко ограничен- ной. Микропроцессор приобретает боль- шие возможности, когда с помощью простых команд сложения и вычитания строится последовательность операций, реализующих сложные математические функции. Программа, которая дает воз- можность выразить математическую функцию через простые вычислительные операции, называется алгоритмом. Чтобы построить алгоритм, нужно подлежащую выполнению функцию пред- ставить в виде последовательности про- стых шагов, каждый из которых может не- посредственно выполняться данным ми- кропроцессором. В качестве примера по- добного разложения сложной операции рассмотрим умножение. При выполнении этой операции вруч- ную первое число умножается только на одну цифру множителя (рис. 4.14): 1011 <— Множимое 1001 «— Множитель 1011 0000 0000 1011 1100011 <— Произведение Рис. 4.14. Умножение двоичных чисел.
Типичные 8-разрядные микропроцессоры и микроЭВМ 85 При переходе к каждой следующей цифре множителя частный результат сдвигается влево. После того как использованы все цифры множителя, частные произведения суммируются. В случае двоичного умно- жения последнее может быть выполнено с помощью одних лишь команд сдвига и сложения. Большинство функций независимо от степени их сложности может быть выраже- но через последовательность более про- стых функций. Например, функция синуса может быть представлена в виде sinx = х — х3/3 ! + х5/5 ! — х7/7 ! + х9/9 ! — В таком представлении мы имеем бе- сконечный ряд, и, чтобы получить в конеч- ном итоге точный результат, пришлось бы выполнять вычисления бесконечно. Одна- ко, какова бы ни была скорость микропро- цессора, бесконечные вычисления невоз- можны, и здесь спасает то, что ряд можно «отсечь» в некоторой точке, дающей при- ближение той точности, какая нужна про- граммисту. Следовательно, микропроцес- сор может аппроксимировать функцию синуса путем выполнения большого числа операций умножения и деления, которые в свою очередь представляют собой алго- ритмы, использующие команды сдвига, сложения и вычитания. При этом большое число вычислительных операций не со- ставляет сколь-нибудь значительной про- блемы для современных микропроцессо- ров, которые способны выполнять сотни тысяч операций в секунду. 8-разрядные микропроцессоры обычно предусматривают выполнение только ко- манд сложения и вычитания, однако в на- стоящее время наблюдается тенденция со- здания 16- и 32-разрядных микропроцессо- ров, которые обеспечивают выполнение операций умножения и деления с по- мощью только одной команды. Для демонстрации широких возможно- стей микропроцессора 8085 по выполне- нию сложных функций ниже приводят- ся некоторые распространенные алго- ритмы. 1. Умножение двоичных чисел без зна- ка Когда целые числа представляются в двоичной форме без знака, можно рабо- тать только с положительными числами, поскольку все разряды слова используют- ся для представления модуля числа и ни один разряд не представляет его знака. Если известно, что множитель имеет вид 2”, для умножения можно использо- вать простой алгоритм. В этом случае множимое можно просто сдвинуть влево п раз при условии, что ни одна единица не сдвинется за пределы самого старшего разряда. Этот метод оказывается очень эффективным, когда необходимо выпол- нять простые умножения (например, на 2 или на 4). Другой простой алгоритм умножения использует только команды сложения. По- скольку умножение - это в действительно- сти повторяющееся сложение, можно бы- ло бы построить алгоритм для выполне- ния повторяющихся сложений. Если нуж- но вычислить, скажем, 23 х 5, можно выполнить следующее сложение: 23 + + 23 + 23 + 23 + 23 = 115. Для использования алгоритма повто- ряющихся сложений в микропроцессоре множимое должно храниться в одном ре- гистре, а множитель-в другом. Регистр результата следует очистить и регистр множителя использовать в качестве счет- чика. Множимое нужно прибавлять к ре- зультату, после чего уменьшать содержи- мое регистра множителя на 1. Если в результате значение счетчика станет равным 0, то умножение закончено; в про- тивном случае процесс повторяется. Пример 4.1 Необходимо написать на языке ассем- блера микропроцессора 8085 программу умножения двух 8-разрядных чисел без знака. 1} Kenneth L. Short, Microprocessors and Programmed Logic copyright 1981. Перепечата- но с разрешения издательства Prentice-Hall, Inc., Englewood Cliffs, N.J.
86 Глава 4 Решение Программа умножения представляется в виде вызываемой подпрограммы, при обращении к которой множимое находит- ся в регистре D, а множитель-в регистре Е. Результат, который может быть 16-раз- рядным числом, заносится в пару реги- стров HL. В силу последнего обстоятель- ства проще выполнять 16-разрядные ариф- метические операции с использованием команды сложения чисел удвоенной длины DAD, имеющейся у микропроцессора 8085. Полностью программа приведена на рис. 4.15. Отметим, что если множитель- большое число, то подпрограмма потре- бует довольно много времени для выпол- нения умножения. 2. Деление двоичных чисел без знака Подобно умножению на число, пред- ставляющее собой степень двойки, двоич- ное число без знака легко разделить на 2”, сдвигая его вправо п раз. Следует, однако, позаботиться о том, чтобы единица не сдвинулась за пределы самого младшего разряда. Если умножение представляет собой цепочку повторяющихся сложений, то де- ление можно выполнить с помощью по- вторных вычитаний. Делитель можно вы- читать из делимого до тех пор, пока результат вычитания не станет меньше де- лителя. Этот меньший, чем делитель, ре- зультат запоминается в качестве остатка, а число выполненных вычитаний трактует- ся как частное. Например, при делении 9 на 2 оказывается, что после четырехкратного вычитания 2 из 9 в результате получаем число 1. Этот результат меньше делителя (2) и потому является остатком; в ответе, таким образом, получается 4 с остатком 1. Пример 4.2п Требуется написать подпрограмму де- ления 16-разрядного числа без знака на 8-разрядное число без знака для микро- процессора 8085. Решение Пишется подпрограмма для микропро- цессора 8085, при обращении к которой 16-разрядное делимое помещается в пару регистров HL, а 8-разрядный делитель на- ходится в регистре D. По окончании ра- боты подпрограммы регистр В содержит частное от деления, а регистр С - остаток. Если величина частного превышает 8-раз- рядное число, подпрограмма выдает ре- зультат с ошибкой. Для указания на ошиб- ку в данных подпрограмма в этом случае выставляет флаг переполнения, благодаря 1} Kenneth L. Short, Microprocessors and Programmed Logic, copyright 1981. Перепечата- но с разрешения издательства Prentice-Hall, Inc., Englewood Cliffs, N.J. MULT: LXI H,0 ; Обнулить результат MOV C,D ; Множимое загрузить в ; младший байт пары ; «ВС» MVI B,0 ; Пара «ВС» теперь со- ; держит множимое MULT05: MOV A,E ANA A ; Множитель равен ну- ; лю? RZ ; Если «да», то возврат DAD В ; Если «нет», то приба- ; вить множимое DCR E ; Вычесть 1 из множителя JMP MULT05 ; Повторить цикл Рис. 4.15. Подпрограмма умножения 8-раз- рядных чисел без знака для микропроцессора 8085.
Типичные 8-разрядные микропроцессоры и микроЭВМ 87 DIVIDE: MVI B,0 ; Обнулить частное DIV05: MOV A,L ; Взять младший байт де- ; лимого ANA A ; Очистить флаг переноса ; для вычитания SBB E ; Вычесть младший байт MOV L,A ; делителя и запомнить ; новый младший байт ; делимого MOV A,H ; Взять старший байт де- SBB D ; лимого и вычесть стар- ; ший байт делителя MOV H,A ; Запомнить новый стар- ; ший байт делимого JP DIVIO ; Перейти по метке ; DIVIO, если делимое >0 MOV A,L ; Взять младший байт де- ADD E ; лимого и восстановить MOV C,A ; его по прежнему значе- ; нию остатка RET ; Возврат с восстановле- ; нием флага переноса DIVIO: INR В ; Прибавить 1 к частному, ; учитывая сделанное вы- ; читание JNZ DIV05 ; Вернуться в начало цик- ; ла, если частное > 0 STC ; Установить флаг пере- RET ; носа, если сделано 256 ; вычитаний (признак ; ошибки) Рис. 4.16. Подпрограмма деления двоичных чисел без знака для микропроцессора 8085. чему пользователь имеет возможность проверить состояние этого признака после выполнения подпрограммы и убедиться в достоверности или ошибочности резуль- тата. Полный текст подпрограммы приве- ден на рис. 4.16. 3. Умножение и деление двоичных чи- сел со знаком Приведенные выше подпрограммы ум- ножения и деления чисел без знака не мо- гут применяться для чисел со знаком, по- скольку знаковый (самый старший) разряд будет интерпретироваться как разряд мо- дуля числа, что приведет к ошибке. Один 1} Kenneth L. Short, Microprocessors and Programmed Logic, copyright 1981. Перепечата- но с разрешения издательства Hewlett-Packard. из методов умножения чисел со знаком со- стоит в перемножении модулей с учетом знака. В этом случае до начала операции умножения проверяются знаки обоих со- множителей. Отрицательные числа пре- образуются в положительные, после чего становится возможным применять под- программу умножения чисел без знака. Ес- ли множимое и множитель имеют проти- воположные знаки, результат перемноже- ния чисел без знака делается отрица- тельным; при одинаковых знаках обоих сомножителей результат считается поло- жительным. Алгоритм Бутса для умножения чисел со знаком является более прямолинейным методом, поскольку числа могут перемно- жаться непосредственно как числа со зна- ком без какого-либо преобразования. В приведенном ранее примере алгоритма умножения с использованием сдвигов и сложений сдвиг и проверка разряда на 0 или 1 производились без учета значений
88 Глава 4 других разрядов множителя. В алгоритме Бутса используются свойства битовых комбинаций разрядов для осуществления многократных сдвигов без выполнения сложений. Алгоритм Бутса основан на учете того факта, что цепочка нулей в двоичном пред- ставлении множителя требует выполнения только лишь операций сдвига без единого сложения, тогда как последовательность единиц, начинающаяся с разряда 2Р, до разряда 2q может рассматриваться в каче- стве числа (2д+1-2р). Рассмотрим, напри- мер, множитель X = 00011110. Здесь р = 1, a q = 4, так что, согласно сформулирован- ному правилу, 2q+1 -2Р = 25-21 = 32 — 2 = = 30, и это есть значение X. Умножение по алгоритму Бутса в данном случае требует дополнительно к сдвигу только двух опе- раций: одного вычитания и одного сложе- ния. Для сравнения заметим, что по алго- ритму сдвигов и сложений в дополнение к сдвигам понадобилось бы выполнить четыре сложения. Очевидно, что алгоритм Бутса требует выполнения меньшего числа операций и поэтому работает быстрее. Алгоритм Бутса можно сформулиро- вать в следующей форме. Пусть Xt-i-й разряд n-разрядного множителя, Хп_г-самый старший разряд, Хо-самый младший;предполагается, что разряд Х_г равен нулю. Множимое обозначим через Y. В зависимости от результата сравнения разрядов множителя выполняются сле- дующие действия: чине, что, в случае если X заканчивается рядом единиц, последней операцией будет вычитание числа 2”-1, которое компенси- рует операцию взятия двоичного дополне- ния. Пример 4.3 п Требуется написать программу на язы- ке ассемблера микропроцессора 8085 для умножения двух 8-разрядных чисел со зна- ком на основе использования алгоритма Бутса. Решение Текст нужной программы представлен на рис. 4.17. При обращении к ней множи- мое запоминается в регистре D, а множи- тель-в регистре С; 16-разрядный ре- зультат помещается в пару регист- ров ВС. Для деления чисел в дополнительном коде применяется несколько различных алгоритмов. Простейшая стандартная программа использует метод деления мо- дулей с учетом знака, подобный процеду- ре, описанной для умножения. Имеются алгоритмы непосредственного деления чи- сел в двоичном дополнительном коде, но они предназначены главным образом для аппаратной реализации, так что примене- ние их в программных средствах вряд ли целесообразно. 0 0 ; сдвинуть У (влево по отношению ; к частичному произведению) 0 1 , прибавить У к частичному произве- ; дению и сдвинуть У 1 0 ; вычесть У из частичного произведе- , ния и сдвинуть У 1 1 : сдвинуть У Процесс продолжается, пока не будут выполнены п сравнений, после чего умно- жение заканчивается. Описанная процеду- ра применима также к двоичным числам X и У в дополнительном коде: для У это справедливо потому, что логика сложения и вычитания чисел без знака и чисел в до- полнительном коде одинакова; для X утверждение сохраняет силу по той при- 4. Стандартные программы арифмети- ческих операций с плавающей запятой Типичный пакет программ для выпол- нения арифметических операций с плаваю- 1} Kenneth L. Short, Microprocessors and Programmed Logic,-copyright 1981. Перепечата- но с разрешения издательства Hewlett-Packard.
Типичные 8-разрядные микропроцессоры и микроЭВМ 89 SMULT: MV1 B,0 ; Очистить старший разряд результата MVI E,8 ; Установить счетчик числа разрядов XRA A ; Очистить флаг переноса, Х_х =0 MOV A,C ; Занести множитель в регистр А LLA: JC LLB ; Проверить разряд Xf _ t RRC , Xf- ! =0; занести разряд Xf в при- ; знак переноса MOV A,В ; Занести частичное произведение в ре- ; гистр А JNC LLC ; Проверить разряд X, SUB D ; X, = 1, X,- _ i = 0: вычесть множимое JMP LLC ; Продолжить LLB RRC ; Xf _ х = 1: занести X, в признак пе- ; реноса MOV A,В , Занести частичное произведение в ре- ; гистр А JC LLC ; Проверить разряд X, ADD D ; X, = 0, Х£ _ i = 1: прибавить множи- ; мое LLC: MOV B,A ; Запомнить старший разряд частич- ; ног о произведения в регистре В RAL ; Флаг переноса-в старший разряд MOV A,В ; Загрузить старший разряд частично- ; го произведения RAR ; Арифметический сдвиг вправо MOV В,A ; Запомнить сдвинутый старший раз- ; ряд MOV A,C ; Загрузить младший разряд частично- ; го произведения RAR ; Сдвинуть вправо младший разряд, ; новый Xf _ ! во флаге переноса MOV C,A ; Запомнить результат DCR E , Конец? (все 8 разрядов обработаны?) JNZ LLA ; Если не конец-на начало цикла RET ; Конец, возврат в вызывающую про- ; грамму Рис. 4.17. Подпрограмма умножения чисел со знаком, реализующая алгоритм Бутса. щей запятой содержит подпрограммы сложения, вычитания, умножения, деления и изменения знака числа. Эти подпро- граммы обрабатывают также ошибки, свя- занные с переполнением и потерей значи- мости. В пакете программ для выполнения операций с плавающей запятой, который описывается в этом параграфе, приняты следующие соглашения: 1. Операнд представляется в виде чис- ла (называемого мантиссой), возведенного в степень (называемую порядком). 2. Когда операнды помещаются в ре- гистры, первый регистр содержит порядок, второй - старшие разряды мантиссы, а третий-младшие разряды мантиссы. 3. Перед выполнением стандартной программы первый операнд хранится в ре- гистрах В, D и Е. Второй операнд, если он имеется, помещается в регистры А, Н и L. 4. По окончании работы стандартной программы результат помещается в ре- гистры В, D и Е. 5. Регистр С содержит число произве- денных изменений знака, а также зафикси- рованный признак переноса при вычисле- нии порядка; этот признак может исполь- зоваться для обнаружения переполнения или потери значимости. Условия переполнения и потери значи- мости обрабатываются подпрограммой OUFLW (рис. 4.18), которая проверяет старший разряд регистра С, содержащий признак переноса, выработанного при вы-
90 Глава 4 OUFLW: OFLW: XRA ADD JM CALL A C UFLW EOFLW LXI H,7FFFH MVI B,7FH STSGN: MOV A,C RAR XCHG CC RET NGDE1 UFLW: CALL EUFLW LXI D,OH UFLWE: MVI B,0H RET Рис. 4.18. Подпрограмма обработки состоя- ний переполнения и потери значимости для операций с плавающей запятой числении порядка. Если признак переноса равен 0, это означает, что имеет место переполнение, и тогда вызывается подпро- грамма пользователя EOFLW, которая выполнит любые необходимые действия, предусмотренные программистом для случая переполнения. При возврате из под- программы EOFLW регистры результата содержат наибольшее возможное положи- тельное либо наибольшее возможное от- рицательное число. Если при обращении к подпрограмме OUFLW признак переноса равен 1, проис- ходит вызов подпрограммы пользователя EUFLW, которая выполняет действия, не- обходимые при потере значимости. При возврате из подпрограммы EUFLW все ; Проверяемый признак пе- ; реноса запомнен в старшем ; разряде регистра С ; Вызов подпрограммы об- ; работки переполнения ; Установить максимальное ; положительное значение ; Проверить, должно ли зна- ; чение быть отрицательным ; Поместить мантиссу в ре- ; гистры DE ; Изменить знак числа ; Вызвать подпрограмму об- ; работки признака потери ; значимости ; Установить мантиссу в ; нуль ; Установить порядок в нуль ; (2'64) регистры результата устанавливаются в нуль, что соответствует величине резуль- тата 0 х 2“64 и делает 0 меньше, чем самое малое ненулевое число. Точка входа UFLWE используется для установки в нуль порядка результата, если результат вычислений равен 0; в этом слу- чае обращение к подпрограмме EUFLW отсутствует. Подпрограмме OUFLW, так же как и подпрограмме NORM, которая исполь- зуется для нормализации чисел с плаваю- щей запятой, требуется дополнительная подпрограмма, изменяющая знак норма- лизуемого числа. Подпрограмма измене- ния знака NGDE имеет две точки входа, через одну из которых содержимое счетчи- ка числа изменений знака (находящегося в регистре С) увеличивается на 1, а другая точка на него никак не влияет. Текст под- программы NGDE приведен на рис. 4.19. NGDE: INR C ; Увеличить счетчик ; изменений знака на числа 1 NGDE1: XRA A ; Вычесть DE из 0 SUB E MOV E,A ; Оставить результат в DE MVI A,0 SBB D MOV D,A RET Рис. 4.19. Подпрограмма изменения знака числа с плавающей запятой.
NORM Рис. 4.20. Блок-схема подпрограммы норма- лизации числа.
92 Глава 4 NORM: XRA A MOV C,A ; Очистить регистр С ORA D ; Отрицательное число? CM NGDE ; Сделать число положитель- ; ным ORA Е ; Мантисса = 0? JZ XCHG UFLWE ; Если мантисса = 0, устано- ; вить порядок = 0 ; Заменить содержимое ре- ; гистров для нормализации NORM1: MOV А,Н ; Точка входа для положи- ADD Н ; тельных чисел, не равных 0 JM STSGN ; Нормализация окончена, ; восстановить знак DCR В ; Уменьшить порядок на 1 JM UFLW ; Потеря значимости DAD JMP Н ; Сдвиг влево NORM1 Рис. 4.21. Подпрограмма нормализации числа с плавающей запятой. Исходное число находится в регистрах В и DE, регистр С должен быть установлен в нулевое начальное состояние. Процесс нормализации числа с пла- вающей запятой заключается в преобразо- вании его в положительное число и последующем сдвиге влево до тех пор, пока значение старшего разряда не станет равным 1. Чтобы при этом первоначаль- ное значение числа не изменилось, его по- рядок при каждом сдвиге уменьшается на 1. Если исходное число отрицательное, то полученное таким образом нормализован- ное число с плавающей запятой подлежит инвертированию. Блок-схема алгоритма нормализации приведена на рис. 4.20, а текст подпрограммы - на рис. 4.21. Прежде чем складывать два числа с плавающей запятой, их необходимо вы- ровнять. Понятие выравнивания относит- ся к порядкам чисел и заключается в сдви- ге наименьшего из чисел вправо с одновре- менным соответствующим увеличением порядка до тех пор, пока значения обоих порядков не станут равными. Ввиду суще- ствующего ограничения точности опера- ций с плавающей запятой при числе вы- равнивающих сдвигов более 16 фактически нет необходимости выполнять сложение, поскольку добавление меньшего числа не изменит величину большего. В этом случае сумма равна большему из двух чисел. Блок-схема стандартной программы сло- жения FADD представлена на рис. 4.22. При сложении выровненных чисел с целью обнаружения переполнения про- изводится проверка знака результата и признака переноса, а также знаков ис- ходных операндов. Если сумма по модулю 2 признака переноса и трех знаковых раз- рядов равна 1, то это указывает на наличие переполнения. В этом случае значение раз- ряда переноса противоположно знаковому разряду операндов, и он с помощью опера- ции правого сдвига должен быть введен в результат с одновременным увеличением порядка на 1. Вслед за этим порядок также должен быть проверен на переполнение. При всех вычислениях может потребовать- ся нормализация результата; в этом слу- чае вызывается подпрограмма NORM. Текст подпрограммы FADD приведен на рис. 4.23. Операция вычитания чисел с плаваю- щей запятой легко реализуется путем ин- вертирования вычитаемого с последую- щим выполнением сложения с плавающей запятой. Стандартные подпрограммы ум- ножения и деления чисел с плавающей за- пятой можно разработать на основе при- менения правил экспоненциального пред- ставления. А поскольку при хранении и вычислениях числа с плавающей запятой представляются в виде мантиссы и поряд- ка, для преобразования их к десятичному виду, удобному для пользователя, и обрат-
Типичные 8-разрядные микропроцессоры и микроЭВМ 93 Рис. 4.22. Блок-схема подпрограммы сложе- ния чисел с фиксированной запятой. но требуются дополнительные стан- дартные подпрограммы. В случае когда требуется более высокая точность вычислений, операнды уже не мо- гут пересылаться из одной подпрограммы в другую через регистры и потому хранят- ся в ячейках памяти, доступных каждой подпрограмме. 5. Алгоритм извлечения квадратного корня Один из простейших способов извлече- ния квадратного корня состоит в примене- нии алгоритма последовательных прибли- жений, суть которого сводится к следую- щему. Пусть В-число, из которого нужно из- влечь квадратный корень, а А-предпола- гаемое значение его квадратного корня. Величина А возводится в квадрат и срав- нивается с В. Если А2 > В, то А уменьшает- ся, а если А2 < В, то А увеличивается на произвольное (по выбору пользователя) число. Эта процедура повторяется, пока А2 не станет приблизительно равно В. Поль- зователь сам решает, насколько А2 дол- жно быть близко к В, чтобы можно было прервать цикл. Величина А, полученная при выходе из цикла, является квадратным корнем В. На рис. 4.24 приведен текст стандартной подпрограммы на языке ас- семблера 8085 (вместе с машинными кода- ми), реализующей описанный алгоритм извлечения квадратного корня. В програм- ме предполагается, что число, из которого требуется извлечь корень, содержится в па- ре регистров D, Е. 4.2. МикроЭВМ 8048 фирмы Intel1) 4.2.1. Введение В вычислительной системе MCS-48 фирмы Intel все функции микроЭВМ ре- ализуются с помощью единственной ми- кросхемы, которая содержит 8-разрядный ЦП, ПЗУ емкостью 1К 8-разрядных слов для хранения программ, память данных емкостью 64 8-разрядных слова, 27 линий ввода-вывода и 8-разрядный таймер-счет- чик. С этой машиной полностью совмести- 1} Этот раздел содержит материалы, за- имствованные из руководства фирмы Intel с ее любезного согласия.
94 Глава 4 FADD: MOV C,A ; Запомнить порядок MOV A,В SUB C JZ FADD3 ; Сдвиг не требуется JP FADD1 ; Порядок операндов пра- ; вильный СМА ; Сделать число сдвигов по- ; ложительным ADI XCHG O1H ; Поменять местами операн- MOV B,C ; ды FADD1: CPI 16 RP ; Число сдвигов > 16, сло- ; жение ненужно MOV C,A ; Запомнить число сдвигов FADD2: MOV A,H ; Начало цикла сдвига мень- ; шего числа вправо RAL MOV A,H ; Получить знак RAR MOV H,A MOV RAR A,L ; Сохранить старший разряд MOV L,A ; в признаке переноса DCR C JNZ FADD2 FADD3: MOV C,H ; Запомнить знак числа в ре- ; гистрах Н, L DAD XCHG D ; Сложить мантиссы SBB A ; Запомнить признак перено- ; са/переполнения, А = 0 или ; ff XRA A XRA D XRA H JP NORM FADD4: MOV A,H ; Сверхнормализованное или ; максимальное отрицатель- ; ное число RLC MOV C,A INR В ; Увеличить порядок, так как ; имеется перенос JM OFLW ; Произошло переполнение MOV A,D ; Сдвинуть разряд перепол- ; нения в результат RAR MOV D,A MOV RAR A,E MOV RET E,A Рис. 4.23. Подпрограмма сложения чисел с плавающей запятой.
Типичные 8-разрядные микропроцессоры и микроЭВМ 95 137 *Программа извлечения квадратного корня 138 139 140 0347 26 80 * * SQRT MVI Н,80Н ; Занести в старший разряд 141 0349 2Е 00 ; счетчика сдвигов 1 MVI L,0 ; Очистить двоичное число 142 0348 70 SQRT1 MOV A,L ; Взять двоичное число 143 034С В4 144 034D 6F 145 034Е 47 146 034F CD 037А 147 0352 7А 148 0353 В8 149 0354 DA O35F OR А Н ; Занести 1 в разряд А ре- ; гистра L MOV L,A MOV В,А ; Возвести двоичное число в ; квадрат CALL SQRB MOV A,D CMP В ; В > D? Да-сбросить разряд JC RSTBIT ; Нет-оставить прежнее зна- 150 0357 С2 0362 ; чение разряда JNZ SHFTCTR ; В = D? Нет-оставить в раз- 151 О35А 7В 152 035В В9 153 О35С D2 0362 ; ряде 1 MOV А,Е ; Да-сравнить младшие бай- ; ты CMP С ; С > Е? Да-сбросить разряд JNC SHFTCTR ; Нет-оставить в разряде 1 154 O35F 7D RSTBIT MOV A,L ; Обратиться к последнему 155 0360 АС 156 0361 6F 157 0362 7С ; установленному разряду XRA Н MOV L,A ; Сбросить этот разряд в дво- ; ичном числе SHFTCTR MOV А,Н ; Обратиться к счетчику 158 0363 1F 159 0364 67 160 0365 D2 034В RAR ; Сдвиг вправо MOV Н,А ; Сдвиг производился 8 раз? JNC SQRT1 ; Да-на следующую команду 161 0368 45 162 0369 CD 037А 163 036С 7В 164 036D 91 165 036Е BD 166 036F DA 0376 MOV B,L ; Возвести L в квадрат CALL SQRB MOV А,Е ; Взять младший байт исход- ; ного числа SUB С ; Вычесть младший байт L * * 2 CMP L ; Разность < или = L? JC DONE ; Да-ближе L**2 167 0372 СА 0376 168 0375 2С 169 0376 4D JZ DONE INR L ; Нет-ближе (L+l)**2 DONE MOV C,L ; Квадратный корень-в pe- 170 0377 СЗ 0397 ; гистр С HLT CDA ; Останов 171 172 173 174 175 176 177 037А D5 178 037В 1Е 08 * * * *Подпрограмма возведения в квадрат числа в регистре В * Результат помещается в пару регистров ВС * SQRB PUSH D MVI E,08H ; Счетчик числа умножений 179 O37D ОЕ 00 180 O37F 50 MVI С,ООН MOV D,B Рис. 4.24. Программа алгоритма извлечения квадратного корня.
96 Глава 4 181 0380 В7 SHIFT1 ORA A ; Очистить признак переноса 182 0381 79 MOV A,C ; Сдвинуть на 16 разрядов вле- ; во 183 0382 17 RAL 184 0383 4F MOV C,A 185 0384 78 MOV A,В 186 0385 17 RAL 187 0386 47 MOV В,A 188 0387 D2 0391 JNC SQRB1 189 О38А 7А MOV A,D ; Взять данные 190 038В 81 ADD C 191 О38С 4F MOV C,A 192 O38D 78 MOV A,В 193 О38Е СЕ ACT ООН 194 0390 47 MOV B,A 195 0391 1D SQRB1 DCR E ; Конец? 196 0392 С2 0380 JNZ SHIFT1 197 0395 D1 POP D 198 0396 С9 RET ; Выход из подпрограммы 199 * Рис. 4.24. (Продолжение) ма микроЭВМ 8748, отличающаяся лишь использованием ППЗУ для хранения про- грамм; последняя применяется для разра- ботки программного обеспечения и не- производственных целей, таких, как испы- тания и приработка аппаратуры. Ми- кроЭВМ 8049 аналогична 8048, но имеет удвоенную емкость памяти программ и данных. Модели 8035 и 8029 эквивалент- ны 8048 и 8049 соответственно, однако не имеют внутренней памяти программ. Все эти устройства совместимы на уровне ма- шинных кодов операций. Важными до- стоинствами рассмотренных процессоров являются широкий набор команд для ра- боты с отдельными разрядами, эффектив- ное использование памяти команд (все они имеют длину не более 2 байт) и низкая стоимость. Недостатки в сравнении с дру- гими процессорами заключаются в огра- ниченных возможностях адресации памя- ти команд из-за использования 8-разряд- ного адреса и небольшом наборе арифме- тических функций (например, нет команды вычитания). На рис. 4.25 представлены блок-схема микроЭВМ 8048 и схема расположения выводов. Арифметическое устройство про- цессора предназначено для реализации ос- новных функций микроЭВМ 8048 по мани- пулированию данными; в нем можно выделить блоки АЛУ, аккумулятора, фла- га переноса и дешифратора команд. Память резидентных программ имеет емкость 1024 или 2048 8-разрядных слов, адресуемых счетчиком команд (СК); в мо- дели 8748 это ППЗУ, а в 8048-ПЗУ. Память резидентных данных рассчита- на на хранение 64 или 128 8-разрядных слов; все ее ячейки адресуются косвенно с помощью восьми регистров двух указа- телей памяти произвольного доступа, за- нимающих специально выделенные адреса в нулевом или первом блоке регистров ОЗУ. Кроме того, первые восемь ячеек (с номерами 0-7) нулевого блока предназна- чены для использования в качестве рабо- чих регистров и могут непосредственно адресоваться некоторыми командами. Вы- полнив команду переключения блока реги- стров (SEL RB), можно назначить в каче- стве рабочих регистров ячейки 24-31 вместо ячеек 0-7 и сделать их непосред- ственно адресуемыми. МикроЭВМ 8048 имеют четыре до- ступных пользователю флажка: флаг пере- носа, флаг служебного переноса, F0 и F1. Назначение двух первых флагов такое же, как у микропроцессора 8085; флаги F0 и F1 не имеют жесткого закрепления и могут рассматриваться как флаги общего назна- чения, которые программист волен ис- пользовать по своему усмотрению. Каждый из этих флаговых признаков мо-
Типичные 8-разрядные микропроцессоры и микроЭВМ 97 Фиксатор адреса [Буфер шины порта 2 4 разряда/ и -г (,и^НпИи, и адреса порта' порт расширит 27старшие1 ввода вывода 4 разряда/) Старшие разряды счетчика команд Резидентное СППЗУ/ПЗУ I Кх8 (2Кх8) * Дешифратор Питание а Т актовая, частота 'SS —Земля Фиксатор шины и времен регистр младших разрядов СК -480 Сигнал Т1 18) j Аккумулятор | Младшие разряды СК Счетчик времени/ событий (8) фиксатор аккумулятора DD .» Питание в программируемом режиме СС - +5В (запасное маломощное) Схема управления и синхронизации Чтение Запись 3 Блок настройки десятичной арифметики т 2 1 ? I1MT RESET PROG ЕА XTAL1 XTAL2 ALE PSEN Регистр команд —“1 и дешифратор g г Стробы 2? 1 32 га г; с! 1 га 8 а схема и схема Слово состояния программы Расширение для А р дополнительных I I устройств ввода вывода и ЗУ j Буфер шины TESTO TEST1 I1MT FLAGO FLAG) Регистр адреса ОЗУ TIMER FLAG CARRY ACC ACC BIT TEST Буфер 1ШИНЫ порта 1 и фик- сатор адреса Мультиплексор Регистр______0 Регистр______1 Регистр______2 Регистр з Регистр 4" Регистр______5_ Регистр 6 Регистр 7 8 уровневый стек /переменной длины/ Зторой блок регистр 'при необходимости, Память данных Логическая матрица ЗУПВ 64 x8 (128x8)* Рис. 4.25. Структурная жения выводов микроЭВМ 8048. а- внутренняя структурная схема микроЭВМ, устройства Источник перепечатано с разрешения фирмы Intel, copyright 1982 * только для 8049 располо- б-выводы жет быть сброшен в исходное состояние, переведен в обратный код и проверен ко- мандами условного перехода. Рассмотрим теперь назначение неко- микроЭВМ торых выводов и сигналов 8048. К выводам V, Vss и VDD линии питания и заземления Vcc- питание + 5 В, VDD~ питание + 25 В при вводе программы и + 5 В в процессе работы). На клемму PROG при вводе про- граммы подаются импульсы + 23 В. Штырьки Р10-Р17и Р20-Р27-это два 8-разрядных квазидвунаправленных по- рта. Линии D0-D7 образуют шину ПОДВОДЯТСЯ (Vss - земля, той XTAL 1 С I 2 40 39 3 vcc □ ti XTAL 2 С 3 38 □ P27 RESET С 4 37 □ P26 SS С 5 36 □ P25 пчтс 6 35 □ P24 ЕА С 7 34 3 P17 RDQ 8 33 3 P16 PSEN С o 8048 y 8049 32 □ PIS WR С 10 8748 31 □ P14 ALE С 11 8035 11 8039 30 □ P13 DB0C 12 29 □ P12 DBjC 13 28 □ ph db2C 14 27 □ pio db3C 15 26 □ vdd DBoC 16 25 □ prog DBj C 17 24 □ P23 DBeC 18 23 □ P22 DB,C 19 22 □ P21 Vss C 1 20 21 □ P20 данных. б
98 Глава 4 Контакты ТО и Т1-две входные клеммы, состояние которых может прове- ряться командами условного перехода JTO, JNTO и JT1, JNT1. Контакт PSEN (разрешение на запоми- нание программы) является выходным; сигнал на нем появляется только при до- ступе к внешней памяти программ. Вывод SS-это вход пошагового режи- ма; может использоваться совместно с сигналом ALE для организации пошаго- вого выполнения каждой команды. Со штырька ЕА снимается сигнал внешнего обращения, формируемый при обращении из памяти программ к внешней памяти для предварительной выборки ко- манд. 4.2.2. Система команд Сводный перечень команд микропро- цессора 8048 приведен в табл. 4.2. Пояс- ним кратко эти команды, коснувшись лишь тех из них, которые являются специ- фическими именно для данного микропро- цессора: Команда DA А (установить деся- тичный аккумулятор) обеспечивает пре- образование содержимого аккумулятора из двоичного в двоично-десятичный код одной командой; сигнал переполнения формируется в том случае, если число в ак- кумуляторе превышает величину 9910. По команде SWAP А старшие и млад- шие четыре разряда аккумулятора ме- няются местами. Команды ANL Р и ORL Р (логическое умножение и логическое сложение с содер- жимым порта) позволяют модифициро- вать отдельные разряды порта, не изменяя других. MOVD-специальная команда, исполь- зуемая для организации доступа к расши- рителю ввода-вывода 8243. DJNZ R и DJZ R уменьшают содержи- мое регистра на 1 и проверяют результат на равенство (или неравенство) нулю, ини- циируя переход по адресу в пределах стра- ницы при помощи одной команды; очень полезны в интерактивных циклах. JTO, JT1, JNT0 и JNT1 вызывают пере- ход в пределах страницы памяти в зависи- мости от значения проверяемого входа; Таблица 4.2. Система команд микроЭВМ 8048 Мнемокод Описание Длина (байт) Число циклов Команды обращения к аккумулятору (А) ADD A, R Сложить содержимое регистра с числом в А 1 1 ADD A, @R Сложить данное из памяти с числом в А 1 1 ADD А, # data Сложить данное, указанное в команде, с числом в А 2 2 ADDC A, R Сложить с формированием переноса число в регистре с числом в А 1 1 ADDC A, @R Сложить с формированием переноса данное из памяти с числом в А 1 1 ADDC A, #data Сложить с формированием переноса данное, указанное в команде, с числом в А 2 2 ANL A, R Логическое умножение числа в регистре и числа в А 1 1 ANL A, @R Логическое умножение данного из памяти и содержимого А 1 1 ANL A, #data Логическое умножение данного, указанного в команде и содержимого А 2 2 ORL A, R Логическое сложение содержимого регистра с числом в А 1 1 ORL A, @R Логическое сложение данного из памяти с числом в А 1 1 ORL A,#data Логическое сложение данного, указанного в 2 2 команде, с числом в А
Типичные 8-разрядные микропроцессоры и микроЭВМ 99 Таблица 4.2 (продолжение) XRL A, R XRL A, @R XRL A, #data Операция ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым регистра и числом в А Операция ИСКЛЮЧАЮЩЕЕ ИЛИ над данным из памяти и числом в А Операция ИСКЛЮЧАЮЩЕЕ ИЛИ над данным, указанным в команде, и числом в А 1 1 2 1 1 2 INC А Увеличить содержимое А на 1 1 1 DEC А Уменьшить содержимое А на 1 1 1 CLR А Очистить А 1 1 CPL А Взять обратный код числа в А 1 1 DA А Преобразовать в двоично-десятичный код 1 1 SWAP А Поменять местами полубайты А 1 1 RL А Циклический сдвиг содержимого А влево 1 1 RLC А Циклический сдвиг содержимого А влево, включая разряд переноса 1 1 RR А Циклический сдвиг содержимого А вправо 1 1 RRC А Циклический сдвиг содержимого А вправо, включая разряд переноса 1 1 Команды ввода-вывода IN А, Р Ввод данных из порта в А 1 2 OUTL Р, А Вывод данных из А в порт 1 2 ANL Р, # data Логическое умножение данного, указанного в команде, и содержимого порта 2 2 ORL Р #data Логическое сложение данного, указанного в команде, и содержимого порта 2 2 INS A, BUS Занести число с шины в А 1 2 OUTL BUS, A Вывести число из А на шину 1 2 ANL BUS, # data Логическое умножение данного, указанного в команде, и числа на шине 2 2 ORL BUS, # data Логическое сложение данного, указанного в команде, и числа на шине 2 2 MOVD A, P Ввод числа из порта расширителя в А 1 2 MOVD P, A Вывод числа из А в порт расширителя 1 2 ANLD P, A Логическое умножение содержимого А и порта расширителя 1 2 ORLD P, A Логическое сложение содержимого А и порта расширителя 1 2 Команды обращения к регистрам INC R Увеличить содержимое регистра на 1 1 1 INC @R Увеличить содержимое ячейки памяти на 1 1 1 DEC R Уменьшить содержимое регистра на 1 1 1 Команды перехода JMP addr Безусловный переход 2 2 JMPP @A Безусловный переход по косвенному адресу 1 2 DJNZ R, addr Уменьшить содержимое регистра на 1 и выполнить перескок 2 2 JC addr Переход, если бит переноса равен 1 2 2 JNC addr Переход, если бит переноса равен 0 2 2 JZ addr Переход по нулю 2 2 JNZ addr Переход по неравенству нулю 2 2 JTO addr Переход при ТО = 1 2 2 JNTO addr Переход при ТО = 0 2 2
100 Глава 4 Таблица 4.2 (продолжение) JT1 addr Переход при Т1 = 1 2 2 JNT1 addr Переход при Т1 = 0 2 2 JFO addr Переход при F0 = 1 2 2 JF1 addr Переход при Fl = 1 2 2 JTF addr Переход по флагу таймера 2 2 JNI addr Переход при INT = 0 2 2 JBb addr Переход, если бит b аккумулятора равен 1 2 2 Команды обращения к подпрограмме CALL Переход к подпрограмме 2 2 RET Возврат 1 2 RETR Возврат с восстановлением состояния 1 2 Команды управления регистром кода состояния CLR С Очистить флаг переноса 1 1 CPL С Инвертировать флаг переноса 1 1 CLR F0 Очистить флаг F0 1 1 CPL F0 Инвертировать флаг F0 1 1 CLR F1 Очистить флаг F1 1 1 CPL F1 Инвертировать флаг F1 1 1 Команды пересылки данных MOV A, R Переслать из регистра в А 1 1 MOV A, @R Переслать данное из памяти в А 1 1 MOV A, #data Переслать данное, указанное в команде, в А 2 2 MOV R, A Переслать из А в регистр 1 1 MOV @R, A Переслать из А в память 1 1 MOV R, #data Переслать данное, указанное в команде, в 2 2 регистр MOV @R, #data Переслать данное, указанное в команде, в 2 2 память MOV A, PSW Переслать слово состояния программы в А 1 1 MOV PSW, A Переслать содержимое А в слово 1 1 состояния программы XCH A, R Обмен содержимого А и регистра 1 1 XCH A, @R Обмен содержимого А и ячейки памяти 1 1 XCHD A, @R Обмен содержимого полубайтов А и регистра! 1 MOVX A, @R Переслать из внешней памяти в А 1 2 MOVX @R, A Переслать из А во внешнюю память 1 2 MOVP A, @R Переслать в А из текущей страницы 1 2 MOVP3 A, @R Переслать в А из страницы 3 1 2 Команды обращения к таймеру-счетчику MOV A, T Считать показание таймера-счетчика 1 1 MOV T, A Загрузить таймер-счетчик 1 1 STRT T Запустить таймер 1 1 STRT CNT Запустить счетчик 1 1 STOP TCNT Остановить таймер-счетчик 1 1 EN TCNTI Разрешить прерывание от таймера-счетчика 1 1 DIS TCNTI Запретить прерывание от таймера-счетчика 1 1 Команды управления EN I Разрешить внешнее прерывание 1 1 DIS I Запретить внешнее прерывание 1 1
Типичные 8-разрядные микропроцессоры и микроЭВМ 101 SEL RB0 SEL RB1 SEL МВО SEL МВ1 ENTO CLK Выбрать блок регистров 0 Выбрать блок регистров 1 Выбрать блок памяти 0 Выбрать блок памяти 1 Разрешить вывод синхронизирующих сигналов на ТО Таблица 4.2 1 1 1 1 1 (продолжение) 1 1 1 1 1 NOP Нет операции 1 1 Все мнемонические обозначения являются собственностью фирмы Intel Corporation 1982 эти команды дают простые средства для изменения хода выполнения программы по сигналам внешней логики. JBb инициирует переход по заданному адресу, когда в конкретном разряде акку- мулятора содержится 1; эта команда по- зволяет легко использовать любой разряд порта в качестве проверяемого входа. MOVP3 А, @ А вызывает загрузку ре- гистра А элементом данных со страницы 3 выбранного в данный момент блока па- мяти в соответствии с адресом, опреде- ляемым А; на странице 3 могут, например, храниться просмотровые таблицы со- вместно с этой командой, позволяющей обойти свойственные процессору 8048 ограничения на размер страницы памяти. ENTO CLK закрепляет за клеммой ТО роль выхода сигналов системной синхро- низации; может использоваться для обес- печения отсчета времени при работе с внешними устройствами. SEL RB0 и SEL RB1 позволяют вы- брать один из двух блоков регистров; при этом модификация RB0 может использо- ваться для нормального режима выполне- ния программы, a RB1-резервироваться для обработки прерываний. 4.2.3. Способы адресации Для того чтобы иметь доступ ко всем 4К байтам памяти программ, требуется 12 адресных разрядов, а поскольку длина всех команд 1 или 2 байта, некоторые из них имеют ограниченные возможности пере- хода на другой адрес. Команды условного перехода ограничены рамками 256-байто- вой страницы, так как могут изменять лишь младшие восемь разрядов СК. Пере- ход в пределах блока размером 2К обеспе- чивается в команде JMP за счет использо- вания части адреса перехода 3 бит байта, содержащего код операции. Выбор стар- шего или младшего блока памяти ем- костью 2К байт производится командами SEL МВО и SEL МВ1, которые изменяют только старшие разряды СК. Преимущество такого способа адреса- ции состоит в эффективном использовании памяти программ благодаря тому, что максимальная длина команд равна 2 бай- там. Недостатком является то, что про- граммист должен заблаговременно преду- сматривать команду JMP при достижении границы каждой страницы и команду SEL МВ при достижении границы блока. Эти ограничения имеют место при доступе как к внешней, так и к внутренней памяти. Ко- манды обращения к подпрограммам CALL адресуются в пределах двухкило- байтного блока. Внешнюю память программ можно увеличить за пределы 4К байт, если преду- смотреть переключение группы блоков па- мяти через порт ввода-вывода. Однако при этом следует заботиться о том, чтобы не встречались подпрограммы, выходящие за границы адресов блока, поскольку про- граммист должен всегда помнить, из ка- кой группы блоков памяти произошло обращение к конкретной подпрограмме. 4.2.4. Возможности ввода-вывода Программируемый ввод-вывод Ввод-вывод может осуществляться в нескольких режимах: через статические порты ввода-вывода Р1 и Р2, через внеш-
102 Глава 4 ние ЗУ и с использованием расширителя ввода-вывода 8243. 1. Порты Р1 и Р2-это два 8-разрядных порта ввода-вывода. С помощью команды OUT1 можно вывести 8-разрядное слово либо установить отдельные разряды по маске с помощью команд ANL или ORL. Поскольку выходы микроЭВМ имеют сравнительно высокий импеданс (около 60 кОм), они могут использоваться как входы, управляемые внешними сигналами. Если в системе не используется внешнее ЗУ и нет режима ввода-вывода с распреде- лением памяти, то в качестве статического порта можно использовать шину BUS. 2. Ввод-вывод с распределением памя- ти осуществляется с помощью команды MOVX. Для выбора нужного устройства необходимо иметь фиксатор адреса, и тог- да работа устройств происходит следую- щим образом: а) Содержимое выхода RD стробирую- щим импульсом заносится в фиксатор внешнего адреса, будучи считанным с шины, когда на выходе ALE высокий уровень сигнала сменяется низким. Полу- ченное значение адреса используется для выбора внешнего устройства; б) данные из аккумулятора выводятся на шину; в) формируется стробирующий сигнал WR, который «защелкивает» данные в фиксаторе выбранного внешнего устрой- ства. 3. Доступ к расширителю ввода-выво- да 8243 организуется с помощью команд MOVD, ANLD и ORLD, как и к портам РЗ - Р7. 4-разрядный код выбираемого по- рта и данные появляются на клеммах Р23-Р20, и данные «защелкиваются» в фиксаторе по сигналу на клемме PROG. На рис. 4.26 и 4.27 демонстрируются возможности ввода-вывода микроЭВМ 8048. Рис. 4.26. Увеличение возможностей ввода-вы- вода с помощью недорогого расширителя 8243. Источник перепечатано с разрешения фирмы Intel, copyright 1982
Типичные 8-разрядные микропроцессоры и микроЭВМ 103 Рис. 4.27. Расширение памяти программ с по- мощью фиксатора внешнего адреса (*ЕА = 5В для 8035/8039). Источник перепечатано с разрешения фирмы Intel, copyright (§) 1982 Прерывание по вводу-выводу В микроЭВМ 8048 предусмотрены два независимых вида прерывания: аппарат- ное и от счетчика-хронометра. Сигнал низкого уровня на клемме INT вызывает переход к ячейке 3 памяти про- грамм (если прерывание разрешено коман- дой ENI), который осуществляется после завершения выполнения текущей ко- манды. В ячейке 3 должна находиться ко- манда безусловной передачи управления подпрограмме обработки прерываний. Общая схема последовательности собы- тий выглядит следующим образом: 1. Внешнее устройство инициирует прерывание, устанавливая на клемме INT низкий уровень. 2. Процессор производит вызов под- программы по адресу 3, игнорируя в даль- нейшем сигнал прерывания. 3. Исполняется подпрограмма обра- ботки прерывания. 4. Команда RETR осуществляет воз- врат в основную программу в точке, где ее выполнение было прервано. Выдается раз- решение прерываний и восстанавливается слово состояния программы. При использовании прерываний в ми- кроЭВМ 8048 необходимо учитывать, что прерывание всегда приводит в ячейку с адресом 3 на первой странице независи- мо от выбора текущей страницы или блока и что при возврате из внутренней про- граммы обслуживания прерывания сигнал на клемме внешнего прерывания должен иметь высокий уровень, в противном слу- чае немедленно вновь возникнет прерыва- ние. Важно также иметь в виду, что для обработки прерываний рекомендуется ис- пользовать только блок регистров 1, что позволяет избежать потери данных основ- ной программы, для хранения которых от- водится блок регистров 0. Действие прерывания от счетчика-хро- нометра аналогично действию аппа- ратных прерываний, за тем исключением, что управление передается в ячейку с адре- сом 7, а само прерывание инициируется переполнением 8-разрядного счетчика- хронометра. Приоритет этого прерывания ниже, чем у аппаратного, поэтому первым всегда обслуживается аппаратное преры- вание, а сигнал прерывания от счетчика- хронометра оказывается задержанным.
104 Глава 4 Величина единичного отсчета таймера зависит от выбранной частоты кварцевого генератора (для генератора 5,185 МГц это составляет 92,6 мкс). Чтобы обеспечи- вался нужный интервал времени в диапа- зоне от 92,6 мкс до 23,7 мс (256 единичных интервалов), в таймер загружается допол- нительный код числа единичных отсчетов, вычисляемого по формуле N = требуемая величина интервала/92,6. Более длинные интервалы могут быть по- лучены при помощи любого числа после- довательных прерываний. Таймер применяется для отсчета ис- тинного времени, тактирования шагового двигателя и синхронизации вычислитель- ного процесса. Наличие таймера освобож- дает процессор для выполнения других функций, таких, как численные расчеты, не требуя ожидания им завершения всего цикла синхронизации. Датчик времени мо- жет работать также в качестве счетчика внешних синхронизирующих импульсов, поступающих на клемму Т1. Содержимое счетчика увеличивается на 1 каждый раз, когда уровень сигнала на Т1 меняется с высокого на низкий. Система, в которой применяется ЭВМ, должна предусматри- вать задание точки начала отсчета време- ни. Пример 4.4 Требуется написать программу на язы- ке ассемблера 8048 для преобразования двоично-десятичного кода в двоичный. Предполагается, что регитр R5 содержит данные в двоично-десятичном коде. Необ- ходимо реализовать алгоритм, по которо- му двоично-десятичное число «АВ» пре- образуется в эквивалент выражения А • 101 + В • 10°, записанный в двоичном коде. Решение В приведенной ниже программе двоичный эквивалент числа «АВ» вычисляется путем умножения А на 8 с последующим дву- кратным добавлением числа А (что дает А • 10) и сложения с числом В. Пример 4.5 Необходимо написать на языке ассем- блера 8048 программу деления с остатком. Предполагается, что регистр R5 содержит делимое, а регистр R6-делитель. BCDBIN: MOV A, R5 ; R5 содержит 2-разрядное дво- ; ично-десятичное число SWAP А ; Переслать десятки в младший ; полубайт ANL A, #0FH ; Замаскировать старший полу- ; байт MOV Rl, А ; Десятки-в младшем полубай- те А и R1 RL А RL А RL А ADD A, Rl ADD A, Rl ; Умножение на 8 ; Теперь получили умножение ; на 10 MOV Rl, A ; Пересылка преобразованных ; десятков в R1 MOV A, R5 ANL A, #0FH ADD A, Rl ; Замаскировать десятки ; Прибавить единицы к преоб- ; разованным десяткам MOV R5, A RET ; Переслать результат в R5 ; R5 теперь содержит двоичное ; данное
Типичные 8-разрядные микропроцессоры и микроЭВМ 105 Решение вины. В минимальный комплект вычисли- Ниже приведен текст требуемой про- тельной системы входят процессор, источ- граммы: н у н ник синхронизирующих импульсов и внешняя память. Блок-схема микропро- DIVD: MOV A, R5 ; Запомнить содержимое R5 MOV R5, #00Н ; Очистить R5 DIVD1: INC R5 ; Счет числа циклов для резуль- ; тата CPL А ADD A, R6 CPL А ; Вычесть R6 из А JNC DIVD 1 ; Конец, если выработан при- ; знак переноса ADD A, R6 DEC R5 ; R5 на 1 больше, чем нужно RET ; R5 содержит результат ; А содержит остаток 4.3. Микропроцессор Z80 фирмы Zilog1) 4.3.1. Введение Архитектура процессора Z80 фирмы Zilog основывается на архитектурных принципах микропроцессора 8080 и позво- ляет выполнять все 78 команд этого ми- кропроцессора, а также 80 дополни- тельных команд. Всего микропроцессор Z80 имеет 696 кодов операций (в отличие от 244 кодов операций микропроцессора 8080). Конструктивно микропроцессор представляет собой обычную ионно-им- плантированную и-канальную МОП-схе- му. К числу его особенностей относятся: использование для питания лишь одного источника напряжения + 5 В, наличие однофазного внешнего синхрогенератора, 17 внутренних регистров и встроенная схе- ма регенерации ОЗУ. Предусмотрены три способа реакции на прерывания. Имеется второй набор из восьми 8-разрядных реги- стров, которые соответствуют восьми ре- гистрам микропроцессора 8080. Все схемы синхронизации находятся внутри микро- схемы процессора, за исключением от- дельного внешнего генератора. Адресная шина устроена таким образом, что адреса регенерируемых ячеек динамического ОЗУ появляются в линиях ее младшей поло- п Этот раздел содержит материалы, пере- печатанные с разрешения фирмы Zilog, Inc. цессора Z80 и маркировка его выводов по- казаны на рис. 4.28 и 4.29. В микропроцессоре Z80 повторены все регистры микропроцессора 8080 и допол- нительно к его 8-разрядным регистрам А, F, В, С, D, Е, Н и L имеются также A', F', В', С', D', Е', Н' и L' и еще несколько регистров специального назначения. Эти дополни- тельные регистры включают два 16-раз- рядных индексных регистра (IX и IY), 8-разрядный регистр вектора прерываний (I) и 8-разрядный регистр регенерации па- мяти (R). Кроме того, имеется один 16-раз- рядный СК и один 16-разрядный указатель стека. Особенностью микропроцессора Z80 является его способность регенериро- вать динамическое ЗУ автоматически при помощи регистра R. Микропроцессор Z80 имеет два иден- тичных 8-разрядных флаговых регистра, в которых предусмотрены четыре прове- ряемых и два непроверяемых флажка. Четыре проверяемых флажка-это при- знак переноса, признак нуля, признак отри- цательного числа и признак четности-пе- реполнения. Два непроверяемых разря- да-это признак полупереноса (аналогичен дополнительному признаку переноса в ми- кропроцессоре 8085) и признак вычитания. Последний используется для коррекции результатов операций с двоично-деся- тичными числами, помогая определить вид предыдущей операции. Для операций сложения и вычитания коррекция раз- лична.
106 Глава 4 Рис. 4.28. Структурная схема процессора Z80. Источник перепечатано с разрешения фирмы Zilog, copyright 1982 Поясним теперь назначение некоторых из выводов и сигналов микропроцессора Z80: BUSRQ-вход, на который подается за- прос перехода в состояние высокого импе- данса не только адресной шины и шины данных микропроцессора Z80, но и линий запроса ЗУ, запроса УВВ и т.д. с тем, чтобы другие устройства могли свободно использовать шину; BUSAK-выходной сигнал, высокий уровень которого указывает на то, что вы- шеперечисленные линии установлены в со- стояние высокого импеданса; Низкий уровень сигнала Mt (ма- шинный цикл 1) указывает на то, что ми- кропроцессор находится в состоянии вы- борки кода операции при выполнении некоторой команды; ______________ Низкий уровень сигнала MREQ (линия запроса памяти) указывает на то, что адресная шина несет действительный адрес для операции чтения или записи в память. _____ Низкий уровень сигнала в линии RFSH (сигнал регенерации) указывает на то, что младшие 7 разрядов адресной шины несут адрес регенерации для динамического ЗУ; для выполнения регенеративного чтения всей динамической памяти должен исполь- зоваться текущий сигнал MREQ. _______ Низкий уровень на выходе HALT указывает на то, что была выполнена ко- манда останова HALT. 4.3.2. Способы адресации Микропроцессор Z80 имеет 16-разряд- ную адресную шину, обеспечивающую возможность доступа к памяти программ емкостью 64К. Предусмотрены следую- щие различные способы адресации: 1. Выборка команды. Содержимое СК пересылается на адресную шину. На выхо- де MREQ появляется сигнал низкого уров-
Типичные 8-разрядные микропроцессоры и микроЭВМ 107 Адресная шина Шина данных Mj MREQ Управление IORQ системой * RD WR RFSH HALT WAIT Управление ЦП < INT NMi RESET Управление шинами * BUSRQ BUSAK ЦП V. Ф + 5B Земля Рис. 4.29. Схема расположения выводов про- цессора Z80. Источник перепечатано с разрешения фирмы Zilog, copyright 1982 ня, который разблокирует микросхему для обеспечения доступа к памяти программ. Низким уровнем сигнала RD разрешается вывод данных из памяти на шину данных. После декодирования соответствующей команды 7-разрядный адрес регенерации выводится на адресную шину и низкий уровень сигнала RFSH указывает на необ- ходимость регенерации динамического ОЗУ. 2. Непосредственная адресация. В этом режиме ячейка, следующая за кодом опе- рации, содержит операнд. 3. Расширенная непосредственная адресация. Ячейки, следующие за кодом операции, содержат 16-разрядный опе- ранд. 4. Модифицированная адресация нуле- вой страницы. Имеется команда, называе- мая рестартом, которая используется для инициирования перехода на подпрограм- му по одному из возможных адресов нуле- вой страницы. В ячейках с этими адресами могут размещаться часто используемые подпрограммы, доступ к которым может осуществляться с помощью однобайтовых команд. 5. Относительная адресация. В этом режиме задается одно байтовое смещение в диапазоне от + 127 до — 128 относи-
108 Глава 4 тельно текущего адреса плюс 2, что дает возможность обращения к расположенной поблизости подпрограмме с помощью ко- манды длиной в 2 байта и позволяет созда- вать перемещаемые программы. 6. Расширенная адресация. Полный 16-разрядный адрес назначения опреде- ляется двухбайтовым операндом. Этим способом можно обеспечить обращение к подпрограмме или переход по любому адресу памяти. 7. Индексная адресация. Смещение прибавляется к числу в одном из двух ин- дексных регистров, образуя действи- тельный адрес памяти. Этот способ поле- зен для работы с просмотровыми таблица- ми. 8. Регистровая адресация. Код опера- ции содержит данное, определяющее кон- кретный регистр. 9. Неявная адресация. Регистр адреса, например аккумулятор, однозначно опре- деляется данной командой. 10. Регистровая косвенная адресация. 16-разрядная пара регистров, например HL, содержит адрес операнда. 11. Побитовая адресация. Три разряда кода операции определяют конкретный разряд ячейки памяти, над которым про- изводится данная операция. 4.3.3. Система команд Система команд микропроцессора Z80 представлена в табл. 4.3; беглый анализ этой системы команд позволяет сделать следующие выводы: 1. Данные могут перемещаться непос- редственно из регистра в регистр, из памя- ти в регистр, из регистра в память или из одних ячеек памяти в другие. Содержимое ячеек можно изменять, не прибегая к вре- менному запоминанию промежуточных результатов. 2. С помощью команд ЕХ и ЕХХ мо- жет производиться взаимная замена ос- новных и вспомогательных регистров (R и R'), что дает возможность разделения ре- гистровых данных между разными проце- дурами. 3. Имеется полный набор операций для работы со стеками. Указатель стека (SP) используется как для запоминания и извлечения данных, так и для хранения адресов возврата подпрограмм. Стек ра- ботает по принципу «последним пришел - первым обслужен» и в пределах емкости памяти системы может быть сколь угодно большим. Таким образом, возможности организации вложений подпрограмм и хранения данных в стеке по существу неограничены. 4. Предусмотрены операции над 16-разрядными числами, такие, как DAD (сложение содержимого спаренных реги- стров), INX и DCX (увеличение и уменьше- ние содержимого спаренных регистров на 1), LHLD (непосредственная загрузка спа- ренных регистров) и ряд других; эти опера- ции облегчают выполнение арифметиче- ских операций над 16-разрядными числа- ми и управление режимами адресации.
Типичные 8-разрядные микропроцессоры и микроЭВМ 109 Таблица 4.3. Система команд микропроцессора Z80 Группа команд информационного обмена , пересылки блока и поиска Код Мнемокод Символическ. описание Флаги операции Длина в байтах Число машин, циклов Число тактов Пояснения C z / V s N H 76 543 210 EX DE, HL DE-HL • • • • • • 11 101 Oil 1 1 4 EX AF.AF’ AF**AF* • • • • • • 00 001 000 1 1 4 ЕХХ • • • • • • 11 011 001 1 1 4 Обмен содержимым основного и дополнит, блоков EX (SP), HL H~(SP+1) L - (SP) • • • • • • 11 100 Oil 1 5 19 регистров EX (SP), IX 1XH~(SP+1) • • • • • • 11 011 101 2 6 23 IXL~(SP) 11 100 on FX (SP), IY IYH~(SP+l) • • • • • • 11 111 101 2 6 23 IYl~(SP) Ф 11 100 on LD1 (DE)*-(HL) • • t • 0 0 11 101 101 2 4 16 Загрузить (HL) DE - DE+1 10 100 000 в (DE) увеличить HL - HL+1 на 1 указатели и уменьшить на 1 BC - BC-I счетчик числа LDIR (DE)-(HL) • • 0 • 0 0 11 101 101 2 5 21 байтов (ВС) DE - DE+1 HL - HL+I BC-BC-1 10 110 000 2 4 16 Если (ВС) ¥0 Если (ВС) = 0 Повторяется, пока ВС = 0 Ф LDD (DE)-(HL) • • t • 0 0 11 101 101 2 4 16 DE-DE-I HL-HL-1 BC-BCI 10 101 000 LDDR (DE) - (HL) • • 0 • 0 0 II 101 101 2 5 21 Если (ВС)=#0 DE-DE-I HL-HL-I BC-BC-I Повторяется , пока ВС = 0 Ф Ф 10 111 000 2 4 16 Если (ВС) = 0 CPI A-(HL) • t t t 1 t 11 101 101 2 4 16 HL-HL+1 10 100 001 BC-BC-I Ф Q Если (ВС) ¥ 0 CP1R A-(HL) • 1 : 1 t 11 101 101 2 5 21 и А¥ (Н). HL - HL+1 10 110 001 2 4 16 Если (ВС) ~ 0 BC-BC-I Повторяется, пока A= (HL) или А = (HL ) или BC = 0 Ф
110 Глава 4 Таблица 4.3 (продолжение) Мнемокод Код Флаги операции Сим во лич. Р, операция С Z V S N Н 76 543 210 Длина Число в маш. Числ0 байтах циклов тактов Пояснения CPD CPDR А-(HL) • : t t 1 t 11 101 101 HL —HL-1 10 101 001 BC-BC-I a-(HL) • : t : i t и loi loi HL-HL-1 10 111 001 BC-BC-I Повторяется, пока, A = (HL) или ВС = 0 2 4 16 2 5 21 2 4 16 Если (ВС) / 0 и А / (HL) Если (ВС) =0и A=(HL) Примечания. Флаг P/V равен 0, если ВС — 1 = 0, в противном случае P/V - 1. Флаг Z равен 1, если А = (Н L), в противном случае Z = 0 . Условные обозначения. • — состояние флага не изменяется; 0 ~ фла г сбрасывается; 1 - флаг устанавливается; X — флаг неопределен; ф — состояние флага зависит от результата операции. Группа команд 8-разрядной арифметики и логических команд Код Мнемокод Флаги операции Символич. p операция C Z V S N H 76 543 210 Длина в байтах Число маш. циклов Число тактов Пояснения ADD А, г ADDA.n ADD A, (HL) ADD A, (IX+d) ADDA,(IY+d: ADC A, s SUB s SBC A, s ANDs OR s XORs CPs INC r INC (HL) INC (IX+d) A-A + r t t V t 0 t Ю|ббб1 r A-A + n t t V : 0 t 11 foool 110 — n — A—A + (HL) t t V t o t 10 Foool no > A-A + (IX+d) : t V t 0 t 11 oil 101 loloool 110 - d - ) A—A+(IY+d) : t V t o t 11 111 101 10 foool 110 - d A-A + s + CY t t VtOt [OOl] A-A-s t t V t 1 t lOlOl a —a-s-cy t tvt 1 t [UTT] A-A As 0 t P t 0 1 IlOO] A-A VS 0 t P t 0 0 ГГТ61 A —A»s 0 t P t 0 0 110~П A-s t t V t 1 t ГПТ1 r - r + i •tvtotoor [Tool (HD-(HL)+i • : v t o t oo i ioГТоо] (IX+d)- • t V t 0 t 11 011 101 (,X+d,+ 1 00 11011 oo] d 1 2 1 3 3 1 1 3 1 2 2 5 5 1 3 6 4 7 7 19 19 4 II 23 г Регистр 000 в 001 с 010 D 011 Е 100 Н 101 L 111 А 5 обознач. один из возможн. способов задания значения операнда аналогично команде ADD , z, n, (HL), (IX + d’, (lY + d) Указанные в рамке значения заменяют собой значение 000 соответствующих разрядов кода команд ADD, как указано выше
Типичные 8-разрядные микропроцессоры и микроЭВМ 111 Таблица 4.3 (продолжение) Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш циклов Число тактов Пояснения С z p/ V s N H 76 543 210 INC (IY+d) DEC m (IY+d) - (IY+d) + 1 m+m-1 • • t t V V t t 0 1 t t II III 101 00 110 (Tool d ПоЛ 3 6 23 /яобозн. один из возможн. способов задания значения операнда аналог» команде INC z, (HL), (IX+d), (IY+d) п .. . Формат и коды те же Символ V в графе, соответствующей флагу P/V, указывает, что флаг P/V содержит признак переполнения для результата данной операции. Аналогично символ Р указывает четкость; V = 1 означает переполнение, V = 0 означает отсутствие переполнения Р = 1 означает, что результат четный, Р= 0 означает, что результат нечетный. Примечания Условные обозначения: • - состояние флага не изменяется, 0- флаг сбрасы вается, I --флаг устанавливается; X — флаг неопределен; $ — состояние флага зависит от результата операции Группа команд 8-разрядной загрузки Мнемокод Символич. операция Флаги код операции Длина в байтах Число маш. циклов Число тактов Пояснения C ZP/V s N H 76 543 210 LD r, f г-Г • • • • • • 01 r r' 1 1 4 г, f Регистр LD r, n r *-• n • • • • • • 00 r 110 2 2 7 000 В 4— n -»• 001 с LD r, (HL) r-(HL) • • • • • • 01 r 110 1 2 7 010 D LD r, (IX+d) r-(IX+d) • • • • • • 11 011 101 3 5 19 011 Е 01 r no 100 Н 4— d 101 L LD r, (IY+d) r - (IY+d) • • • • • • 11 111 101 3 5 19 111 А 01 r 110 4— d -»• LD (HL), r (HL) - r • • • • • • 01 110 r 1 2 7 LD (IX+d), r (IX+d)-r • • • • • • 11 011 101 3 5 19 01 110 r 4— d LD (IY+d), r (IY+d)-r • • • • • • 11 111 101 3 5 19 01 110 r 4— d LD (HL), n (HL) - n • • • • • • 00 110 110 2 3 10 4— n —► LD (IX+d), n (IX+d) - n • • • • • • 11 on 101 4 5 19 00 110 110 4— d —► 4— n —► LD (IY+d), n (IY+d)-n • • • • • • 11 111 101 4 5 19 00 110 no 4— d —► 4— n —►
112 Глава 4 Таблица 4.3 (продолжение) Мнемокод Символич операция Код Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения С ZP/VS N Н 76 543 210 LD А, (ВС) LD A, (DE) LD А, (пп) LD (ВС), А LD (DE), А LD (пп), А LD А, I LD A, R LD I, А LDR, А А*-(ВС) А - (DE) А ♦- (пп) (ВС)-А (DE) - А (пп) ♦- А А«-1 A-R I «-А R «-А •••••• 00 001 010 • •••♦• 00 011 010 00 111 010 «- п -* «- п -* 00 000 010 • 00 010 010 •••••• 00 110 010 «- П *- п -* • tIFFt 0 0 11 101 101 | 01 010 111 • t IFF I 0 0 11 101 101 01 011 111 11 101 101 01 000 111 • ••••• 11 101 101 01 001 111 1 1 3 1 1 3 2 2 2 2 2 2 4 2 2 4 2 2 2 2 7 7 13 7 7 13 9 9 9 9 Примечания гиг — один из регистров А, В, С, D, Е, Н, L, IF F обозначает, что содержимое триггера разрешения прерывания IFF копируется на место флага P/V , Условные обозначения • - состояние флага не изменяется; 0 — флаг сбрасывается, I — флаг устанавливается, X— флаг неопределен, ф — состояние флага зависит от результата операции. Группа команд 16-разрядной загрузки Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш цикл Число| тактов Пояснения Т С Z V s N Н 76 343 210 LD dd, пп dd «-пп • •••••OOddOOOl «- п -* «- п -* 3 3 10 dd Регистр 00 вс 01 DE LD IX, пп IX «-пп • ••••• И 011 101 00 100 001 «~ п -* ♦- п -» 4 4 14 10 HL 11 SP LD IY, пп lY«-nn • ••••• 11 111 101 00 100 001 «- п -* п —♦ 4 4 14 LD ML, (пп) г- х X I • ••••• 00 101 010 «- п -» «- п -» 3 5 16 LD dd, (пл) ddH «-(пп+1) ddL «- (пп) • ••••• И 101 101 01 ddl 011 «- п -» •- п -» 4 6 20 LD IX, (пп) 1Хн«-(пп+1) IXL«-(nn) 00 101 010 п —♦ <- п -» 4 6 20
Таблица 4.3 (продолжение) Мнемокод Символич операция Флаги Код операции Длина в байтах Число маш. цикл. Число такт. Пояснения c z s N H 76 543 210 LD IY, (пп) IYH*-(nn+l) • • • • • • и 111 101 4 6 20 IYL - (nn) 00 101 010 ♦- n -* ♦- n -» LD (nn).HL (nn+1) H • • • • • • 00 100 010 3 5 16 (nn) *- L ♦- n -► «- n -» LD (nn), dd (nn+1) -ddH • • • • • • 11 101 101 4 6 20 (nn) *~dd^ 01 ddO on — n -» «- n -» LD (пп), IX (nn+l)-IXH • • • • • • 11 Oil 101 4 6 20 (nn) ♦- 1X^ 00 100 010 *- n -♦ ♦- n -» LD (пп), IY (nn+1) -IYH • • • • • • н 111 101 4 6 20 (nn) *- IYL 00 100 010 — n — «- n -♦ LD SP, HL SP-HL • • • • • • 11 111 001 1 1 6 LD SP, IX SP-IX • • • • • • 11 011 101 2 2 10 11 111 001 LD SP, IY SP - IY • • • • • • 11 111 101 2 2 10 Спарен. 11 111 001 qq регистры PUSH qq (SP-2)-qqL • • • • • • 11 qqO 101 1 3 11 00 ВС (SP-l)-qqH 01 DE PUSH IX (SP-2) - IXL • • • • • • 11 011 101 2 4 15 10 HL (SP-1) — IXH 11 100 101 11 AF PUSH IY (SP-2) - IYl • • • • • • 11 111 101 2 4 15 (SP-1)-IYH 11 100 101 POP qq qqH-(SP+l) • • • • • • 11 qqO 001 1 3 10 qqL-(SP) POP IX IXH^iSP+l) • • • • • • 11 011 101 2 4 14 IXL - (SP) 11 100 001 POPIY IYH -(SP+1) • • • • • • 11 111 101 2 4 14 IYl - (SP) 11 100 001 Примечания dd — одна из пар регистров ВС, DE, HL, SP; qq — одна из пар регистров AF, ВС, DE, HL; (PAIR)н'(PAIR)L обозначают соответственно старшие и младшие 8 разрядов пары регистров. Например, BCL = С, AFH=A. Условные обозначения • - состояние флага не изменяется; 0 - флаг сбрасывается; 1 — флаг устанавливается ♦ X - флаг неопределен • Ф — состояние флага зависит от результата операции . Группы арифметических команд общего назначения и команд управления центральным процессором . Код Мнемокод Символич операция ч/Jidl и операции Длина в байтах Число маш. циклов Число тактов Пояснения С Z F/ V s N H 76 543 210 DAA Преобразует содержимое аккумулятора в упакованный двоично-деся- тичный формат предшествует команде ело- t 1 t р t • t 00 100 111 1 . 1 4 Преобразовать содержимое акку- мулятора в деся - тичный формат жения или вычи- тания упакованных двоично-десятичных чисел
114 Глава 4 Таблица 4 3 (продолжение) Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения С Z р/ V S N н 76 543 210 CPL A-A • • • • 1 1 00 101 111 1 1 4 Преобразовать содержимое акку- мулятора в обратный NEG A-0 -A t V t 1 t 11 01 101 000 101 100 2 2 8 код (дополнение до 1) Преобразовать содер- жимое аккумулятора CCF CY-CY t • • • 0 X 00 111 111 1 1 4 в дополнительный код (дополнение до 2) SCF CY - 1 1 • • • 0 0 00 110 111 1 1 4 Инвертировать флаг переноса NOP Нет операции • • • • • • 00 000 000 1 1 4 Установить флаг HALT Останов ЦП • • • • • • 01 110 по 1 1 4 переноса DI IFF — 0 • • • • • • и по он 1 1 4 El IFF - 1 • • • • • • 11 111 011 1 1 4 IMO Устанавливает-* ся режим прерываний 0 • • • • • • 11 01 101 000 101 110 2 2 8 IM 1 Устанавливает- ся режим прерываний 1 • • • • • • 11 01 101 010 101 110 2 2 8 IM2 Устанавливает- ся режим прерываний 2 • • • • • • и 01 101 011 101 110 2 2 8 Примечания: IFF — триггер разрешения прерывания; СУ — триггер переноса. Условные обозначение . • — состояние флага не изменяется; 0 — флаг сбрасывается X — флаг неопрелен; t — состояние флага зависит от результата операции. Группа команд 16-разрядной арифметики Мнемокод Символич. операция Флаги Код операции Длина в байтах Число маш. циклов Число тактов Пояснения C z p^ Tv s N H 76 543 210 ADD HL, ss HL — HL+ss t • • • 0 X 00 ssl 001 1 3 11 SS Регистр 00 ВС ADC HL, ss HL-HL+ss+CY t t V 0 X 11 101 101 2 4 15 01 DE 10 HL 01 ssl 010 11 SP SBC HL, и HL-HL-ss-CY t t V t 1 X 11 101 101 2 4 15 01 ssO 010 ADD IX, pp IX - IX ♦ pp : • • • 0 X 11 011 101 2 4 15 РР Регистр 00 ppi 001 00 ВС 01 DE 10 IX 11 SP ADD IY,rr IY-IY+ rr t • • • 0 X 11 Ill 101 2 4 15 п Регистр 00 rrl 001 00 ВС 01 DE 10 IY 11 SP
Типичные 8-разрядные микропроцессоры и микроЭВМ 115 Таблица 4.3 (продолжение) Мнемокод Символич. операция Флаги Код операции Длина в байтах Число маш. циклов Число тактов Пояснения C z % s N H 76 543 210 INC ss ss - ss + 1 • • • • • • 00 ssO Oil 1 1 6 INC IX IX-1X+ 1 • • • • • • И 00 011 101 100 on 2 2 10 INC IY IY-IY + 1 • • • • • • И 00 111 101 100 on 2 2 10 DEC ss ss - ss - 1 • • • • • • 00 ssl 011 1 1 6 DEC IX IX*-IX- 1 • • • • • • II 00 011 101 101 on 2 2 10 DEC IY IY-IY- 1 • • • • • • и 00 111 101 101 on 2 2 10 Примечания-ss - одна из пар регистров ВС, DE, Н L, SP ; рр - одна из пар регистров ВС, DE, lz IX, SP, г г — одна из пар регистров ВС, DE, IY, SP. Услоеные обозначения: • — состояние флага не изменяется 0 — флаг сбрасывается • i — флаг устанавливается* X — флаг неопределен ; Ф — состояние флага зависит от результата операции. Группа команд сдвига и циклического сдвига Мнемокод RLCA RLA RRCA RRA RLC г RLC (HL) RLC (IX+d) Символич. операция г. (HL), (IX*d). (IY*4) RLC (lY+d) Код Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения С z F/ V s N H 210 76 543 t • • • 0 0 00 000 111 1 1 4 Циклический сдвиг содержимого аккумулятора влево t • • • 0 0 00 010 111 1 1 4 Циклический сдвиг содержимого аккумулятора влево с переносом t • • • 0 0 00 001 111 1 1 4 Циклический сдвиг содержимого аккумулятора вправо : • • • 0 0 00 on 111 *1 1 4 Циклический сдвиг содержимого аккумулятора вправо с переносом t t p I 0 0 11 001 ooloool Oil г 2 2 8 Циклический сдвиг содержимого регистра влево t t p t 0 0 11 001 00[pool 011 [110 2 4 15 г Регистр 000 в t t p 0 0 11 on 11 001 «- d 00 [pool 101 on Ino 4 6 23 001 с 010 D 011 Е 100 Н 101 L t t p t 0 0 11 111 11 001 *- d ooloool 101 on -* 110 4 6 23 111 А
116 Глава 4 Таблица 4.3 (продолжение) Флаги Код операции Длина Число Мнемокод Символич. операция С z vl V s N H 76 543 210 в байтах маш. циклов Число тактов Пояснения RL m 10101 Формат команд и коды состояния те же, что и у —|cy|<—17 — o|<eJ t t p t 0 0 m r (HL) (IX+d) (IY+d) команды R LCm RRC m I , , I , 4-4cy| t t p t 0 0 [боП Новый код операции m = r (HL) (IX+d) (IY+d) получается заменой |0бб|в команде R LCm на указанный код RR m I , , _ I L*-{7 o|—«-{cy|—J t : p t 0 0 ГбГП m - r (HL) (IX+d) (IY+d) SLA m Fk-47 «— 4»-o t t p t 0 0 ГГбб! m = » (HL).(IX+d) (IY+d) SRA m t t p t 0 0 ГТбП m s r (HL) (IX+d) (IY+d) SRLm t p t 0 0 птп m - r (HL) (IX+d) (IY+d) 1 t RLD A I7 Ф <>| I7 Ф o|<HL) f J£J • t p t 0 0 И 101 101 01 101 111 2 5 18 Левый и правый арифметические циклические пере" носы из акумулятора в память (Н L) Содержимое старшей половины аккумуля- тора не изменяется f 1 IГТ RRD A 7 l7 4} i *HL' • t p t 0 0 И 101 101 01 100 111 2 5 18 • — состояние флага не изменяется; 0 — флаг сбрасывается; 1 - флаг устанавливается ; X - флаг неопределен; Ф — состояние флага зависит от результата операции. Группа команд работы с отдельными разрядами Код Мнемокод Символич операция Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения C z vl V s N H 76 543 210 ВГГ Ь, г z-Tb • t X X 0 1 11 001 011 2 2 8 г Регистр 01 b r 000 в ВГГЬ, (HL) Z-(HL)b • t X X 0 1 11 001 Oil 2 3 12 001 с П1П п 01 b 110 U1U м Oil Е ВГГ b, (IX+d) г - (ix+3)b • t X X 0 1 11 011 101 4 5 20 100 Н 11 001 Oil 101 L 111 А d Проверяемые z-arajh 01 b 110 b биты BIT b, (IY+d) • t X X 0 1 11 111 101 4 5 20 000 0 11 001 on 001 1 010 2 4— d 011 3 01 b 110 100 4 101 5 НО 6 111 7
Типичные 8-разрядные микропроцессоры и микроЭВМ 117 Таблица 4.3 (продолжение) Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения C z rl V s N H 76 543 210 SET b, г 'Г1 • • • • • • 11 001 ED ь Oil r 2 2 8 SETb, (HL) (HLV1 • • • • • • 11 001 QD ь Oil 110 2 4 15 SET b, (IX+d) (IX+d)b-l • • • • • • 11 011 11 001 - d ED ь 101 011 110 4 6 23 SET b, (IY+d) RES b, m (IY+d)b - 1 sb -0 m=r,(HL), (IX+d), (IY+d) • • • • • • 11 111 11 001 *- d Щ] b [To] 101 Oil 110 4 6 23 Для получения нового кода операции следует заменить П"П в команде S ЕТ b, m нацО], Фл аги и временные характеристики как у команды S ЕТ Примечания обозначение sb указывает на бит b (0-7) ячейки s ' • — состояние флага не изменяется * 0 — флаг сбрасывается* 1 — флаг устанавливается ‘ X — флаг неопределен; Ф — состояние флага зависит от результата операции€ Команды обращения к подпрограмме Мнемокод Символич операция Флаги Код операции Длина в байтах С Z г/ V S N н 76 543 210 CALL пп (SP-1)-PCH (SP-2)-PCL РС*-пп • • • • • • 11 4— 4— 001 п п 101 3 call сс, пп Если условие сс ложно, продолжить программу, в противном случае - так же, как и для CALL пп PCLHSP) PCH4SP+1) • • • • • • t t - сс п п 100 -♦ 3 3 RET • • • • • • 11 001 001 1 Число маш. циклов 3 10 Если сс ложно 5 17 Если сс истинно 3 10 Число тактов Пояснения
118 Глава 4 Таблица 4.3 (продолжение) Мнемокод Символич. операция Флаги Код операции С Z 1 V S N н 76 543 210 RETcc Если условие сс ложно, продолжить программу, в противном случае — так же, как и для RET • • • • • • 11 сс 000 RETI Возврат после прерывания Возврат после • • • • • • и 01 101 001 101 101 RETN немаскируем прерывания. • • • • • • и 01 101 000 101 101 RSTp г х • • • • • • и t 111 Длина Число в маш. Число байтах циклов тактов Пояснения 1 1 5 Если сс ложно 1 3 И Если сс истинно сс Условие 000 NZ не нуль 001 Z нуль 010 NC нет переноса 2 4 14 011 С перенос 100 РО нечетность А 1А 101 РЕ четность X 1^ ПО Р знак положит. 111 М знак отрицат , 1 3 11 2 Р 000 ООН 001 08Н 010 ЮН 011 18Н 100 20Н 101 28Н 110 ЗОН 111 38Н Условные обозначения: 9 — состояние флага не изменяется; 0 — флаг сбрасывается ; I — флаг устанавливается; X — флаг неопределен; Ф — состяние флага зависит от результата операции * Код Флаги операции Длина в Число Символич. маш. Число Мнемокод операция С Z V S N Н 76 543 210 байтах циклов тактов Пояснения JP пп PC—пп • • • • • • 11 000 011 3 3 10 4— п -* Если условие сс истинно PC <- пп, иначе продолжить программу 4— п -* сс Условие JP сс, пп • • • • • • И 4— 4— сс 010 п -* п -♦ 3 3 10 000 001 010 011 100 NZ не нуль Z нуль NC нет переноса С перенос РО нечетность 101 РЕ четность JR е РС-РС + е • • • • • • 00 011 000 2 3 12 по 111 Р знак положит. М знак отрицат. е-2 - JR С, е Если С = 0, продолжить программу • • • • • • 00 4- 111 000 с-2 - 2 2 7 Если условие не выполнено Если С = 1, РС^-РС + е 2 3 12 Если условие выполнено
Типичные 8-разрядные микропроцессоры и микроЭВМ 119 Таблица 4.3 (продолжение) Мнемокод Символич. операция Флаги Код операции Длина в байтах Число маш. циклов Число тактов Пояснения С Z ч V S N н 76 543 210 JR NC, е Если С = 1, продолжить • • • • • • 00 ПО 000 2 2 7 Если условие не выполнено программу Если С= 0, РС«~РС + е е-2 —► 2 3 12 Если условие выполнено JR Z, е Если Z = 0, продолжить • • • • • • 00 101 000 2 2 7 Если условие не выполнено программу Если Z = 1, РС^-РС + е е-2 2 3 12 Если условие выполнено JR NZ, е Если Z = 1, продолжить • • • • • • 00 100 000 2 2 7 Если условие не выполнено программу Если Z = 0, РС«-РС + е е-2 2 3 12 Если условие выполнено JP(HL) PC-HL • • • • • • И 101 001 1 1 4 JP (IX) PC*-IX • • • • • • 11 ОН 101 2 2 8 11 101 001 JP (IY) PC-IY • • • • • • И 111 101 2 2 8 11 101 001 DJNZ.e В-В-1 • • • • • • 00 010 000 2 2 8 Если В = 0 Если В = 0, продолжить программу Если В 0, PC PC + е е-2 2 3 13 Если В 0 Примечания : е — смещение при относительной адресации; е ~ это число в дополнительном коде со знаком в диапазоне <—126, 129>’ е — 2 в коде операции дает действительный адрес, равный рс+е, поскольку PC увеличивается на 2 до прибавления е. Условные обозначения: * — состояние флага не изменяется 0 — флаг сбрасывается • 1 - флаг устанавливается ; X - флаг неопределен $ — состяние флага зависит от результата Команды ввода-вывода Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения С Z ’v S N н 76 $43 210 IN А, (п) А - (п) • • • • • • И 011 п 011 2 3 11 п в Ао ~ А7, Асс в А8 — Ai s IN г, (С) г-(C) г «110 Если /-s110, изменяются только флаги • ф р 0 t 11 01 101 г 101 000 2 3 12 С в Ао— А7, В в А8 - Ais
120 Глава 4 Таблица 4.3 (продолжение) Код Мнемокод Символич. операция Флаги операции Длина в байтах Число маш. циклов Число тактов Пояснения С г ч V S N н 76 543 210 INI (HL) - (C) X X X 1 X 11 101 101 2 4 16 С В Aq ~ А 7, B-B- 1 HL —HL* 1 10 100 010 В в Ag — Ai 5 INIR (HL)-(C) X 1 X X 1 X 11 101 101 2 5 21 B-B- 1 10 ПО 010 Если HL-HL* 1 2 В~0 4 16 Повторить, Если пока В = 0 ф В = 0 IND (HL) - (С) X X X 1 X 11 101 101 2 4 16 B-B- 1 HL —HL - 1 10 101 010 INDR (HL) - (C) X 1 X X 1 X 11 101 101 2 5 21 B-B- 1 HL —HL-1 10 111 010 Если В ¥= 0 16 2 4 Если В « 0 В =0 OUT (n), A (n) — A • • • • • • 11 010 011 2 3 Н . п —» OUT (C), r (C) — r • • • • • • 11 101 101 2 3 12 01 г 001 ф OUTI (C)-(HL) X t X X 1 X и 101 101 2 4 16 B-B- 1 HL-HL* 1 10 100 011 OTIR (C) - (HL) X 1 X X 1 X 11 101 101 2 5 21 B-B- 1 HL - HL * 1 10 ПО 011 Если В =£ 0 16 2 4 Если В c 0 ф в=о OUTD (C)-(HL) X X X 1 X 11 101 101 2 4 16 B-B- 1 10 101 он HL —HL - 1 OTDR (C) - (HL) X 1 X X 1 X 11 101 101 2 5 21 B-B- 1 HL-HL-1 10 111 011 2 Если В 0 4 16 Повтор., пока В-0 Если результат операции В - равен 0, установливается флаг Z, иначе он сбрасывается Примечание Условные обозначения • — состояние флага не изменяется; 0 - флаг сбрасывается* 1 — флаг устанавливается; X — флаг неопределен- t — состояние флага зависит от результата операции. Источник Copyright ©1982 Advanced Micro Devices, Inc Reproduced by permission
Типичные 8-разрядные микропроцессоры и микроЭВМ 121 4.3.4. Ввод-вывод Программируемый ввод-вывод В микропроцессоре Z80 реализован ре- жим ввода-вывода с отдельным адресным пространством для портов. Младшие во- семь разрядов адресной шины исполь- зуются для выбора заданного УВВ (из 256 возможных). Последовательность опера- ций ввода следующая: 1. Адрес порта помещается в младшие восемь разрядов адресной шины. 2. На выходах IORQ и RD устанавли- вается низкий уровень сигнала, чтобы ини- циировать операцию ввода на внешнем устройстве. 3. В целях предоставления устройству ввода-вывода необходимого времени для ответа на инициирующий сигнал (т. е. для пересылки данных на шину) предусматри- вается состояние ожидания. 4. ЦП принимает 8-разрядное данное с шины данных. Прерывание по вводу-выводу Процессор Z80 предусматривает не- сколько режимов прерывания: 1. Немаскируемое прерывание. В этом случае ЦП выполняет рестарт с ячейки 0066Н. Запрос немаскируемого прерыва- ния принимается процессором в любой момент времени. 2. Маскируемое прерывание. Суще- ствует в трех видах, каждый из которых доступен для программиста: BCDBIN: LD А, В RRC RRC RRC RRC AND 0FH RLC RLC RLC ADD C ADD C LD C, A LD A, В AND OFH ADD C LD B, A RET а) вид 0: прерывание этого вида возни- кает автоматически при появлении сигна- ла RESET; реакция на него идентична ре- акции на прерывание в процессоре 8080А. Прерывающее устройство может выдать любую команду на шину данных (обычно, команду рестарта или трехбайтовую ко- манду перехода) и ЦП выполнит ее; б) вид 1: этот вид прерывания иници- ирует рестарт с ячейки 0038Н подобно ре- акции на немаскируемое прерывание, хотя и отличается адресом перехода; в) вид 2: при этом виде прерываний прерывающее устройство посылает в ЦП 8-разрядное слово, которое указывает адрес стандартной программы обработки прерывания, хранящейся в памяти про- грамм. Старшие восемь разрядов этого адреса помещаются программистом в ре- гистр 1. Это наиболее эффективный способ организации прерываний, поскольку один 8-разрядный аргумент может определять целую подпрограмму, расположенную в любом месте памяти. Пример 4.6 Требуется написать на языке ассембле- ра микропроцессора Z80 программу пре- образования двоично-десятичного числа в двоичное. Предполагается, что двоично- десятичное число содержится в регистре В. Решение Текст программы: ; В содержит 2-разрядное двоично-десятичное число ; Переслать десятки в младший полубайт ; Замаскировать старший полубайт ; Десятки в младшем полубайте А и С ; Умножили на 8 ; Теперь получили умножение на 10 ; Пересылка преобразованных десятков в С ; Замаскировать десятки ; Прибавить единицы к преобразованным десяткам ; Переслать результат в В ; В содержит двоичное данное
122 Глава 4 ; Запомнить содержимое В , Очистить В ; В-счетчик числа циклов ; Вычесть С из А ; Переход, если не было пере- ; носа ; В на 1 больше, чем нужно ; В содержит результат ; А содержит остаток Пример 4.7 Необходимо написать на языке ассем- блера микропроцессора Z80 программу деления числа, содержащегося в регистре В, на число в регистре С. Решение Соответствующая программа приведе- на ниже: DIVD: LD А, В LD В, ООН DIVD1: INC В SUB С СМС JC DIVD1 ADD С DCR В RET 4.4. Микропроцессор 6800 фирмы Motorola1) 4.4.1. Введение Микропроцессор 6800 фирмы Motorola (рис. 4.30) представляет собой универ- сальный 8-разрядный микропроцессор с системой команд, включающей 72 ко- манды. Этот процессор имеет 8-разряд- ную двунаправленную шину данных, пол- ную 16-разрядную адресную шину и возможность работы от одного источни- ка напряжения + 5 В. В минимальную конфигурацию входят процессор, схема синхронизации, несколько ПЗУ и ОЗУ и некоторое количество цепей ввода-выво- да. Все шины, за исключением шины син- хронизации, совместимы с транзисторно- транзисторными логическими схемами (ТТЛ), причем шина данных, шина чтения- записи R/W и адресная шина могут рабо- тать в тристабильном режиме. Вся стеко- вая память должна размещаться в ОЗУ, приобретаемом пользователем; необхо- дим двухфазный генератор тактовых им- пульсов. Микропроцессор 6800 имеет два акку- Этот раздел содержит материалы, пере- печатанные с разрешения фирмы Motorola. мулятора (А и В), три 16-разрядных реги- стра (PC, SP и индексный регистр) и 8-раз- рядный регистр признаков (флаговый регистр), сигнализирующий о состояниях переноса, переполнения, нулевого резуль- тата, отрицательного результата, маски- руемого прерывания и полупереноса (слу- жебного переноса из третьего разряда). Ниже описываются назначения некоторых выводов и сигналов микропроцессора. Сигнал низкого уровня на выходе VMA указывает на то, что по адресной шине пересылается действительный адрес памя- ти. На входе TSC (управление тремя со- стояниями) обычно поддерживается низ- кий уровень сигнала, в противном случае адресная шина отключается. Низкий уро- вень сигнала на входе DBE (разблокирова- ние шины данных) в сочетании с сигналом высокого уровня на входе TSC обеспечи- вает предоставление адресной шины и шины данных для работы в режиме пря- мого доступа к памяти. Назначение остальных выводов микросхемы самооче- видно. 4.4.2. Способы адресации Системой команд микропроцессора предусматривается несколько способов адресации: 1. Адресация кодом команды. Адре- суемый регистр задается как часть кода операции (например, ADDA, ADDB). 2. Непосредственная адресация. Опе- ранд располагается в байте, следующем сразу за кодом операции (например, ORA #76, SUB #22). 3. Прямая адресация. Байт, следующий за кодом операции, содержит адрес памя-
А15 А14 А13 А12 All AW 25 24 23 22 20 19 А9 18 А8 17 Буфера ввода-вывода Г енератор тактовых импульс, ф 1 3 Немаскируемое прерывание HALT Запрос прерывания Управление тремя состояниями Разрешение 39---- Дешифратор команд и устройство управления Счетчик команд „ О У казатель стека н 6 2 4 Готовность шины Действительный адрес памяти 5 Чтение/Запись, R/W 34 Индексный регистр н Регистр команд Буфер данных 26 27 28 29 30 31 32 33 D7 D6 05 D4 03 02 01 00 Рис. 4.30. Микропроцессор Motorola 6800. Vcc-вывод 8, Vss-выводы 1, 21 Источник перепечатано с разрешения фирмы Motorola Semiconductoi Products, copyright 1975.
А7 А6 А5 А4 АЗ А2 А1 АО 16 15 14 В 12 11 10 9
Таблица 4 4. Система команд микропроцессора 6800 Адресация Per кода сост. к аккум и памяти Мнемокод Непосред. Прямая Индексн Расширен Код ком (Все наименования per. обозначают их содерж.) 5 4 3 2 i 0 ОР - # ОР - # ОР # ОР # ОР # H 1 N Z V C Сложить АООА Сложить А00В аккумуляторы ава ADCA ADCB Логическое AN0A умножение anob Побитовая biTa проверка bitb Очистить CLR CLRA CJ.RB Сравнить смра Сравнить СМРВ аккумуляторы сва Образовать обр. сом код СОМА COMB Образовать neg доп код ысг. Преобразовать NEGA содержимое NEGB аккум в 0АА десят код Уменьшить на 1 dec оеса ОЕСВ Исключают. ИЛИеора EORB Увеличить на 1 inc INCA ~ INCB Загрузить L0AA аккумулятор ^одв Логическ. сложен, oraa „ ORAB Протолкнуть PSHA в стек - PSHB Вытолкнуть из стека UL PULB Цикл, сдвиг R0L ВЛеВ0 ROLA Цикл, сдвиг R0LB вправо R0R RORA Л J. RORB Арифм сдвиг влево ASL ASLA л ASLB Арифм. сдвиг вправо ASR ASRA ASRB Лог. сдвиг вправо lsr LSRA Запомнить сод. аккум STAe Вь,честь SUBA Вычесть содерж.8и8В аккумуляторов sba Вычесть с перенос.эвсА „ SBCB Пересылка данныхГАВ между аккум. твд Проверить на нультвт или минус TSTA Т$ТВ 88 СВ В9 С9 84 С4 85 С5 81 С1 88 С8 86 С6 8А СА 80 СО 82 С2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 9В DB 99 09 94 04 95 05 91 01 98 08 96 06 9А 0А 97 07 90 00 92 02 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 3 3 3 3 2 2 2 2 2 2 2 -2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 АВ ЕВ А9 Е9 А4 Е4 А5 Е5 6F А1 Е1 63 60 6А А8 Е8 6С А6 Е6 АА ЕА 69 66 68 67 64 А7 Е7 АО Е0 А2 Е2 80 5 5 5 5 5 5 5 5 7 5 5 7 7 7 5 5 7 5 5 5 5 7 7 7 7 7 6 6 5 5 5 5 7 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 вв FB В9 F9 84 F4 85 F5 7F 81 F1 73 70 7А 88 F8 7С 86 F6 ВА FA 79 76 78 77 74 87 F7 ВО F0 82 F2 70 4 4 4 4 4 4 4 4 6 4 4 6 6 6 4 4 6 4 4 4 4 6 6 6 6 6 5 5 4 4 4 4 6 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1В 4F 5F 11 43 53 40 50 19 4А 5А 4С 5С 36 37 32 33 49 59 46 56 48 58 47 57 44 54 10 16 17 40 50 2 2 2 2 2 2 2 2 2 2 2 • 2 2 4 4 4 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 А + М-А В*М-В А*В-А А*М*С-А В+М+С—В А. М-А в. м-в А. М 8.М 00 -м 00 -А 00-8 А - М В - м А - В м-м А-А В -В 00 -М-М 00 - А-А 00 - В-В Преобраз, двоичн. суммы двоично-десятичн. символ м-1-м в двоично-десят. А-1-А формат 8-1-8 АеМ-А В ©М-В М ♦ 1-М А + 1-А 8*1-8 М -А М-В А+М-А В+М-В А-М$р, SP-1 -SP В - MSP, SP-1 - SP SP* 1 -SP, MSp-A SP*1 —SP, MSp-B :|U . *"г7тгтт*-- в! c ” - * M | A 1 L-O 1 ri 1 1 1 1 [ )—1 1 c t>7 — t>0 В 1 M I A □ - LLLLLLLIJ *- 0 в 1 c M] , _ a 1 C?nmm - □ ej b7 c мт A I 0 - UJJXLLLJ - □ 1 b7 bo C 6 J A-M B-M A - M -A 8 -M-B A - B-A A-M-C-A 8-M-C—8 A-B B-A M-00 A-00 В-00 t t t t t • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • t t t t : t t t R R R t t t t t t t t t t t t t t t t t t t t : t • • • • t t t t t t : : t : t t R R R t t t t t : t t t t t t t t t t t t t s s s t t t t t t t t t t t t t t t t t t t t t t • • • t t t t : t : t t i t t t t t t t t t t t t t t t I t t t t t t R R R R R R R : t t R R R О О 0 t 0 0 0 R R 0 0 © R R R R • • • 0 0 0 © © © © © 0 © © © © © © R R t t t t t R R R R R : t t t t • • • • R R R : t t s s s 0 © © © • • • • • • • • • • • • • • • t t t t : t t t t t t : t t t • t t : t • R R R
Команды управл-индексн: per. и указателем стека Мнемокод Непосред Прямая Индексн. Расши )ен Код ком. Символическое описание в 4 3 2 1 0 0Р # 0Р * # 0Р — # ОР # ОР - # н 1 N Z V c Ср. с сод. инд. per. срх Ум сод. инд per. нэ1оех Ум сод.указ. ст.на 1 des Ув. сод. инд per. на 1 |NX Ув сод. указ ст. на 1 ins Загруз, инд. регистр lox Загруз, указ стека los Загруз, инд. регистр six Запомн. инд.регистр sts Запомн, указ, стека txs Пер.указ ст.в инд per,TSx вс СЕ 8Е 3 3 3 3 3 3 ВС 0Е 9Е 0F 9F 4 4 4 5 5 2 2 2 2 2 АС ЕЕ АЕ EF AF 6 В 6 7 7 2 2 2 2 2 ВС FE BE FF BF 5 5 5 6 6 3 3 3 3 3 09 34 ОВ 31 35 30 4 4 4 4 4 4 1 1 1 1 1 1 <XH/XL) - (М/М ♦ 1) Х-1-Х SP-1-SP Х*1-Х SP + 1-SP м-хн, (М ♦ 1) -*XL М — SPH, (М ♦ 1) — SPL Хн —М, XL-*(М ♦ 1) SPH-*M,SPL-(M*n X-1-SP SP*1-X • • • • • • • • • • • • * • • • • • • • • • 0 • • • 0 © © © • • t t : t t t t • • © • • • • R R R R • • • • • • • • • • • • • Условие перех. на ветвь Команды перехода и передачи управления Мнемокод Относит. Индексн. Расширен Код ком. 5 4 3 2 1 0 ОР а 0Р - ОР # 0Р # Н 1 N z V c Безусловный переход bra Перейти при отс. пер вес Перейти при нал. пер bcs Перейти по равенству нулю вео Перейти по признаку > 0 bge Перейти по плюсу bgt Перейти по призн. больше вш Перейти по признаку <0 ble Перейти по признаку < bls Перейти по минусу вы Перейти по отриц. значению bmi Перейти по неравенст. нулю bne Перейти при oTcyTCTB.nepen.Bvc Перейти при переполи bvs Перейти по полож. значению bpl Перейти к подпрогр bsr Безусловный переход jmp Обращение к подпрогр jsr Нет операции nop Возврат после прерывания rti Возврат из подпрогр. rts Программное прерывание swi Ожидание прерывания wai 20 24 25 27 2С 2Е 22 2F 23 20 2В 26 28 29 2А 80 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 6Е АО 4 8 2 2 7Е ВО 3 9 3 3 01 ЗВ 39 3F ЗЕ 2 10 5 12 9 1 1 1 1 1 Не проверяется с«о С- 1 Z- 1 N®V»0 Z + (N®V) = O c + z =0 Z +IN®V) = 1 c + z-1 N®V« 1 N = 1 z»o v = o v= 1 N = 0 Увелич. лишь содерж. СК • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • S О • • • • • • • • • • • • • • • • • • -(! • • • • • • • • • • • • • • • • • • • • • «>• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • Команды управл.регистр. Код операц. Символ. 5 4 3 2 1 0 кода сост. Мнемокод 0Р - = описание N 1 N Z V с Очистить перенос clc ос 2 1 0-С • • • • • R Очист. маску прерыв си ОЕ 2 1 0-1 • R • • • Очист флаг переп. clv ОА 2 1 0-V • • • • R Установ. перенос sec 00 2 1 1 -с • • • • • S Устан. маску прерыв. sei OF 2 1 1 -1 • S • • • • Устан.маску переп. sev ОВ 2 1 1 -V • • S • Акк А_->рег. к. сост тар 06 2 1 A-CCR — “ ( э- Рег.кода сост^акк.АТРА 07 2 1 CCR-A 2J ш LL Условия установки разрядов регистра кода состояния (Бит устанавливается, если условие истинно и сбрасывается в проитвном случае) (Т) (БитУ) Проверка Результат = 10000000 ? (5) (Бит С) Проверка Результат = 00000000 ? (3) (Бит С) Проверка Десятичное значение старшего символа двоично-десятичного числа больше девяти? (Не сбрасывается, если был предварительно установлен) (4) (Бит V ) Проверка; Операнд = 1000000 перед выполнением команды? Условные обозначения. ОР- код операции (шестнадцатеричн.); ~ — число машинных циклов ; + — длина в байтах; + — плюс арифметический; — —минус арифметический; • — логическое умножение, Msp — содержимое ячейки памяти адресуемой указателем стека; + — логическое сложение, © операция исключающее ИЛИ, М - инверсия содержимого ячейки памяти; — пересылка; 0 — нулевой байт; 00 — нулевой байт; Н — дополнительный перенос из четвертого разряда (бит 3); I — маска прерывания , Z — признак нулевого результата; V - переполнение в дополнительном коде, С — перенос из 8- го разряда (бит 7) ; R — сброс, S — установка; t — проверить и установить, если истинно, иначе сбросить • — не изменяется; CCR - регистр кода состояния. (б) (Бит V ) Проверка Операнд = 01111111 перед выполнением команды? (б) (Бит V ) Устанавливается равным N@C после выполнения сдвига (7) (Бит N) Проверка Знаковый разряд старшего байта результата = 1? (§) (Бит V ) Проверка Имеется переполнение в дополнительном коде при вычитании старших байтов? (9) (Бит N) Проверка Результат меньше нуля? (НЙ (Бит 15= 1) (Все разряды) Загрузить регистр кода состояния из стека (См специальные команды) Qj) (Бит 1) Устанавливается при появлении преры- вания. Если был установлен ранее, требуется немаскируемое прерывание, чтобы выйти из состояния ожидания. (12) (Все разряды) Устанавливаются в соответствии с содержимым аккумулятора А. М — отрицательный результат (знаковый разряд/, Источник Перепечатано с разрешения сЬирмы Motorola Semiconductor Products, Inc , copyright © 1975
126 Глава 4 ти, в котором можно найти операнд (на- пример, ADD 30, где 30-адрес операнда). 4. Расширенная адресация. Подобна прямой адресации, но адрес операнда имеет длину 2 байта, что обеспечивает до- ступ в пределах полного объема памя- ти-64К (например, JMP 6400). 5. Относительная адресация. Произво- дится относительно содержимого СК со смещением адреса в диапазоне от — 125 до + 129 по отношению к местоположению команды перехода. Применение этого спо- соба адресации позволяет создавать пере- мещаемые программы. 6. Индексная адресация. Адрес вычис- ляется как сумма значения, загруженного ранее в индексный регистр, и смещения, определяемого значением операнда ко- манды. При этом способе адресации про- грамма получается перемещаемой. 4.4.3. Система команд Система команд микропроцессора 6800 (табл. 4.4) состоит из 72 команд длиной 1-3 байт. Все УВВ работают в режиме с распределением памяти, поэтому прямые команды ввода-вывода отсутствуют. Беглый анализ системы команд позволяет сделать следующие выводы относительно работы со стеками, организации прерыва- ний и передач управления: 1. Стек организован как часть внешней памяти и может иметь любые требуемые размеры, вплоть до полной емкости внеш- него ЗУ. Загрузка 16-разрядного указателя стека (SP) может быть произведена коман- дой LDS, что позволяет организовывать несколько стеков. Команды проталкива- ния записей в стек и выталкивания их из стека предусмотрены для обоих аккумуля- торов А и В. Стек используется также для запоминания содержимого СК при обра- щении к подпрограмме, благодаря чему становится возможной практически не- ограниченная глубина вложений подпро- грамм. 2. Программное прерывание реали- зуется однобайтовой командой SWI, кото- рая осуществляет обращение к подпро- грамме по адресу, находящемуся в ячейках с шестнадцатеричными адресами FFFA и FFFB. Эта команда может использо- ваться для обращения к какой-либо часто вызываемой подпрограмме с целью эконо- мии памяти. 3. Команда ожидания прерывания (WAI) обеспечивает быструю реакцию на прерывание с одновременным запомина- нием содержимого регистров PC, А и В еще до момента поступления запроса ап- паратного прерывания. 4. Команды условного перехода реали- зуют проверку признаков знака (N), нуля (Z), переполнения (V) и переноса (С). Воз- можна проверка комбинаций признаков с использованием команд «Переход по плюсу» (BHI), когда признаки С и Z равны 0, и «Переход по минусу» (BLT), если N®V=1, и т.п. Эти команды обеспечи- вают непосредственную проверку состоя- ния флажков. 4.4.4. Возможности ввода-вывода Программируемый ввод-вывод Все УВВ микропроцессора 6800 рабо- тают в режиме с распределением памяти, поэтому для организации доступа к пор- там ввода-вывода используется некоторая ее часть. При таком режиме работы УВВ необходимы дополнительные внешние устройства типа адаптера сопряжения 6821, в котором имеются два 8-разрядных порта ввода-вывода, программируемые процессором для работы в обоих направ- лениях. Может быть задана конфигурация входов, разрешающая или запрещающая программно-управляемое прерывание ЦП. Предусмотрена также возможность формирования стробирующего выходного сигнала. Имеются и другие микросхемы цепей ввода-вывода, как, например, устройство управления электронно-лу- чевым индикатором 6835 и синхронный адаптер последовательной передачи данных 6852, обеспечивающие выполнение различных специальных функций ввода- вывода. Хотя сам по себе микропроцессор 6800 не реализует операций ввода-вывода, в сочетании с указанными устройствами он может стать мощным процессором вво- да-вывода с весьма широкими возможно- стями.
Типичные 8-разрядные микропроцессоры и микроЭВМ 127 Прерывания по вводу-выводу Все такие прерывания (а их четыре ти- па) вызывают обращение к восьми стар- шим байтам памяти (от FFF8 до FFFF). 1. Запрос прерывания инициируется низким уровнем сигнала на клемме IRQ только в том случае, если не был установ- лен разряд маски программно-управляе- мого прерывания. Адрес обслуживающей прерывание подпрограммы находится в ячейках FFF8 и FFF9 внешней памяти. Содержимое индексного регистра, СК, ак- кумулятора и флагового регистра запо- минается в стеке. 2. Программное прерывание иници- ируется командой SWI и вызывает переход на подпрограмму, указываемую адресом, который находится в ячейках FFFA и FFFB. 3. Немаскируемое прерывание иден- тично прерыванию по запросу, за тем ис- ключением, что оно не может быть зама- скировано программным путем и приво- дит к передаче управления по адресу, хранящемуся в ячейках FFFC и FFFD. ния и вызывает передачу управления по адресу, хранящемуся в ячейках FFFE и FFFF. Как и в случае остальных преры- ваний, подпрограмма инициализации мо- жет быть расположена в любом месте па- мяти. Если линия RESET используется для инициализации при включении питающего напряжения, запоминающее устройство, содержащее ячейки с адресами FFFE и FFFF, должно обеспечивать сохранность информации при исчезновении питания (как в ПЗУ или ППЗУ)1*. Пример 4.8 Требуется написать программу на язы- ке ассемблера процессора 6800 для пре- образования двоично-десятичного числа в двоичное. Предполагается, что двоично- десятичное число находится в ячейке 000FH. Решение Текст соответствующей программы приводится ниже2*: BCDBIN: LDAA 000FH RORA RORA RORA ; А содержит 2-разрядное двоично-десятичное число RORA ; Переслать десятки в младший полубайт ANDA #0FH ; Замаскировать старший полубайт TAB ROLA ROLA ; Десятки в младшем полубайте А и В ROLA ABA ; Умножили на 8 ABA ; Теперь получили умножение на 10 TAB ADDA 000FH ; Переслать преобразованные десятки в В STAA 000FH ; Переслать результат обратно в память RTS ; Ячейка 000FH содержит теперь двоичное данное Применение команды ожидания прерыва- ния WAI ускоряет его обработку с одно- временным запоминанием содержимого регистров еще до момента поступления аппаратного прерывания. 4. Сигнал RESET обычно используется для инициализации при включении пита- п Далее в оригинале ошибочно приводит- ся описание входного сигнала DMA/BREQ, отсутствующего в данном процессоре, поэто- му при переводе оно опущено-Прим, перев. 2) В приведенном в оригинале тексте про- граммы имеются ошибки, исправленные при переводе.- Прим. перев.
128 Глава 4 Пример 4.9 Необходимо написать на языке ассем- блера процессора 6800 программу деления числа, находящегося в аккумуляторе, на число, содержащееся в регистре В. Решение Текст программы: DIVD- CLR 000FH DIVD1. INC 000FH CBA BHI DIVD1 ABA DECB RTS ; Очистить счетчик ; Увеличить счетчик числа цик- , лов на 1 , Вычесть В из А ; Переход, если > 0 ; В на 1 больше, чем нужно ; В содержит результат , А содержит остаток ким разнообразием способов адресации среди всех существующих на сегодняшний день микропроцессоров. Большая часть дополнительно реализованных способов адресации обеспечивает более высокую эффективность программ и позволяет де- лать их перемещаемыми. Микропроцессор 6809 имеет два 8-раз- рядных аккумулятора (А и В), один 8-раз- 4.5. Микропроцессор 6809 фирмы Motorola1) 4.5.1. Введение Микропроцессор 6809 фирмы Moto- rola (рис. 4.31) представляет собой 8-раз- рядный микропроцессор, который мо- жет выполнять полный набор 16-раз- рядных арифметических операций. Микро- процессор 6800 совместим снизу вверх с микропроцессором 6809, и, таким обра- зом, программы, написанные для микро- процессора 6800, могут выполняться на микропроцессоре 6809. Расширенная по сравнению с микропроцессором 6800 си- стема команд включает дополнительные способы адресации, 16-разрядные арифме- тические операции и команду умножения 8-разрядных чисел. Обеспечена также ап- паратная совместимость обоих процессо- ров, благодаря чему совместно с микро- процессором 6809 может использоваться весь набор существующих внешних устройств. В кристалле микропроцессора имеется встроенный тактовый генератор. По утверждению фирмы Motorola, ми- кропроцессор 6809 обладает самым широ- ° Данный раздел содержит материал, перепечатанный с разрешения фирмы Motorola. рядный регистр страниц, один 8-раз- рядный регистр кода условия и пять 16-разрядных регистров. К числу 16-раз- рядных регистров относятся: два ин- дексных регистра (X и Y), два указателя стека (U и S) и один счетчик команд. Ре- гистры U и S являются указателями стеков пользователя и аппаратных средств со- ответственно. Оба указателя служат для организации проталкивания в стек и вы- талкивания из стека содержимого реги- стров ЦП под управлением программы. Однако именно указатель стека аппа- ратных средств соответствует указателю стека микропроцессора 6800 для автома- тического манипулирования адресами воз- врата и регистрами ЦП при обращениях к подпрограммам и прерываниях. Имеющиеся два аккумулятора могут объединяться, образуя один 16-разрядный аккумулятор, называемый регистром D. Регистр прямой адресации страниц (DP) содержит старшие разряды адреса, пред- назначенного для использования при пря- мой адресации. 8-разрядный регистр кода условия предусматривает восемь флагов переноса, переполнения, нуля, отрицательного чис- ла, маски запроса прерывания IRQ, полу- переноса, маски запроса быстрого преры- вания FIRQ и флаг целостности. Флаг целостности используется для указания количества регистров, содержимое ко-
Типичные 8-разрядные микропроцессоры и микроЭВМ 129 Рис. 4.31. Микропроцессор Motorola 6809. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, copyright 1980 торых сохранено в стеке. Этот флаг уста- навливается в случае, когда при последнем прерывании в стек заносились все ре- гистры; если же при этом в стек были по- мещены только СК и регистр кода усло- вия, этот флаг сбрасывается. Флаги F (маска FIRQ) и I (маска IRQ) исполь- зуются для запрета прерываний FIRQ и IRQ соответственно. Назначение ос- тальных флагов очевидно. Опишем те- перь назначения некоторых выводов и сиг- налов микропроцессора 6809. Имеются три клеммы прерываний, а именно FIRQ (запрос быстрого прерыва- ния), IRQ (запрос прерывания) и NMI (не- маскируемое прерывание). При обслужи- вании прерываний NMI и IRQ все ре- гистры сохраняются в стеке аппаратных прерываний, тогда как при обслуживании сигнала FIRQ в стеке аппаратных преры- ваний сохраняются только регистр кода условия и СК. При появлении сигнала низкого уровня Схема расположения выводов Vss Е 1 40 □ HALT NMI С 2 39 □ XT AL IRQ Е 3 38 □ EXTAL hrqC 4 37 3 RESET bs С 5 36 3 MRDY ВА с 6 35 3q vcc С 7 34 3 E АО С 8 33 3 DMA/BREQ Al С 9 32 3 R/w А2 С 10 31 □ DO АЗ С 11 30 3 DI А4 С 12 29 □ D2 А5 С 13 28 □ D3 А6 С 14 27 □ D4 А7С 15 26 JD5 А8 С 16 25 □ D6 А9 С 17 24 □ D7 А10 С 18 23 □ A15 АН С 19 22 □ A14 А12 С 20 21 □ A13 на входе RESET происходит выборка стар- шего и младшего байтов начального адре- са из ячеек FFFF16 и FFFE16 соответ- ственно. ___________ Вход DMA/BREQ используется для приостановки выполнения программы и делает шины микропроцессора до- ступными для других операций, таких, как прямой доступ к памяти или регенерация динамической памяти. Выводы Е и Q являются соответствен- но разрешающими входами синхрониза- ции и сдвига синхронизации на 90°. Синх- ронизирующий вход Е подобен фазе 2 схемы синхронизации микропроцессора 6800. Сигнал синхронизации Q приводит к сдвигу сигнала синхронизации Е пример- но на половину длительности синхроим- пульса Е. Низкий уровень на входе MRDY позволяет расширить синхроимпульсы Е и Q для взаимодействия с медленными устройствами. Выходные сигналы ВА (адресная шина свободна) и BS (состояние шины) коди- руют текущее состояние процессора (на- пример, подтверждение прерывания и т.д.).
130 Глава 4 4.5.2. Способы адресации Система команд микропроцессора предусматривает следующие способы адресации: 1. Адресация кодом команды. Адре- суемый регистр задается как часть кода операции (например, ADDA, ADDB). 2. Непосредственная адресация. Опе- ранд располагается в байте, следующем сразу за кодом операции (например, ORA #76, SUB #22). 3. Прямая адресация. Байт, следующий за кодом операции, содержит адрес памя- ти, в котором можно найти операнд (на- пример, ADD 30, где 30-адрес операнда). 4. Расширенная адресация. Подобна прямой адресации, но адрес операнда имеет длину 2 байта, что обеспечивает до- ступ в пределах полного объема памя- ти-64К (например, JMP 6400). 5. Относительная адресация. Произво- дится относительно содержимого СК со смещением адреса в диапазоне от — 125 до + 129 по отношению к местоположению команды перехода. Применение этого спо- соба адресации позволяет создавать пере- мещаемые программы. 6. Индексная адресация. Адрес вычис- ляется как сумма значения, загруженного ранее в индексный регистр, и смещения, определяемого значением операнда ко- манды. При этом способе адресации про- грамма получается перемещаемой. 7. Регистровая адресация. Вслед за ко- дом операции идет байт, который опреде- ляет регистр или набор регистров, которы- ми манипулирует данная команда (напри- мер, команда EXG А, В меняет местами содержимое регистров А и В). 8. Индексная адресация с нулевым сме- щением. Выбранный регистр-указатель адреса содержит адрес данного; это наибо- лее быстродействующий из всех способов индексирования. 9. Индексная адресация со смещением на константу. Аналогична индексной адресации с нулевым смещением, за ис- ключением того, что к значению адреса добавляется смещение, определяемое кон- стантой. Предусмотрена возможность за- дания трех величин смещения, чем обеспе- чивается эффективное использование па- мяти: смещение может задаваться 5 битами второго байта кода команды, 8 битами, следующими за командой, и 16 битами, находящимися в двух байтах, сле- дующих за командой. Этот тип адресации идеален в тех случаях, когда желательно обеспечить эффективное использование памяти и перемещаемость программ. 10. Индексная адресация с аккумуля- торным смещением. Аналогична индекс- ной адресации со смещением на константу, за тем исключением, что в качестве смеще- ния используется число, находящееся в одном из аккумуляторов (А, В или D). При использовании этого способа смеще- ние можно модифицировать динамически, что находит применение, например, при организации быстрого просмотра таблиц. И. Индексная адресация с автомати- ческим увеличением/уменьшением индекса. Адрес содержится в регистре-указателе. Каждый раз при использовании этого ре- гистра его значение увеличивается или уменьшается на 1 или 2. Сразу же стано- вится очевидной возможность нескольких применений этого способа адресации: со- здание вспомогательных стеков, пересыл- ка блоков данных и работа с просмо- тровыми таблицами. Возможность ис- пользования шага адресации величиной в 1 или 2 байта позволяет работать как с 8-разрядными, так и 16-разрядными данными. 12. Относительная адресация по счет- чику команд. Адрес получается путем при- бавления 8- или 16-разрядного смещения к числу, содержащемуся в СК. Программа, в которой используется такой способ адре- сации, оказывается свободно перемещае- мой в любой ее части. 4.5.3. Система команд Система команд микропроцессо- ра 6809 (табл. 4.5) содержит 59 команд длиной 1-4 байта. Все УВВ работают в ре- жиме с распределением памяти, поэтому прямые команды ввода-вывода отсут- ствуют. Беглый анализ системы команд позволяет сделать следующие выводы от- носительно работы со стеками, организа- ции прерываний, передач управления и арифметических операций:
Типичные 8-разрядные микропроцессоры и микроЭВМ 131 Таблица 4.5. Система команд микропроцессора 6809 фирмы Motorola Команды работы с 8-разрядными аккумуляторами и ячейками памяти Мнемокод Описание команды ADCA, ADCB Сложить с переносом содержимое ячейки памяти и аккумулятора ADDA, ADDB Сложить содержимое ячейки памяти и аккумулятора ANDA, ANDB Логическое умножение числа из ячейки памяти и числа в ак- кумуляторе ASL, ASLA, ASLB Арифметический сдвиг содержимого аккумулятора или ячейки памяти влево ASR, ASRA, ASRB Арифметический сдвиг содержимого аккумулятора или ячейки памяти вправо BITA, BITB Побитовая проверка ячейки памяти по аккумулятору CLR, CLRA, CLRB Очистить аккумулятор или ячейку памяти CMPA, CMPB Сравнить содержимое ячейки памяти и аккумулятора COM, COMA, COMB Преобразовать содержимое ячейки памяти или аккумулятора в обратный код DAA Десятичное выравнивание аккумулятора А DEC, DECA, DECB Уменьшить содержимое аккумулятора или ячецки памяти на 1 EORA, EORB Операция ИСКЛЮЧАЮЩЕЕ ИЛИ над содержимым ячейки памяти и аккумулятора EXG Rl, R2 Обмен содержимого R1 и R2 (Rl, R2 = А, В, СС, DP) INC, INCA, INCB Увеличить на 1 содержимое аккумулятора или ячейки памяти LDA, LDB Загрузить аккумулятор из ячейки памяти LSL, LSLA, LSLB Логический сдвиг влево содержимого аккумулятора или ячейки памяти LSR, LSRA, LSRB Логический сдвиг вправо содержимого аккумулятора или ячейки памяти MUL Умножение чисел без знака (А х В-> D) NEG, NEGA, NEGB Преобразовать содержимое аккумулятора или ячейки памяти в дополнительный код ORA, ORB Логическое сложение содержимого ячейки памяти и аккуму- лятора ROL, ROLA, ROLB Циклический сдвиг содержимого аккумулятора или ячейки памяти влево ROR, RORA, RORB Циклический сдвиг содержимого аккумулятора или ячейки памяти вправо SBCA, SBCB Вычесть содержимое ячейки памяти из аккумулятора с заемом STA, STB Запомнить содержимое аккумулятора в памяти SUBA, SUBB Вычесть содержимое ячейки памяти из числа в аккумуляторе TST, TSTA, TSTB Проверить аккумулятор или ячейку памяти TFR Rl, R2 Переслать содержимое R1 в R2 (Rl, R2 - А, В, СС, DP) Примечание. Регистры A, В, СС или DP могут быть также занесены в стек (извлечены из стека) командами PSHS, PSHU (PULS, PULU)
132 Глава 4 Таблица 4.5 (продолжение) Команды для работы с 16-разрядными аккумуляторами и ячейками памяти Мнемокод Описание команды ADDD Сложить содержимое ячейки памяти и аккумулятора CMPD Сравнить ячейку памяти с аккумулятором D EXG D, R Обмен содержимого D с X, Y, S, U или PC LDD Загрузить аккумулятор из памяти SEX Распространить знаковый разряд из аккумулятора В в А STD Запомнить содержание аккумулятора D в памяти SUBD Вычесть содержимое ячейки памяти из числа в аккумуляторе D TFR R, D Переслать D в X, У, S, U или PC TFR R, D Переслать X, У, S, U или PC в D Примечание D можно (PULS, PULU). протолкнуть в стек (вытолкнуть из стека) командами PSHS, PSHU Команды для работы с индексным регистром и указателем стека Мнемокод Описание команды CMPS, CMPU Сравнить содержимое памяти с указателем стека CMPX, CMPY Сравнить содержимое памяти с индексным регистром EXG Rl, R2 Информационный обмен D, X, Y, S, U или PC с D, X, Y, S, U или PC LEAS, LEAU Загрузить действительный адрес памяти в указатель стека LEAX, LEAY Загрузить действительный адрес памяти в индексный регистр LDS, LDU Загрузить указатель стека из памяти LDX, LDY Загрузить индексный регистр из памяти PSHS Протолкнуть А, В, CC, DP, D, X, У или PC в аппарат- ный стек PSHU Протолкнуть А, В, CC, DP, D, X, У или PC в стек пользо- вателя PULS Вытолкнуть А, В, CC, DP, D, X, У или PC из аппаратного стека PULU Вытолкнуть А, В, CC, DP, D, X, У или PC из стека поль- зователя STS, STU Запомнить содержимое указателя стека в памяти STX, STY Запомнить содержимое индексного регистра в памяти TFR Rl, R2 Переслать D, X, Y, S, U или PC в D, X, Y, S, U или PC ABX Сложить число в аккумуляторе В с X (без знака) Команды перехода Мнемокод Описание команды Простые ветвления BEQ, LBEQ Перейти по равенству BNE, LBNE Перейти по неравенству BMI, LBMI Перейти по отрицательному результату BPL, LBPL, Перейти по положительному результату BCS, LBCS Перейти при наличии переноса ВСС, LBCC Перейти при отсутствии переноса BVS, LBVS Перейти по переполнению BVC, LBVC Перейти по отсутствию переполнения
Типичные 8-разрядные микропроцессоры и микроЭВМ 133 Команды перехода для чисел со знаком Мнемокод Описание команды BGT, LBGT Перейти по признаку «больше» (с учетом знака) BGE, LBGE Перейти по признаку «больше или равно» (с учетом знака) BEQ, LBEQ Перейти по равенству BLE, LBLE Перейти по признаку «меньше или равно» (с учетом знака) BLT, LBLT Перейти по признаку «меньше» (с учетом знака) Команды перехода для чисел без знака BHI, LBHI Перейти по признаку «больше» (без учета знака) BHS, LBHS Перейти по признаку «больше или равно» (без учета знака) BEQ, LBEQ Перейти по равенству BLS, LBLS Перейти по признаку «меньше или равно» (без учета знака) BLO, LBLO Перейти по признаку «меньше» (без учета знака) Прочие команды перехода BSR, LBSR BRA, LBRA BRN, LBRN Перейти к подпрограмме Безусловный переход Не переходить никогда Смешанные команды Мнемокод Описание команды ANDCC Логическое умножение содержимого регистра кода состояния CWAI Логическое умножение содержимого регистра кода состояния с последующим ожиданием прерывания NOP Нет операции ORCC Логическое сложение содержимого регистра кода состояния JMP Безусловный переход JSR Обращение к подпрограмме RTI Возврат из прерывания RTS Возврат из подпрограммы SWI, SWI2, SWI3 Программное прерывание (при абсолютных косвенных адресах) SYNC Синхронизировать с шиной прерываний Перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1980 1. Стек организован как часть внешней памяти и может иметь любые требуемые размеры, вплоть до полной емкости внеш- него ЗУ. Загрузка 16-разрядного указателя стека (SP) может быть произведена коман- дой LDS, что позволяет организовывать несколько стеков. Команды проталкива- ния записей в стек и выталкивания их из стека предусмотрены для обоих аккумуля- торов А и В. Стек используется также для запоминания содержимого СК при обра- щении к подпрограмме, благодаря чему становится возможной практически не- ограниченная глубина вложений подпро- грамм. 2. Программное прерывание реали- зуется однобайтовой командой SWI, кото- рая осуществляет обращение к подпро- грамме по адресу, находящемуся в ячейках с шестнадцатеричным адресом FFFA и FFFB. Эта команда может использо- ваться для обращения к какой-либо часто вызываемой подпрограмме с целью эконо- мии памяти. 3. Команда ожидания прерывания (WAI) обеспечивает быструю реакцию на прерывание с одновременным запомина- нием содержимого регистров PC, А и В еще до момента поступления запроса ап- паратного прерывания.
134 Глава 4 4. Команды условного перехода реали- зуют проверку признаков знака (N), нуля (Z), переполнения (V) и переноса (С). Воз- можна проверка комбинаций признаков с использованием команды «Переход по плюсу» (BHI), когда признаки С и Z равны О, и «Переход по минусу» (BLT), если N©V = 1, и т.п. Эти команды обеспечи- вают непосредственную проверку состоя- ния флагов. 5. Команды TFR и EXG позволяют переслать или поменять местами содержи- мое любых двух регистров одинакового размера. Это обеспечивает полную свобо- ду в выборе функционального назначения регистров. 6. Команда LEA (загрузить исполни- тельный адрес) позволяет использовать в программах свободно перемещаемые просмотровые таблицы. 7. Команда MUL выполняет умноже- ние 8-разрядных чисел без знака, содержа- щихся в регистрах А и В; результат запоминается в 16-разрядном аккумулято- ре D. Эта команда обеспечивает значи- тельное увеличение быстродействия и упрощение программ в случаях, когда требуется выполнять большое число ариф- метических операций. 8. Полный набор арифметических опе- раций над 16-разрядными двоичными чис- лами включает в себя команды загрузки, сравнения, сложения, вычитания, записи в память, пересылки, обмена содержимым, проталкивания в стек и выталкивания из стека. Это исключает необходимость пи- сать подпрограммы для выполнения опе- раций сложения, записи в память и т. п. при работе с данными двойной длины, как это приходится делать для большинства 8-раз- рядных процессоров. 4.5.4. Возможности ввода-вывода Программируемый ввод-вывод Все УВВ микропроцессора 6809 рабо- тают в режиме с распределением памяти, поэтому для организации доступа к по- ртам ввода-вывода используется некото- рая ее часть. При таком режиме работы УВВ необходимы дополнительные внеш- ние устройства типа адаптера сопряжения 6821, в котором имеются два 8-разрядных порта ввода-вывода, программируемые процессором для работы в обоих напра- влениях. Может быть задана конфигура- ция входов, разрешающая или запрещаю- щая программно-управляемое прерывание процессора. Предусмотрена также воз- можность формирования стробирующего выходного сигнала. Имеются и другие ми- кросхемы цепей ввода-вывода, как, напри- мер, устройство управления электронно- лучевым индикатором 6835 и синхронный адаптер последовательной передачи данных 6852, обеспечивающие выполнение различных специальных функций ввода- вывода. Хотя сам по себе микропроцессор 6809 не реализует операций ввода-вывода, в сочетании с указанными устройствами он может стать мощным процессором вво- да-вывода с весьма широкими возможно- стями. Прерывания по вводу-выводу Все такие прерывания (а их пять типов) вызывают обращение по адресам, которые указываются в старших 8 байтах памяти (от FFF8 до FFFF). 1. Запрос прерывания инициируется низким уровнем сигнала на клемме IRQ только в том случае, если не был устано- влен разряд маски программно-управляе- мого прерывания. Адрес обслуживающей прерывание подпрограммы находится в ячейках FFF8 и FFF9 внешней памяти. Содержимое индексного регистра, СК, ак- кумулятора и регистра кода условия за- поминается в стеке. 2. Программное прерывание иниции- руется командой SWI и вызывает переход на подпрограмму, указываемую адресом, который находится в ячейках FFFA и FFFB. 3. Немаскируемое прерывание иден- тично прерыванию по запросу, за тем ис- ключением, что оно не может быть зама- скировано программным путем и приво- дит к передаче управления по адресу, хранящемуся в ячейках FFFC и FFFD. Применение команды ожидания прерыва- ния (WAI) ускоряет его обработку с одно- временным запоминанием содержимого регистров еще до момента поступления аппаратного прерывания.
Типичные 8-разрядные микропроцессоры и микроЭВМ 135 4. Сигнал RESET обычно используется для инициализации включения питания и вызывает передачу управления по адре- су, хранящемуся в ячейках FFFE и FFFF. Как и в случае остальных прерываний, подпрограмма инициализации может быть расположена в любом месте памяти. Запоминающее устройство, содержащее ячейки с адресами FFFE и FFFF, должно обеспечивать сохранность информации при исчезновении питания (как в ПЗУ или СППЗУ), если линия RESET используется для инициализации включения питающего напряжения. 5. Сигнал DMA/BREQ действует как своего рода прерывание. Когда эта линия активируется внешним устройством, про- цессор освобождает адресную шину и ши- ну данных (переводит их в третье состоя- ние). Это дает возможность внешнему устройству получить доступ к памяти или использовать шину данных; сигнал ис- пользуется, в частности, устройством управления накопителем на гибком диске с прямым доступом, операциями регенера- ции памяти и в многопроцессорных систе- мах. Пример 4.10 Требуется написать программу на язы- ке ассемблера микропроцессора 6809 для преобразования двоично-десятичного чис- ла в двоичное. Предполагается, что двоич- но-десятичное число находится в ячейке 000FH. Решение Текст программы(см. с. 136). Пример 4.11 Необходимо написать на языке ассем- блера микропроцессора 6809 программу деления числа, находящегося в аккумуля- торе, на число, содержащееся в регистре В. Решение Текст программы (см. с. 136). 1} В приведенном в оригинале тексте про- граммы имеются ошибки, исправленные при переводе-Прим. перев. Задачи и вопросы 4.1. Сравните между собой структуры регистров следующих микропроцессоров: а) 8085 и Z80; б) 6800 и 6809. 4.2. Чем различаются микропроцес- соры 8085 и 8048? 4.3. Рассмотрим микропроцессор 8085. Пусть регистр В содержит число 3716, а ак- кумулятор-число 1416; каково будет со- держимое аккумулятора после выполне- ния следующих команд: a) ANA В; б) ORA В. 4.4. Найдите шестнадцатеричное пред- ставление 8-разрядного числа, которое по- сле выполнения операции логического ум- ножения с содержимым аккумулятора 8-разрядного микропроцессора оставляет значение старшего разряда числа в акку- муляторе без изменения, а все остальные разряды устанавливает в нуль. 4.5. Если первоначально аккумулятор содержит число Е5 и Z = 0, по какому адресу произойдет переход в приводимом ниже фрагменте программы? (Предпола- гается, что используется микроЭВМ типа 8048.) JZ 0200 JMP 0205 4.6. Напишите программы на языке ас- семблера микропроцессоров 8085, Z80, 8048, 6800 и 6809 для выполнения следую- щих действий: а) сложить два 32-разрядных числа и занести результат в четыре последова- тельные ячейки памяти; б) вычесть два 16-разрядных числа и за- нести результат в две последовательные ячейки; в) перемножить два 16-разрядных чис- ла со знаком с использованием любого алгоритма; г) разделить 16-разрядное число на 8-разрядное, используя любой алгоритм. 4.7. Напишите на языке ассемблера микропроцессора 8085 программу вычис- ления квадратного корня по следующему
136 Глава 4 К примеру 4.10 BCDBIN: LDA 000FH RORA RORA RORA RORA ANDA #0FH TAB ROLA ROLA ROLA ABA ABA TAB ADDA 000FH STA 000FH RTS К примеру 4.11 DIVD: CLR 000FH DIVD1: INC 000FH SBA BHI DIVD1 ABA DECB RTS ; А содержит 2-разрядное дво- ; ично-десятичное число ; Переслать цифру десятков в ; младший полубайт ; Замаскировать старший полу- ; байт ; Десятки в младшем полубай- те А и В ; Умножили на 8 ; Теперь получили умножение ; на 10 ; Переслать преобразованные ; десятки в В ; Переслать результат обратно ; в память ; Ячейка 000FH содержит те- ; перь двоичное число ; Очистить счетчик ; Увеличить содержимое счет- ; чика числа циклов на 1 ; Вычесть В из А , Переход, если > 0 ; В на 1 больше, чем нужно ; В содержит результат ; А содержит остаток приближенному алгоритму разложения в ряд Тейлора: Пусть X-любое число; /(%)-некото- рая функция, зависящая от X (в данном случае это ]/х); а-известное число, близ- кое к X;/(а)-известное значение функции. Используем теперь ряд Тейлора /(X) =/(а) + (X - a)f (fl) + (Х~Д)7" («) + +... + (X - а)1 и! -/"(а)- Пусть Х = Х-число, из которого нужно извлечь корень. Тогда /(X) = ]/N; а- из- вестное число, близкое к |/Х; f(a) = = ]/а- известное число, близкое к |/Х, и /— N — а f(X) = ]/a +---+ 2|/а 2а + N — а 2|/а _ a + N ' ~ 2]Д ’ В приведенном выше уравнении вели- чина f (X), т. е. квадратный корень из числа X, может быть найдена, если задаться ве- личиной ]/а и затем вычислить /(х). Квад- рат этой величины /2(х) можно сравнить с исходным числом N. Если две проверки дают примерно одинаковый результат, то на данном шаге квадратный корень из чис- ла X оказывается найденным. 4.8. Сравните между собой способы ввода-вывода данных в микропроцессо- рах: а) 8085 и Z80; б) 6800 и 6809.
Глава 5 СРЕДСТВА ВВОДА-ВЫВОДА МИКРОПРОЦЕССОРА 80851) Ниже мы рассмотрим методы и орга- низацию передачи данных при их вводе и выводе в микропроцессоре 8085, в том числе порты ввода-вывода 8355/8755 и 8155, а также линии последовательного ввода и последовательного вывода данных. Изложение ведется применитель- но к микропроцессору 8085 по той причи- не, что именно он взят в качестве базового в последующих главах, касающихся разра- ботки аппаратных и программных средств типичных микрокомпьютерных систем. Если читатель сумеет понять принципы ввода-вывода, реализованные в микропро- цессоре 8085, ему в дальнейшем не соста- вит особого труда выполнить разработку микропроцессорной системы с использо- ванием любого другого микропроцессора. 5.1. Программируемый ввод- вывод Модель 8085 располагает двумя коман- дами ввода-вывода, а именно IN и OUT, каждая из которых занимает два байта. Первый байт содержит код операции, вто- рой-номер порта ввода-вывода. Команда IN PORT загружает в аккумулятор один байт из порта ввода-вывода, указанного в команде IN; команда OUT PORT, на- оборот, выводит из аккумулятора один байт в порт ввода-вывода, определяемый командой OUT. Эта глава написана на основе Microcomputer Theory and Applications with the Intel SDK-85, by M. Rafiquzzaman, Wiley, 1982. Возможности программируемого вво- да-вывода микропроцессора 8085 обеспе- чиваются его микросхемами поддержки 8355/8755 и 8155. За детальными сведения- ми по этим микросхемам следует обра- титься к их технической документации, а мы рассмотрим лишь их порты ввода- вывода. 5.1.1. Порты ввода-вывода устройств 8355/8755 В микросхеме 8355/8755 реализуются два восьмиразрядных порта ввода-выво- да: А и В. Направление потока данных в каждом из этих регистров данных за- дается еще одним регистром, который на- зывается регистром направления передачи данных. Например, если в каком-либо раз- ряде этого регистра записан 0, то соответ- ствующий разряд рассматривается как входной. Если же в некотором разряде ре- гистра направления передачи данных запи- сана 1, то соответствующий разряд реги- стра данных рассматривается как выход- ной. Чтобы понять, как работают порты ввода-вывода 8355/8755, рассмотрим по- следовательность команд: MVI А, 1АН OUT DDRA В этой последовательности предполагает- ся, что DDRA служит регистром направле- ния передачи данных для порта А с адре- сом 00, и последнему соответствует еле-
138 Глава 5 дующая битовая конфигурация: 5.1.2. Порты ввода-вывода микросхемы 8155 В микросхеме 8155 реализуются три порта ввода-вывода: А, В и С, из которых первые два 8-разрядные, а последний 6-разрядный. Все эти порты управляются другим регистром, известным как регистр состояния команды (РСК). Детальное опи- сание этого регистра дано в приложении В технических условий на микросхему 8155, а нас будут интересовать лишь раз- ряды 0-3 этого регистра. Нулевой и первый разряды этого реги- стра задают направление потока данных соответственно в портах А и В. Например, если в нулевом разряде РСК записан 0, то все восемь разрядов порта А входные. Аналогично, если в нулевом разряде РСК присутствует 1, все восемь разрядов порта А считаются выходными. Первый разряд РСК таким же образом определяет направление передачи данных в порте В. Таблица 5.1. Адреса портов ввода-вывода ми- кросхем 8355 и 8155, используемые в после- дующих примерах Адрес Адресуемый порт 00 Порт А микросхемы 8355 01 Порт В микросхемы 8355 02 Регистр направления передачи данных порта А микросхемы 8355 03 Регистр направления передачи данных порта В микросхемы 8355 20 Регистр команд/состояния микросхемы 8155 21 Порт А микросхемы 8155 22 Порт В микросхемы 8155 23 Порт С микросхемы 8155 Перечень используемых в последую- щих примерах адресов портов ввода-выво- да микросхем 8155 и 8355 представлен в табл. 5.1. ПРИМЕР 5.1 Для управления светоизлучающим диодом (СИД) необходимо применить ми- кроЭВМ с процессором 8085 и портами ввода-вывода 8355. СИД подключен к ну- левому разряду порта с адресом 00. Упра- вление определяется условиями ввода, ко- торые задаются ключом в цепи первого разряда порта 00, как показано на рис. 5.1. Условия ввода-вывода следующие: если входной сигнал первого разряда порта 00 имеет высокий уровень (HIGH), то СИД открывается, в противном случае СИД закрыт. Требуется разработать аппаратный ин- терфейс, составить блок-схему для реше- ния задачи и преобразовать блок-схему в программу на языке ассемблера микро- процессора 8085. РЕШЕНИЕ 1. Разработка аппаратного интерфейса. Из технических условий на микросхему 8355 известно, что она может обеспечить ток до 400 мкА при минимальном значе- нии выходного сигнала высокого уровня, равном 2,4 В. На практике требуемый ток в цепи базы транзистора для перевода его в полностью открытое состояние почти никогда не указывается, и потому возни- кает необходимость его приблизительного расчета (или оценки). Верхняя граница этой оценки составляет 1,5 мА при напря- жении питания 5 В. Примем далее, что для СИД требуется ток 10 мА при напряжении 1,7 В. Теперь основная задача разработки за- ключается в определении коэффициента усиления Р транзистора Qi и номиналов резисторов Rx и R2. Вместо транзистора могли бы быть использованы шестнадца- теричный формирователь либо микросхе- ма, скажем, типа 7406 или 7407. Будем счиг тать, что в режиме насыщения напряжение между коллектором и эмиттером транзи-
Средства ввода-вывода микропроцессора 8085 139 Рис. 5.1. Схема к примеру 5.1. стора Укэ~0, тогда (2,4-0,7) В л ----------= 4,25 кОм, 400 мкА R r2 = = 330 Ом. 5 В - 1,7 В - 5 - 1,7 10 мА 10 мА Известно далее, что 1к = ₽1б, 1б = 1. 1к — 1сид = Ю мА = 1к=; 10~4А Р 1Б 400x 10 “6 А :исп = 400 мкА = 400 10 - 6 А, 10“4 А, = 25.
140 Глава 5 Следовательно, в схеме должны быть использованы Rt = 4,3 кОм, R2 = 330 Ом и транзистор с коэффициентом 0 в режиме насыщения не менее 25. Что же касается ключа, формирующего входной сигнал, то его разомкнутому со- стоянию соответствует входной сигнал высокого уровня, а замкнутому - сигнал низкого уровня (являющийся рабочим). Конструированием этого ключа завер- шается разработка аппаратного интерфей- са. 2. Блок-схему разрабатываемого алго- ритма можно представить следующим образом: 3. Программа этого алгоритма, напи- санная на языке ассемблера, имеет вид PORT A EQU OOH PORT С EQU 02H MVI A, 01H OUT PORT C START: IN PORT A RAR OUT PORT A JMP START ПРИМЕР 5.2 Требуется написать программу на язы- ке ассемблера микропроцессора 8085 для включения СИД, подсоединенного к чет- вертому разряду порта ввода-вывода В микросхемы 8155. РЕШЕНИЕ PORT В EGU 22Н PORT D EGU 20Н MVI А, 02Н OUT PORT D MVI A, 10H OUT PORT В HLT 5.2. Система прерываний микро- процессора 8085 Микросхема процессора 8085 имеет пять входов сигналов прерываний, а имен- но TRAP, RST7.5, RST6.5, RST5.5 и INTR. Если на указанные выводы одновременно подаются сигналы высокого уровня, то первым будет обработан сигнал TRAP, имеющий наивысший приоритет, затем RST7.5, RST6.5, RST5.5 и INTR. Заметим, что, как только начинается обработка пер- вого прерывания, все остальные прерыва- ния, кроме TRAP, блокируются. Они мо- гут быть разблокированы в результате выполнения команды Разрешения Преры- ваний (EI). Рассмотрим теперь систему прерываний микропроцессора 8085 более подробно.
Средства ввода-вывода микропроцессора 8085 141 5.2.1. Сигнал TRAP Этот сигнал соответствует немаскируе- мому системному прерыванию, т. е. его нельзя заблокировать с помощью какой- либо команды. Для того чтобы микропро- цессор 8085 обслужил это прерывание, сиг- нал на входе TRAP должен удерживаться на высоком уровне, установленном его передним фронтом. Если это условие вы- полняется, микропроцессор завершает вы- полнение текущей команды, проталкивает в стек содержимое счетчика команд и осу- ществляет переход к ячейке 002416 (век- торный адрес прерывания для сигнала TRAP). Отметим, что прерывание TRAP блокируется задним фронтом одноимен- ного сигнала. 5.2.2. Сигнал RST7.5 Система прерываний RST7.5 относится к числу маскируемых. Это значит, что пре- рывание можно разрешить или запретить командой SIM. Микропроцессор реаги- рует на прерывание RST7.5 в том случае, когда сигнал на входе RST7.5 переходит от низкого уровня к высокому. Чтобы обра- ботать это прерывание, микропроцессор заканчивает выполнение текущей ко- манды, проталкивает содержимое счетчи- ка команд в стек и переходит к ячейке с шестнадцатеричным адресом 003С16. Процессор запоминает сигнал прерывания RST7.5 посредством установки в состоя- ние «1» внутреннего триггера D под воз- действием переднего фронта сигнала пре- рывания. 5.2.3. Сигнал RST6.5 RST6.5-сигнал маскируемого преры- вания, работающий по высокому уровню. Его можно разблокировать или заблоки- ровать при помощи команды SIM. Чтобы обработать это прерывание, микропроцес- сор заканчивает выполнение текущей ко- манды, проталкивает содержимое счетчи- ка команд в стек и осуществляет переход к ячейке с адресом 003416. 5.2.4. Сигнал RST5.5 RST5.5-сигнал маскируемого преры- вания, работающий по высокому уровню. Его можно разблокировать или заблоки- ровать командой SIM. Для обработки пре- рывания микропроцессор завершает вы- полнение текущей команды, проталкивает содержимое счетчика команд в стек и осу- ществляет переход к ячейке с адресом 002016. 5.2.5. Сигнал INTR Это сигнал маскируемого прерывания, которое иначе называется еще прерыва- нием по квитированию связи. Сигнал INTR активен при высоком уровне. Когда нет других прерываний и сигнал на клемме INTR имеет высокий уровень, микропро- цессор заканчивает выполнение текущей команды и посылает на управляющую ши- ну сигнал низкого уровня INTA, подтвер- ждающий прием сигнала прерывания. По- сле этого микропроцессор ожидает поступления либо однобайтовой команды вызова CALL, либо такой же трехбайто- вой команды. Эта команда должна быть подана внешними аппаратными средства- ми. Другими словами, сигнал INTA можно использовать для отпирания буфера с тре- мя состояниями. Выход этого буфера мо- жет быть соединен с линиями пересылки данных микропроцессора 8085. Этот буфер можно организовать таким образом, чтобы обеспечивалось формирование со- ответствующего кода операции на линиях данных. Заметим, что с выдачей сигнала INTA система прерываний микропроцес- сора отключается во избежание поступле- ния многократных прерываний от какого- либо одного устройства. Отметим также, что существует восемь команд RST (от RST0 до RST7), каждая из которых имеет векторный адрес. Эти адреса указаны в табл. 5.2. Определим теперь характеристики ма- шинного цикла формирования сигнала подтверждения приема прерывания (ма- шинный цикл INTA). Этот машинный цикл сходен с циклом выборки команды, за исключением следующих отличий:
142 Глава 5 Таблица 5.2. Команды рестарта и входные сигналы прерыва- ний Команда или входной сигнал Шестнадцатеричный код или назначение Шестнадцатеричный век- торный адрес RST0 С7 0000 RST1 CF 0008 RST2 D7 0010 RST3 DF 0018 RST4 Е7 0020 TRAP Аппаратное прерывание 0024 RST5 EF 0028 RST5.5 Аппаратное прерывание 002С RST6 F7 0030 RST6.5 Аппаратное прерывание 0034 RST7 FF 0038 RST7.5 Аппаратное прерывание ООЗС Сигнал MC2 MCI MC2 T2 T3 Ti T2 T3 T4 T5 T6 Ti T2 T3 CLK INTR INTA IO/М, SI, SO Ag-Ais ADo - AD 7 ALE RD WR J I \ — L_ _r (0, j 1,0) x_ (1.! 1,1) X— (1, 1, 1) (PC- l)H kJ P( K_ IN OUT -/ PCL I 1 N — OUT -/ PCL I N Do- У/dq-I >7 (B2y- Do -D7 (CALL) Рис. 5.2. Машинные циклы формирования сигнала подтверждения прерывания (для об- служивания сигнала INTR используется ко- манда CALL). Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1976 1. Микропроцессор 8085 формирует импульс INTA, а не импульс MEMR. По- сле этого вызывается и выполняется ко- манда RST. 2. Микропроцессор 8085 не увеличи- вает содержимого счетчика команд, с тем чтобы существовала возможность возвра- та к нужной ячейке после обработки прерывания. 3. Сигналом INTA блокируется систе-
Средства ввода-вывода микропроцессора 8085 143 Рис. 5.3. Машинные циклы формирования сигнала подтверждения прерывания (для об- служивания сигнала INTR используется ко- манда CALL). Источник перепечатано с разрешения фирмы Intel Corporation copyright 1976 ма прерываний микропроцессора во избе- жание множественных прерываний. Временная диаграмма процесса под- тверждения приема сигнала прерывания показана на рис. 5.2 и 5.3. После появления сигнала высокого уровня на выводе INTR микропроцессор продолжает работу в той последовательности, которая указана на рис. 5.2 и 5.3 (продолжение рис. 5.2), если только системное прерывание разрешено командой EI. Перед началом цикла МС1.Т1 микропроцессор проверяет со- стояние всех входов прерываний. Если INTR является единственным сигналом, а системное прерывание разрешено, ми- кропроцессор блокирует его и затем уста- навливает низкий уровень сигнала INTA примерно на два такта (периоды Т2 и ТЗ цикла MCI на рис. 5.2). Этот сигнал INTA может использоваться для отпирания внешних аппаратных средств с тем, чтобы на шине данных появился код операции, который затем будет считан микропроцес- сором. Обычно в качестве кода операции можно применять однобайтовую команду RST или трехбайтовую команду CALL. При использовании последней команды микропроцессор формирует дополнитель- но два цикла сигнала INTA для обеспече- ния вызова всех трех байтов команды. На- против, в случае команды RST никаких дополнительных циклов не требуется. На рис. 5.2 и 5.3 показано, что в ответ на сиг- нал INTA код операции команды CALL появляется на шине данных в течение цик- ла MCI. Пересылка его на шину может быть осуществлена каким-либо устрой- ством наподобие программируемого контроллера прерываний 8259. В этот мо- мент микропроцессор производит выбор- ку только лишь кода операции для ко- манды CALL(CD16). Процессор 8085 вы- полняет эту усеченную команду и опреде- ляет, что для нее нужны еще два байта (адресная часть трехбайтовой команды). После этого формируется второй цикл
144 Глава 5 INTA в МС2, а за ним третий INTA-цикл в МСЗ для вызова адресной части ко- манды CALL из устройства 8259. Микро- процессор выполняет команду CALL и осуществляет переход к программе обс- луживания прерываний, находящейся по адресу, указанному в команде CALL. Заме- тим, что микропроцессор не увеличивает содержимого счетчика команд в течение трех INTA-циклов, так что соответствую- щее значение счетчика проталкивается в стек во время циклов МС4 и МС5. Отме- тим также, что при распознавании любого из маскируемых прерываний RST7.5, RST6.5, RST5.5 и TRAP все остальные пре- рывания блокируются. Поэтому для обес- печения приема микропроцессором оче- редного прерывания необходимо, чтобы двумя последними командами программы обслуживания прерываний были команды EI и RET, следующие в указанном поряд- ке. Одиночную команду RST, скажем RST7 (шестнадцатеричный код FF), можно формировать с использованием устрой- ства 8212 как порта ввода-вывода команд. Для этого на входах 10 и 17 устройства устанавливается высокий потенциал, а на линию выборки подается сигнал низкого уровня. При появлении сигнала INTALOW низкого уровня порт 8212 фор- мирует шестнадцатеричный код FF (RST7) Рис. 5.4. Использование порта ввода-вывода 8212 для формирования команды RST7. Источник 8О8ОА/8О85 Assembly Language Programming by Lance Leventhal Copyright 1978, McGraw-Hill, Inc на шине данных. Типичная схема, рабо- тающая по такому принципу, изображена на рис. 5.4. Для формирования всех восьми моди- фикаций команды RST можно использо- вать совместно с портом 8212 шифратор «3 из 8», такой, как 74LS148; соответствую- щая схема показана на рис. 5.5. Шифратор формирует выходы по входам, единичным значением которых являются сигналы LOW низкого уровня. Это означает, что если подать на его вход сигнал R4, то шиф- ратор преобразует трехразрядный двоичный код 1002(41О) в 0112(31О). Как отмечалось ранее, код операции в команде RST имеет вид 11 ССС111, где ССС принимает значения ООО для RST0 001 для RST1 010 для RST2 011 для RST3 100 для RST4 101 для RST5 110 для RST6 111 для RST7 В схеме, которая приведена выше, вы- ходные линии шифратора Q2, Qi, Qo обес- печивают нужные коды ССС для команды RST. В табл. 5.2 приведены перечень сигна- лов прерывания микропроцессора 8085 и стандартные команды RST. На рис. 5.6 показана структурная схема организации прерываний. Возвращаясь теперь к рис. 5.5, отметим, что шифратор обеспе- чивает передачу в порт 8212 трехразрядно- го выходного сигнала, причем единичным значением каждого из сигналов является напряжение низкого уровня. В результате в ответ на сигнал INTA на шину данных выдается одна из восьми команд RST. За- метим, что во избежание ошибок входы шифратора должны быть синхронизиро- ваны с сигналом INTA. Итак, мы знаем, что входы и выходы шифратора 74LS148 возбуждаются сигналом низкого уровня. Поэтому сигнал низкого уровня на входе Ro формирует команду RST7 (код опера- ции FF16), а сигнал на входе R7-команду RST0 (код операции С716), которая имеет тот же адрес, что и команда RESET. Шиф- ратор только разделяет одновременно по- ступающие входные сигналы и формирует
+ 5 В Рис. 5.5. Формирование восьми команд RST с помощью приоритетного шифратора. Источник 8О8ОА/8О85 Assembly Language Programming by Lance Leventhal Copyright 1978, McGraw-Hill, Inc Рис. 5.6. Схема обработки прерываний микро- процессора 8085. Источник материал любезно предоставлен фирмой Intel
146 Глава 5 Рис. 5.7. Интерпретация данных, выводимых командой SIM. выходной сигнал, соответствующий вход- ному сигналу с самым высоким приорите- том. Рассмотрим теперь более подробно рис. 5.6. В результате выполнения ко- манды EI триггер RS устанавливается в со- стояние «1» и формируется один из входов четырех вентилей AND (сигнал высокого уровня). Следовательно, для обеспечения действия всех прерываний, кроме TRAP, система прерываний должна быть разбло- кирована. В результате выполнения ко- манды блокировки прерываний DI триггер RS сбрасывается и запрещаются все пре- рывания, кроме TRAP. Далее в соответ- ствии со сказанным в гл. 4 команда SIM осуществляет вывод содержимого аккуму- лятора, которое можно интерпретировать так, как показано на рис. 5.7. Функция ма- скирования прерываний выполняется только тогда, когда бит разрешения ма- скирования принимает значение 1. Пред- положим, что в аккумуляторе хранится число 0616. Тогда в момент выполнения команды SIM будут засланы 1 в маску пре- рываний для RST7.5 и RST6.5 и 0 в маску прерываний для RST5.5. Применительно к рис. 5.6 это означает, что 1 будет подана на входы вентилей AND № 1 и № 2, а 0-на вход вентиля AND № 3. Далее эти сигналы будут инвертированы на вен- тильных входах, отмеченных кружками, с образованием двух выходных сигналов низкого уровня, блокирующих RST7.5 и RST6.5, и одного входного сигнала высо- кого уровня для вентиля AND № 3. Следо- вательно, для возбуждения прерываний по линиям RST7.5, RST6.5 или RST5.5 должна быть разблокирована система прерыва- ний, сигнал соответствующего разряда ма- ски прерываний должен иметь низкий уро- вень, а соответствующий сигнал прерыва- ния (передний фронт импульса или высо- кий потенциал) должен быть подан на определенный вывод. Для примера рас- смотрим прерывание RST7.5. При выпол- нении команд EI и SIM могут произойти разблокирование системы прерываний и установка низкого уровня сигнала в раз- ряде маски прерываний для RST7.5; в ре- зультате на двух входах вентиля AND № 1 появятся сигналы высокого уровня. На третьем входе этого вентиля высокий уро- вень может быть установлен под воздей- ствием переднего фронта сигнала преры- вания на выводе RST7.5. В результате триггер переходит в состояние «1», созда- вая таким образом высокий уровень вы- ходного сигнала вентиля D и разблокируя сигнал RST7.5. Микропроцессор осущест- вляет переход к ячейке 003С16, из которой выбирается трехбайтовая команда JMP, передающая управление из основной про- граммы в служебную. Аналогично осу- ществляется процесс обслуживания преры- ваний RST5.5 и RST6.5, что видно из того же рис. 5.6. Схема, приведенная на рис. 5.6, по- казывает также, что передний фронт и по- следующий высокий уровень сигнала пре- рывания на контакте TRAP вызывают
Средства ввода-вывода микропроцессора 8085 147 переход микропроцессора к ячейке 002416, в которой может содержаться трехбайто- вая команда CALL, обеспечивающая обра- щение к обслуживающей стандартной про- грамме. Отметим, что TRAP является немаскируемым прерыванием, которое не- льзя заблокировать никакой командой. Наконец, если на контакт INTR подан сигнал высокого уровня и система преры- ваний разблокирована, то выход вентиля AND № 4 тоже будет сигналом высокого уровня, прерывающим работу микропро- цессора 8085. После выполнения текущей команды микропроцессор_устанавливает низкий уровень сигнала INTA. Как было упомянуто ранее, этот сигнал можно ис- пользовать для разблокирования какого- либо внешнего устройства, скажем 8212, чтобы обеспечить пересылку кода ко- манды RST в линии данных микропроцес- сора 8085. Пример 5.3 Для того чтобы через порт А микро- схемы 8155 считывать выходные сигналы аналого-цифрового преобразователя, имеющего выход с тремя состояниями (на- пример, Teledyne 8703), необходим микро- процессор 8085. Запуск преобразователя осуществляется микропроцессором путем посылки выходного сигнала в нулевой раз- ряд порта А микросхемы 8355. Затем ми- кропроцессор прерывается сигналом DATA VALID (ДАННЫЕ ГОТОВЫ) и считывает выходной сигнал аналого-ци- фрового преобразователя через порт вво- да-вывода А микросхемы 8155 путем раз- блокирования выхода с тремя состояния- ми, для чего используется первый разряд порта А микросхемы 8355. Требуется разработать упрощенную блок-схему аппаратного интерфейса ме- жду микроЭВМ на базе микропроцессора 8085 и аналого-цифровым преобразовате- лем. Сначала можно использовать преры- вание RST6.5, а затем сделать все то же самое для сигнала прерывания INTR (при- менив, скажем, команду RST6). Решение В качестве аналого-цифрового пре- образователя возьмем восьмиразрядный преобразователь Teledyne 8703, имеющий выходы с тремя состояниями. Временные диаграммы этого устройства, приве- денные на рис. 5.8, могут быть взяты из технических условий изготовителя. Ми- кропроцессор 8085 можно запрограмми- ровать так, чтобы он посылал к устройству 8703 импульс INITIATE CONVERSION (ИНИЦИИРОВАТЬ ПРЕОБРАЗОВА- НИЕ) в течение по крайней мере 500 нс. Посылка импульса может быть реализова- на путем подачи сигнала вначале высоко- го, а затем низкого уровня на контакт INITIATE CONVERSION микросхемы 8703. Сигналы DATA WALID или BUSY (ЗАНЯТО) могут подаваться на вход пре- рываний (в нашем случае RST6.5 или INTR) микропроцессора с тем, чтобы пре- рвать его работу по завершении преобра- зования. На рис. 5.9 показана схема сопряжения аналого-цифрового преобразователя 8703 с микроЭВМ на базе микропроцессора 8085, в которой используются линия пре- рываний RST6.5 и сигналы подтверждения правильности данных. В описанной выше схеме интерфейса микропроцессор можно запрограммировать для посылки выход- ного сигнала высокого уровня через нуле- вой разряд порта 00 и выходного сигнала низкого уровня через первый разряд порта 00 так, чтобы импульс INITIATE CONVERSION имел длительность мини- мум 500 нс. После подачи импульса ми- кропроцессор ожидает, когда уровень сиг- нала DATA VALID станет низким, что указывает на окончание преобразования. Ожидание реализуется в программе ко- мандой HLT. Прерывание микропроцессо- ра осуществляется тогда, когда высокий уровень сигнала DATA VALID сменяется низким, а прерывание RST6.5 разрешено и не замаскировано. Микропроцессор за- вершит выполнение текущей команды и перейдет к ячейке 003416, куда может быть помещена трехбайтовая команда JMP, с помощью которой осуществляется переход к стандартной программе обслу- живания прерываний. Несколько первых команд этой программы предназначено для передачи выходного сигнала низкого уровня через первый разряд порта 00, раз- блокирующего выход с тремя состояния-
148 Г лава 5 Рис. 5.8. Временная диаграмма устройства Рис. 5.9. Схема сопряжения преобразователя 8703 с микропроцессором 8085 на основе использования сигнала DATA VALID. ми аналого-цифрового преобразователя. После этого микропроцессор может по программе осуществить ввод выходного сигнала преобразователя через порт 21. Отметим, что преобразователь 8703 «за- щелкивает» данные в фиксаторе после то- го, как через 5 мкс нижний уровень сигна- ла DATA VALID сменяется высоким. Поэтому данные должны быть введены в микропроцессор в течение 5 мкс после поступления сигнала прерывания. В выше- приведенной схеме интервал между посту- плением сигнала прерывания и пересыл- кой выходного сигнала аналого-цифрово- го преобразователя в микропроцессор зна- чительно превышает 5 мкс. Рассмотрим теперь вторую часть зада- чи-использование линии прерывания INTR (RST6) микропроцессора 8085 и сиг- нала DATA VALID. Аппаратный интерфейс можно выпол- нить так, как показано на рис. 5.10. Как
Средства ввода-вывода микропроцессора 8085 149 INTR Разряд 1 порта 00 Разряд 0 порта 00 Преобразование завершено Разрешение Начать преобразование РА7 Микро ЭВМ с микро- процессором 8085 Порт 21 « РА6 РА5 РА4 РАЗ РА2 РА1 РАО INTA D7 D6 D5 D4 D3 D2 Di Do Aoe |o7|o6|o5|o4|o3|o2| Oi bo 74LS244 8-разрядный буфер с 3 состояниями DATA VALID OUTPUT ENABLE D7 8703 D6 АЦП 8703, D5 имеющий выходы D4 с тремя состояниями D3 D2 DI DO Рис. 5.10. Схема сопряжения устройств 8703 и 8085. и прежде, в соответствии с этим рисунком микропроцессор можно запрограммиро- вать для посылки выходного сигнала вы- сокого уровня через нулевой разряд порта 00 и выходного сигнала низкого уровня че- рез первый разряд того же порта для выда- чи импульса INITIATE CONVERSION. После этого в программе можно исполь- зовать команду HLT, по которой микро- процессор будет ожидать окончания пре- образования. Как только сигнализирую- щий об этом уровень сигнала DATA VALID станет низким, уровень сигнала INTR окажется высоким. Теперь, если только прерывание разрешено, микропро- цессор отреагирует на него завершением текущей команды и выдачей сигнала под- тверждения прерывания (INTA) LOW (низ- кого уровня). Этот сигнал разблокирует буфер с тремя состояниями шифратора 74LS244, в который с помощью переклю- чателей на два положения может быть за- слан код операции для команды RST6 (F716). Таким образом, после разблокиро- вания устройства 74LS244 сигналом INTA будет осуществлено занесение кода ко- манды RST6 на линии передачи данных. Это приведет к выполнению процессором трехбайтовой команды CALL, с помощью которой осуществляется обращение к стандартной программе обслуживания прерываний. Последняя обеспечивает по- сылку через первый разряд порта 00 вы- ходного сигнала низкого уровня, разбло- кирующего выход преобразователя OUT- PUT ENABLE, и дальнейший ввод в микропроцессор восьмибитового выход- ного сигнала преобразователя через порт ввода-вывода 21.
150 Глава 5 Отметим, что, как и при использовании прерывания RST6.5, интервал между по- ступлением сигнала прерывания INTR и вводом выходного сигнала аналого-ци- фрового преобразователя значительно превышает 5 мкс. Это означает, что выход- ной сигнал преобразователя поступает на вход микропроцессора после «защелкива- ния» данных в фиксаторе преобразователя. 5.3. Организация прямого доступа к памяти Прямой доступ к памяти (ПДП) орга- низуется для трех режимов передачи данных: монопольного, с захватом цикла и прозрачного. В монопольном режиме данные передаются блоками с максималь- но возможной скоростью. В режиме с захватом цикла передача данных обычно осуществляется побайтно, одновременно с другими операциями, вы- полняемыми микропроцессором. Прозрачный режим передачи данных требует применения логических схем, ко- торые отслеживают изменение состояния микропроцессора при выполнении вну- тренних операций, как, например, во время работы АЛУ. В это время пересылка данных осуществляется через системную шину. При любом режиме ПДП микропро- цессор должен использовать для пересыл- ки данных внешнюю микросхему, назы- ваемую контроллером прямого доступа к памяти. В нем есть свой собственный ре- гистр адреса, регистр счетчика слов и логи- ческие цепи чтения или записи данных в память. Для всех трех режимов передачи необходимы только такие программные средства, которые нужны для инициализа- ции регистров адреса, контроллера ПДП и регистра счетчика слов. В модели 8085 контроллер ПДП ини- циирует операцию прямого доступа путем подачи на вход HOLD (ЗАХВАТ) микро- процессора сигнала высокого уровня. По- сле этого микропроцессор синхронизирует асинхронный запрос HOLD и в соответ- ствующий момент машинного цикла по- сылает на вход контроллера ПДП сигнал подтверждения запроса захвата HOLD ACKNOWLEDGE (HLDA), переводя за- тем свою адресную шину и шину данных, а также управляющие линии RD, WR и Ю/М в режим высокого входного со- противления. Далее микропроцессор про- должает внутренние операции обработки и переходит в состояние ожидания, со- ответствующее сигналу HOLD. В режиме высокого входного сопротивления адрес- ной шины, шины данных и управляющих линий процессор 8085 отключается от за- поминающего устройства. С этого момен- та пересылка адресных, информационных и управляющих сигналов для выполнения передачи данных в память и из памяти производится контроллером ПДП. Кон- троллер отпирает далее свои буферные устройства с тремя состояниями, связы- вающие его с шиной адреса, управляющей шиной и шиной данных. Когда контроллер ПДП заканчивает работу с памятью, он переводит собственные шины в режим вы- сокого входного сопротивления и посы- лает на вход HOLD микропроцессора 8085 сигнал низкого уровня. Микропроцессор выходит из состояния ожидания и продол- жает прерванное действие с той точки, в которой оно было приостановлено за- просом HOLD. Затем контроллер ПДП формирует для микропроцессора сигнал прерывания, сигнализируя об окончании передачи в режиме прямого доступа. Контроллеры ПДП-это целая гамма аппаратных средств-от устройств с про- извольной логикой до специализиро- ванных больших интегральных схем (БИС) и специализированных микропроцессоров. БИС-контроллеры ПДП, такие, как Intel 8257, представляют собой программи- руемые устройства, способные управлять прямым доступом к памяти сразу несколь- ких устройств ввода-вывода. Подробно контроллер 8257 рассматривается в гл. 8. 5.4. Линии последовательного ввода и вывода данных Последовательный ввод-вывод широко используется для пересылки данных ме- жду микропроцессором и внешними устройствами. Поскольку внутренние опе- рации осуществляются в микропроцессо- рах параллельно, для обеспечения инфор-
Средства ввода-вывода микропроцессора 8085 151 мационного обмена между процессором и последовательными устройствами вво- да-вывода данные необходимо преобра- зовывать из параллельной формы в после- довательную и наоборот. В микропроцес- соре 8085 возможность последовательного ввода-вывода реализуется посредством линий последовательного ввода данных (SID) и последовательного вывода данных (SOB). Можно передавать данные по этим ли- ниям, применяя команды RIM (2016) и SIM (3016), которые обсуждались в гл. 4. После выполнения команды RIM содержимое разрядов аккумулятора интерпретируется следующим образом: Седьмой разряд-бит последователь- ного ввода. Разряды с нулевого по шестой - биты масок прерываний, бит разрешения преры- ваний и биты задержки прерываний. Посредством команды SIM содержимое аккумулятора пересылается в регистр ма- ски прерываний и линию последователь- ного ввода данных. Следовательно, перед выполнением команды SIM в аккумулятор должны быть загружены соответствую- щие данные. Содержимое аккумулятора интерпретируется так: Седьмой разряд-бит последователь- ного вывода. Шестой разряд-бит разрешения по- следовательного вывода. В этом Рис. 5.11. Линия последовательного ввода данных микропроцессора 8085, связанная с фиксирующимся переключателем. Рис. 5.12. Светодиод, управляемый микропро- цессором 8085 через линию последовательного вывода данных. разряде должна быть записана единица, чтобы обеспечивался вы- вод содержимого седьмого раз- ряда аккумулятора в линию SOD. Разряды с нулевого по пятый-биты масок прерываний, разряды разреше- ния и сброса. Линию SID микропроцессора 8085 (вывод 5) можно связать с фиксирующимся пере- ключателем так, как показано на рис. 5.11, а светодиод подсоединить к линии SOD микропроцессора 8085 (вывод 4) соответ- ственно рис. 5.12. При условии, что свето- диод потребляет ток 10 мА при напряже- нии 1,7 В, расчетная величина R равняется 330 Ом. Задачи и вопросы 5.1 Чем отличаются порты ввода-вы- вода в микросхемах 8355 и 8155? 5.2 Укажите все маскируемые и нема- скируемые прерывания микропроцессора 8085, а также сигналы, которыми они активизируются. 5.3 Воздействуют ли на прерывание TRAP команды EI или DI? Поясните. 5.4 Микросхемы 8085 и 8355 потребо- вались для реализации следующей схемы: Порт 00 имеет два коммутируемых входа (связанных с первым и вторым разрядами) и один светодиод на выходе (связанный с нулевым разрядом). Порт 01 имеет один светодиод, связанный с нулевым разрядом. Светодиод порта 00 должен быть включен, а светодиод порта 01 выключен, если через
152 Глава 5 Рис. 5.13. К задаче 5.5. порт 00 поступит четное число входных сигналов высокого уровня. Светодиод порта 00 должен быть выклю- чен, а светодиод порта 01 включен, если че- рез порт 00 поступит нечетное число входных сигналов высокого уровня. а) Разработайте блок-схему процесса. б) Преобразуйте эту блок-схему в про- грамму на языке ассемблера микропроцес- сора 8085. 5.5 В схеме, приведенной на рис. 5.13, микропроцессор 8085 требуется для вы- полнения следующих функций: 1. Включить светоизлучающий диод СИД1 и выключить СИД2, если > ЗВ и V2 > ЗВ. 2. Выключить СИД1 и включить СИД 2, если Vi < ЗВ и V2 < ЗВ. 3. Выключить СИД1 и СИД2, если Vj < < ЗВ, a V2 < ЗВ. а) Составьте блок-схему задачи. б) Преобразуйте эту блок-схему в про- грамму на языке ассемблера микропроцес- сора 8085. 5.6 Напишите программу на языке ас- семблера микропроцессора 8085, которая будет подавать сигнал на вход переключа- теля через линию SID и снимать сигнал с выхода через третий разряд порта В ми- кросхемы 8355. Выходной сигнал исполь- зуется для включения светодиода в том случае, когда на вход переключателя при- ходит сигнал высокого уровня; в других случаях светодиод должен быть выключен.
Глава 6 МИКРОПРОЦЕССОРЫ 8086 ФИРМЫ INTEL И Z8000 ФИРМЫ ZILOG В этой и в следующей главе описы- ваются 16- и 32-разрядные микропроцес- соры различных фирм-изготовителей, а именно "‘Intel”, “Motorola” и “Zilog”. Описываемые микропроцессоры спроек- тированы в расчете на использование МОП-технологии с высокой плотностью размещения топологических элементов и укороченными каналами (HMOS). Это достигается за счет уменьшения длины ка- налов транзисторов, изготавливаемых по n-канальной МОП-технологии. В данном случае удается получить целый ряд пре- имуществ по сравнению с обычной п-ка- нальной МОП-технологией (NMOS): 1. Произведение быстродействия на ве- личину потребляемой мощности для инте- гральных схем, изготовленных по HMOS- технологии, оказывается вчетверо мень- шим и равно приблизительно 1 пдж. 2. Плотность размещения схем при HMOS-технологии увеличивается пример- но вдвое, так как каждый вентиль зани- мает площадь, равную 1852,5 мкм2; в слу- чае же стандартной n-канальной МОП- технологии эта площадь составляет 4128 мкм2. Типичными примерами широко ис- пользуемых 16-разрядных микропроцессо- ров являются микропроцессоры 8086 фирмы Intel, Z8000 фирмы Zilog и 68000 фирмы Motorola. Поскольку в 16-разрядных микропро- цессорах имеется возможность непосред- ственной адресации большого числа ячеек памяти, их изготовители обеспечивают по- ставку (в виде отдельных кристаллов ПЗУ) компиляторов и интерпретаторов языков высокого уровня, например Фортран, Бей- сик, ПЛ/М и Паскаль. Будучи сопряжены с соответствующим микропроцессором, указанные ПЗУ обеспечивают возмож- ность программирования с использова- нием языков высокого уровня. В этой главе основное внимание уде- ляется архитектуре, системам команд, функциональному назначению выводов ЦП рассматриваемых микропроцессоров, а также характеристикам сигналов и ин- терфейсных узлов. Некоторые дополни- тельные сведения о микропроцессорах 8086 и 8000 можно почерпнуть из приво- димых многочисленных примеров прог- раммирования 16-разрядных микропро- цессоров. Эти примеры должны помочь читателю обрести навыки проектирования простых систем на основе описываемых устройств. Если же потребуется более де- тальная информация, за ней следует обра- щаться к эксплуатационной документации фирм - изготовителей микропроцессоров. 6.1. Микропроцессор Intel 8086п Конструктивной основой этого перво- го 16-разрядного микропроцессора служит микропроцессор 8080, однако непосред- ственная совместимость с последним не обеспечивается. В микропроцессоре 8086 существует возможность прямой адреса- ции до 1М байт памяти со страничной ор- ганизацией. Интересной особенностью этого микропроцессора является его спо- собность к предварительной выборке из памяти до 6 байт команд и организации очереди, обеспечивающей ускорение их выполнения. Семейство 8086 включает два типа п Этот раздел содержит материал, пере- печатанный с разрешения фирмы Intel Corporation.
154 Глава 6 Рис. 6 1. Небольшая вычислительная система на основе процессоров 8088/8086. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979 16-разрядных микропроцессоров: 8086 и 8088. Оба они тесно примыкают к микро- процессорам третьего поколения, но прин- ципиально различаются по способу орга- низации взаимодействия с внешней сре- дой. В процессоре 8088 для этого предус- мотрен 8-разрядный тракт передачи внеш- них данных в память и на устройства ввода-вывода, в то время как микропро- цессор 8086 имеет 16-разрядный внешний тракт данных. В остальном оба процессо- ра идентичны, и программы, написанные для одного из них, могут без каких-либо изменений выполняться на другом. Поэто- му далее будет рассматриваться лишь про- цессор 8086. Этот микропроцессор может использо- ваться в составе однопроцессорной си- стемы с минимальным объемом памяти (рис. 6.1) либо входить в многопроцессор- ную систему (рис. 6.2), обеспечивающую возможность адресации до 1М байт памя- ти. Столь широкий диапазон применений объясняется, вероятно, наличием двух ре- жимов функционирования процессора (в минимальной и максимальной конфигура- циях) и встроенных средств организации мультиобработки данных. Некоторые из выводов микросхемы ЦП имеют двоякое функциональное назначение, зависящее от сигнала, который подается на вывод, свя- занный с управляющей шиной. В случае системы минимальной конфигурации управляющие сигналы пересылаются от этих двухцелевых выводов ЦП непосред- ственно в память и на устройства ввода- вывода. При максимальной конфигурации системы те же самые штырьки приобре- тают иное функциональное назначение, облегчая компоновку средних и больших систем, в особенности многопроцес- сорных. В этих случаях функции управле- ния, реализуемые в рамках системы мини- мальной конфигурации самой микросхе- мой ЦП, передаются обеспечивающей микросхеме 8288, которая представляет собой контроллер шины.
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 155 Локальная шина Шина ввода-вывода Устройства ввода-вывода Локальные ресурсы 8288 Контроллер шины Контроллер Системная шина Multibus ПЗУ и ОЗУ ввода-вывода 8289 Арбитр шины 8288 Контроллер шины Приемо- передатчики и фиксаторы Приемо- передатчики и фиксаторы 8289 Арбитр шины Цепи управления системной шиной Multibus™ Системные ПЗУ и ОЗУ Цепи управления системной шиной Multibus™ Рис. 6.2. Система с параллельными процесса- ми на основе процессоров 8086/8088/8089. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979 Фактические рабочие характеристики процессора 8086 меняются от системы к системе, однако по сравнению со стан- дартным серийным микропроцессором 8О8ОА с тактовой частотой 2 МГц процес- сор 8086 оказывается в 7-10 раз произво- дительнее. Благодаря наличию внешней 8-разрядной шины данных ЦП 8088 пре- восходит процессор 8О8ОА по быстродей- ствию в 4-6 раз, а в прикладных системах, где имеет место интенсивный обмен имен- но 8-битовыми порциями данных, процес- сор 8088 приближается по характеристи- кам пропускной способности к микропро- цессору 8086. Процессор 8086 имеет внутреннюю 16-разрядную шину данных с конвейерной архитектурой, что позволяет осуществлять предварительную выборку команд в неза- нятые циклы обращения к шине. Это об- стоятельство в сочетании с более плотным форматом команд обеспечивает возмож- ность предварительной выборки большего их числа в течение заданного кванта вре- мени, существенно увеличивая производи- тельность микропроцессора 8086.
156 Глава 6 Конструкция этого процессора вклю- чает аппаратные средства, непосредствен- но предназначенные для организации вы- полнения программ, написанных на язы- ках высокого уровня типа ПЛ/М и Паскаль. Системные программы, для ко- торых важно высокое быстродействие, не обеспечиваемое языками высокого уровня, могут писаться в кодах ассемблера, а за- тем связываться с программой на языке высокого уровня. 6.1.1. Архитектура микропроцессора 8086 В упрощенном виде последователь- ность событий, происходящих в микро- процессоре при выполнении какой-либо программы, могла бы быть представлен^ следующим образом: 1. Выборка очередной команды из па- мяти. 2. Чтение операнда (если это требуется в соответствии с командой). 3. Исполнение команды. 4 4. Запись результата (если этого тре- бует исполняемая команда). В рамках ранее существовавших архитек- тур ЦП эти шаги выполнялись последова- тельно или с единственным перекрытием цикла выборки шины. Архитектура же процессора 8086 такова, что те же самые шаги распределяются.между различными внутренними блоками обработки данных. При этом исполнение команд возлагается на исполнительный блок (ИБ), а выборку команд, чтение операндов и запись резуль- татов осуществляет блок интерфейса шины (БИШ); это распределение функций отображено на рис. 6.3. Оба указанных блока работают независимо, и в большин- стве случаев происходит интенсивное со- вмещение операций выборки команд и вы- полнения очередной команды. ИБ испол- няет команды, которые уже предваритель- но выбраны из ОЗУ посредством БИШ, и поэтому общее время выборки команд существенно сокращается. Шестнадцатиразрядное арифметико- логическое устройство (АЛУ), входящее в аппаратные средства И Б, следит за флажками состояния и управляющими флажками ЦП, манипулирует регистрами общего назначения (РОН) и выполняет различные действия над операндами ко- манд. Для быстрого осуществления вну- тренних пересылок регистры ИБ и линии данных сделаны 16-разрядными. Исполнительный блок не имеет соеди- нения с системной шиной, а адресованные ему команды получает из очереди, обслу- живаемой БИШ. Всякий раз, когда некото- рая команда требует обращения к памяти или определенному УВВ, исполнительный блок формирует запрос к БИШ на получе- ние или запоминание данных. Хотя при этом ИБ манипулирует только 16-раз- рядными адресами, БИШ способен выпол- нять переадресацию и обеспечивать таким образом доступ ИБ ко всему мегабайтно- му пространству адресов. Все операции взаимодействия с шиной И Б выполняет при посредничестве БИШ; пересылка данных между ЦП и памятью или внешни- ми устройствами реализуется по требова- нию ИБ. Тогда, когда И Б занят выполнением команд, БИШ выбирает из памяти оче- редные команды и помещает их во вну- треннее ЗУПВ, в массив, называемый оче- редью потока команд. Микропроцессор 8086 позволяет хранить в такой очереди до 6 байт команд одновременно, благодаря чему в большинстве случаев БИШ обеспе- чивает загрузку ИБ предварительно вы- бранными командами без занятия систем- ной шины. Почти в любых обстоятельствах оче- редь потока команд содержит хотя бы один командный байт, и поэтому ИБ не простаивает в ожидании выборки очеред- ной команды из памяти. Очередь обра- зуется из команд, которые в ЗУ непосред- ственно примыкают к исполняемой в данный момент, т. е. располагаются в ячейках с большими адресами. Если вы- числительный процесс протекает последо- вательно, команды соответствуют логике, работы программы. При появлении ко- манды передачи управления в другую ячейку БИШ формирует очередь зановр после пересылки ИБ новой команды. В ИБ имеется восемь 16-разрядных ре- гистров, объединенных в две группы по
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 157 Рис. 6.3. Структура процессора. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979 четыре регистра в каждой. Первую группу составляют регистры данных (Н и L), а вторую-регистры указателей и ин- дексные (Р и I). Любой регистр данных мо- жет использоваться как два 8-разрядных регистра или один 16-разрядный. Все остальные регистры ЦП всегда рассматри- ваются как 16-разрядные устройства. Реги- стров указателей два: указатель стека (УС), содержащий текущий адрес стека, и указатель базы (УБ), который обычно ис- пользуется при обращении процессора 8086 к памяти. Пара индексных регистров [индекс - регистр источника (ИИ) и ин- декс-регистр результата (ИР)] участвуют в операциях индексной адресации. Все перечисленные восемь регистров могут ис- пользоваться как единый блок, назы- ваемый накопительным регистром или аккумулятором. БИШ содержит четыре 16-разрядных регистра адреса сегмента и один 16-раз- рядный указатель команд (УК), анало- гичный счетчику команд в микропроцессо- рах 8080 и 8085. Все пространство памяти микропроцессора 8086 емкостью 1М байт разделено на сегменты по 64К байт. Обес- печивается прямой доступ ЦП сразу к четырем таким сегментам, базовые адре- са которых содержатся в регистрах адреса сегмента (PC). Первый из сегментных ре- гистров называется регистром программ-
158 Глава 6 АХ АН AL Аккумулятор ВХ ВН BL Индексный регистр СХ СН CL Счетчик IP Указатель команды DX DH DL Регистр данных FLAGS Флажки состояния SP Указатель стека CS Кодовый сегмент ВР Указатель базы DS Информационный сегмент SI Индекс источника SS Стековый сегмент DI Индекс приемника ES Добавочный сегмент Рис. 6.4. Структура регистров. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979 ного сегмента (ПС). Он указывает на теку- щий сегмент программ, из которого производится выборка команд. Действи- тельный адрес команды в памяти вычис- ляется путем сложения содержимого реги- стра ПС с содержимым УК. Второй регистр-регистр стекового сегмента (СС) определяет текущий стековый сегмент, в Котором должны выполняться операции над стеком. Действительный адрес стека получается прибавлением содержимого регистра СС к содержимому УС исполни- тельного блока. Третий регистр - регистр информационного сегмента (ИС) указы- вает сегмент памяти, в котором в данный момент хранятся переменные выполняе- мой программы. Наконец, регистром до- бавочного сегмента (ДС) указывается теку- щий дополнительный сегмент памяти (четвертый блок емкостью 64К), в котором обычно хранятся данные. Все сегментные регистры доступны для программ и могут участвовать в их выполнении. Архитектура регистров микропроцессора 8086 отобра- жена на рис. 6.4. В процессоре 8086 предусмотрено шесть однобитовых флагов состояния (рис. 6.5), которые выставляются или сбрасываются ИБ и сигнализируют об определенных свойствах результатов арифметических и логических операций. Состояние этих флагов может определять изменение хода выполнения программы. Флаги, как правило, отображают следую- щие условия: каждой команде Рис. 6.5. Флажки микропроцессора 8086. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 159 1. Выставленный флаг AF (служебный перенос) указывает на то, что осуществлен перенос из младшего полубайта в старший или произведен заем из старшего полубай- та в младший при работе с 8-разрядной ко- личественной величиной (с младшим бай- том 16-битового числа). Этот флаг уча- ствует в работе команд десятичной ариф- метики и занимает 4-й разряд флагового регистра. 2. Установка флага CF (перенос) озна- чает, что выполнен перенос из старшего разряда результата или в этот разряд до- бавлена единица заема (при работе с 8- или 16-разрядными числами). Используется командами сложения и вычитания много- байтовых чисел. Команды циклического сдвига могут помещать на место этого флага (в нулевой разряд флагового реги- стра) отдельный бит, извлеченный из па- мяти или какого-либо регистра. 3. Флаг OF (переполнение) выставляет- ся тогда, когда происходит арифметиче- ское переполнение, т.е. потеря значащих цифр числа по причине выхода величины результата за пределы разрядной сетки ячейки, в которую этот результат поме- щен. В этом случае возможно обращение к команде прерывания по переполнению для генерирования соответствующего сиг- нала. Флаг переполнения занимает 11-й разряд флагового регистра. 4. Флаг SF (знак) сигнализирует о том, что в старшем разряде результата присут- ствует единица. Поскольку в микропроцес- соре 8086 отрицательные двоичные числа представляются в стандартном дополни- тельном коде, этот флаг просто указывает знак числа: состояние «0» соответствует положительному знаку, а состояние «1»-отрицательному. Флаг размещается в 7-м разряде флагового регистра. 5. Выставленный флаг PF (признак чет- ности) означает, что код числа, являюще- гося результатом операции, обладает свойством четности, т.е. содержит четное число единиц. Этот флаг может использо- ваться для контроля ошибок передачи данных; занимает 2-й разряд флагового регистра. 6. Флаг ZF (признак нуля) указывает на нулевой результат выполненной операции. Располагается в 6-м разряде флагового регистра. Имеются еще три дополнительных управляющих флага, выставляя и сбрасы- вая которые программы могут изменять ход выполнения операций процессором: 1. При установке флага DF (признак направления) команды работы со стро- ковыми данными переходят в автодекре- ментный режим, т. е. начинают обрабаты- вать строки в направлении от старших адресов к младшим («справа налево»). Сброс флага переводит строковые ко- манды в автоинкрементный режим, при котором строки обрабатываются «слева направо». Флаг признака направления за- нимает 10-й разряд флагового регистра. 2. Выставленный флаг IF (признак раз- решения прерывания) позволяет ЦП рас- познавать запросы внешних (маскируемых прерываний). При сбросе этого флага та- кие прерывания запрещаются. На любые немаскируемые внешние или форми- руемые внутренние прерывания флаг IF никакого влияния не оказывает. Распола- гается в 9-м разряде флагового регистра. 3. Установкой флага TF (системное прерывание) процессор переводится в по- шаговый режим для отладки программ. В указанном режиме ЦП автоматически генерирует сигнал прерывания после вы- полнения каждой команды, что позволяет контролировать работу программы поко- мандно. Занимает 8-й разряд флагового регистра. Общая длина образуемого флагами признака состояния 16 разрядов, однако постоянно используются только девять из них. Стек процессора 8086 реализуется в памяти и размещается в ней с использо- ванием регистра стекового сегмента (SS) и указателя стека (SP). Общее число стеков не ограничено; каждый из них может иметь длину 64К байт. В случае превыше- ния этого размера последующие записи помещаются в начало стека на место пре- жних записей. В любой момент времени возможна прямая адресация лишь одного стека. Регистр SS содержит базовый адрес текущего стека, а регистр SP указывает адрес вершины стека (TOS). Стек имеет 16 двоичных разрядов, в хо-
160 Глава 6 де операций над ним слова добавляются и исключаются по одному. При проталки- вании элемента в стек содержимое указа- теля стека SP уменьшается на два и со- ответствующий элемент записывается в качестве новой вершины стека. Выталки- вание элемента из стека происходит путем его копирования из верхушки стека и по- следующего увеличения содержимого ука- зателя стека на два. Однако в результате такого выталкивания стековая память ни- когда не обновляется: изменяется только адрес вершины стека после обновления со- держимого указателя стека. Две области памяти-с самыми млад- шими и самыми старшими адресами — предназначены для реализации специфи- ческих функций процессора или резерви- руются на будущее под новые аппаратные и программные средства фирмы Intel. Это ячейки с адресами 00H-7FH (128 байт) и FFFFF0-FFFFFH (16 байт). Они ис- пользуются для обработки сигналов пре- рываний и начального запуска вычисли- тельной системы. Если указанные адреса оказываются занятыми, то система стано- вится несовместимой с будущими изделия- ми фирмы Intel. 6.1.2. Способы адресации Процессор 8086 обеспечивает самые различные способы выборки операндов команд. Последние могут содержаться в регистрах, внутри кодов команд, в памя- ти или в портах ввода-вывода. При этом адреса операндов в ЗУ или портах ввода- вывода могут вычисляться несколькими методами, рассматриваемыми ниже. 1. Использование регистров и непосред- ственных операндов В регистрах могут храниться опе- ранды-источники или операнды назначе- ния, или оба типа операндов вместе. Что же касается непосредственных операндов, то они представляют собой постоянные данные, являющиеся частью команды, при этом информационные слова могут иметь длину 8 или 16 бит. 2. Способы адресации ячеек памяти Исполнительный блок имеет прямой доступ только к регистрам и непосред- ственным операндам, однако он не может получать прямой доступ к памяти. Опе- ранды, хранящиеся в ЗУ, пересылаются в ЦП или из него только по шине. Когда И Б требуется произвести считывание или запись в память какого-либо операнда, он должен переслать в БИШ величину смеще- ния базового адреса. Это смещение складывается с содержимым регистра сег- мента (после четырехкратного сдвига вле- во), в результате чего определяется 20-раз- рядный физический адрес, и затем реали- зуются циклы шины, необходимые для осуществления выборки требуемого опе- ранда. Вычисляемое исполнительным блоком смещение адреса операнда, хранимого в памяти, называется исполнительным адресом операнда (ЕА); этот адрес пред- ставляет собой 16-разрядное двоичное чис- ло, указывающее в байтах расстояние ячейки, хранящей данный операнд, от на- чала сегмента, в котором он постоянно хранится. Вычисление исполнительного адреса может производиться в ИБ не- сколькими различными методами, а каким именно - на это указывает второй байт со- ответствующей команды. Рассмотрим теперь более подробно возможные способы адресации памяти. Прямая адресация. В этом случае ис- полнительный адрес берется непосред- ственно из 8- или 16-разрядного поля сме- щения в коде конкретной команды. Ника- кие регистры в адресации не задейство- ваны. Регистровая косвенная адресация. При косвенной адресации с помощью реги- стров исполнительный адрес хранящегося в памяти операнда может считываться прямо с одного из базовых или индексных регистров. В случае организации надлежа- щего обновления содержимого этих реги- стров одна команда может охватывать сразу несколько различных ячеек памяти. Изменение содержимого регистров могло бы осуществляться с помощью команды загрузки исполнительного адреса (LEA)
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 161 и команд арифметических операций. При этом в качестве адресующего регистра для команд JMP и CALL может быть исполь- зован любой 16-разрядный регистр обще- го назначения. Относительная адресация. При относи- тельной адресации исполнительный адрес вычисляется как сумма некоторого задан- ного смещения и содержимого регистра ВХ или ВР. Определение ВР как индексно- го регистра предписывает БИШ брать опе- ранд из сегмента текущего стека (если в ко- манде нет префикса переопределения сег- мента). Индексная адресация. Исполнительный адрес в этом случае вычисляется как сумма некоторого заданного смещения и содер- жимого индексного регистра (SI или DI). Индексная адресация часто используется для организации доступа к элементам массивов. Относительная индексная адресация. При этом способе адресации исполни- тельный адрес представляет собой сумму содержимого регистра базы, индексного регистра и смещения. В ходе выполнения программы могут меняться две компо- ненты адреса. Строковая адресация. Осуществляется строковыми командами, в которых вместо обычных способов доступа к операндам используется в неявном виде индексный регистр. При этом предполагается, что ин- декс-регистр источника указывает на первый байт или первое слово строки ис- точника, а индекс - регистр результата - на первый байт или первое слово формируе- мой строки. Оба этих регистра автомати- чески настраиваются на прием последова- тельности байтов или слов в ходе выпол- нения повторяющихся операций над стро- ками. 3. Адресация портов ввода-вывода При вводе-выводе с распределением памяти для выборки портов ввода-вывода может применяться любой из способов адресации, в том числе и строковая адреса- ция, если только имеется аппаратный ин- терфейс для пересылки, имеющий соб- ственное адресное пространство данных в порты, отображаемые адресами памяти. Доступ к портам в области УВВ органи- зуется с использованием двух методов: прямого и непрямого. В случае прямой адресации портов номер порта задается 8-битовым непосредственным операндом, обеспечивающим реализацию жесткой схемы обращения к портам с номерами в диапазоне 0-255. Непрямая адресация портов подобна регистровой косвенной адресации операндов, хранимых в памяти. Номер требуемого порта берется из реги- стра DX и может иметь величину в интер- вале от 0 до 65 535. Одной команде досту- пен любой один порт в пространстве УВВ при соответствующей заблаговременной установке содержимого регистра DX. 6.1.3. Система команд Система команд микропроцессора 8086 включает в себя эквиваленты команд, имеющихся в микропроцессорах предше- ствующих моделей, таких, как 8080 и 8085. Предусмотрены и новые операции, к числу которых относятся: 1. Умножение и деление чисел со зна- ком и без знака как в двоичном, так и в де- сятичном неупакованном формате. 2. Пересылка, просмотр и сравнение строк длиной до 64К байт. 3. Неразрушающая проверка двоич- ных разрядов. 4. Преобразование байтов из одного кода в другой. 5. Программная реализация прерыва- ний. 6. Группа команд координации опера- ций в многопроцессорных системах. Почти все команды микропроцессора 8086 могут работать с данными байтовой структуры (8 бит) или со словами (16 бит). Большинство команд рассчитано на попе- ременное задание в них регистров, адресов памяти и непосредственных операндов. Значения переменных, хранящиеся в памя- ти, могут вычитаться, складываться, сдви- гаться, сравниваться и участвовать в дру- гих аналогичных операциях прямо «на месте», без пересылки их в регистры и из регистров. Система команд микропроцессора 8086 содержит 100 различных команд с 300 раз- личными кодами операций.
162 Глава 6 1. Команды пересылки данных Имеется 14 таких команд, обеспечи- вающих пересылку одиночных байтов и слов между памятью и регистрами, рав- но как между регистрами AL или АХ и портами ввода-вывода (табл. 6.1). К этой группе относятся также команды манипу- лирования стеком, команды пересылки флаговых битов и команды загрузки реги- стров сегментов. 2. Команды арифметических операции Арифметические операции возможны над числами четырех видов: двоичными без знака, двоичными со знаком (целыми), упакованными десятичными без знака и неупакованными десятичными без знака. Двоичные числа могут иметь длину 8 или 16 разрядов. Десятичные числа хранятся в байтовом представлении, причем в слу- чае упакованного десятичного формата в одном байте записываются две деся- тичных цифры, а в неупакованном форма- те-одна. Считается, что перед выполне- нием каждой конкретной команды процес- сор получает данные в требуемом ею фор- мате. Арифметические команды микро- процессора 8086 перечислены в табл. 6.2. В двоичных числах без знака, которые могут быть 8- или 16-разрядными, все раз- ряды относятся к величине числа; следова- тельно, в данном случае 16 битами пред- ставляются численные значения в диапазо- не 0-65 536. Над этими числами возможны операции сложения, вычитания, умноже- ния и деления. Двоичные числа со знаком (целые) тоже могут иметь длину 8 или 16 разрядов. Самый старший (крайний левый) разряд интерпретируется как знак числа: положи- тельный, если в этом разряде содержится 0, и отрицательный, если в нем содержится 1. Отрицательные числа представляются Таблица 6.1. Команды пересылки данных. Перепечатано с раз- решения фирмы Intel Corporation, copyright 1979 Команды общего назначения MOV PUSH POP XCHG XLAT Переместить байт или слово Протолкнуть слово в стек Вытолкнуть слово из стека Произвести обмен байтом или словом Преобразовать байт Команды ввода-вывода IN Ввести байт или слово OUT Вывести байт или слово Команды адресации объектов LEA Загрузить исполнительный адрес LDS Загрузить указатель с использованием регистра информационного сегмента LES Загрузить указатель с использованием регистра добавочного сегмента Команды пересылки флаговых битов LAHF Загрузить регистр АН флаговыми би- тами SAHF Запомнить содержимое регистра АН во флаговых разрядах PUSHF Протолкнуть флаговые биты в стек POPF Вытолкнуть флаговые биты из стека
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 163 Таблица 6.2. Команды арифметических операций. Перепечатано с разрешения фирмы Intel Corporation, copyright 1979. Команды сложения ADD Сложить байт или слово ADC Сложить байт или слово с переносом INC Увеличить значение байта или слова на единицу AAA Выровнять код ASCII для сложения DAA Произвести десятичное выравнивание для сложения Команды вычитания SUB Вычесть байт или слово SBB Вычесть байт или слово с выпол- нением заема DEC Уменьшить значение байта или слова на 1 NEG Инвертировать байт или слово CMP Сравнить байт или слово AAS Выровнять код ASCII для вычитания DAS Произвести десятичное выравнивание для вычитания Команды умножения MUL Умножить байт или слово без знака IMUL Произвести целочисленное умножение байта или слова AAM Выровнять код ASCII для умноже- ния Команды деления DIV Разделить байт или слово без знака IDIV Произвести целочисленное деление байта или слова AAD Выровнять код ASCII для деления CBW Преобразовать байт или слово CBD Преобразовать обычное слово в сло- во двойной длины в стандартном дополнительном коде (до- полнением до двух). В связи с тем, что один бит отводится на знак, в данном слу- чае возможна работа с целыми числами лишь в диапазоне от — 128 до +127 при восьми разрядах и от — 32 768 до 32 767 в случае 16 разрядов. Нуль считается поло- жительным числом. Над двоичными чис- лами со знаком возможны операции умно- жения и деления. Сложение и вычитание реализуются командами соответствую- щих операций над двоичными числами без знака, поэтому для определения знака ре- зультата необходимо проверять состояние флага переполнения. Числа в упакованном десятичном фор- мате хранятся в байтовом представлении без знака. Четыре старших бита содержат старшую десятичную цифру, а четыре младших-десятичную цифру младшего
164 Глава 6 разряда. В каждом полубайте имеют смысл лишь цифры 0-9. Диапазон пред- ставляемых таким образом чисел в упако- ванном десятичном формате от 0 до 99. Над такими числами невозможны опера- ции умножения и деления. Неупакованные десятичные числа хра- нятся также в байтовом представлении без знака. Величина числа определяется млад- шим полубайтом, тогда как четыре стар- шие бита должны содержать нули в целях обеспечения реализации операций умноже- ния и деления. В процессе выполнения арифметических команд при получении ре- зультатов выставляются или сбрасывают- ся шесть флагов состояния. 3. Команды манипулирования битами В микропроцессоре 8086 предусмот- рены три группы команд манипулирова- ния отдельными битами внутри байтов или слов: команды логических операций, команды сдвига и команды циклического сдвига (табл. 6.3). • Логические команды реализуют бу- левы операции НЕ, И, ИЛИ, исклю- чающее ИЛИ; к этой же группе от- носится команда TEST, инициирую- щая проверку флагов, но никак не воздействующая на операнды. • Команды сдвига осуществляют арифметический или логический сдвиг требуемых битов в байтах ли- бо словах. В зависимости от кон- кретных значений операндов может выполняться до 255 сдвигов. • Команды циклического сдвига реали- зуют перемещение битов байта или слова «по кругу», в результате чего Таблица 6.3. Команды манипулирования битами. Перепечатано с разрешения фирмы Intel Corporation, copyright 1979. Логические команды NOT Выполнить операцию «НЕ» над байтом или словом AND Выполнить операцию «И» над байтом или словом OR Выполнить операцию «включающее ИЛИ» над байтом или словом XOR Выполнить операцию «исключающее ИЛИ» над байтом или словом TEST Проверить значение разряда байта или слова Команды сдвига SHL/SAL Произвести логический/арифметиче- ский сдвиг влево байта или слова SHR Произвести логический сдвиг вправо байта или слова SAR Произвести арифметический сдвиг вправо байта или слова Команды циклического сдвига ROL Выполнить циклический сдвиг байта или слова влево ROR Выполнить циклический сдвиг байта или слова вправо RCL Выполнить сквозной перенос в байте или слове влево RCR Выполнить сквозной перенос в байте или слове вправо
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 165 бит, выталкиваемый из одного кон- ца операнда, «закольцовывается» на другой его конец. 4. Строковые команды Пять основных строковых команд по- зволяют манипулировать строками дли- ной до 64К байт, каждый раз над одним элементом строки. Эти команды назы- ваются примитивами и обеспечивают пересылку, сравнение и просмотр стро- ковых значений, а также передачу стро- ковых элементов в аккумулятор и из акку- мулятора. Примитивы снабжаются пре- фиксами, которые создают возможность аппаратной реализации их повторного вы- полнения; благодаря этому длинные стро- ки могут обрабатываться намного бы- стрее, чем при организации программных циклов. Строковые команды перечислены в табл. 6.4. 5. Команды безусловного перехода По командам безусловного перехода (табл. 6.5) осуществляется передача управ- ления указываемой команде, которая на- ходится в текущем сегменте памяти (вну- трисегментная передача) или в каком-либо другом сегменте программы (межсегмент- ная передача). 6. Команды условного перехода К этой группе относятся 18 команд, каждая из которых проверяет свою комби- нацию условных признаков и может пере- давать или не передавать управление в за- висимости от состояния флажков ЦП в момент выполнения команды (табл. 6.5). Команда условного перехода осущест- вляет передачу управления в том случае, если проверяемое условие принимает зна- чение «истина», иначе происходит переход к команде, следующей за командой услов- ного перехода. Все условные передачи управления осу- ществляются в относительных адресах; ячейки, в которые передается управление, должны отстоять от местоположения пер- вого байта следующей команды на «рас- стояние» от — 128 до +127 байт. При этом адрес передачи управления должен оставаться в пределах выполняемого в данный момент сегмента программы. Программы, содержащие команды услов- ного перехода, могут быть удобным сред- ством построения перемещаемых про- грамм, поскольку сами по себе работают с относительными адресами. 7. Команды прерывания Команды прерывания позволяют осу- ществлять вызов обслуживающих стан- дартных программ точно так же, как по- следние вызываются по сигналам преры- вания от внешних устройств. Действие программного прерывания аналогично действию аппаратного прерывания с той лишь разницей, что процессор в этом слу- чае не формирует сигнала подтверждения прерывания. Команды этой группы приве- дены в табл. 6.5. 8. Команды управления процессором В этой группе имеются две совокупно- Таблица 6.4. Строковые команды. Перепечатано с разрешения фирмы Intel Corporation, copyright 1979. REP REPE/REPZ Повторить Повторить в случае равенства или нулевого результата REPNE/REPNZ Повторить в случае неравенства или ненулевого результата MOVS MOVSB/MOVSW CMPS SCAS LODS STOS Переместить строку байтов или слов Переместить строку байтов или слов Сравнить строку байтов или слов Просмотреть строку байтов или слов Загрузить строку байтов или слов Запомнить строку байтов или слов
166 Глава 6 Таблица 6.5. Команды передачи управления. Перепечатано с разрешения фирмы Intel Corporation, copyright 1979. Команды безусловного перехода CALL RET JMP Вызов процедуры Возврат из процедуры Переход Команды условного перехода JA/JNBE JAE/JNB JB/JNAE JBE/JNA JC JE/JZ JG/JNLE JGE/JNL JL/JNGE JLE/JNG JNC JNE/JNZ JNO JNP/JPO JNS JO JP/JPE JS Переход, если выполняется условие «выше/не ниже и не равно» Переход, если выполняется условие «выше или равно/не ниже» Переход, если выполняется условие «ниже/не выше и не равно» Переход, если выполняется условие «ниже или равно/не выше» Переход при наличии переноса Переход, если выполняется условие «равно/равно нулю» Переход, если выполняется условие «больше/не меньше и не равно» Переход, если выполняется условие «больше или равно/не меньше» Переход, если выполняется условие «меньше/не больше и не равно» Переход, если выполняется условие «меньше или равно/не больше» Переход при отсутствии переноса Переход при выполнении условия «не равно/не равно нулю» Переход при отсутствии переполнения Переход при нарушении условия четности/по не- четности Переход при отсутствии знака Переход при наличии переполнения Переход при отсутствии нарушения условия чет- ности/по признаку четности Переход по знаку Команды организации итеративных циклов LOOP LOOPE/LOOPZ LOOPNE/LOOPNZ JCXZ Организовать цикл Организовать цикл, если выполнено условие «равно/ равно нулю» Организовать цикл, если выполнено условие «не равно/не равно нулю» Переход при равенстве нулю содержимого регист- ра СХ Команды прерывания INT INTO IRET Прерывание Прерывание по переполнению Возврат из прерывания
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 167 Таблица 6.6. Команды управления процессором. Перепечатано с разрешения фирмы Intel Corporation, copyright 1979. Команды выполнения операций над флагами STC Выставить флаг переноса CLC Очистить флаговый разряд переноса СМС Инвертировать значение флага пере- носа STD Выставить флаг направления CLD Сбросить флаг направления STI Выставить флаг разрешения преры- ваний CLI Сбросить флаг разрешения прерыва- ний Команды внешней синхронизации HLT Останов до поступления сигнала пре- рывания или сброса WAIT Ожидание возбуждающего сигнала на клемме TEST ESC Обращение к внешнему процессору LOCK Запирание шины на время выпол- нения очередной команды Команды бездействия NOP Не выполнять никаких операций сти команд, управляющих различными функциями ЦП. Одна из них служит для обновления состояния флажков, а дру- гая - главным образом для синхронизации работы процессора с внешними события- ми; особняком стоит команда NOP, по ко- торой ЦП не выполняет никаких операций (табл. 6.6). 6.1.4. Организация ввода-вывода 1. Программируемый ввод-вывод В микропроцессоре 8086 адресуемое пространство УВВ может содержать до 64К байт памяти, и эти 64К 8-разрядных ячеек могут образовывать до 64К 8-раз- рядных портов или до 32К 16-разрядных. Пересылка данных между аккумулятором и портами зоны ввода-вывода осущест- вляется по командам IN и OUT, при этом в пересылках байтов участвует регистр AL, а в пересылках слов - регистр АХ. Для ор- ганизации доступа к порту БИШ поме- щает адрес порта (0-64К) на младшие 16 линий адресной шины. Наличие различных модификаций команд ввода-вывода позво- ляет задавать в них адрес непосредственно или брать его из регистра DX. Микропроцессор 8086 способен пере- сылать на УВВ, отображенное в памяти, все восемь или 16 разрядов данных одно- временно. При этом 16-разрядные устрой- ства должны иметь четные адреса, с тем чтобы слово могло быть передано за один цикл шины. 8-разрядные УВВ могут иметь как четные, так и нечетные адреса, а вну- тренним регистрам всех устройств дол- жны присваиваться в пределах одного УВВ только четные или только нечетные адреса. Устройства ввода-вывода могут отображаться в адресное пространство па- мяти самого микропроцессора; в этом слу- чае процессор работает с ними как с обыч- ными ячейками памяти, что обеспечивает большую гибкость программирования, так как любые команды обращения к па- мяти становятся фактически командами ввода-вывода.
168 Глава 6 2. Организация прямого доступа к памяти В минимальной конфигурации микро- процессора 8086 сигналы HOLD (времен- ного запоминания) и HLDA (запоминание подтверждения) могут использоваться для управления системной шиной при органи- зации прямого доступа к памяти. Адресуе- мая память микропроцессора разделена на два самостоятельных блока, один из ко- торых содержит байты с четными адреса- ми, а другой-с нечетными. Для обеспече- ния выборки двух смежных в логическом смысле байтов 8-разрядный контроллер прямого доступа должен осуществлять по- переменное обращение то к одному, то к другому блоку. 3. Процессор ввода-вывода 8089 Процессор ввода-вывода 8089 предназ- начен для использования совместно с ми- кропроцессором 8086. Концептуально он представляет собой микропроцессор с дву- мя каналами прямого доступа к памяти и с системой команд, специально ориентиро- ванной на операции ввода-вывода. Этот процессор может обслуживать УВВ непос- редственно, разгружая тем самым ЦП, и способен пересылать данные как на свою собственную шину, так и на системную. Процессор 8089 обеспечивает согласова- ние 8- или 16-разрядных УВВ с 8- или 16-разрядными шинами и может осущест- влять пересылку данных из ЗУ в ЗУ и от одного УВВ к другому. 4. Организация прерываний В микропроцессоре 8086 каждому типу прерываний присвоен свой код, распозна- ваемый ЦП, который может обрабатывать до 256 различных типов прерываний. Та- кие прерывания могут инициироваться устройствами, внешними по отношению к ЦП, или генерироваться программно ко- мандами прерывания. Внешние прерывания. Имеются две ли- нии передачи сигналов, которые могут ис- пользоваться внешними устройствами для сигнализации о прерываниях: линия за- проса прерывания (INTR) и линия нема- скируемого прерывания (NMI). На возбуж- дение линии INTR центральный процессор реагирует в зависимости от состояния флажка разрешения прерываний IF, но не выполняет никаких действий по обработке прерывания до тех пор, пока не будет до конца исполнена текущая команда. По- скольку сигнал INTR не запоминается в фиксаторе, он должен удерживаться на высоком уровне вплоть до момента рас- познавания. После этого ЦП подтвер- ждает прием запроса прерывания путем выполнения двух последовательных цик- лов шины, связанных с таким подтвержде- нием. В первом цикле посылается сигнал подтверждения приема прерывания на обработку, а во втором процессор считы- вает с шины данных код поступившего прерывания в диапазоне от 0 до 255, по- казывающий, какое именно устройство нуждается в обслуживании. Этот код ис- пользуется ЦП для вызова соответствую- щей процедуры обработки прерывания. Немаскируемое прерывание происхо- дит в критических ситуациях и обычно используется для сигнализации о «ката- строфических», внезапных событиях, вследствие чего оно и не может быть ма- скируемым. К катастрофическим собы- тиям, как правило, относятся отказ источ- ника питания, обнаружение ошибки в памяти или нарушение четности при ра- боте с шиной. Немаскируемое прерывание обладает более высоким приоритетом по сравнению с обычным. Внутренние прерывания. Команда пре- рывания INT вызывает формирование сиг- нала прерывания по окончании ее исполне- ния. Тип прерывания указывается в коде команды INT. Эта команда может исполь- зоваться для тестирования стандартных программ обслуживания внешних преры- ваний. В случае выставления флага OF коман- да прерывания по переполнению (INTO) генерирует сигнал прерывания типа 4 не- медленно после ее завершения. Сам ЦП формирует сигнал прерывания типа 0 сра- зу по окончании выполнения команд DIV (деление) или IDIV (целочисленное деле- ние), если вычисленная величина превы- шает требуемую операндом приемника. Выставление флага системного преры- вания (TF) приводит к автоматическому генерированию ЦП сигнала прерывания
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 169 типа 1 после выполнения каждой команды, что имеет важное значение для организа- ции отладки программ в пошаговом режи- ме. Все внутренние прерывания (по пере- полнению, программное, по ошибке деле- ния и в пошаговом режиме) имеют сле- дующие характеристики: • Код типа прерывания содержится в самой команде прерывания или определяется заблаговременно. • Циклы шины, связанные с подтвер- ждением приема прерывания, не вы- полняются. • Внутренние прерывания не могут быть заблокированы, за исключе- нием сигналов прерывания, форми- руемых в пошаговом режиме выпол- нения программ. • Любое внутреннее прерывание (за исключением пошагового режима) имеет более высокий приоритет по отношению к любому внешнему прерыванию. Если прерывание про- исходит по сигналу NMI или INTR в момент выполнения некоторой ко- манды, вызывающей внутреннее прерывание, первым будет обслуже- но внутреннее прерывание. Таблица указателя прерываний. Эта таблица, называемая еще таблицей векто- ра прерываний, служит связующим звеном между кодом типа прерывания и програм- мой его обработки. Таблица может зани- мать до 1К байт младших адресов памяти и содержать до 256 элементов-по одному на каждый возможный в системе тип пре- рывания. Элемент таблицы представляет собой 32-разрядный адрес обслуживаю- щей программы, которой должно переда- ваться управление. Слово, расположенное в старших разрядах, указывает базовый адрес сегмента, а слово, записанное в младших разрядах,-адрес в пределах сегмента емкостью 64К. Процедуры обслуживания прерываний. При обращении к этим процедурам со- стояние флагов регистра программного сегмента и указателя команд запоминает- ся в стеке, а флаги TF и IF сбрасываются. Далее командой STI (выставление флага разрешения прерываний) вновь разре- шаются внешние прерывания, в результате чего становится возможным и прерывание самой этой процедуры сигналом INTR. В случае поступления сигнала немаскируе- мого прерывания NMI указанная процеду- ра прерывается при любых условиях. Стек должен иметь емкость, достаточную для реализации максимально возможной в си- стеме глубины вложения прерываний. Процедуры обслуживания прерываний должны завершаться командой возврата из прерывания IRET, которая выталкивает из стека слова, заносимые в указатель ко- манд, регистр программного сегмента и во флаговые разряды, осуществляя таким образом возврат к очередной команде, не выполненной по причине поступления сиг- нала прерывания. Пошаговое (системное) прерывание. Когда в процессоре 8086 выставляется флаг системного прерывания, считается, что работа происходит в пошаговом режи- ме, в котором процессор генерирует сиг- нал прерывания типа 1 после каждой ко- манды. В связи с тем что ЦП при этом автоматически фиксирует состояние фла- гов TF и IF в стеке, а затем сбрасывает их, микропроцессор во время отработки про- цедуры прерывания не будет находиться в пошаговом режиме. При возврате из процедуры пошагового прерывания восстанавливается прежнее состояние флага TF, а следовательно, и пошаговый режим. Для выставления или сброса флага TF должно изменяться отображение послед- него в стеке, поскольку специальная ко- манда для этих целей в микропроцессоре 8086 не предусмотрена. Контрольное прерывание. В процессе отладки программ в них обычно создают- ся контрольные точки, позволяющие ото- бражать или изменять состояние реги- стров, ячеек памяти и т.п. Такие точки могут располагаться в любом месте про- граммы. В них формируется сигнал преры- вания типа 3 (контрольная точка) коман- дой INT3, имеющей длину 1 байт. Столь короткая команда оказывается очень про- стым и удобным отладочным средством, вставка которого в программу не предста- вляет особого труда.
170 Глава 6 6.1.5. Назначение выводов и сигналов микропроцессора 8086 (рис. 6.6) Общие сигналы Наименование Назначение Тип AD15-AD0 Линии шины адреса/данных Двунаправленный, с тремя состояниями A19/S6—Al 6/S3 Адрес/состояние Выходной, с тремя сос- тояниями BHE/S7 Разрешена выборка старшего байта/ состояние » » MN/MX Управление режимом максимальной/ Входной RD минимальной конфигурации Управление чтением Выходной, с тремя сос- тояниями TEST Ожидание тестового контроля Входной READY Управление состоянием ожидания » » RESET Начальная установка системы » » NMI Запрос немаскируемого прерывания » » INTR Запрос прерывания » » CLK Часы системного времени » » Vcc + 5В Земля » » Сигналы режима минимальной конфигурации (MN/MX = Vcc) Наименование Назначение Тип HOLD Запрос захвата ВхОдной HLDA Подтверждение захвата Выходной WR Управление записью Выходной, с тремя сос- М/Ю тояниями Управление памятью/УВВ То же DT/R Передача/прием данных То же DEN Разрешение пересылки данных То же ALE Разрешение фиксации адреса Выходной INTA Подтверждение прерывания То же Сигналы режима максимальной конфигурации (MN/MX = GND) Наименование Назначение Тип RO/GT 1,0 Запрос/разрешение управления доступом к шине Двунаправленный LOCK Запрос к арбитру на захват управления шиной Выходной, с тремя сос- тояниями S2-S0 Состояние цикла шины То же QS1,QSO Состояние очереди команд Выходной Рис. 6.6. Выводы и сигналы микросхемы про- цессора 8086. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1979
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 171 gndC 1 40 3 vcc AD14C 2 39 □ AD15 AD13 С 3 38 □ A16/S3 AD12C 4 37 □ A17/S4 AD11 С 5 36 □ A18/S5 AD10 С 6 35 □ A19/S6 AD9 С 7 34 □ BHE/S7 AD8 С 8 33 3 MN/MX AD7 С 9 32 3RD AD6 С 10 цп6 31 □ HOLD (RQ/GT0) AD5 С н Ц 30 3 HLDA (RQ/GTl) AD4 С 12 29 3WR (LOCK) AD3 С 13 28 □ M/Ю (S2) AD2 С 14 27 3 DT/R (Si) ADI С 15 26 3DEN (SO) ADO С 16 25 3 ALE (QSO) NMI С 17 24 3 INTA (QS1) INTR С 18 23 3TEST CLK С 19 22 3 READY gndC 20 21 3 RESET В скобках указано назн. выводов в реж. макс, конфигурации (Напр., LOCK) Линии AD0-AD15 образуют 16-раз- рядную мультиплексную шину адресов и данных. В первом такте эти линии несут 16 младших разрядов адреса. Всего в ми- кропроцессоре 8086 имеется 20 адресных линий; по четырем старшим адресным ли- ниям A16/S3, A17/S4, A18/S5, A19/S6 в му- льтиплексном режиме передаются еще и сигналы состояния системы для ЦП. В течение первого такта определенная комбинация передаваемых по всем 20 ли- ниям двоичных сигналов образует 20-раз- рядный адрес. В остальных системных так- тах линии AD0-AD15 образуют 16-раз- рядную шину данных, а комбинация сигналов в линиях S3, S4, S5, S6 расши- фровывается как код назначения пересы- лаемых данных следующим образом: Комбинация сигналов Назначение пересылки А17/4 А16/3 0 0 Регистр дополнительного сегмента 0 1 Регистр стекового сег- мента 1 0 Регистр программного сегмента или отсутству- ющий сегмент 1 1 Регистр сегмента данных Линия A18/S5 сигнализирует о состоя- нии флага разрешения прерываний, а сиг- нал A19/S6 может использоваться для управления системной шиной. Сигнал BHE/S7, имея высокий уровень, разблокирует шину в первом такте выпол- нения команды. Совместно с сигналом AD0 он может использоваться для выбора нужных блоков памяти. Назначение линии S7 не определено. На выводе RD появляется низкий уро- вень сигнала, когда процессор считывает данные из памяти или из какой-либо ячей- ки ввода-вывода. Вывод READY используется внешними устройствами для сигнализации процессо- ру о необходимости введения в его цикл выполнения команд состояний ожидания. Вывод TEST используется в команде ожидания WAIT, по выполнении которой процессор переходит в состояние ожида- ния и пребывает в этом состоянии до тех пор, пока высокий уровень сигнала TEST не сменится низким. Линия INTR является входом сигнала маскируемого прерывания; она не снабже- на фиксатором, и потому сигнал INTR должен сохранять высокий уровень вплоть до момента его обнаружения и запуска процедуры обработки прерывания. Линия NMI представляет собой вход немаскируемого прерывания, возбуж- даемый передним фронтом сигнала. Век- тор прерываний располагается в ячейке с адресом 00008Н. Сигнал RESET служит для установки параметров системного цикла в исходное состояние. Этот сигнал должен действо- вать в течение четырех тактов. После его восприятия процессор 8086 осуществляет выборку и исполнение команды, храня- щейся в ячейке_с_адресом FFFF0H. Вывод MN/MX является входом для выбора_режима работы ЦП. Если сигнал MN/MX имеет высокий уровень, ЦП под- держивает минимальную конфигурацию микропроцессора 8086, в которой обеспе- чивается функционирование небольшой однопроцессорной вычислительной си- стемы с несколькими устройствами, ис- пользующими системную шину. При низ- ком уровне указанного сигнала процессор 8086 настраивается на максимальную кон-
172 Глава 6 фигурацию. В этом случае в систему добавляется шинный контроллер Intel 8288, обеспечивающий сложные операции управления шиной и совместимость про- цессора 8086 с многошинной архитектурой вычислительной системы. В режиме минимальной конфигурации все сигналы управления шиной генери- руются самим микропроцессором 8086. Таких сигналов восемь: Решение CLC MOV AL, SI ADC AL, DI DAA MOV DI. AL START: JMP START ; Очистка признака ; переноса ; Загрузка первого ; данною ; Прибавление вго- ; рого данного ; Десятичное вырав- ; нивание ; Запоминание рсзуль- ; тата DT/R (Data transmit/receive) Прием/передача данных DEN (Data enable) Разрешение пересылки данных ALE (Address Latch Enable) Отпирание фиксатора ад- реса M/IO (Memory/I/O control) Управление памятью и УВВ WR (Write) Запись INTA (Interrupt acknowledge) Подтверждение прерыва- ния HOLD (Hold) Захват HLDA (Hold acknowledge) Подтверждение захвата В случае максимальной конфигурации все сигналы управления шиной и выходные сигналы команд, необходимые для реали- зации цикла шины, формируются шинным контроллером 8288 с использованием вы- ходных сигналов микропроцессора 8086, соответствующих состояниям SO. S1 и S2. Выводы RQ/GT0 и RQ/GT11 обеспечи- вают управление доступом к шине процес- сора 8086 в режиме максимальной конфи- гурации. Выход LOCK в сочетании с арбитром шины 8289 гарантирует монопольный ре- жим доступа к совместно используемой системной шине. Линии QS1 и QSO, несущие сигналы со- стояния очереди, позволяют осуществлять внешний контроль за работой ОЗУ вну- тренней очереди команд. Вывод CLK служит входом тактовых импульсов от внешнего генератора. Пример 6.1 Требуется написать на языке ассембле- ра процессора 8086 программу сложения двух двоично-десятичных чисел, обеспечи- вающую запоминание результата в ячейке, адресуемой индексным регистром DI. Пример 6.21} Требуется написать программу на язы- ке ассемблера процессора 8086 для умно- жения двух двоичных 32-разрядных чисел без знака. Предполагается, что программа размещается в блоке памяти, указываемом регистром ВХ, и что данные представлены в следующей форме (рис. 6.7). Решение На с. 173, 174 приведен текст нужной программы на языке ассемблера. Источник: The 8086 Book by R. Rector and G. Alexy, 1980. Перепечатано с разрешения фирмы Osborne/McGraw-Hill.
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 173 8 младших разрядов > Операнд А 8 старших разрядов 8 младших разрядов > Операнд В 8 старших разрядов 8 младших разрядов > Операнд С 8 старших разрядов Рис. 6.7. Схема умножения двух 32-разрядных чисел без знака (С = А*В). NEXTSSMUL: MOV АХ, (ВХ) ; Умножение 16 младших разрядов MUL (ВХ + 4) ; на 16 младших разрядов 2-го числа MOV (ВХ + 8), АХ ; СОХРАНЕНИЕ РЕЗУЛЬТАТА В АХ MOV (ВХ + 10), DX ; И В DX MOV АХ, (ВХ) ; УМНОЖЕНИЕ 16 МЛАДШИХ РАЗРЯ- ; ДОВ ОПЕРАНДА А НА 16 СТАРШИХ MUL (ВХ + 6) ; РАЗРЯДОВ ОПЕРАНДА В ADD (ВХ + 10), АХ ; СЛОЖЕНИЕ С ПРЕДЫДУЩИМ РЕ- ; ЗУЛЬТАТОМ ADC (ВХ + 12), DX ; ПРИСВОИТЬ БАЙТАМ РЕЗУЛЬТАТА JNC NEXTSSMUL ; НАЧАЛЬНОЕ ЗНАЧЕНИЕ, РАВНОЕ НУ- ; ЛЮ INC (ВХ + 14) MOV АХ, (ВХ + 2) ; УМНОЖЕНИЕ 16 СТАРШИХ РАЗРЯДОВ ; ОПЕРАНДА А НА 16 МЛАДШИХ РАЗ- MUL (ВХ + 4) ; РЯДОВ ОПЕРАНДА В
174 Глава 6 ADD (ВХ + 10), АХ ADC (ВХ + 12), DX INC HIGHSORDER SSMUL INC (BX + 14) HIGHSORDER MOV AX, (BX + 2) SSMUL: MUL (BX + 6) ADD (BX + 12), AX ADC (BX + 14), DX RET ; СЛОЖЕНИЕ С ПРЕДЫДУЩИМ РЕ- ; ЗУЛЬТАТОМ ; ЗАПОМИНАНИЕ ПРИЗНАКА ПЕРЕНО- ; СА ; УМНОЖЕНИЕ 16 СТАРШИХ РАЗРЯДОВ ; ОПЕРАНДА А НА 16 СТАРШИХ РАЗ- ; РЯДОВ ОПЕРАНДА В ; СЛОЖЕНИЕ С ПРЕДЫДУЩИМ РЕ- ; ЗУЛЬТАТОМ ; СЛОЖЕНИЕ С ПРЕДЫДУЩИМ РЕ- ; ЗУЛЬТАТОМ ; ВОЗВРАТ В ОСНОВНУЮ ПРОГРАММУ 6.2. Микропроцессор Z80001) Это 16-разрядный микропроцессор со- вместного производства фирм Zilog и Advanced Micro Devices. Выпускается в двух модификациях: Z8001 с 48-штырь- ковой микросхемой ЦП с сегментной ор- ганизацией памяти и Z8002 с 40-штырько- вой микросхемой ЦП без сегментации памяти. Модификации различаются меж- ду собой только по способу адресации и размерам адресуемой памяти. Кристаллы микропроцессоров Z8001 и Z8002 имеют разную конструкцию, одна- ко оба они объединяются под одним на- званием «Z8000»; основное их отличие со- стоит в разных объемах адресного про- странства. Как тот, так и другой процессор имеют регистровую организацию. Второй из них содержит 21 16-разрядный регистр, из которых 14 могут играть роль реги- стров общего назначения, поскольку они способны хранить и данные, и адреса. Кон- струкцией процессора Z8002 предусмо- трены системный и обычный указатели стеков, флаговое слово, счетчик команд, счетчик числа регенераций динамической памяти, регистр команд и указатель со- стояния. В семействе Z8000 этот микро- процессор выступает как вариант с несег- ментированной памятью, поэтому он не имеет регистров сегментов и не может ра- Этот раздел содержит материал, пере- печатанный с разрешения фирм Zilog, Inc. и Advanced Micro Devices, Inc. ботать с адресами, структура которых предусматривает сегментную организа- цию памяти. А поскольку счетчик команд 16-разрядный, в данном случае возможна адресация лишь 64К байт. Микропроцессор Z8001 имеет сегмен- тированную память, и в нем, подобно про- цессору 8086, адрес нужной ячейки памяти определяется совместно значением адреса сегмента и исполнительным адресом или величиной смещения. Для адреса сегмента отводится семь разрядов, а для смеще- ния-16, благодаря чему возможна адреса- ция 8М байт памяти. Сложение адреса сег- мента и исполнительного адреса не обес- печивается внутренними схемами процес- сора, вследствие чего существует необхо- димость во внешней логике. В микропроцессорах семейства Z8000, как и в семействе 8086, предусмотрен и стандартный ввод-вывод, и ввод-вывод с распределением портов в адресном про- странстве памяти. Процессоры Z8001 и Z8002 (обозначаемые в дальнейшем как Z8001/2) имеют множество регистров об- щего назначения и мощную систему ко- манд, обеспечивающую работу с битами, байтами, словами обычной длины, длинными словами (32 бит) и словами четырехкратной длины (64 бит). В боль- шинстве команд предусматривается ис- пользование 8- и 16-разрядных значений. В моделях Z8001/2 реализуются стан- дартные команды пересылки данных, ма- тематических вычислений, логических опе- раций, манипулирования битами, управле-
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 175 ния процессором и передачи управления. Имеются, кроме того, специальные ко- манды умножения и деления, распростра- няющиеся и на 32-разрядные двоичные числа. Предусмотрены команды поблоч- ной пересылки данных и манипулирования строковыми значениями, причем неко- торые из таких команд способны сами ав- томатически изменять содержимое указа- телей в сторону увеличения или уменьше- ния. Реализован также целый ряд команд управления вводом-выводом и работой процессора. Микропроцессоры Z8001/2 способны работать в одном из двух режимов: си- стемном (привилегированном) или обыч- ном (непривилегированном). В обычном режиме ЦП находится тогда, когда он вы- полняет программу пользователя; в это время может действовать лишь некоторая часть системы команд, причем не могут выполняться команды ввода-вывода и ряд других. Системный режим ЦП имеет ме- сто тогда, когда он выполняет программы системного программного обеспечения; в этом режиме доступны все команды микропроцессора. 6.2.1. Структура ЦП микро- процессора Z8000 Ядром ЦП моделей этого семейства является регистровый файл общего назна- чения (рис. 6.8), представляющий собой группу регистров, каждый из которых мо- жет использоваться как аккумулятор, ин- дексный регистр, указатель адреса памяти, указатель стека и т.п. Единственное ис- ключение составляет регистр 0, о котором речь пойдет ниже. Кроме того, регистры микропроцессора Z8000 организованы та- ким образом, что позволяют работать с байтами, 16-битовыми словами, длинны- ми 32-битовыми словами и словами четы- рехкратной длины (64 бит). Хотя в общем случае все регистры мо- гут служить для любых целей, в кон- кретных командах, таких, как вызов под- программы или преобразование строково- го значения, используются вполне опреде- ленные регистры файла общего назначе- ния, и это следует иметь в виду при разработке программ. В дополнение к регистрам общего на- значения ЦП имеет ряд специализиро- ванных регистров, таких, как счетчик ко- манд, регистры текущего состояния про- граммы и счетчик числа регенераций. Доступ к этим регистрам обеспечивается программными средствами. Именно спе- циализированные регистры придают архи- тектуре ЦП микропроцессора Z8000 не- сколько интересных особенностей. 6.2.2. Архитектура регистров Процессоры Z8001/2 содержат боль- шое число 16-разрядных регистров (рис. 6.9). При работе с 16-разрядными ве- личинами эти регистры имеют обозначе- ния R0-R15. Регистр R15 представляет со- бой обычный указатель стека, a R15'-ука- затель стека системного режима. В Z8001 дополнительно к ним используются еще два регистра R14 и R14' для хранения адре- сов сегментов, связанных с двумя указате- лями стеков. В целях обеспечения опера- ций над байтами каждый из восьми первых регистров разделяется на два 8-разрядных регистра; например, R0 со- стоит из регистров RH0 и RL0. При работе с длинными словами (32 бит), наоборот, два 16-разрядных регистра объединяются в один, так что, например, R0 и R1 превра- щаются в RR0. В этом случае старшие раз- ряды хранятся в регистре с четным номе- ром, а младшие-в регистре с нечетным номером. Если выполняются операции над 64-битовыми словами, то четыре регистра группируются в один. Старшие разряды хранятся при этом в регистре с младшим четным номером, а младшие-в регистре со старшим нечетным номером. Все пере- численные регистры не имеют какого-либо конкретного функционального назначе- ния : каждый из них может использоваться для хранения количественной величины, относительного адреса, смещения или базы. Однако при работе со стеками всег- да задействованы регистры R15 и R15' (а в Z8001 еще и регистры R14 и R14'). В связи с тем что в процессоре Z8001 должно определяться значение сегментной части адреса, рассмотренные регистры ис- пользуются в нем несколько иначе, чем
ST3 ST2 ST1 STp NORMAL/SYSTEM REDA/WRITE WORD/BYTE AS ___DS MREQ BUSREQ BUSACK MJ MO Блок ynp 1 > мультимикро < ' процессорной сист I NMI —> SEGT —> VI —>• NVI —> Блок ynp внешними/ сист прерыв CLOCK — Блок ynp COCT ЦП Шина адреса/данных AD0-AD15 Адрес сегмента sn0-sn7 Рис. 6.8. Архитектура микропроцессоров се- мейства Z8000. Источник перепечатано с разрешения фирмы Zilog, Inc, copyright 1981
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 177 Рис. 6.9. Структура регистров микропроцессо- ров семейства Z8000. Источник перепечатано с разрешения фирмы Zilog, Inc, copyright 1981 в Z8002: во многих командах для форми- рования адреса памяти должны использо- ваться два регистра, а не один. Первый из них содержит 7-разрядную сегментную часть, а второй-16-разрядный относи- тельный адрес, смещение или исполни- тельный адрес. В процессорах семейства Z8000 предус- мотрены флаговое и управляющее слова, указатель области слов состояния про- граммы, счетчик (регистр) регенераций, а также счетчик команд и регистр команд. Регистры состояния программы обра- зуются группой из флагового управляю- щего слова (FCW) совместно со счетчиком команд. Указатель области слов состояния программы (PSAP) используется главным образом при возникновении прерываний микропроцессора. Счетчик регенераций обеспечивает в моделях Z8001/2 автомати- ческое восстановление содержимого дина- мической памяти. Интервал времени меж- ду последовательными регенерациями па- мяти может регулироваться в зависимости от типа конкретного ЗУ путем загрузки в счетчик соответствующей длительности цикла. В случае необходимости возможна блокировка регенерации. Флаговое управляющее слово содер- жит шесть программных флагов условий; большинство из них может проверяться командами передачи управления. Эти фла- ги располагаются в младшем байте FCW и представляют собой признак переноса (С), признак нуля (Z), знаковый флаг (S), признак нарушения четности/переполне- ния (P/V), признак десятичной корректи- ровки (DA) и признак полупереноса (Н). Старший байт FCW занимают упра- вляющие биты. Сегментирующий бит (SEG), имеющийся лишь в процессоре Z8001, позволяет настраивать его на рабо- ту без сегментации памяти, что обеспечи-
178 Глава 6 Способ адресации Адр операнда Значение операнда В команде В регистре В памяти Регистровая Операнд Содерж регистра Непоср Операнд В команде Непоср per Адрес Операнд Содерж ячейки, адрес которой указ в per Прямая Адрес Операнд Содерж ячейки, адрес которой указ в команде Индексная Смещение Содерж ячейки, для которой в команде указан адрес, смещенный на величину, записанную в рабочем регистре Значение в счетчике команд Относительная Смещение Ь Операнд Содерж ячейки, для которой в счетчике команд указан адрес, смещенный на величину, записанную в команде Рис. 6.10. Структура адресов при различных способах адресации памяти микропроцессора Z8002. Copyright 1981 Advanced Micro Devices, Inc (Воспроизводится с разрешения владельца авторского права) вает возможность выполнения программ микропроцессора Z8002. Флаг N/S указы- вает на текущий режим работы процессо- ра-обычный или системный. Флаги разрешения векторного (VIE) и невекторного прерывания (NVIE) позво- ляют судить о том, имело ли место преры- вание микропроцессора по сигналам, по- ступившим на эти входы микросхемы. Структура регистров Z8000 отображена на рис. 6.10. 6.2.3. Способы адресации Адресация памяти микропроцессора Z8002 выполняется простым способом, так как в нем адресуемое пространство состав- ляет всего лишь 64К байт. В связи с этим необходимо формировать только 16-раз- рядный адрес, который целиком умещает- ся в одном-единственном регистре либо ячейке памяти или в самом коде команды (рис. 6.10). В микропроцессоре Z8001 адресуются 8М байт памяти, и потому требуется фор- мировать адреса, состоящие из 7-разряд- ного номера сегмента и 16-разрядного чис- ла, определяющего величину смещения.
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 179 Семиразрядный номер сегмента должен использоваться внешними аппаратными средствами управления памятью, которые обеспечивают соединение обеих частей от- носительного адреса и формируют 23-раз- рядный действительный адрес. Эти аппа- ратные средства могут представлять со- бой специализированную микросхему бло- ка управления памятью 8010 или функцио- нальное логическое устройство, построен- ное на стандартных транзисторно-транзи- сторных логических схемах. Для адресации устройства ввода-выво- да используется 16-разрядный адрес по- рта, который содержится внутри самой ко- манды или располагается в регистре общего назначения. Благодаря такому ре- шению возможна организация 64К адре- суемых портов ввода-вывода без какого- либо пересечения с адресным простран- ством памяти процессора. Все команды ввода-вывода являются привилегиро- ванными, поэтому они могут ожидаться лишь при работе процессора в системном режиме. Семейство микропроцессоров Z8001/2 не имеет специальных базовых и ин- дексных регистров. Соответствующие им значения берутся из регистров общего на- значения процессора. При этом 4-битовое поле в коде операции используется для указания регистра, содержащего базовый адрес, индекс, смещение, абсолютный адрес, адрес ввода-вывода или число. Краткое описание различных возможных способов адресации приводится ниже: 1. Регистровая адресация. При адреса- ции с помощью регистров код команды содержит адрес регистра, в котором хра- нится операнд. 2. Непосредственная адресация. В этом случае в коде команды присутствуют 8-, 16- или 32-битовые операнды. 3. Косвенная адресация. При косвенной адресации регистр общего назначения, определяемый командой, содержит неко- торый адрес памяти. В случае процессора 8002 этот адрес хранится в 16-разрядном регистре, а при использовании процессора Z8001 для хранения указанного адреса тре- буются два регистра: один из них содер- жит смещение, а другой-сегментную часть адреса. 4. Прямая адресация. В случае прямой адресации адрес является неотъемлемой частью кода команды. 5. Индексная адресация. В процессоре Z8002 исполнительный адрес определяется как сумма содержимого регистра общего назначения, используемого в качестве ин- дексного и 16-разрядного адреса, указан- ного в команде. Если же используется про- цессор Z8001, то предварительно форми- руется 16-разрядное число путем сложения содержимого регистра общего назначения и 16-разрядного смещения, указываемого в команде. Далее это 16-разрядное число совместно с 7-разрядным номером сегмен- та, который определен в команде, исполь- зуется для формирования исполнительно- го адреса. 6. Базовая адресация. В этом режиме исполнительный адрес определяется как сумма так называемого базового адреса, содержащегося в указываемом регистре, и смещения, определяемого в команде. При базовой индексной адресации оба этих слагаемых размещаются в регистрах, задаваемых командой. 7. Относительная адресация. В случае относительной адресации выполняется сложение 8- или 16-разрядного смещения со знаком и обновленного содержимого счетчика команд. Этот способ адресации доступен для команд передачи управления и команд обращения соответствующего вида. 6.2.4. Система команд Основное различие между процессора- ми Z8001 и Z8002 состоит в неодинаковых возможностях адресации памяти; что же касается системы команд, то здесь оба процессора идентичны. Интересной особенностью процессора 8000 является наличие расширенных воз- можностей использования команд, в рам- ках которых такие базовые команды, как, например, команды арифметики с плаваю- щей запятой или поиска в базе данных, являются хранимыми. Когда ЦП обнару- живает код операции такой расширенной команды, инициируется ее выполнение внешним устройством, которое называет-
180 Глава 6 ся процессором расширения (ПР). Этот процессор помогает ЦП выполнять сложные, требующие больших затрат времени задачи в целях облегчения режи- ма его функционирования. В табл. 6.7 при- ведены все аббревиатуры, используемые в дальнейшем на рисунках, содержащих обозначения команд. Некоторые типичные команды процессора Z8000 рассматри- ваются ниже. Используя команду множественной за- грузки (LDM), можно одной командой со- хранить данные сразу об N регистрах, а применение команд INC или DEC позво- ляет давать содержимому регистра поло- жительное либо отрицательное прираще- ние величиной N, где N представляет собой 4-разрядное двоичное число. Эти ко- манды используются при манипулирова- нии адресами и указателями. Команда MULT обеспечивает умножение со знаком операнда из двух слов для получения длин- Таблица 6.1. Используемые аббревиатуры. Перепечатано с раз- решения фирмы Zilog, Inc., copyright 1981 Обозначения способов адресации Аббревиатура Расшифровка R Регистровая адресация IM Непосредственная адресация IR Косвенная регистровая адресация DA Прямая адресация X Индексная адресация RA Относительная адресация ВА Базовая адресация ВХ Базовая индексная адресация Сведения о сегментации S С сегментацией (Z8001) NS Без сегментации (Z8002) SS or SSO С сегментацией, с коротким словом, указывающим смещение (Z8001) SL or SLO С сегментацией, с длинным словом, указывающим смещение (Z8001) Информация общего характера Числа справа от обозначений команд указывают количество тактов, необходимое для их выполнения. Буквы и символы над кодом операции или справа от него указывают на формат команды (в мнемоническом обозна- чении), который должен использоваться при написании программ. Информация об операндах Аббревиатура Расшифровка dst Адресат информации src Источник R Регистр сс Код условия (для команд принятия решений) n Целое число IM Непосредственное значение данных
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 181 ного слова результата или двух длинных операндов с получением результата в виде слова 4-кратной длины. По команде DIV выполняется деление со знаком длинного слова на слово обычной,длины или слова 4-кратной длины на длинное слово. Ко- манды относительного вызова (CALR) и относительного перехода (JR) предста- вляют собой укороченные и более быстро- действующие модификации обычных ко- манд обращения и передачи управления соответственно, однако диапазон их при- менений ограничен. Любой разряд регистра или ячейки па- мяти может быть установлен в состояние «1», сброшен в «0» или проверен с исполь- зованием команд SET, RES и BIT соответ- ственно. В микропроцессоре Z8000 предус- мотрены также команды синхронизации процедур доступа в мультимикропроцес- сорной системе к таким ресурсам общего пользования, как общая память, шина или УВВ. Это команды MBIT (проверка разря- да в мультимикропроцессорной системе), MREQ (запрос в мультимикропроцессор- ной системе), MSET (установка разряда в мультимикропроцессорной системе) и MRES (сброс разряда в мультимикро- процессорной системе). В Z8000 есть также несколько команд, очень удобных для организации блочных пересылок или манипулирования цепочка- ми символов. Например, команды TRDB и TRIB-преобразование с отрицательным или положительным приращением со- ответственно - используются для преобра- зования кодов, и в частности кода ASCII в код EBCDIC. По этим командам про- изводится увеличение или уменьшение со- держимого регистра длины кода после ка- ждого шага преобразования. Команды TRTDB и TRTIB (преобразование и про- верка после отрицательного или положи- тельного приращения) реализуют провер- ку соответствия символа таблице перево- да. Перейдем теперь к более подробному рассмотрению различных команд процес- соров Z8001/2. 1. Команды загрузки и информационного обмена (табл. 6.8) В микропроцессорах Z8001/2 данные могут пересылаться в регистр из регистра, в регистр из памяти и в память из реги- стра. Непосредственный операнд в виде байта данных, слова или длинного слова может перемещаться в регистр или ячейку памяти. Содержимое регистра, непосред- ственно получаемое слово данных или сло- во в ячейке памяти могут сохраняться в стеке (проталкиваться в стек), равно как данные из стека могут извлекаться (вытал- киваться) в регистр или ячейку памяти. 2. Арифметические операции (табл. 6.9) Микропроцессоры Z8001/2 способны выполнять арифметические операции над числами со знаком и без знака. К числу ти- пичных арифметических операций отно- сятся сложение, вычитание, умножение и деление. 3. Логические команды (табл. 6.10) К логическим относятся команды, ре- ализующие операции И, ИЛИ, исключаю- щее ИЛИ и операцию образования допол- нительного кода. Возможна также провер- ка некоторого слова или байта путем логического сложения операнда с нулем и выставления соответствующих флажков состояния. Значение данных при этом не изменяется, а нуль не хранится в памяти или в регистре. Логические команды про- верки не одинаковы с командами сравне- ния. 4. Команды сдвига и циклического сдвига (табл. 6.11) Процессор способен выполнять про- стой или циклический сдвиг содержимого ячейки памяти либо регистра на число раз- рядов, определяемое командой. Та же ко- манда задает направление сдвига в обоих случаях.
182 Глава 6 Обозначение команды Операнды Способы адресации Реализуемая операция Обозначение команды Операнды Способы адресации Реализуемая операция CLR dst R Очистка ADC R, src R Сложение с парен. CLRB IR dst *—0 ADCB R — R + src + перенос DA ADD z R, ere R Сложение X ADDB IM R *— R •+ src EX R, src R Обмен ADDL IR EXB IR R 4-src DA DA X X CP R. src R Сранение с содерж. per. LD R, src R Загрузка в регистр СРВ IM R - 8ГС LDB IM R<-src CPL IR LDL IM DA IR X DA CP dst, IM IR Сравнение с нелоср. операндом X СРВ DA dst - IM BA X BX DAB dst R Десятич. коррект. LD dst, R IR Загрузка в память (сохранение) DEC dst, n R Уменьшение на п LDB DA (л последовательных слов) det — R DECB IR det — det - п LDL X DA (П w 1 ... 16) BA X BX DIV R. src R Деление /чисел со знаком/ LD dst IM IR Загрузка непосред операнда в память DIVL IM СловоR„,, —R„„ । J-src LDB DA dst«- IM IR R„ — остаток X DA Длин, слово Rn 2п з LDA R, src DA Загрузка адреса X — R„ „ з-т-src X R *- Адрес ист BA остаток BX EXTS dst R Распространение знака младшей LDAR R. src RA Загрузка относит адреса EXTSB половины результата на старшую R ♦- Адрес ист. EXTSL LDK R. src IM Загрузка константы INC dst, n R Увеличение на п R <—л (л-0 • 15) INCB IR dst — dst + n LDM R src, n IR Множественная загрузка DA (n - 1 • .16) DA R ♦—src (п Последовательных слов) X X (П- 1 16) MULT R, src R У множ, /чисел со знаком/ LDM dst R n IR Множественная загрузка в память MULTI IM Слово R„„ , R„ , • src DA dst — R (п последовательных слов) IR Длин, слово Rn „ з X (п« 1 . 16) DA —Rn ?п з * Src LDR R, src RA Загрузка по относит, адресу X * Плюс 7 цикл на каждую LDRB R — 8ГС ед. в множимом LDRL (диапазон-32768 • -32767) NEG dst R Инвертирование LDR dst, R RA Загрузка по относит, адресу с залом NEGB IR dst — 0 - dst LDRB dst ♦—R DA LDRL ( диапазон-32768 • • • -*-32767) X POP dst, R R Выталкивание из стека SBC R, src R Выч. с пер POPL IR dst — IR SBCB R — R — src — перенос DA Автомат увелич. содерж. per R SUB R, src R Выч X SUBB IM R — R —src PUSH IR src R Проталкивание в стек SUBL IR PUSHL IM Автомат, уменьш. содерж per. R DA IR IR — src X DA X Обозначение команды Операнды Способы адресации Реализуемая операция Обозначение команды Операнды Способы адресации Реализуемая операция AND R, src R Операция И RLDB R, src R Цикл сдвиг одноразр. числа влево ANDB IM R — R AND src RRDB R src R Цикл, сдвиг одноразр числа вправо IR RL dst, n R Цикл, сдвиг влево на DA RLB R п разрядов (п - 1 2) X RLC dst n R Цикл, перенос на л разрядов СОМ dst R Получение обрат кода RLCB R влево (л — 1,2) COMB IM det — NOT dst RR dst, n R Цикл, сдвиг вправо на IR RRB R п разрядов (п-1,2) DA RRC dst n R Цикл. пер. на п разрядов X RRCB R вправо (л - 1,2) OR R, src R Операция ИЛИ SDA dst, R R Дин. арифм сдвиг ORB IM R — R OR src SDAB Сдвиг результата влево или вправо IR SDAL на число разр опр per R DA SDL dst R R Дин. лог. сдвиг x SDLB Сдвиг результата влево или вправо TEST TESTS dst R IR Проверка условия det OR 0 SDLL SLA dst. n R на число разр опре per R Арифм. сдвиг влево TESTL DA SLAB на л разрядов X SLAL TCC cc dst R Пров, кода усл. и уст. 1 В в SLL dst, n R Логич сдвиг влево TCCB сост "1", если это условие ист. Опер. ИСКЛЮЧАЮЩ.ИЛИ SLLB на п разрядов XOR R. src R SLLL Арифм сдвиг вправо XORB IM R — R XOR src SRA dst n R R SRAB на п разрядов DA SRAL X SRL SRLB dst n R Логич сдвиг вправо на п разрядов SRLL
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 183 5. Команды ввода-вывода (табл. 6.12) Процессоры Z8000 могут выполнять команды ввода-вывода только лишь в си- стемном режиме. По этим командам воз- можен ввод информационных байтов или слов для записи в ячейки памяти и ре- гистры и действия в обратном направле- нии. При этом существует возможность адресации 64К отдельных портов ввода- вывода, что более чем достаточно для большинства применений. 6. Команды манипулирования битами (табл. 6.13) Эти команды могут использоваться для организации проверки состояния того или иного разряда на 0 или 1, для установ- ки или сброса конкретного бита как в реги- стре, так и в ячейке памяти. Обозначение команды Операнды Способы адресации Реализуемая операция IN* R, 8ГС IR Ввод INB* DA R — sre IND* INDB* det, arc, R IR Ввод с отриц. прир. dst — sre Автомат, уменьш. адреса результата R — R — 1 INDR* INDRB* det, arc, R IR Ввод, отриц. приращ. и повтор, dst — arc Автомат, уменьш. адреса результата R —R - 1 R - 0 INI* INIB* det, arc, R IR Ввод с положительным приращ. dat —arc Автомат, увелич. адреса результата R — R - 1 INIR* INIRB* det, ere, R IR Ввод с полож. приращ. и повтор dst— arc Автомат, уменьш. адреса результата R — R - 1 OUT* dst, R IR Вывод OUTB* DA dat — R OUTD* OUTDB* det, ere, R IR Вывод с полож. приращ. dst — arc Автомат, уменьш. адреса источн. R —R - 1 OTDR* OTDRB* det, ere, R IR Вывод, отриц. прир и повтор. dst — arc Автомат, уменьш. адреса источн. R — R - 1 OUTI* OUTIB* dst, sre, R IR Вывод с полож. приращ. dat — arc Автомат, увеличен, адреса источн. R — R - 1 OTIR* OTIRB* dat, sre, R IR Вывод, полож. приращ. и повтор, dst —arc Автомат, увеличен адреса источн. R —R - 1 SIN* SINB* R, sre DA Спец, ввод R — аге SIND* SINDB* dst. sre, R IR Спец, ввод с приращ. адреса dst — sre Автомат, уменьш. адреса результата R — R - 1 SINDR* SINDRB* dst, arc, R IR Спец, ввод с отриц. приращ. и повтор dst — sre Автомат, уменьш. адреса результата R —R —1 Повтор.до выполн. усл. R = 0 SINI* SINIB* dst, sre, R IR Спец, ввод с полож. приращ. dst <- sre Автомат, уменьш. адреса результата R ♦- R — 1
184 Глава 6 SINIR* SINIRB* dst, src. R IR Спец, ввод с полож. приращ. и повтор, dst «- src R«- R - 1 SOUT* SOUTB* dst, src DA Спец, вывод dst ♦- src SOUTD* SOUTDB* dst, src. R IR Спец, вывод с отриц. приращ. dst ♦- src Автомат, уменьш. адреса источн. R*—R - 1 SOTDR* SOTDRB* dst, src, R IR Спец, вывод с отриц. приращ. и повтор, dst ♦- src Автомат, уменьш. адреса источн. R *- R - 1 SOUTI* SOUTIB* dsl, src, R IR Спец, вывод с полож. приращ. dst «- src Автомат, увеличен.адреса источн4 R ♦- R - 1 SOTIR* SOTIRB* dst, src R R Спец, выводе полож. приращ. и повтор dst ♦- src Автомат, увеличен . адреса источника R «- R — 1 Обозначение Способы команды Операнды адресации Реализуемая операция BIT dst. b R BITB IR DA X BIT dst. R R BITB RES dst, b R RESB IR DA X RES RESB dst. R R SET dst, b R SETB IR DA X SET dst, R R SETB TSET dst R TSETB IR DA X Стат. пров. бита Флажок Z Инвертированный бит результата, указанный вЬ Динамическая пров. бита Флажок Z • Инвертир. бит результата, опред. содерж. R Сброс бита результата в соотв. с b Динамич. сброс бита Сброс бита результата в соотв. с содерж. R Статич. устан. бита Установка бита результата в соотв. cb Динамич. установка бита Устан. бита результата в соотв. с содерж. R Проверка с послед, устан. Флажок S *- Младший разр. рез. dst ♦ все единицы 7. Команды управления выполнением про- граммы (табл. 6.14) К этой группе относятся команды ус- ловного перехода, команды обращения, возврата и ряд других аналогичных ко- манд. Процессоры семейства Z8000 спо- собны реализовывать как безусловную передачу управления, так и 16 команд ус- ловного перехода (табл. 6.15). Адреса ус- ловных переходов ограничены диапазо- ном смещений от + 127 до — 128. 8. Команды блочных пересылок (табл. 6.16) Этими командами используются три регистра. Первый из них служит источни- ком данных, второй-регистром-приемни- ком, а третий содержит сведения о количе- стве пересылаемых данных. При работе с этими командами возможна организация пересылки одного байта или слова с после- дующим уменьшением содержимого счет- чика либо непрерывной передачи вплоть
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 185 Обозначение команды Операнды Способы адресации Реализ. операция CALL dst IR DA X Вызов подпрограммы Автомат, уменьш содерж. указ,, стека @ SP — PC PC — dst CALR dst RA Обращ. по относит, адресу Автомат, уменьш. содерж. указ стека @ SP •— PC PC — PC dst ( диапазон от 4094 до 4096i DJNZ DBJNZ R, dst RA Отриц. приращ. и переход по нерав.. нулю R - R 1 IF R 0 PC — PC dst ( диапазон от 254ДО0) IRET* — Возврат из лрерыв. PS - © SP Автомат увелич. содерж. указ, стека JP cc, dst IR IR DA X Усл. переход если операнд сс имеет знач. "истина" pc * dst JR cc, dst RA Усл. переход по относит, адресу если операнд сс имеет знач. "истина" PC *“РС + dst (диапазон от -256 до + 254) RET cc Условный возврат если операнд сс имеет знач. ' истина" PC * @ SP Автомат, уменьш. содерж. указ. SC src IM Сист. вызов @ SP — прежнее знач. S Р Запоминание команды в стеке PS — SP сист. вызова Код условия________Физический смысл______Состояние______________Знач. поля кода усл. (СС) Всегда истина 0000 Всегда ложь — 1000 Z Если нуль Z= 1 0110 NZ Если не нуль Z-0 1110 С Налич. переноса С- 1 0111 NC Отсутств. переноса С-0 1111 PL Если "плюс" S -0 1101 Ml Если "минус" S- 1 0101 NE Если "не равно" Z -0 11 10 EQ Если "равно" Z = 1 0110 OV Налич. переполи. P/V — 1 0100 NOV Отсутств. переполи. P/V- 0 1100 PE Четность P/V» 1 0100 PO Нечетность P/V- 0 1100 GE Больше или равно (» (S XORP/V) -0 1001 LT Меньше «) (S XOR P/V) ж 1 0001 GT Больше (» [Z OR (SXORP/V)]=0 1010 LE Меньше или равно (О [ZOR (S XOR P/V)] = 1 0010 UGE Больше или равно по абс. вел. C -0 1111 ULT Меньше по абс. вел. C ss 1 0111 UGT Больше по абс. вел. [(C -0) AND (Z-0)]- 1 1011 ULE Меньше или равно по абс. вел. (CORZ)-I 0011 Примечание: в кодах команд некоторые коды условий имеют одинаковые знач. флажков и идент. распол. полей:'Z = EQ: NZ = NE; C = ULT; NC = UGE, 0V = PE, NOV = PO. до нулевого значения показания счетчика. В случае Z8002 для указанных целей доста- точно трех регистров (двух для адреса и одного для организации счетчика). Если же используется процессор Z8001, то необ- ходимо иметь пять регистров, поскольку для хранения каждого адреса в данном случае нужны два регистра: один для сме- щения и один для сегментной части адреса. 9. Строковые команды (табл. 6.17) Некоторые из этих команд реализуют операцию сравнения значения, содержаще-
186 Глава 6 Обозначение Способы команды Операнды адресации Реализуемая операция LDI LDIB dst, arc, R IR Загрузка с увелич. адреса dat «—аге Автомат, увелич. адресов рез. и источн. LDIR LDIRB det, arc, R IR Загрузка с увелич. адреса и повтор. Автомат, увелич. адресов рез. и источн. LDD LDDB dst, arc, R IR Повтор, до выполн. усл. Я - О Загрузка с уменьш. адреса LDDR LDDRB dst, arc, R IR Автомат уменьш. адресов и источн. R *—R - 1 Загрузка с уменьш адреса и повтор. Автомат, уменьш. адресов рез и источн. R *—R - 1 Повтор до выполн. усл. R*» О Обозначение команды Операнды Способы адресации Реализуемая операция CPD CPDB Rx. sre, Ry. сс IR Сравн. с послед, уменьш. Rx — sre Автомат, уменьш. адреса источн. Ry — Ry — 1 CPDR CPDRB Rx, sre, Ry. cc IR Сравн. с послед, уменьш. адреса и повтор. R, — sre Автомат, уменьш. адреса источн. Ry *— Ry — 1 Повтор до получ. истин кода Ry « 0 CPI CPIB Rx. sre, Ry, cc IR Сравн. с послед, увелич. адреса Rx — sre Автомат, уменьш. адреса источн. Ry — Ry - 1 CPIR CPIRB Rx, sre, Ry, cc IR Сравн. с поел, увелич. адреса и повтор* Rx — sre Автомат, уменьш. адреса источн. Ry — Ry — 1 Повтор, до условия сс истинно или Rу = 0 CPSD CPSDB dst, sre, R, cc IR Сравн. цепочки симв. с послед, уменьш. dst — sre Автомат, уменьш. адресов источника и рез. R — R - 1 CPSDR CPSDRB dst, sre, R, cc IR Сравн. цепочки симв. с последующим уменьш. адреса и повтор , dst — sre Автомат, уменьш. адресов ист. и рез. R — R - 1 Повтор, до условия сс истинно или R = 0 CPSI CPSIB dst, sre, r, cc IR Сравн. цепочки с послед, увелич. адреса dst — sre Автомат, увелич. адресов источн. и рез. R *—R - 1 CP$IR CPSIRB dst, sre, R, cc IR Сравн. цепочки симв. с послед, увелич. адреса и повтор dst *-src Автомат, увелич. адресов источн. и рез. R — R - 1 Повтор, до условия истинно или R = 0
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 187 гося в регистре с одним или несколькими значениями, хранящимися в памяти. В группе строковых команд есть и такие, которые обеспечивают сравнение двух строк (двух последовательностей симво- лов), хранимых в памяти. 10. Команды преобразования (табл. 6.18) Фактически это команды просмотра таблиц. Они могут использоваться для преобразования одиночного байта или це- лой цепочки символов из одной формы представления данных, скажем в коде ASCII, в другую, например в код EBCDIC, перед пересылкой этих данных в другую микроЭВМ или на периферийное устрой- ство. Для выполнения преобразования ис- пользуются просмотровые таблицы. 11. Команды прерывания В микропроцессорах Z8001/2 реали- зуются всего лишь две команды прерыва- ния: разрешающая (EI) и запрещающая (DI). Для сигналов прерываний имеются три входа: немаскируемого (NMI), вектор- ного (VI) и невекторного (NVI) прерыва- ний. Немаскируемое прерывание не может быть запрещено командой DI; что же ка- сается двух других видов прерываний, то они могут разрешаться и запрещаться в любых комбинациях. Когда происходит прерывание, процес- сор сохраняет в памяти содержимое счет- чика команд, FCW и 16-битовое слово идентификатора, указывающего тип по- ступившего сигнала прерывания. При вы- ходе из прерывания по команде IRET вся эта информация выталкивается из стека. Обозначение Способы команды Операнды адресации Реализуемая операция TRDB dst. sre R IR TRDRB dst. sre. R IR TRIB dst. sre, R IR TRIRB dst. sre, R IR TRTDB arc 1, IR sre 2, R TRTDRB arc 1 IR arc 2. R TRTIB arc 1, |R arc 2, R TRTIRB arc 1, IR ere 2. R Преобраз с уменьш адреса dst 4- sre (dst) Автомат уменьш адреса рез R*~ R 1 Преобраз с уменьш. адреса и повтор, просмотра dst ♦- sre (dst) Автомат уменьш адреса рез R*- R - 1 Повтор просмотра до R О Преобраз, с увелич. адреса dst — sre (dst) Автомат, увелич адреса рез. R ч— R — 1 Преобраз, дан. с увел, адр.и повтор. dst sre (dst) просмотра Автомат увелич. адреса рез R4—R - 1 Повтор, просмотра до R • О Преобраз, в провер. усл. и уменьш. адреса RH1 4— sre 2 (sre 1) Автомат, уменьш. адреса источника sre 1 R*—R - 1 Преобраз, данных с увелич. адреса и повтор, просмотра RH1 sre 2 (ere 1) Автомат, уменьш. адреса источн. srcl R 4-R-1 Повтор, просмотра до R 0 или R Н1 » О Преобраз, с провер. усл. и увелич. адреса RH1 4- sre 2 (sre 1) Автомат, увелич. адреса источн. srcl R — R— 1 Преобраз, данных с увелич. адреса и повтор, просмотра RH1 4—sre 2 ^sre 1) Автомат, уменьш. адреса источн. srcl R*-R - 1 Повтор, просмотра до R« о или RH1 - О
188 Глава 6 Обозначение команды Операнды Способ адресации Реализуемая операция COMFLG flags — Инвертир. флага Любая комб. С, Z, S, Р/ V) DI* int — Запрет прерыв. Любая комб NVI VI) EI* int — Разреш прерыв Любая комб. NVI. VI) HALT* — — Останов LDCTL* CTLR, src R Загр. управл per. CTLR *- src LDCTL* dst, CTLR R Выгр из управл per dst * CTLR LDCTLB FLGR, src R Загр байтов флагового per FLGR ♦ src LDCTLB dst, FLGR R Вьпр байтов флагового per dst * FLGR LDPS* src IR DA Загр слова сост прогр PS * src MBIT* - X Проверка бита режима "мультимикро" Установ в единицу S, если сигн. /11 выс уровня сброс S, если /11 и низк. ур MREQ* dst R Опрос бита реж "мультимикро" MRES* — — Сброс реж "мультимикро" MSET* — — Устан реж. "мультимикро" NOP — — Нет операции RESFLG flag — Сброс флага Любая комб С, Z, S, Р' V) SETFLG flag — Устан флага Любая комб. С, Z, S, Р/ V) Примечание *— привилегированные команды. Выполняются лишь в системном режиме 12. Команды управления процессором (табл. 6.19) Эта группа команд служит для уста- новки, сброса и образования дополнения отдельных флажков флагового управляю- щего слова FCW. Они используются также для управления процессором в многопро- цессорной среде. Для чтения и записи информации фла- гового управляющего слова, обновления содержимого счетчика команд, указателя области слов состояния программы и обо- их указателей стеков (системного и обыч- ного) используются команды загрузки. 6.2.5. Система прерываний Процессоры Z8001/2 могут прерывать- ся по сигналам внутренних и внешних со- бытий. Внутреннее прерывание вызывает- ся следующими событиями: 1) оконча- нием выполнения команды системного вызова (SC); 2) обнаружением в програм- ме несуществующего кода операции; 3) при попытке выполнения процессором привилегированной команды в обычном режиме и 4) при обнаружении ошибки сег- ментации (в той форме, как это реализует- ся блоком управления памятью 8010). При возникновении внутреннего системного прерывания содержимое счетчика команд, флагового управляющего слова и 16-раз- рядного идентификатора, указывающего причину прерывания, проталкивается в стек. Вслед за этим процессором выби- рается из памяти информация о новом со- стоянии программы. Для адресации сег- мента памяти, в котором размещается эта информация, используется указатель обла- сти слов состояния программы. ЦП про- изводит выборку из указанной области но- вого значения счетчика команд и нового флагового управляющего слова. Для пре- рывания внешнего устройства в схемах ин- терфейса ЦП должны быть сформированы
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 189 AD0C 1 • 48 □ AD8 AD9Q 1 • 40 □ ADO AD9C 2 47 JSN6 AD10C 2 39 □ AD8 AD10C 3 46 JSN5 AD11 C 3 38 □ AD7 AD11C 4 45 JAD7 AD12C 4 37 □ AD6 AD12C 5 44 JAD6 AD13C 5 36 □ AD4 AD13C 6 43 JAD4 STOPE 6 35 □ AD5 STOP С 7 42 JSN4 ДТС 7 34 □ AD3 8 41 □ AD5 AD15C 8 33 □ AD2 ADI5 С 9 40 □ AD3 AD14C 9 32 □ adi AD14C 10 39 JAD2 VCcC 10 Z8002 31 □ gnd Vcc С 11 38 JAD1 vlC 11 30 □ clock VIC 12 Z8001 37 □ SN2 Nvi C 12 29 □ as nvIE 13 36 □ GND nmi e 13 28 □ DECOUPLE segtE 14 35 □CLOCK RESET C 14 27 □ b/w nmiE 15 34 □ AS дбе 15 26 □ n/s* RESET E 16 33 □ DECOUPLE MREQC 16 25 □ r/w £6E 17 32 □ B/W DSC 17 24 □ busak mreqE 18 31 ZJN/S ST3C 18 23 □ wait DSC 19 30 □ R/W ST2C 19 22 □ busrq ST3 C 20 29 □ BUSAK STI c 20 21 □ sto ST2 C 21 28 □ WAIT — STi C 22 27 □busrq stoc 23 26 □ SNO SN3C 24 25 □ SN1 Рис. 6.11. Выводы и сигналы микросхем про- цессоров семейства Z8000. Источник перепечатано с разрешения фирмы Zilog, Inc, copyright 1981 восемь самых младших разрядов адреса памяти, используемые в совокупности с информацией указателя области слов со- стояния программы при адресации памя- ти. Для организации внешних прерываний пользователю доступны входы немаски- руемого, невекторного и векторного пре- рываний. При использовании первых двух процессор всегда обращается к конкрет- ной ячейке памяти в пределах области слов состояния программы за новым зна- чением счетчика команд и флагового упра- вляющего слова. В случае использования векторного прерывания аппаратные сред- ства системы прерываний формируют во- семь младших разрядов, которые совмест- но с остальными разрядами, содержащи- мися в указателе области слов состояния программы, образуют нужный адрес па- мяти. После этого процессор приступает к выполнению стандартной подпро- граммы обслуживания данного внешнего устройства. 6.2.6. Схема расположения выводов и сигналы микропроцессора Z8000 Для адресации памяти процессорами Z8001/2 генерируется 7-разрядный номер сегмента и 16-разрядное смещение или 16-разрядный адрес. При адресации внеш- них устройств оба процессора формируют 16-разрядный адрес устройства. Кроме то- го, и тот и другой процессор связаны с па- мятью и внешними устройствами посред- ством 16-разрядной шины данных. 16 линий данных уплотнены 16 младшими линиями адреса AD0-AD15. Схема распо- ложения выводов и сигналы микропроцес- сора 8000 показаны на рис. 6.11. Выводы и сигналы имеют следующее назначение: Сигнал строба адреса AS имеет низкий
190 Глава 6 Таблица 6.20. Выходы сигнализации состояния системы. Пере- печатано с разрешения фирмы Zilog, Inc., copyright 1981 ST3 ST2 ST1 ST0 Функциональное назначение н н н н Внутренняя операция н н н в Регенерация памяти н н в н Обычная групповая операция ввода- вывода н н в в Специальная групповая операция вво- да-вывода н в н н Зарезервировано н в н в Подтверждение немаскируемого пре- рывания н в в н Подтверждение невекторного преры- вания н в в в Подтверждение векторного прерыва- ния в н н н Групповая операция над операндом в н н в Групповая операция над стеком в н в н Зарезервиро вано в н в в Зарезервировано в в н н Групповая операция над командой Предварительная выборка (очеред- ного слова) в в н в Групповая операция над командой Предварительная выборка (пер- вого слова) в в в н Зарезервировано в в в в Зарезервировано Примечание: В-высокий уровень сигнала; Н-низкий уровень сигнала уровень, когда на мультиплексных линиях адреса /данных появляется код адреса. ST0-ST3-3to четыре выхода, которые должны подвергаться внешнему декодиро- ванию с помощью каких-либо схем тран- зисторно-транзисторной логики, обеспечи- вающих различение операций работы с памятью и внешними устройствами (табл. 6.20). Входная клемма STOP обеспечивает пошаговый режим работы микросхемы. Для реализации этой возможности тре- буются внешние аппаратные средства. Вывод DECOUPLE (РАЗВЯЗКА) несет выходной сигнал внутреннего смещенного источника напряжения; этот сигнал не подлежит внешнему использованию. Сигнал R/W (Чтение/Запись) служит для управления операциями считывания и записи. Сигнал B/W (байт/не слово) исполь- зуется для оповещения о пересылке байта либо слова. Сигнал DS (строб данных) указывает на появление информации в линиях адреса/ данных. Вывод MREQ (запрос обращения к па- мяти) предназначен для сигнализации о том, что процессор осуществляет взаи- модействие с памятью. Сигнал N/S указывает на режим ра- боты процессора-обычный или си- стемный. MNI, NVI, VI-это три входа сигналов прерываний, о которых шла речь выше. BUS АК, WAIT, BUSRQ - выводы, предназначенные для управления систем- ной шиной; по своему функционированию они подобны соответствующим сигналам Z80. Вход синхронизации CLOCK предназ- начен для подключения внешнего тактово-
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 191 го генератора. Этот вход несовместим со схемами ТТЛ и потому требует наличия дополнительных цепей. 6.2.7. Типичная архитектура вычислительной системы на сонове микропроцессоров семейства Z80001) В этом параграфе дается описание ап- паратной реализации малой ЭВМ, по- строенной на основе 16-разрядного микро- процессора Z8002, микросхем обычных и стираемых программируемых ПЗУ, динамических ОЗУ и УВВ параллельного и последовательного действия. Формули- руются требования со стороны процессора Z8002 к интерфейсам памяти и внешних устройств на схемах Z80A, при этом по возможности предлагаются подходящие проектные решения. Блок-схема вычисли- тельной системы приведена на рис. 6.12. Сердцем ее является 16-разрядный микро- процессор Z8002. Жесткая программа и не- изменяемые данные хранятся в запо- минающей матрице, образуемой микро- схемами ПЗУ и ППЗУ емкостью 2К х 8 бит; 16 динамических ОЗУ емкостью по 16К х 1 бит образуют 32К байт оператив- ной памяти. Ввод-вывод осуществляется пятью УВВ. Два параллельных порта вво- да-вывода Z80A позволяют организовать двунаправленные порты для параллельной передачи сразу четырех байтов (по 32 ли- ниям) с квитированием связи. Последова- тельный порт ввода-вывода обеспечивает два полностью независимых дуплексных асинхронных или синхронных канала по- следовательной передачи данных. Четыре счетчика-таймера в блоке условной пере- дачи управления освобождают процессор от простых счетных операций и от задач синхронизации, а также генерируют про- граммным способом циклы, необходимые для передачи данных по каналам ввода- вывода последовательного действия с нужными скоростями. Соответствующая программа может опрашивать и интерпре- тировать восемь переключателей. 1} Источник: В. Pettner. Sample Programs in the MACRO 8000 Assembly Language for the Z8002. Advanced Micro Devices, 1981. Перепеча- тано с разрешения фирмы. На блок-схеме отображены также раз- личные поддерживающие функцио- нальные блоки. Кварцованный тактовый генератор формирует тактовые импульсы, совместимые со схемами устройств Z8002 и Z80A и дополнительно имеет два синхро- низирующих выхода для комплемен- тарных ТТЛ-схем. Запоминающие устрой- ства и УВВ управляются буферами адре- сов; фиксаторы адреса осуществляют разделение сигналов шины адресов/дан- ных, работающей по принципу временного уплотнения. Матрица ПЗУ работает совместно с де- шифратором адресов, в котором исполь- зуется код «один из восьми», а ОЗУ упра- вляются адресным мультиплексором и ге- нератором стробирующих импульсов кода адреса PAS/CAS. Синхронизирующие сиг- налы для всех этих функций управления ге- нерируются цепями управления шиной и схемой синхронизации. Нужные УВВ вы- бираются дешифратором ввода-вывода, для чего преобразователем управляющих сигналов процессора Z8002 в сигналы устройства Z80A генерируются соответ- ствующие эквивалентные управляющие сигналы. Подробное описание перечис- ленных цепей и сигналов дается ниже. 1. Цепь генерации синхронизирующих им- пульсов Для процессора Z8002 необходим по- стоянно работающий тактовый генератор с частотой импульсов от 500 КГц до 4 МГц. В целях обеспечения наилучших рабочих характеристик этот генератор обычно настраивается на верхнюю грани- цу диапазона частот. 2. Цепи выходных буферов ЦП Выходные сигналы Z8002 могут обес- печивать надежную работу при величине тока 2 мА и допускают подключение пяти входных цепей больших интегральных схем ТТЛ-логики. В сверхмалых системах буферные ТТЛ-схемы могут не использо- ваться, однако в большинзтве случаев не- обходимо бывает обеспечивать буфериро- вание сигналов линий адреса/данных и большей части выходных управляющих сигналов типа AS, DS, MREQ и R/W.
WAIT la0 , la15 Г енератор сост. ожидания Z8002 VI CE LAi-LAu LAi2-LA15 Сигн COCT Адресные стробы Управл сигналы Дешиф- ратор ПЗУ ПЗУ или ППЗУ типа 2К х 8 (общ. емк 4К - 32К байт) CLOCK “С WAIT ADq—AD]5 RD MOS CLOCK Мульти- плексор адресов Дешифратор ввода-вывода Де ши фр. сост Z80A Паралл. ввод-вывод Mi_____ IORQ” 16-разрядная адресная шина с фикс. Блок синхр и ynp. шиной RAS CAS EVEN CAS ODD R/W A LAj 4 □ Такт, ген. Преобр. упр сигн Z 8002 в упр сигн.2 8СА CLOCK INTERRUPT 7 линий Дин ОЗУ на 16К (общей емк 32К байт) 16-разр двунаправл. шина данных LA3-LA10 LA1( LA; Dq—D? I! Нечетные порты Внешн. устр блока Z80A с послед, схемой приоритетов прерыв Z80A Паралл. ввод-вывод A Z80A Блок условной передачи упр. J II А Z80A Послед, ввод-вывод Do~D7 Буфер с 3 состояниями 8 переключателей Рис. 6.12. МикроЭВМ на основе микропроцес- сора Z8002. Источник перепечатано с разрешения фирмы Zilog, Inc, copyright 1981 4-байт порты с квитированием связи 4 счетчика/ таймера Два дуплексных послед, канала с квитированием связи
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 193 3. Схемы фиксации адреса В процессоре Z8002 используется об- щая 16-разрядная шина адресов/данных, работающая в режиме разделения вре- мени. Сигналы этой шины должны подвер- гаться демультиплексированию с по- мощью фиксаторов, обеспечивающих их сопряжение со стандартными ЗУ. Для этих целей служат сигналы AS и BUS АСК и два фиксатора LS 373 на восемь входов, рабо- тающие в «прозрачном» режиме и осу- ществляющие «защелкивание» адресов. 4. Цепи адресации ПЗУ После установки системы в начальное состояние информация о статусе про- граммы считывается процессором Z8002 из ячеек с адресами 000216 и 000416. Таким образом, половина адресного простран- ства, соответствующая младшим адресам, используется для адресации ПЗУ или СППЗУ. В схеме на рис. 6.12 применено СППЗУ типа 2716 емкостью 2К х 8 бит, адресуемое по линиям фиксируемых адре- сов LAj LAjp Линия LA15 несет сигнал выбора микросхемы и служит для разделе- ния пространства адресов ПЗУ и ОЗУ. 5. Цепи адресации ОЗУ Старшая половина адресуемого про- странства памяти относится к 16 динами- ческим ОЗУ емкостью по 16К х 1 бит; для них сигнал в линии LA15 имеет высо- кий уровень. В целях уменьшения требуе- мого числа контактов микросхемы осу- ществляется мультиплексирование адре- сов ОЗУ, что позволяет иметь всего лишь семь адресных входов плюс два строби- рующих? RAS и CAS. Для передачи этих стробирующих сигналов используются со- ответственно линии MREQ и DS процессо- ра Z8002. 6. Схемы декодирования состояний Коды состояний снимаются с четырех выходов Z8002 (на рис. 6.11 это клеммы ST0-ST3). Все необходимые коды состоя- ний формируются с помощью двух деши- фраторов LSI38, работающих по схеме «один из восьми». 7. Схемы интерфейса внешних устройств Допускается применение внешних устройств, совместимых с шиной и не тре- бующих для сопряжения с Z8002 каких-ли- бо схем внешней логики. На рис. 6.12 по- казано несколько кодовых линий, обеспе- чивающих эмуляцию процессором Z8002 типичных управляющих сигналов Z80A, таких, как IORQ, Ml, RD и RETI. Пример 6.31} Требуется написать на языке ассембле- ра Z8002 программу сложения 64-разряд- ного двоичного числа, начинающегося в ячейке 3000Н, с другим 64-разрядным числом, записанным начиная с ячейки 3008Н. Решение Соответствующая программа имеет вид 1} Источник: В. Pettner, Sample Programs in the MACRO 8000 Assembly Language for the Z8002, Advanced Micro Devices, 1981. Перепеча- тано с разрешения фирмы. LD R8 ЗОО8Н ; УСТАНОВКА УКАЗАТЕЛЯ НА 1-Е ;ЗНАЧЕНИЕ POPL RR4 R8 ; СТАРШАЯ ПОЛОВИНА ЧИСЛА POPL RR6, R8 ; МЛАДШАЯ ПОЛОВИНА ЧИСЛА ADDL RR6, 3004Н ; СЛОЖЕНИЕ МЛАДШИХ ПОЛО- ; ВИН PUSHL R8, RR6 ; СОХРАНЕНИЕ РЕЗУЛЬТАТА В ; СТЕКЕ LDL RR0, зооон ; ОБРАЩЕНИЕ КО 2-Й ПОЛОВИНЕ ; 2-ГО ЧИСЛА ADC R5, R1 ; СЛОЖЕНИЕ СТАРШЕЙ ПОЛОВИ- ; НЫ МЛАДШЕЙ ЧАСТИ СЛОВА ; С ПЕРЕНОСОМ
194 Глава 6 PUSH R8, R5 ; ЗАПОМИНАНИЕ РЕЗУЛЬТАТА В ; СТЕКЕ ADC R4, RO ; СЛОЖЕНИЕ СТАРШЕЙ ПОЛОВИ- ; НЫ СТАРШЕЙ ЧАСТИ СЛОВА ; С ПЕРЕНОСОМ PUSH HALT R8 R4 ; ЗАПОМИНАНИЕ РЕЗУЛЬТАТА В ; СТЕКЕ ОСТАНОВ Пример 6.4 Необходимо написать на языке ассем- блера Z8002 программу сложения содер- жимого вершины стека со вторым значе- нием, хранящимся в стеке. Результат дол- жен быть помещен в стек. Решение Текст программы: рицательное число идентифицируется по «единице» в самом старшем разряде. Чис- ла хранятся в последовательно располо- женных ячейках памяти, начиная с адреса 3000Н. Результат запоминается в стеке. f) Нахождение минимального значения в цепочке из 10 чисел с использованием ин- дексного способа адресации. n g) Определение длины цепочки сим- POP RO, R15 ; ЗАГРУЗКА ЗНАЧЕНИЯ В PE- ; ГИСТР POP Rl, R15 ; И УМЕНЬШЕНИЕ R15 ADD RO, Rl ; СЛОЖЕНИЕ ЗНАЧЕНИЙ PUSH R15, RO ; УВЕЛИЧЕНИЕ R15 И ЗАГРУЗКА ; РЕЗУЛЬТАТА В СТЕК HALT ; ОСТАНОВ Задачи и вопросы 6.1. Используя системы команд микро- процессоров 8086 и Z8002, напишите на языке ассемблера программы, реализую- щие следующие функции: а) Сложение 32-разрядных двоич- ных чисел в режиме косвенной регистро- вой адресации. Ь) Разделение младшего байта числа, помещенного в вершину стека, на два по- лубайта с запоминанием их в стеке. Млад- шие четыре бита должны быть помещены в четыре младших бита первого занесенно- го в стек слова. Старшие четыре бита зано- сятся в младших бита слова, расположен- ного в стеке вторым. с) Нахождение обратного кода числа, расположенного в верхушке стека, с за- поминанием результата в стеке. 1} d) Нахождение суммы цепочки из десяти 16-разрядных двоичных чисел. Пер- вое число хранится в ячейке 3000Н. Сумма запоминается в стеке. е) Определение количества отрица- тельных элементов в ряду из пяти чисел: F10016, 015516, А01116, 000516, 71FF16. От- волов в коде ASCII; каждый символ коди- руется восемью битами, в самом старшем содержится нуль. Числа располагаются в последовательных ячейках памяти с адреса 3000Н. Информация о длине чисел хранится в ячейке 2000Н. Конец цепочки отмечается символом возврата каретки (‘cr’, OD16). h) Сопоставление двух цепочек симво- лов в коде ASCII на идентичность. Длина первой цепочки указывается в ячейке 3000Н и далее располагаются сами сим- волы. Длина второй цепочки указывается в ячейке 4000Н, вслед за которой идут сим- волы цепочки. Если обе цепочки иден- тичны, в вершину стека записывается адрес ЕЕЕЕ16, в противном случае-адрес 000Н. i) Формирование временной задерж- ки длительностью 1 мс. j) Вывод содержимого ячеек памяти с адресами от 3000Н до ЗООА на 10 мульти- плексных семисегментных индикаторов. к) Умножение 64-разрядного числа без знака на 32-разрядное число без знака. п См. сноску на с. 193.
Микропроцессоры 8086 фирмы Intel и Z8000 фирмы Zilog 195 1} 1) Деление 32-разрядного числа на 16-разрядное с учетом переполнения. Оба числа без знака. Можно использовать сле- дующий принцип: X[YZ = X\Yx I64 ч-Z gi х 164 4- Со «фЛ!/ х 164 + Z R । х 16 + Z 6.2. Каково назначение выводов TEST, MN/MX и DEN микросхемы процессора 8086? 6.3. Каково назначение выводов ST0-ST3, STOP, BUSRQ и BUSAK ми- кросхемы Z8002? 6.4. Определите на уровне функций ос- новные различия между процессорами 8086 и Z8000. 6.5. Сравните структуру систем прерывания в микропроцессорах 8086 и Z8000. 1} Перепечатано с разрешения фирмы Motorola.
Глава 7 МИКРОПРОЦЕССОР МОДЕЛИ 68000 ФИРМЫ MOTOROLA И МОДЕЛИ 432 ФИРМЫ INTEL Выше упоминалось, что микропроцес- сор Motorola 68000 является 16-разрядным устройством, a Intel 432-32-разрядным. Оба микропроцессора разработаны с ис- пользованием МОП-технологии с высо- кой плотностью компоновки. Фирма Intel недавно анонсировала 32-разрядныш микропроцессор Intel 432. Имеющаяся в наличии техническая инфор- мация по этому процессору не позволяет, однако, дать такое же полное описание его характеристик, какое удавалось сделать по 16-разрядным микропроцессорам. Поэто- му ниже будет представлено только функ- циональное описание микропроцессора Intel 432. 7.1. Микропроцессор 68000 фирмы Motorola1* Микропроцессор 68000 -16-разрядный с 32-разрядной внутренней архитектурой. В нем реализована прямая адресация не- сегментированной памяти емкостью 16М байт. Микропроцессор имеет 17 32-раз- рядных регистров общего назначения, 16-разрядный регистр состояния и 32-раз- рядный счетчик команд. Восемь общих ре- гистров служат регистрами данных, семь являются адресными регистрами, а два- указателями стека. Восемь регистров данных могут ис- пользоваться при выполнении операций над байтами, словами и 32-разрядными двойными словами (длинными словами). Адресные регистры способны выполнять функции регистров базового адреса и про- граммных указателей стека, которые мо- гут адресовать байты, обычные слова Этот раздел написан на основе мате- риалов фирмы Motorola. и двойные слова. Любой из 16 регистров общего назначения может использоваться в качестве индексного. Микропроцессор 68000 имеет 24-раз- рядную адресную шину, что позволяет ему непосредственно адресовать память ем- костью 16М байт. Из 32 разрядов счетчика команд используются только 24 младших разряда. Младшие 8 байт памяти содер- жат вектор сброса, или вектор начальной установки. Кроме того, в младших 1К байт памяти содержатся векторы сигналов прерываний, векторы прерываний по ошибкам и векторы, связанные с другими типами исключительных ситуаций. Кроме указанной области, все 16М байт памяти находятся в распоряжении пользователя. Микропроцессор 68000 имеет 16-раз- рядную шину данных, линии для асинх- ронного управления периферийными устройствами микропроцессора 68000, ли- нии для синхронного управления низко- скоростными устройствами, например та- ким, как 8-разрядное внешнее устройство МС-6800. Микропроцессор обеспечивает возможность как аппаратных, так и про- граммных прерываний и режим трасси- ровки при отладке программ. Микропроцессор 68000 проектировался с учетом обеспечения поддержки опера- ционных систем. Он может находиться в одном из двух рабочих состояний: в пользовательском режиме, когда микро- процессор выполняет программы пользо- вателя, и в супервизорном режиме, когда микропроцессор выполняет определенные привилегированные команды. Микропроцессор 68000 может выпол- нять операции с данными следующих пяти типов: битами, 4-разрядными двоично-де- сятичными цифрами, 8-разрядными байта- ми, 16-разрядными словами и 32-раз- рядными двойными словами. Набор ко-
Микропроцессор модели 68000 и модели 432 197 манд состоит из 56 типов основных инструкций. Наличие 14 режимов адреса- ции, пяти типов данных и 56 основных ти- пов инструкций позволяет микропроцессо- ру выполнять более 1000 различных команд. Наиболее быстро выполняются команды пересылки данных из одного ре- гистра в другой; они выполняются за четыре такта, или за 50 нс при частоте сле- дования синхроимпульсов, равной 8 МГц. Наиболее медленно выполняется команда деления 32-разрядного операнда на 16-раз- рядный операнд; ее выполнение может по- требовать до 170 тактов, или 21,25 мкс при тактовой частоте, равной 8 МГц. Микропроцессор 68000 не имеет спе- циальных команд ввода-вывода с распре- делением памяти. Все команды обращения к памяти могут использоваться и для обращения к устройствам ввода-вывода, поскольку обращения к устройствам вво- да-вывода внешне не отличаются от обра- щений к памяти. 7.1.1. Архитектура процессора 1. Внутренние регистры Микропроцессору 68000 присущи мно- гие черты как 32-разрядного, так и 16-раз- рядного микропроцессора. Он имеет 17 32-разрядных регистров (восемь регистров данных, семь адресных регистров и два указателя стека). Кроме того, в нем есть 32-разрядный счетчик команд, в котором используются только младшие 24 разряда. Регистр состояния микропроцессора имеет 16 разрядов. Перечисленные ре- гистры представлены на рис. 7.1. 7 адресных регистров 2 указателя стека 31 0 г------------------------------------------------1 Счетч и к I I команд 15 8 7 _________0 I Байт । Байт пользо-1 I системы । вателя I Регистр сост. Рис. 7.1. Внутренние регистры. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982
198 Глава 7 2. Регистры данных (D0-D7) и адресные регистры (А0-А6) В регистры данных могут быть запи- саны и считаны из них байты, 16-раз- рядные слова и 32-разрядные двойные слова. Адресные регистры могут содер- жать слова и двойные слова. Все регистры являются общими, однако в системе ко- манд предусматривается использование регистров данных для хранения данных, а адресных регистров для хранения адре- сов памяти. 3. Указатели стека Адресный регистр А7 используется как указатель стека. Указатели стека имеют одно и то же обозначение адреса, посколь- ку только один стек используется в каж- дом из двух состояний процессора. Когда процессор 68000 находится в пользгуа- тельском режиме, регистр А7 является ука- зателем стека пользователя. Когда процес- сор работает в супервизорном режиме, адресный регистр А7 представляет собой указатель стека супервизора. 4. Счетчик команд Так как в современной реализации ми- кропроцессора 68000 счетчик команд фак- тически имеет длину 24 разряда, при нали- чии внешней памяти у микропроцессора 68000 могут использоваться адреса памяти в диапазоне 000000H-FFFFFFH. Для обращения к байтам могут использовать- ся как четные, так и нечетные адреса памя- ти. Доступ к словам и двойным словам мо- жет производиться только по четным адресам. Выводы адресных линий на кор- пусе микропроцессора 68000 имеют обо- значения А1-А23. Значение разряда АО определяется внутри кристалла по сигна- лам стробирования данных. Эти сигналы имеют обозначения: UDS (Upper Data Strobe) - строб старших данных, LDS (Lower Data Strobe)-строб младших данных. Для передачи слова оба строби- рующих сигнала должны иметь высокий уровень. Если пересылается байт, то толь- ко один из стробов данных должен иметь высокий уровень: при четном номере бай- та высокий уровень имеет сигнал UDS, при нечетном - сигнал LDS. 5. Регистр состояния Регистр состояния микропроцессора 68000 содержит два байта - «системный байт» и «байт пользователя», изобра- женные на рис. 7.2. Байт пользователя хранит пять флаговых разрядов условий. 1) Флаг С (перенос) устанавливается при появлении переноса во время выпол- нения команды сложения, при появлении заема во время операции вычитания, зна- чением определенного бита при выполне- нии команды сдвига и т.д. 2) Флаг V (переполнение) устанавли- вается при выполнении операций над чис- лами со знаками. Он устанавливается в 1, если при выполнении операции сложения или вычитания возникает переполнение, т.е. получается результат, выходящий из диапазона значений чисел, предста- вленных в дополнительном коде; в других случаях флаг V устанавливается в 0. 3) Флаг Z (нуль) устанавливается в 1, если при выполнении операции получается нулевой результат. 4) Флаг N (знак) устанавливается в 1, если старший разряд результата операции имеет значение 1 (отрицательное число). Этот флаг принимает значение 0, если старший разряд результата имеет значе- ние 0 (положительное число). Результат может быть байтом, словом или двойным словом. 5) Флаг X (расширение) используется при выполнении операций с повышенной точностью и при некоторых арифметиче- ских операциях принимает то же значение, что и флаг С. Эти флаги используются в командах условного перехода, которые в зависимо- сти от состояния флажков выполняют или не выполняют передачу управления. Системный байт регистра состояния имеет три поля. Разряды маски прерываний (10, 11, 12) задают числовое значение для уровня при- оритета запросов прерываний. Любые за- просы прерываний, имеющие уровень при- оритета, больший, чем число, задаваемое полем маски (10, И, 12), будут обрабаты- ваться микропроцессором. Флаг S (супервизор) имеет значение 1, когда микропроцессор 68000 работает в супервизорном режиме; когда значение
Микропроцессор модели 68000 и модели 432 199 Байт пользователя 4 0 Режим трассировки- Байт системы 15 13 10 8 X N Z Состояние супервизора Маска прерывания "Расширение" 'Отрицательный результат1 Коды условий "Нуль" "Переполнение" "Перенос" Рис. 7.2. Регистр состояния. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 S равно 0, микропроцессор находится в пользовательском режиме. Флаг Т (трассиврока) в состоянии 1 раз- блокирует внутренние схемы микропро- цессора 68000, используемые в режиме от- ладки программ. Если флаг Т установлен в состояние 1, процессор выполняет ко- манды в специальном пошаговом режиме: после выполнения каждой команды он переходит в режим супервизора и затем передает управление программе пользова- теля, предназначенной для выполнения трассировки. Эта программа обеспечивает анализ содержимого регистров или со- стояние заданных областей памяти; она может выполнять любые другие операции по отладке программ. Все неиспользуемые разряды регистра состояния всегда имеют значение 0. 7.1.2. Способы адресации В микропроцессоре 68000 реализовано 14 способов адресации. Эти способы адре- сации делятся на шесть основных групп: прямая регистровая адресация, косвенная адресация по адресному регистру, абсо- лютная адресация, относительная адреса- ция с использованием счетчика команд, не- посредственная адресация, неявная адреса- ция. Перечисленные группы способов адресации представлены в табл. 7.1. Некоторые способы адресации, реали- зованные в микропроцессоре 68000, облег- чают программирование алгоритмов, в которых используются стеки и очереди. Например, один способ реализации стека в программе пользователя состоит в при- менении автодекрементной или автоин- крементной косвенной адресации по адрес- ному регистру. Стек, заполняемый в направлении уменьшения адресов эле- ментов памяти, можно реализовать, ис- пользуя адресацию Ап @ — при записи данных в стек и адресацию Ап @ + при считывании данных из стека. С другой сто- роны, стек, заполняемый в направлении увеличения адресов, реализуется с исполь- зованием адресации Ап @ + при записи данных и адресации Ап @ — при считыва- нии данных из стека. Очередь может быть реализована с ис- пользованием косвенной автоинкремент- ной и автодекрементной адресации по адресному регистру. Один адресный ре- гистр используется как указатель начала очереди, а другой-как указатель конца очереди. Очередь может двигаться как в сторону возрастания адресов элементов памяти, так и в сторону их уменьшения. Опишем подробнее различные способы адресации, реализованные в микропроцес- соре 68000.
200 Глава 7 Таблица 7.1. Способы адресации. Источник: перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Способ адресации < Нормирование адреса Обозначение на языке ассемблера Прямая регистровая адресация Прямая адресация регистров дан- ных Прямая адресация адресных ре- гистров Косвенная адресация по адресному регистру Косвенная адресация по регистру Автоинкрементная косвенная ад- ресация по адресному регистру Автодекрементная косвенная ад- ресация по адресному регистру Косвенная адресация по регистру со смещением Косвенная адресация по регистру со смещением и индексирова- нием Абсолютная адресация данных Абсолютная короткая адресация Абсолютная длинная адресация Относительная адресация по счетчи- ку команд Относительная адресация со сме- щением Относительная адресация со сме- щением и индексированием Непосредственная адресация данных Обычная непосредственная адре- сация «Быстрая» непосредственная адре- сация Неявная адресация Неявная адресация регистров ЕА = Dn ЕА = Ап ЕА = (Ап) ЕА = (Ап), Ап Ап 4- N Ап Ап - N, ЕА = (Ап) ЕА = (Ап) 4- d16 ЕА = (Ап) 4- (Ri) 4- d8 ЕА = (Следующее сло- во) ЕА = (Следующие два слова) ЕА = (PC) + d16 ЕА - (PC) + (Ri) + d8 DATA = Следующее сло- во (слова) Данные в первом слове команды ЕА = SR, USP, SP, PC Dn Ап (Ап) (Ап) + -(Ап) d(An) d(An, Ri) хххх хххххххх d d(Ri) #хххх *хх Примечания В таблице использованы следующие обозначения ЕА-исполнительный адрес, USP-указатель стека пользователя; Ап-адресный регистр; Dn-регистр данных; d8-8-разрядное смещение; Ri-адресный регистр или регистр данных, d16-16-разрядное смещение, используемый в качестве индексного регистра, N = 1 для байтов, N = 2 для слов, N = 4 для двойных слов, SR-регистр состояния; ()-содержимое регистра или поля данных; PC-счетчик команд, <—операция замещения. SP-активный системный указатель стека, 1. Прямая регистровая адресация. При этом способе адресации операнд содержится в одном из восьми регистров данных (D0-D7) или в одном из адресных регистров. 2. Косвенная адресация по адресному реги- стру В этом способе адресации адресный ре- гистр содержит 24-разрядный адрес опе- ранда. Существует пять различных ва-
Микропроцессор модели 68000 и модели 432 201 риантов косвенной адресации по адресно- му регистру. Например, в основном спосо- бе косвенной адресации по адресному регистру, который называют просто кос- венной адресацией по регистру, адресный регистр содержит исполнительный адрес. При автоинкрементной косвенной адресации по адресному регистру цен- тральный процессор после использования адреса увеличивает содержимое адресного регистра на 1, 2 или 4. Величина прираще- ния зависит от того, является ли операн- дом в исполняемой команде байт, слово или двойное слово. При автодекрементной косвенной адресации по адресному регистру микро- процессор сначала уменьшает содержимое адресного регистра на 1, 2 или 4, а затем использует его содержимое в качестве адреса. Вычитаемая из содержимого реги- стра величина определяется длиной опе- ранда (8, 16 или 32 бит), заданного в команде. Два других вида косвенной адресации по адресному регистру обеспечивают обращение, например, к таблицам данных посредством использования при вычисле- нии исполнительного адреса смещения и содержимого индексного регистра. В способе косвенной адресации со смеще- нием (адресация по базе11) исполни- тельный адрес определяется путем сложе- ния 16-битового целого числа со знаком с содержимым адресного регистра. При косвенной адресации по регистру со сме- щением и индексированием (адресация по базе с индексированием11) исполни- тельный адрес определяется посредством сложения 8-разрядного целого со знаком с содержимым индексного регистра (реги- стра данных или адресного регистра) и со- держимым адресного регистра. 3. Абсолютная адресация При этом способе исполнительный адрес непосредственно содержится в ко- манде. Микропроцессор 68000 реализует 11 Указанные в скобках названия способов адресации приняты в книге Дж. Уокерли Ар- хитектура и программирование микроЭВМ, М.: Мир, 1984-Прим, перев. два режима абсолютной адресации: абсо- лютную короткую, в которой использует- ся 16-разрядный адрес, и абсолютную длинную, при которой адрес 24-раз- рядный. 4. Относительная адресация В микропроцессоре 68000 используется два способа относительной адресации по счетчику команд: относительная адреса- ция со смещением и относительная адреса- ция со смещением и индексированием. При относительной адресации со смеще- нием исполнительный адрес получается путем сложения текущего значения счетчи- ка команд с 16-разрядным смещением, ко- торое предварительно расширяется до 24 бит с учетом знака. При относительной адресации с индек- сированием и смещением исполнительный адрес равен сумме трех величин: текущего содержимого счетчика команд, содержи- мого индексного регистра и 8-разрядного смещения, являющегося целым числом со знаком. 5. Непосредственная адресация Операнд в этом случае представляет собой данные (константу), содержащиеся непосредственно в команде. Если опе- ранд-8-бит константа, то адресацию на- зывают «быстрой непосредственной», в других случаях используется общее на- звание «непосредственной адресации». 6. Неявная адресация В системе команд микропроцессора 68000 есть несколько таких, в которых не- явно используются: счетчик команд PC (Program Counter), указатель системного стека SP (System Stack Pointer), указатель стека супервизора SSP (Supervisor Stack Pointer), указатель стека пользователя USP (User Stack Pointer), регистр состоя- ния SR (Status Register). Например, коман- да JMP, хотя в ней явно не указывается счетчик команд (табл. 7.2), позволяет за- гружать в него некоторое значение. Отме- тим, что в командах PEA, RTE и неко- торых других, представленных в табл. 7.2, автоматически используется указатель стека SP, т. е. системного стека.
202 Глава 7 Таблица 7.2. Команды с неявной адресацией регистров. Источник: перепе- чатано с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Команды Регистры Условный переход (Всс), безусловный переход (BRA) PC Безусловный переход к подпрограмме (BSP) PC, SP Проверка содержимого регистра на принадлеж- ность заданному диапазону (СНК) SSP, SR Команда организации завершения цикла по усло- вию (DBCC) PC Деление с учетом знака (DIVS) SSP, SR Деление без учета знака (DIVU) SSP, SR Безусловный переход (JMP) PC Безусловный переход к подпрограмме (JSR) PC, SP Создание связи с подпрограммой (LINK) SP Пересылка в регистр кода условий (MOVE CCR) SR Пересылка в регистр состояния (MOVE SR) SR Пересылка в указатель стека пользователя (MOVE USP) USP Запись исполнительного адреса в стек (РЕА) SP Возврат из подпрограммы обработки преры- ваний (RTE) PC, SP, SR Восстановление регистра кода условий и возврат (RTR) PC, SP, SR Возврат из подпрограммы (RTS) PC, SP Организация системного прерывания (TRAP) SSP, SR Организация системного прерывания при пере- полнении (TRAPV) SSP, SR Уничтожение связи с подпрограммой (UNLK) SP 7.1.3. Система команд Набор команд микропроцессора 68000 представлен в табл. 7.3. Команда, как по- казано на рис. 7.3, может занимать от 1 до 5 байт памяти. Микропроцессор 68000 имеет 56 основных типов команд. Рассмотрим некоторые из команд ми- кропроцессора 68000. Хотя в его системе команд отсутствуют команды увеличения на 1 значение или уменьшения на 1 значе- ние операнда, в нем реализованы одно- словные команды ADDQ и SUBQ, ко- торые обеспечивают увеличение или уменьшение некоторого числа (операнда) на величину, не большую чем 8. Кроме то- го, имеется команда MOVEQ, которая ис- пользуется для загрузки в регистр предва- рительно расширенной с учетом знака константы, для представления которой требуется менее 8 бит. С целью повышения эффективности реализации программ в микропроцессоре 68000 предусмотрены команды с двумя операндами (операндом, который является источником данных, и операндом, по адресу которого будет за- писан результат операции), содержащими- ся в памяти системы. Такими командами являются ADDX, CMP М, MOVE, ABCD, SBCD и SUBX. Команда MOVE, занимаю- щая в памяти одно слово, позволяет пере- сылать данные из регистра в регистр, из памяти в регистр, из регистра в память, а также из памяти в память. Команда MOVEM занимает в памяти одно слово и используется для «упрятывания» содер- жимого адресных регистров и регистров данных в память с последующим считыва- нием данных из памяти и записи их в ре- гистры. Команда DBcc (проверка условия, уменьшение на единицу регистра данных и передача управления) очень полезна для организации циклов. По этой команде сна- чала проверяется, не удовлетворяется ли
Микропроцессор модели 68000 и модели 432 203 Таблица 7.3. Система команд микропроцессора 68 000 Мнемоническое обозначение Смысл команды ABCD ADD AND ASL ASR Bcc BCHG BCLR BRA Сложение двоично-десятичное с расширением Сложение Логическая операция И Арифметический сдвиг влево Арифметический сдвиг вправо Условный переход Проверка и изменение бита Проверка и сброс бита Безусловный переход по адресу в пределах 32К байт от местоположения команды BSET BSR Проверка и установка бита Безусловный переход к подпрограмме по адресу в пределах 32К байт от местоположения команды BTST CHK Проверка бита Проверка содержимого регистра на принадлеж- ность заданному диапазону CLR CMP DBCC Установка операнда в 0 Сравнение Команда организации завершения цикла по усло- вию DIVS DIVU EOR EXG EXT JMP JSR LEA LINK LSL LSR MOVE MOVEM MOVEP MULS MULU NBCD Деление с учетом знака Деление без учета знака Исключающее ИЛИ Обмен значениями двух регистров Знаковое расширение байта или слова Безусловный переход Безусловный переход к подпрограмме Загрузка исполнительного адреса Создание связи с подпрограммой Логический сдвиг влево Логический сдвиг вправо Пересылка Пересылка содержимого регистров групповая Пересылка данных периферийных устройств Умножение с учетом знака Умножение без учета знака Изменение знака двоично-десятичное и вычита- ние NEG NOP NOT OR PEA RESET ROL ROR ROXL Изменение знака Нет операции, или холостая команда Инверсия, или дополнение до 1 поразрядное Логическая операция ИЛИ Запись исполнительного адреса в стек Сброс внешних устройств Циклический сдвиг влево Циклический сдвиг вправо Циклический сдвиг влево с использованием бита расширения ROXR Циклический сдвиг вправо с использованием бита RTE RTR RTS SBCD расширения Возврат из подпрограммы обработки прерываний Восстановление регистра кода условий и возврат Возврат из подпрограммы Вычитание двоично-десятичное с расширением
204 Глава 7 Таблица 7.3 (продолжение) Мнемоническое обозначение Смысл команды $сс STOP SUB SWAP TAS Установка значения условия Останов Вычитание Обмен 16-битовых частей регистра Проверка байта памяти и установка значения его старшего бита TRAP TRAPV Организация системного прерывания Организация системного прерывания при пере- полнении TST UNLK Проверка значения Уничтожение связи с подпрограммой Источник, перепечатано с разрешения фирмы Motorola Semiconductor Productors, Inc., copyright 1982. 15 14 13 12 10 9 8 7 6 5 4 3 2 1 0 Командное слово (первое слово определяет операцию и способы адресации) Непосредственный операнд (если используется, то занимает одно или два слова) Расширение исполнительного адреса источника (если используется, то занимает одно или два слова) Расширение исполнительного адреса прием- ника (если используется, то занимает одно или два слова) Рис. 7.3. Формат команды. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 условие окончания цикла. Если значение счетчика (содержимого регистра данных) не равно — 1, то будет выполнена коман- да, адрес которой равен сумме содержимо- го счетчика команд и 16-разрядного сме- щения, расширенного с учетом знака. Перемещение данных может выпол- няться с помощью команд MOVE, EXG (обмен значениями двух 32-разрядных ре- гистров) и SWAP (обмен 16-битовыми зна- чениями частей регистра данных). Существуют три типа команд возвра- та: RTS (возврат из подпрограммы с вос- становлением содержимого счетчика ко- манд), RTR (восстановление регистра кода условий и счетчика команд и возврат упра- вления), RTE (восстановление счетчика ко- манд и регистра состояний и возврат из подпрограммы обработки прерываний). С помощью команд TRAP и TRAPV осуществляются программные прерыва- ния. Команда TRAP обеспечивает вызов специального прерывания по вектору; она позволяет обращаться к одной из 16 под- программ, которые вызываются в случае возникновения исключительных ситуаций. Команда TRAPV вызывает специальное прерывание, если флаг «Переполнение» установлен в 1 (V = 1). Команды простого и циклического сдвигов позволяют сдвигать влево или вправо операнд, который может быть бай- том, словом и двойным словом; постоян-
Микропроцессор модели 68000 и модели 432 205 ная величина сдвига в диапазоне 1-8 указывается в команде. Реализованная в микропроцессоре 68000 команда СНК очень полезна при обработке массивов. По этой команде про- изводится проверка условия нахождения индекса массива в диапазоне от 0 до пре- дельного значения, адрес которого задает- ся в команде. Если индекс выходит за за- данные границы, то происходит прерыва- ние. Ниже команды микропроцессора 68000 будут описаны подробнее. Отметим, что для указания размера операнда в командах микропроцессора 68000 после мнемонических имен записы- ваются следующие обозначения: .В, если операндом является байт, .W, если операн- дом является слово (по умолчанию опе- ранд также считается словом), и .L, если операндом является двойное слово. На- пример CLR.B CLR.W или CLR CLR.L Дадим теперь более подробное описа- ние системы команд микропроцессора 68000. 1. Команды пересылки данных Эти команды используются для пере- сылки данных между памятью и регистра- ми общего назначения. Команды этого ти- па приведены в табл. 7.4. Команда Размер операнда Операция EXG 32 Rx — Ry LEA 32 EA — An LINK — An — SP@- SP — An SP r d — SP MOVE 8, 18, 32 (EA)s — EAd MOVEM 16, 32 (EA)— An, Dn An, Dn — EA MOVEP 16. 32 (EA) — Dn Dn — EA MOVEQ 8 #lmm — Dn PEA 32 EA — SP@- SWAP 32 Dn (31:16] — Dn [15 0] UNLK — An — SP SP @ + — An Примечание S — источник, d — приемник, [] - номер битов 2. Арифметические команды Арифметические команды микропро- цессора 68000 представлены в табл. 7.5. Микропроцессор может выполнять сложе- ние и вычитание 8-, 16- и 32-разрядных ве- личин. Он может выполнять умножение Команда Размер операнда Операция ADD 8, 16, 32 Dn + (EA) — Dn (EA) + Dn — EA (EA) + #xxx — EA 16, 32 An I (EA) — An ADDX 8, 16, 32 Dx t D6 + X — Dx 16, 32 Ax@ - Ay@ - + X — Ax@ CLR 8, 16. 32 0 —EA CMP 8 16, 32 Dn - (EA) (EA) - #xxx Ax@+ - Ay@ + 16, 32 An - (EA) DIVS 32 A 16 Dn/(EA)— Dn DIVU 32 -г 16 Dn/(EA) — Dn EXT 8—16 (Dn)e - Dn,e 16 - 32 (Dn)ie — Dn32 MULS 16 * 16 — 32 Dn * (EA) — Dn MULU 16 *16 — 32 Dn * (EA) — Dn NEG 8. 16, 32 0 - (EA) —EA NEGX 8, 16. 32 0 - (EA) - X — EA SUB 8, 16, 32 Dn - (EA) — Dn (EA) - Dn — EA (EA) - #xxx — EA 16. 32 An - (EA) —An SUBX 8, 16. 32 Dx - Dy - X — Dx Ax@- - Ay@- - X — Ax@ TAS 8 (EA) - 0, 1 — EA(7] TST 8. 16, 32 (EA) - 0 Примечание [ ] - номер бита. 16-разрядных операндов с получением 32-разрядного результата. При выполне- нии операции деления 32-разрядный опе- ранд делится на 16-разрядный. Операция сравнения выполняется посредством вычи- тания двух операндов без сохранения ре- зультата вычитания. Результат вычитания используется только для установки флагов кодов условий в регистре состояния. 3. Логические команды Основными в группе логических ко- манд являются следующие команды: AND (операция логического умножения), OR (операция логического сложения), EOR (операция исключающее ИЛИ) и команда NOT (отрицание, или инвертирование). По указанным логическим командам выпол- няются поразрядно логические операции над операндами, которыми могут быть байты, слова и двойные слова. Команды этой группы представлены в табл. 7.6. Команда Размер операнда Операция AND 8, 16, 32 Dn A (EA) - Dn OR 8, 16, 32 (EA)3p Dn - EA (EA) A #xxx — EA Dn V (EA) — Dn EOR 8, 16. 32 (EA) V Dn — EA (EA) V #xxx — EA (EA)® Dy — EA NOT 8. 16, 32 (EA) ® tfxxx - EA -(EA) —EA Примечание ~ - инвертирования 4. Команды сдвига В микропроцессоре 68000 реализованы команды простого и циклического сдвига
206 Глава 7 Рис. 7.4. Команды простого и циклического сдвигов. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 операнда, который может находиться в ре- гистре или в памяти. Сдвиги могут осу- ществляться как вправо, так и влево. Структура команд этой группы предста- влена на рис. 7.4. 5. Команды обработки битов В системе команд микропроцессора 68000 имеется четыре команды, при вы- полнении которых проверяется значение определенного бита операнда, находяще- гося в памяти или в регистре. Действия, выполняемые согласно этим командам, определены в табл. 7.7. В частности, при выполнении команд манипулирования би- тами производится установка значения флага Z. Команда Размер операнда Операция BTST 8, 32 - bit of (ЕА) —Z BSET 8,32 - bit of (ЕА) — Z 1 — bit of EA BCLR 8,32 - bit of (EA)— Z 0 — bit of EA BCHG 8,32 -bitof(EA)-Z ________________________- bit of (EA) — bit of EA 6. Команды выполнения операций над двоично-десятичными числами В микропроцессоре 68000 реализованы три команды, по которым выполняются операции с двоично-десятичными операн- дами. Правила выполнения этих команд (сложения, вычитания и изменения знака) представлены в табл. 7.8. Поскольку в этих операциях всегда используется зна- чение флага X, при выполнении операций над младшими разрядами (байтами) чис- ла, представленного в двоично-десятич- ном коде, его значение должно быть равно 0. Команда Размер операнда Операция ABCD 8 Dx,0 + Dy,0 + X — Dx Ах@- 10 + Ау@- ю + X — Ах@ SBCD 8 Dxl0 ~ Dy,0 - X — Dx Ах@- 10 - Ау@- ,0 - X — Ах@ NBCD 8 0 - (ЕА)10 - X — ЕА 7. Команды управления программой К командам управления программой относятся различные команды передачи управления и команды вызова подпро- грамм (табл. 7.9). В табл. 7.10 предста- влены различные варианты задания усло- вий, которые могут использоваться в командах условного перехода. 8. Системные команды управления Управление работой микропроцессора 68000 может осуществляться с помощью системных команд управления, которые представлены в табл. 7.11. К ним относят-
Микропроцессор модели 68000 и модели 432 207 Таблица 7.9. Команды управления программой. Источник: перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc., Copyright 1982 Команда Операция С проверкой условия всс Условный переход (14 условий) с 8- и 16-разряд- ными смещениями DBCc Проверка условия, уменьшение на 1 содержимого регистра данных и передача управления (16-раз- рядное смещение) $сс Установка значения байта по результату проверки условия (16 условий) Без проверки условий BRA Безусловный переход с использованием 8- и 16- разрядного смещения BSR Безусловный переход к подпрограмме с исполь- зованием 8- и 16-разрядного смещения JMP JSR Команды возврата RTR RTS Безусловный переход Безусловный переход к подпрограмме Восстановление регистра кода условий и возврат Возврат из подпрограммы Таблица 7.10. Обозначения и коды условий. Источник: перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Мнемоническое обозначение Условие Код Тест Т Истина 0000 1 F Ложь 0001 0 HI Больше 0010 С Z LS Меньше или равно ООН C + Z СС Сброс разряда переносаОЮО с CS Установка разряда пере- -0101 с носа NE Не равно нулю оно Z EQ Равно нулю 0111 Z VC Сброс разряда перепол- -1000 V нения VS Установка разряда 1001 V переполнения PL Положительный резуль- 1010 N тат MI Отрицательный резуль- 1011 N тат GE Больше или равно 1100 N-V + V-V LT Меньше нуля 1101 N-V + N-V GT Больше нуля 1101 N-V-Z + N-V-Z LE Меньше или равно нулюИП Z+N-V + N-V ся: привилегированные команды, команды организации специальных прерываний и команды, применяемые для использова- ния и модификации содержимого регистра состояния. Отметим, что микропроцессор 68000 может выполнять привилегиро- ванные команды только в супервизорном режиме.
208 Глава 7 Таблица 7.11. Системные команды управления. Источник: перепечата- но с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Команда Операция Привилегированные команды RESET Сброс внешних устройств RTE Возврат из подпрограммы обработ- ки прерываний STOP Останов ORI для SR Логическое сложение непосредствен- ных данных и содержимого регистра состояния MOVE USP Пересылка содержимого адресного регистра в указатель стека пользо- вателя ANDI для SR Логическое умножение непосредствен- ных данных и содержимого регистра состояния EORI для SR Операция «Исключающее ИЛИ» над непосредственными данными и со- держимым регистра состояния MOVE EA в SR Команды системных прерываний Пересылка содержимого двух байтов, определяемых исполнительным адре- сом ЕА в регистр состояния TRAP Организация системного прерывания TRAPV Организация системного прерывания при переполнении CHK Проверка содержимого регистра на принадлежность заданному диапазону Команды манипулирования ко- дами условий в регистре тояния сос- ANDI для CCR Операция И над непосредственными данными и регистром кода условий EORI для CCR Операция «Исключающее ИЛИ» над непосредственными данными и со- держимым регистра кода условий MOVE ЕА в CCR Запись нового содержимого в регистр кода условий ORI для CCR Операция ИЛИ над непосредствен- ными данными и содержимым ре- гистра кода условий MOVE SR по ЕА Пересылка содержимого регистра состояния по адресу ЕА 7.1.4. Назначение выводов и сигналы микропроцессора 68000 Микропроцессор 68000 имеет корпус с двухрядным расположением 64 выводов. Корпус с выводами и соответствующими сигналами изображен на рис. 7.5. Микропроцессор имеет два вывода для подачи питания + 5 В (Vcc) и два вывода «Земля» (GND). Подача питания обеспечи- вается таким образом, чтобы снизить влияние шумов, обусловленных работой схем микропроцессора на высокой часто- те.
Микропроцессор модели 68000 и модели 432 209 D4 С 1 64 □ D5 D3E 2 63 □ D6 D2 С 3 62 □ D7 Dl С 4 61 □ D8 DO С 5 60 □ D9 AS С 6 59 □ D10 UDS С 7 58 □ DU LDS С 8 57 □ D12 R/WC 9 56 ZJD13 DTACK С 10 55 □ D14 BG С 11 54 □ D15 BGACK С 12 53 ZJGND BRC 13 52 □ A23 уссС 14 51 □ A22 CLK С 15 50 □ A21 GNDC 16 49 ZJVcc HALT С 17 48 □ A20 RESET С 18 47 □ A19 vmaC 19 46 □ A18 ЕС 20 45 □ A17 VPA С 21 44 □ A16 BERR С 22 43 □ A15 IPL2 С 23 42 □ A14 IPLl С 24 41 □ A13 IPLO С 25 40 □ A12 FC2 С 26 39 □ All FC1 С 27 38 □ A10 FC0 С 28 37 □ A9 Al С 29 36 □ A8 А2 С 30 35 □ A7 АЗ С 31 34 □ A6 А4 С 32 33 □ A5 Рис. 7.5. Схема расположения и назначение выводов микропроцессора 68000. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 Линии DO-DI 5 соответствуют 16-раз- рядной шине данных. По этой 16-разряд- ной шине микропроцессор производит об- мен данными с памятью и с устройствами ввода-вывода. Для передачи более 16 бит требуется выполнить дополнительные ко- манды передачи данных. Линии адресной шины имеют обозна- чения А1-А23; при 23-разрядном адресе ширина диапазона равна 8М слов, или 16М байт. Отметим, что значение разряда АО определяется значениями сигналов UDS и LDS. Сигнал AS (строб адреса) используется для уведомления системного устройства о том, что на адресную шину подан неко- торый адрес. Микропроцессор 68000 может рабо- тать как с синхронными, так и с асинх- ронными устройствами: для обеспечения этих режимов работы предусмотрены со- ответствующие сигналы управления. Для синхронизации микропроцессора 68000 используется одна последователь- ность тактовых импульсов ТТЛ-уровня. Частота следования импульсов может из- меняться в диапазоне 0-8 МГц. Фирма Motorola поставляет модификацию ми- кропроцессора 68000 (микропроцессор МС6800212) с частотой тактовых импуль- сов 12,5 МГц. 1. Сигналы асинхронного управления Сигнал UDS (строб старшего байта) и сигнал LDS (строб младшего байта) ис- пользуются для обеспечения обмена с па- мятью байтами, а не словами. Когда по- дан сигнал UDS, информация передается по старшим восьми линиями шины данных D8-D15. Если же подан сигнал LDS, то для передачи информации используются восемь младших линий шины данных (раз- ряды D0-D7). Чтобы производить переда- чу информационных слов, необходимо подать как сигнал UDS, так и сигнал LDS; в этом случае для передачи информации будут использоваться все 16 линий шины данных. Сигнал R/W (считывание / запись) имеет высокий уровень в цикле считыва- ния и низкий уровень в цикле записи. Сиг- нал DTACK (подтверждение передачи данных) подается внешним устройством на соответствующий вход микропроцессо- ра после завершения некоторой передачи. Когда при выполнении операции чтения внешнее устройство помещает данные на шину данных или когда стробируются данные на шине данных во время выполне- ния операции записи, соответствующее внешнее устройство посылает процессору сигнал подтверждения DTACK. После по- лучения сигнала DTACK микропроцессор 68000 завершит цикл шины. Таким обра- зом, микропроцессор может работать
210 Глава 7 с устройствами, имеющими различное бы- стродействие. 2. Сигнал синхронного управления Микропроцессор 68000 имеет три ли- нии (сигналы) управления, которые ис- пользуются для обеспечения синхронной связи с периферийными синхронными устройствами, такими, как устройства се- мейства МС6800 фирмы Motorola. Сигнал Е (Enable - разблокирование) используется для синхронизации передачи данных при обмене с периферийными устройствами системы 6800. На выходе Е формируется тактовая последователь- ность импульсов, соответствующая такто- вой последовательности «фаза 2», приме- няемой в микропроцессоре 6800; частота тактовой последовательности на выходе Е составляет одну десятую часть тактовой частоты микропроцессора 68000. Сигнал VPA (Valid Peripheral Address- сигнал достоверности адреса периферий- ного устройства) подается на вход микро- процессора 68000, когда периферийное устройство системы 6800 адресовано и, следовательно, для передачи данных необ- ходимо выдавать последовательность син- хроимпульсов Е. Сигнал VMA (Valid Memory Address- сигнал достоверности адреса памяти) ми- кропроцессор вырабатывает в ответ на по- ступивший сигнал VPA. Таким образом, правильность адреса памяти подвержда- ется подачей сигнала VMA. Как при синхронных, так и при несинх- ронных операциях передачи данных ми- кропроцессор 68000, кроме адреса, пересы- лаемого на адресную шину, передает по линиям FC0, FC1 и FC2 сопровождающую информацию - «код функции», указываю- щий класс соответствующей адресной ссы- лки. По этому коду внешние устройства определяют, соответствует ли переда- ваемый адрес данным пользователя, про- грамме пользователя, данным супервизо- ра или программе супервизора. Код функции можно дешифрировать и исполь- зовать полученную при этом информацию для расширения адресного пространства микропроцессора 68000 до четырех 16-ме- габайтных сегментов, т. е. до 64М байт. В табл. 7.12 представлены коды функции и соответствующие им классы адресных ссылок. Сигналы BR, BG и BGACK служат для установления определенного порядка ис- пользования шин, в частности при органи- зации режима прямого доступа к памяти, для управления захватом шин микропро- цессора. Сигналы RESET, BERR и HALT ис- пользуются для управления микропроцес- сором или для индикации его состояния. Линии RESET и HALT являются двуна- правленными и, следовательно, могут ис- пользоваться как для сброса или останов- ки микропроцессора, так и для определе- ния того, что микропроцессор 68000 находится в этих состояниях. Сигналы IPL0, IPL1 и IPL2 исполь- зуются для управления прерываниями. Значениями сигналов на соответствующих Таблица 7.12. Значения сигналов на выходах «кода фун- кции». Источник: перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Код функции —Класс ссылки FC2 FC1 FCO 0 0 0 (He присвоен) 0 0 1 Данные пользователя 0 1 0 Программа пользователя 0 1 1 (Не присвоен) 1 0 0 (Не присвоен) 1 0 1 Данные супервизора 1 1 0 Программа супервизора 1 1 1 Подтверждение прерывания
Микропроцессор модели 68000 и модели 432 211 Рис. 7.6. Структурная схема системы на осно- ве микропроцессора 68000. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 входах микропроцессора задается уровень приоритета активного запроса на преры- вание микропроцессора. Если приоритет прерывания, значение которого определяется значениями сигна- лов на указанных трех входах микропро- цессора, выше, чем уровень приоритета, задаваемый разрядами маски прерываний в регистре состояния, то поступивший за- прос на прерывание обрабатывается ми- кропроцессором по программе, вызывае- мой по соответствующему данному пре- рыванию вектору. 7.1.6. Адресация байтов в системе 68000 На рис. 7.7 показана схема адресации байтов, принятая в микропроцессорных системах 68000. В этой схеме линия строба адреса используется с тремя другими вы- водами микропроцессора, а именно с сиг- налом чтение/запись и стробами младше- го и старшего байтов. Сигнал R/W определяет тип операции (чтение/запись) и используется для управления внешними буферами шины. Сигналы UDS и LDS ис- пользуются для указания того, какой байт слова - младший или старший-или цели- ком слово будет пересылаться. 7.1.7. Особенности системы 7.1.5. Микропроцессорная система 68000 На рис. 7.6 представлена упрощенная основная схема построения микропроцес- сорной системы на базе микропроцессора 68000. Помимо некоторых особенностей вы- полнения команд микропроцессор 68000 имеет ряд характерных свойств. Кроме то- го, можно указать определенные особен- ности в организации управления програм- мами и памятью системы, а также в организации обработки разного рода прерываний.
212 Глава 7 0 0 1 Правильность записи данных Правильность записи данных 0 0 1 Правильность чтения данных Правильность чтения данных 0 1 0 Правильность записи данных * Так же, как D8-D15 0 1 1 Правильность записи данных Неправильные данные 1 0 0 * Так же, как D0-D7 Правильная запись данных 1 0 1 Неправильные данные Правильное чтение данных 1 1 0 » » Неправильные данные 1 1 1 » » » » Рис. 7.7. Адресация байтов в микропроцессоре 68000. *- это преимущество не является частью спецификации микро- процессора 68000 и не обеспечивается в будущих вариантах 1. Привилегированный режим работы Микропроцессор 68000 работает в одном из двух состояний, или режимов: режиме «пользователя» и режиме «супер- визора». В каждом режиме допустимо вы- полнение определенного множества опера- ций. В этих режимах используются раз- личные указатели стека - «указатель стека супервизора» и «указатель стека пользова- теля». Когда процессор начинает цикл шины, он подает на три вывода «кода функции» (FC0, FC1 и FC2) сигналы, указывающие тип адресной ссылки. Это позволяет про- изводить внешнее преобразование адреса, управление доступом и различение особых состояний процессора, например состоя- ние подтверждения прерывания (табл. 7.12). а. Супервизорный и пользовательский режимы. Процессор работает в одном из этих режимов в зависимости от значения разряда условия S в регистре состояния. Если разряд S установлен в 1, то процессор работает в супервизорном режиме, в про- тивном случае он находится в пользова- тельском режиме. В супервизорном режи- ме процессор располагает большими воз- можностями, так как при этом могут выполняться все команды микропроцессо- ра. Циклы шины, осуществляемые при вы- полнении команд в супервизорном режи- ме, классифицируются как супервизорные ссылки, или обращения. Во время работы процессора в этом режиме те команды, ко- торые либо неявно используют указатель системного стека, либо явно используют адресный регистр А7, обращаются к указа- телю стека супервизора.
Микропроцессор модели 68000 и модели 432 213 Таблица 7.13 Привилегии пользовательского и супервизорного режимов микропроцессора 68000 Характеристики режима Пользовательский режим Супервизорный режим Способ вхождения в режим Значение FC2 Указатель системного стека Сброс разряда S 0 Указатель стека пользователя Системное прерывание, сброс или внешнее прерывание 1 Указатель стека супервизора Другие указатели Доступные разряды состояний и условий (Чтение) Регистра А0-А6 С, V, Z, N, X, Io-I2, S Указатель стека пользователя и регистры А0-А6 С, V, Z, N. X, I0-I2, S, Т (Запись) Используемые команды Т, С, V, Z, N, X Все команды, кроме перечне- С, V, Z, N, X, Io-I2, S, Т Все команды, выполняемые в ленных справа режиме пользователя, а также команды STOP ORI для SR RESET EORI для SP MOVE для SR MOVE USP no EA ANDI для SR MOVE для USP RTE В пользовательском режиме процессор работает с определенными ограничения- ми. Хотя большинство команд микропро- цессора выполняется одинаково в обоих режимах, некоторые команды, вызываю- щие особые действия в системе, в пользо- вательском режиме запрещены (табл. 7.13). Например, чтобы гарантиро- вать, что программа пользователя не во- шла в привилегированный режим бескон- трольно, те команды, которые изменяют содержимое регистра состояния по- лностью, являются привилегированными. Циклы шины, осуществляемые при выпол- нении команд в пользовательском режиме, классифицируются как обращения в режи- ме пользователя. Во время работы процес- сора в этом режиме те команды, которые либо неявно используют указатель систем- ного стека, либо явно используют адресный регистр А7, обязательно обра- щаются к указателю стека пользователя. б. Изменение привилегированного ре- жима. Если процессор выполняет ко- манды в пользовательском режиме, то вывести его из этого режима может только возникновение исключительных ситуаций, с которыми связана необходимость вы- полнения некоторых специальных про- грамм. Во время обработки исключи- тельных ситуаций текущее значение разря- да S регистра состояния запоминается и устанавливается новое значение, равное 1, что соответствует переводу процессора в супервизорный режим. Таким образом, когда выполнение программы продол- жается с адреса, определенного для обра- ботки исключительной ситуации, процес- сор находится в привилегированном со- стоянии супервизорного режима. Переход из супервизорного режима в пользовательский может быть выполнен по любой из четырех команд: RTE, MOVE, ANDI и EORI (в последних трех командах в качестве операнда должен ис- пользоваться регистр состояния). По ко- манде RTE из стека супервизора считы- вается новое значение регистра состояния и счетчика команд, а считанные значения загружаются в соответствующие ре- гистры. Теперь процессор осуществляет выборку команды, адрес которой опреде- ляется новым значением счетчика команд; он работает в привилегированном режиме, поскольку в новом содержимом регистра состояния разряд S установлен в 1. При выполнении команд MOVE, ANDI и EORI, в которых в качестве операнда ис- пользуется содержимое регистра состоя- ния, операнды считываются в супервизор- ном режиме, производятся соответствую- щее изменение содержимого регистра
214 Глава 7 состояния, а затем считывается очередная команда по адресу, задаваемому следую- щим значением счетчика команд; эти дей- ствия производятся в привилегированном режиме, определяемом новым значением разряда условия S. Выводы «кода функции» используются для классификации циклов шины. Два би- та в памяти микропрограммного управле- ния определяют тип обращения: к памяти, к командам программы, для подтвержде- ния прерывания и неизвестное. Если возни- кает неизвестное состояние («функция не определена»), то для установления со- ответствия конкретного обращения про- странству адресов данных или простран- ству адресов команд используется сигнал выхода специального дешифратора. Со- стояние «функция не определена» может наступать при обращении к микропро- граммам в ходе выполнения микропроцес- сором команд обращения к данным и ко- мандам программы, которым требуется одна и та же микропрограмма. Например, когда при определении значения адреса складываются базовый адрес и смещение (обращение к данным) или при определе- нии адреса команды складываются содер- жимое счетчика команд и смещение (обра- щение к командам программы), произво- дится вызов одной и той же микропро- граммы. Состояние разряда FC2 кода функции определяется режимом работы микропро- цессора (пользовательским или суперви- зорным) и совпадает со значением со- ответствующего разряда в регистре со- стояния. Информация о режиме работы не отображается в памяти микропрограмм- ного управления вследствие ограничений на размер слова в этой памяти. Отсутствие этой информации в памяти микропро- граммного управления приводит к необхо- димости реализации с использованием на- носекундной управляющей памяти меха- низма прямого манипулирования разря- дом выбора режима в регистре состояния во время обработки исключительных си- туаций. Кроме того существует несколько привилегированных команд, которые мо- гут изменять значение разряда выбора ре- жима процессора. Перед началом работы с регистром состояния все предварительно выбранные команды должны быть отме- нены. Поскольку микропрограммы ис- пользуют регистр состояния целиком, за- держки, обусловленные аннулированием результатов предварительных выборок, одинаковы при выполнении обоих типов команд. 2. Обработка исключительных ситуации а. Состояния процесса обработки. Процес- сор всегда находится в одном из трех со- стояний : нормального функционирования, обработки исключительных ситуаций и останова. В режиме нормального функ- ционирования процессор выполняет ко- манды; циклы шины используются для выборки команд и операндов, а также для записи результатов. С командой STOP связан особый случай «нормальной ра- боты» процессора, в котором не на- чинаются следующие циклы шины. К особым случаям обработки относят- ся обработка внешних прерываний, реали- зация системных прерываний (TRAP и др.), трассировка и некоторые другие исключи- тельные ситуации. Последние могут спе- циально порождаться некоторой коман- дой или возникать вследствие нестан- дартных условий, складывающихся во время выполнения некоторой команды. Внешними причинами, вызывающими не- обходимость обработки исключительных ситуаций, являются прерывания, сбои в ра- боте шин или возврат микропроцессора в исходное состояние. При разработке со- ответствующих программных средств стоит задача достижения эффективного переключения для работы в новом контек- сте, обусловленном возникновением ис- ключительной ситуации. Все такие ситуации можно разбить на три группы согласно причинам их возник- новения. Результат подобного группиро- вания представлен в табл. 7.14. В группу О входят исключительные ситуации, обус- ловленные приведением микропроцессора в исходное состояние, сбоями шины и ошибками адресации. При возникнове- нии условий группы 0 осуществляются прерывание выполнения текущей команды и запуск специальной программы обра- ботки исключительных ситуаций в очеред-
Микропроцессор модели 68000 и модели 432 215 Таблица 7.14. Группы исключительных ситуаций Группа 0 Сброс Обработка исключительной ситуа- Сбой шины Ошибка адресации ции начинается со следующего малого цикла Группа 1 Трассировка Прерывание Запрещенная команда Привилегированная команда Обработка исключительной ситуа- ции начинается до восприятия следующей команды Группа 2 TRAP, TRAPV СНК Деление на нуль Обработка исключительной ситуации происходит в нормальном ре- жиме выполнения команд ном цикле процессора. В группу 1 входят исключительные ситуации, возникающие при трассировке и прерываниях, а также при обращениях к привилегированным ко- мандам в неподходящем режиме или при попытках использования «неразрешенных для данного режима команд». При возник- новении ситуаций группы 1 текущая ко- манда всегда выполняется до конца, но уже следующая за ней не выполняется, и процессор приступает к обработке воз- никшего прерывания. Исключительные си- туации группы 2 возникают при выполне- нии команд, используемых в номинальном режиме работы процессора, и при обнару- жении попытки деления на 0; это команды TRAP, TRAPV и СНК. Переход микропроцессора в состояние «останов» свидетельствует о катастрофи- ческом отказе аппаратных средств. Напри- мер, если во время обработки прерывания, вызванного ошибкой при работе с шиной, возникает еще один сбой шины, считается, что система неработоспособна, и происхо- дит останов процессора. б. Инициирование обработки исключи- тельных ситуаций. Аппаратные средства микропроцессора распознают три раз- личных типа исключительных ситуаций: внутренние (группа 2), некатастрофические (группа 1) и катастрофические (группа 0). В случае возникновения исключительных ситуаций группы 2 процессор начинает обработку, выполняя обычные команды. Ситуации группы 2 обнаруживаются и обрабатываются посредством микро- программ без использования специальных дополнительных аппаратных средств. Когда возникают исключительные си- туации группы 1, выполнение текущей ма- крокоманды, равно как предварительная выборка и дешифрование очередной ми- крокоманды, производится обычным образом. В конце выполнения текущей ма- крокоманды определяется следующий адрес в управляющей области памяти, ко- торый задается дешифратором макроко- манд. Однако при возникновении условий группы 1 выработанный дешифратором адрес будет заменен на адрес вызова со- ответствующей микропрограммы обра- ботки исключительной ситуации. При наступлении событий группы 0 вы- полнение текущей микропрограммы пре- рывается, и в следующем же малом цикле инициируется программа обработки воз- никшей исключительной ситуации. Структура векторов исключительных си- туаций. Векторы исключительных ситуа- ций представляют собой совокупность ячеек памяти, из которых процессор осу- ществляет выборку адреса соответствую- щей программы обработки. Каждый такой вектор занимает два слова; исключение со- ставляет лишь вектор начального состоя- ния процессора, которому отводится в па- мяти четыре слова. Кодовым номером вектора является 8-разрядное двоичное число; адрес вектора исключительной си- туации вычисляется путем умножения но- мера вектора на 4. В зависимости от причины возникновения исключительных ситуаций номера векто- ров либо формируются внутри микропро- цессора, либо пересылаются извне. В обла- сти памяти, выделенной для хранения данных супервизора, векторам исключи- тельных ситуаций отведены ячейки с млад- шими адресами.
216 Глава 7 Последовательность действий при обра- ботке исключительной ситуации. Любая обработка, связанная с возникновением исключительной ситуации независимо от состояния флага S в регистре состояния выполняется в супервизорном режиме. Циклы шины, реализуемые во время обра- ботки исключительных ситуаций, трак- туются как обращения к супервизору. При этом во всех операциях со стеком исполь- зуется указатель стека супервизора. Обработка исключительной ситуации выполняется в четыре четко идентифици- руемых этапа. На первом этапе создается внутренняя копия содержимого регистра состояния, после чего в нем изменяются биты, определяющие состояние процессо- ра. Установкой в 1 разряда S процессор переводится в привилегированное состоя- ние супервизорного режима. Кроме того, разряд Т регистра состояния принимает значение 0, что позволяет программе обра- ботки исключительной ситуации работать в обычном режиме, без трассировочных остановов. Наконец, при обработке преры- ваний и выполнении команды начальной установки микропроцессора обновляется маска приоритетов прерываний. На втором этапе определяется номер вектора возникшей исключительной си- туации. В случае прерываний это осущест- вляется посредством выборки данных, трактуемой как подтверждение прерыва- ния. Для всех других исключительных си- туаций номер вектора формируется вну- тренними схемами микропроцессора. Этот номер используется для вычисления адре- са вектора исключительной ситуации. Целью третьего этапа является сохра- нение данных о текущем состоянии про- цессора. (Этот шаг не выполняется только лишь при установке микропроцессора в исходное состояние.) Значение счетчика команд и уже подготовленная копия со- держимого регистра состояния заносятся в стек супервизора. Значение счетчика ко- манд, помещенное в стек, обычно указы- вает на очередную невыполненную коман- ду. Если исключительная ситуация возни- кла из-за ошибки при работе с шиной или ошибки адресации, то в стек помещается дополнительная информация, определяю- щая текущее состояние процессора. Последний четвертый этап одинаков при обработке любых исключительных си- туаций : сначала из определенного вектора исключительной ситуации производится выборка нового значения счетчика команд, а затем процессор продолжает выполне- ние команды; при этом осуществляются выборка команды по адресу, выделенному из век гора исключительной ситуации, обычное дешифрование команды и ее исполнение. Установка микропроцессора в исходное состояние. Сигнал, подаваемый на вход «Сброс» микропроцессора, имеет наивыс- ший уровень приоритета по сравнению с другими сигналами, обусловленными возникновением исключительных условий. Обработка сигнала, поступившего на вход «Сброс», производится при начальном за- пуске вычислительной системы и при вос- становлении ее работоспособности после устранения катастрофических отказов. По- явление сигнала установки начального со- стояния вызывает прекращение любой вы- полняемой в это время операции, маска приоритетов прерываний процессора уста- навливается на уровень 7, и автоматически задается номер вектора исходного состоя- ния, находящегося в нулевой ячейке памя- ти программ супервизора. Поскольку не- льзя рассчитывать на правильность содер- жимого регистров микропроцессора, и в частности указателя стека супервизора, содержимое регистра состояния и счетчика команд не сохраняется. Адрес, содержа- щийся в первых двух словах вектора ис- ходного состояния, пересылается в ре- гистр-указатель стека супервизора, а ад- рес, выделяемый из следующих двух слов этого вектора, засылается в счетчик ко- манд. Далее начинает выполняться коман- да, адрес которой содержится в счетчике команд. Аппаратные средства, участвующие в установке начального состояния микро- процессора, охватывают весь процессор в целом, поскольку установка его началь- ного состояния должна быть осуществима из любого другого внутреннего состояния. Сигнал, подаваемый на вход «Сброс», пре- рывает текущую операцию и обслуживает- ся раньше всех других запросов на обра-
Микропроцессор модели 68000 и модели 432 217 ботку. Нормальное функционирование блока управления прекращается, и он пере- водится в состояние, которое обеспечивает выполнение микропрограммы, реализую- щей начальную установку микропроцессо- ра. В управляющей области памяти нано- команд выделено определенное количе- ство бит, которые позволяют микропро- грамме получить адрес вектора начальной установки, перевести машину в суперви- зорный режим и настроить маску приори- тетов в данном случае на уровень 7. Поми- мо этого, поскольку указатели регистров для прерванной команды точно не- известны, в нанокомандной управляющей области памяти должны быть предусмо- трены разряды, непосредственно опреде- ляющие выбор нужного указателя стека для инициализации прерванной команды. Прерывания. Внешние устройства, под- ключаемые к вычислительной системе, мо- гут образовывать группы соответственно приоритетам прерываний, что позволяет формировать запросы прерываний процес- сора любому числу внешних устройств. Уровни приоритетов нумеруются от 1 до 7, а наивысший приоритет соответствует уровню 7. Регистр состояния содержит трехразрядную маску, которая задает те- кущий приоритет операций процессора. Все прерывания, уровень приоритета ко- торых меньше или равен текущему значе- нию, процессором не воспринимаются. Кодированные запросы прерываний поступают на входы прерываний IPL0, IPL1 и IPL2; нулевые значения соответ- ствующих входных сигналов означают от- сутствие таких запросов. Запросы преры- ваний, поступившие на вход микропроцес- сора, не приводят к немедленному выпол- нению их обработки, связанной с возник- новением исключительных ситуаций, а ожидают обслуживания. Ожидающие за- просы обнаруживаются процессором по- сле завершения выполнения им текущей команды. Если приоритет ожидающего за- проса меньше или равен текущему приори- тету, то обработка прерывания отсрочи- вается. (Реакция микропроцессора на за- просы 7-го приоритета имеет некоторые особенности, описываемые ниже.) Если приоритет отсроченного запроса прерывания выше текущего приоритета, то начинает выполняться последователь- ность действий, связанных с возникнове- нием исключительных ситуаций. Сначала создается и сохраняется копия содержимо- го регистра состояния, затем процессор переводится в привилегированный супер- визорный режим, подавляется возмож- ность трассировки и устанавливается теку- щий приоритет операций процессора, равный уровню приоритета прерывания. Процессор производит выборку номера вектора из устройства, вызвавшего преры- вание, классифицируя это обращение как подтверждение прерывания, и пересылает номер уровня прерывания, подлежащего подтверждению, на адресную шину. Внеш- ние схемы в ответ на получение подтвер- ждения прерывания могут выполнить одно из следующих трех действий: поме- стить номер вектора на шину данных, за- просить автоматическую векторизацию или указать, что устройство не может вы- дать ответ (по причине сбоя шины). Если внешние схемы запрашивают автоматиче- скую векторизацию, то процессор сам вы- рабатывает кодовый номер вектора, ко- торый определяется номером уровня пре- рывания. В тех случаях, когда внешние схемы указывают на ошибку шины, преры- вание считается ложным, и предполагает- ся, что полученный номер вектора указы- вает на ошибочный вектор прерывания. Затем процессор производит обычную обработку исключительной ситуации, вы- полняя стандартную программу обработ- ки прерываний. Обработка прерываний с уровнем при- оритета, равным 7, имеет некоторые осо- бенности: на них не влияет состояние ма- ски, чем обеспечивается возможность ор- ганизации «немаскируемых прерываний». Сигнал прерывания генерируется каждый раз при изменении приоритета запроса от некоторого более низкого уровня до уров- ня 7. Встроенные логические цепи микро- процессора обеспечивают обнаружение и сравнение запросов прерываний. Посту- пившие запросы не влияют на выполнение текущей команды. Если прерывание имеет достаточно высокий приоритет, содержи- мое указателя микропрограммы его обра-
218 Глава 7 ботки засылается в регистр команд с уче- том выравнивания ца границу следующей микрокоманды. Подтверждение прерыва- ния выполняется микропрограммой обра- ботки прерываний с использованием не менее шести отдельных внутренних реги- стров. Преобразование и расширение адресов векторов прерываний, а также ав- томатическое их формирование в микро- процессоре 68000 выполняются блоком преобразования полей. Микропрограмма использует адрес, поступающий из этого специализированного функционального блока, как указатель местоположения счетчика команд, соответствующего опре- деленному прерыванию. Все прерыва- ния-обычные векторные, автоматические и ложные-обрабатываются одной и той же микропрограммой; существуют разли- чия только в способе генерирования векто- ра блоком преобразования полей. Исключительные ситуации внутренне- го характера. Ситуации подобного рода возникают в процессе выполнения команд и называются системными прерываниями. Эти прерывания могут происходить вслед- ствие обнаружения процессором непредус- мотренных условий выполнения команд или формироваться специальными коман- дами, которые предназначены для органи- зации ловушек аварийных ситуаций. Поль- зователь располагает 16 такими команда- ми; они выполняются в супервизорном режиме и позволяют задавать значение счетчика команд для обращения к про- грамме обработки системных прерываний. Такие программные прерывания полезны для организации обращений к операцион- ной системе, для моделирования прерыва- ний при отладке программ, для сигнализа- ции о завершении задачи или для индика- ции того, что во время выполнения программы возникла ошибка. Для генерации системных прерываний используется несколько команд. Команда TRAP всегда порождает исключительную ситуацию и потому полезна для реализа- ции системных обращений в программах пользователя. Команды TRAPV и СНК приводят к возникновению исключи- тельных условий тогда, когда ошибка об- наруживается при работе пользователь- ской программы и состоит в арифметиче- ском переполнении или выходе значения индекса за установленные границы. Во время выполнения команды деления (DIVS с учетом знака и DIVU без учета знака) возникает прерывание, если при этом делается попытка деления на 0. Попытка выполнения определенных команд, не реализованных в современной модели микропроцессора 68000, может вы- звать прерывание одного из двух видов. В кодах операций таких неразрешенных команд первые четыре бита равны 1010 (А16) или 1111 (F16). Эти коды операций предполагается использовать в будущем для расширения системы команд, а пока этого не сделано, пользователь имеет воз- можность программно эмулировать буду- щие операции с помощью макрокоманд; обращение к таким нереализованным ко- мандам будет приводить к системным пре- рываниям. Как только дополнительные команды будут реализованы и станут из- вестны их конкретные коды операций, ко- манды эти можно будет включать в про- граммы. В настоящее же время при выборке команды, в коде операции кото- рой первые четыре бита равны 1010 или 1111, возникают прерывание и вызов со- ответствующей программы эмулятора (для кода 1010 или для кода 1111). Когда эти операции будут реализованы в микро- процессоре в виде машинных примитивов, эмулирующие программы будут исклю- чены из системы. Существуют и такие коды операций, которые порождают исключительную си- туацию во избежание аварийных послед- ствий их выполнения. Например, коды операции, не соответствующие действую- щим командам и не попадающие в разряд нереализованных (с кодами 1010 или 1111), считаются недопустимыми, и любая попы- тка выполнения этих «незаконных» ко- манд приводит к системному прерыванию. Благодаря этому становится возможным обнаружение некорректных машинных ко- дов. Большинство микропроцессоров при появлении «команды» с неопределенным кодом операции, выполняет некоторые за- ранее не известные действия, результатом которых может стать разрушение про-
Микропроцессор модели 68000 и модели 432 219 Таблица 7.15. Привилегированные команды Привилегированная команда Операция RESET RTE STOP ORI для SP Сброс внешних устройств Возврат из подпрограммы обработки прерываний Останов Логическое сложение непосредственных данных и содержимого регистра состояния MOVE USP Пересылка содержимого адресного регистра в указатель стека пользователя ANDI для SR Логическое умножение непосредственных данных и содержимого регистра состояния EORI для SR Операция «Исключающее ИЛИ» над непосред- ственными данными и содержимым регистра сос- тояния MOVE (EA) в SR Пересылка содержимого двух байтов, определя- емых исполнительным адресом ЕА в регистр состояния грамм или данных в памяти вычислитель- ной системы. Во избежание таких нежела- тельных последствий при обнаружении некорректного кода операции должен осу- ществляться вызов операционной си- стемы. В отличие от большинства команд, ко- торые могут выполняться как в пользова- тельском, так и в супервизорном режиме, привилегированные команды, предста- вленные в табл. 7.15, реализуются только в супервизорном режиме. Эти команды предназначены для управления системой, а отсюда следует, что привилегированной считается любая команда, которая цели- ком изменяет регистр состояния. Условие использования привилегированных ко- манд только в супервизорном режиме не дает программе пользователя возможно- сти включать или выключать режим трас- сировки, а также изменять режим работы процессора или значение маски прерыва- ний. Ситуации, связанные с трассировкой, попыткой выполнения привилегиро- ванных команд в режиме пользователя, обращениями к несуществующим коман- дам и выполнением любых команд, вызы- вающих системные прерывания, обра- батываются аппаратными средствами по- чти так же, как автовекторизуемые преры- вания. Все они (за исключением некоторых незначительных отличий на первом этапе обработки) требуют использования одной микропрограммы. Блок преобразования полей, как и в случае обработки прерыва- ний, вырабатывает адрес вектора для счет- чика команд. При дешифрировании кода операции несуществующей команды или привилегированной команды схема деши- фрирования макрокоманд формирует ука- затель, определяющий специальную ми- кропрограмму, которая обеспечивает перевод процессора в супервизорный ре- жим и вызывает системное прерывание. Для обнаружения этих ошибок и для фор- мирования адреса вектора исключитель- ной ситуации требуются значительные по' объему дополнительные аппаратные сред- ства и, кроме того, необходимо предусма- тривать дополнительный объем упра- вляющей памяти для хранения специали- зированной микропрограммы. Сбои шины и ошибки адресации. Ми- кропроцессор начинает обработку исклю- чительной ситуации, связанной с возник- новением сбоя шины тогда, когда внешние схемы выдадут запрос на проведение та- кой обработки. При поступлении этого за- проса прерывается текущий цикл шины, и какую бы работу ни выполнял в это вре- мя микропроцессор, будь то исполнение команды или обработка прерывания, она немедленно прекращается, и процессор сразу начинает обработку запроса, обусло- вленного появлением ошибки при работе с шиной.
220 Глава 7 в. Приоритеты при обработке прерываний и при возникновении исключительных со- стояний. При одновременном возникнове- нии нескольких исключительных ситуаций обработка производится согласно следую- щим правилам. Условия группы 0 имеют наивысший приоритет; самый низкий при- оритет соответствует группе 2; в пределах группы 0 наиболее высоким приоритетом обладает сигнал установки начального со- стояния микропроцессора; сигнал сбоя шины и ошибки адресации имеют более низкий приоритет. В группе 1 трассировке присвоен более высокий приоритет по сравнению с внешними прерываниями, ко- торые в свою очередь характеризуются бо- лее высоким приоритетом, чем прерыва- ния, связанные с попытками выполнения несуществующих команд и привилегиро- ванных команд в режиме пользователя. В группе 2 не определены приоритеты раз- личных системных прерываний, поскольку одновременно процессор может выпол- нять только одну соответствующую ко- манду. 3. Возможности использования языков вы- сокого уровня По различным причинам программи- сту может быть неизвестно точное состоя- ние стека перед выходом из подпро- граммы. Кроме того, при выполнении основной программы временно исполь- зуемые данные не будут помещаться в стек в каком-то определенном порядке. В ми- кропроцессоре 68000 для облегчения орга- низации стека реализованы команды LINK и UNLK. По команде LINK для сте- ка динамически выделяется 32 768 байт па- мяти, и указатель устанавливается на нача- ло зарезервированной области памяти. Помимо этого по команде LINK произво- дится запоминание текущего значения ука- зателя стека. Команда UNLK обеспечи- вает выполнение действий, противопо- ложных действиям, выполняемым по ко- манде LINK; следовательно, она обеспе- чивает восстановление регистра указателя стека и адресных регистров. Отметим, что при использовании команд LINK и UNLK смещение в памяти данных и приращение содержимого регистра указателя стека должны быть отрицательными. Это связа- но с тем, что стек развивается в направле- нии уменьшения адресов памяти, а адресный регистр указывает на вершину выделенной для организации стека обла- сти памяти. Следовательно, с помощью команд LINK и UNLK удобно распределять и со- ответственно освобождать память для ло- кальных переменных при вызовах проце- дур. В команде LINK используется неко- торый адресный регистр для хранения указателя кадра, отмечающего начало области локальных переменных в стеке. Область памяти для локальных пере- менных автоматически резервируется по- средством увеличения значения указателя стека на число байтов, используемых для локальной памяти. Доступ к локальным переменным обеспечивается посредством использования указателя кадра в качестве регистра базы. После завершения опреде- ленной процедуры по команде UNLK зна- чение указателя стека уменьшается так, чтобы освободить локальную память, а за- тем восстанавливается предыдущее значе- ние указателя кадра. Таким образом мо- жет быть реализовано распределение ло- кальной памяти для организации вло- женных процедур. Проверку значения некоторого индекса на принадлежность заданному диапазону можно осуществлять с помощью команды СНК (сравнение содержимого регистра данных с установленными границами). Вы- полнение команды СНК заключается в со- поставлении содержимого некоторого ин- формационного регистра с нулем и с верхним предельным значением. Если со- держимое регистра меньше нуля или пре- вышает граничное значение, то осущест- вляется системное прерывание с вызовом стандартной программы обработки, со- ответствующей этой особой ситуации. Проверка принадлежности некоторого числа заданному диапазону полезна при работе с массивами. При этом верхняя граница диапазона в команде СНК дол- жна быть установлена равной размерно- сти массива, регистр данных должен указывать число элементов массива, а адресный регистр-его начальный адрес. Перед обращением к элементу массива вы-
Микропроцессор модели 68000 и модели 432 221 полняется команда СНК, с помощью ко- торой проверяется, находится ли индекс в заданном диапазоне. Если границы диа- пазона не нарушены, то выполняется обра- щение к элементу массива с использова- нием косвенной адресации с индексирова- нием, при этом адрес элемента массива определяется как сумма начального адреса массива и значения индекса. Если индекс выходит за заданные пределы, то спе- циальная программа должна выдать сооб- щение об ошибке. Часто бывает необходимо пересылать те или иные параметры из одной проце- дуры в другую. Такая пересылка может быть осуществлена простым занесением параметра в стек. Другой способ передачи заключается в том, чтобы помещать в стек адрес параметра. В микропроцессоре 68000 для вычисления исполнительного адреса предусмотрены команды РЕА (за- пись исполнительного адреса в стек) и LEA (загрузка исполнительного адреса). Эти команды обеспечивают автоматическое вычисление адреса и помещение его либо в стек (по команде РЕА), либо в адресный регистр (по команде LEA). При компиляции программ часто при- ходится иметь дело с логическими выра- жениями, в которые входят отношения, связывающие целочисленные переменные. Пусть, например, X, Y и Z-целочисленные переменные. Рассмотрим следующий ус- ловный оператор языка Паскаль: IF (X > Y) and (Y Z) then Чтобы выполнить этот оператор, необхо- димо сначала вычислить выражения, за- ключенные в круглые скобки, и предста- вить результаты вычислений в виде значе- ний булевых переменных. Затем выпол- няется операция логического умножения значений булевых переменных. Фрагмент программы на языке ассемблера, скомпо- нованный компилятором, может выгля- деть следующим образом: CMP X,Y Сравнение X и Y SGT TEMPI Если X больше Y, то перемен- ной TEMPI присваивается зна- чение 1, в противном случае присваивается 0 CMP Y,Z Сравнение Y и Z SLE ТЕМР2 Если Y меньше или равно Z, то переменной ТЕМР2 при- сваивается значение 1, в про- тивном случае присваивается 0. AND TEMPI, Логическое умножение значе- ТЕМР2 ний переменных TEMPI и ТЕМР2; результат - значение переменной Таким образом, компилятор генерирует фрагмент программы для вычисления зна- чения логического выражения в операторе IF. При организации мультипроцессорной обработки часто требуется обеспечить до- ступ к общей памяти двум или большему числу процессоров. Команда TAS (Test And Set) осуществляет проверку содержи- мого байта памяти и установку его стар- шего бита в 1. Она позволяет процессору генерировать системное прерывание в су- первизорном режиме (при этом в стек за- гружается текущее значение счетчика ко- манд и регистра состояния, затем выпол- няется считывание нового контекста из предварительно определенного вектора системного прерывания). Запрещенные ко- манды, нереализованные команды, обы- чные прерывания и системные прерыва- ния, действующие как системные вызовы, приводят к возникновению исключи- тельных ситуаций и переключению про- цессора в супервизорный режим. А. Конструкцией микропроцессора 68000 предусматривается возможность работы с языками высокого уровня как на этапе компилирования программ, так и при ра- бочем их прогоне. Микропроцессор имеет хорошо развитую и согласованную систе- му команд. Часто используемые функции (операции умножения и деления, адресная арифметика) реализованы аппаратно; имеются также специальные команды, ко- торые облегчают организацию выполне-
222 Глава 7 ния программ, написанных на языках вы- сокого уровня. Языковые конструкции, соответствующие этим командам способ- ствуют удобной реализации обращений к элементам массива, арифметических опе- раций ограниченной точности, циклов, вы- числения логических выражений и вызовов процедур. Обращение к элементам массивов. Коман- да BOUNDS CHECK обеспечивает срав- нение предварительно вычисленного ин- декса элемента массива (значение индекса содержится в регистре данных) с нулем и предельно допустимым значением, адре- суемым в команде. Системное прерывание происходит тогда, когда значение индекса выходит за пределы диапазона, определен- ного для данного массива. Одна команда заменяет последовательность по крайней мере из четырех отдельных команд. Арифметические операции при ограничен- ной точности. Команда TRAP ON OVERFLOW (TRAPV) вызывает систем- ное прерывание, если при выполнении предыдущей операции произошло пере- полнение. Использование этой команды позволяет эффективно контролировать правильность получаемых результатов арифметических операций в смысле отсут- ствия переполнения. Организация циклов. В микропроцессоре с помощью одной команды, которая уменьшает значение счетчика и осущест- вляет переход по неравенству результата нулю, фактически реализуется с опреде- ленными ограничениями оператор цикла типа FOR. Вычисление булевых выражений. По ко- манде CONDITIONAL SET производится присвоение значения «истина» или «ложь» булевой переменной согласно заданному условию; те же самые условия исполь- зуются и в командах условного перехода. Эта команда облегчает вычисление бу- левых выражений, позволяя избегать до- полнительных условных переходов, что особенно важно в тех случаях, когда, на- пример при реализации языка Паскаль, вычисления по «упрощенной схеме» неже- лательны вследствие возможных по- бочных эффектов. Вызовы процедур. В микропроцессоре 68000 для организации вызовов процедур используется стек, указателем которого служит один из адресных регистров. Для вызова процедуры языка высокого уровня приходится использовать три команды, к числу которых добавляется по одной ко- манде на каждый параметр процедуры. Механизм вызова процедур основан на применении стека и обеспечивает без огра- ничений повторную входимость процедур. Команды, используемые для вызова про- цедур. более подробно описаны ниже. Запись в стек значений или адресов параме- тров. По команде MOVE некоторое значе- ние помещается в стек; команда РЕА (рассмотренная выше при описании ко- манды LEA) обеспечивает запись в стек вычисляемого произвольным образом адреса, что позволяет организовать вызов параметра по ссылке. Вызов процедуры. По команде JUMP to SUBROUTINE (JSR) в стек записывается адрес возврата и выполняется безус- ловный переход по заданному адресу на точку входа в процедуру. Создание новой локальной среды. По ко- манде LINK выполняются следующие действия: старое содержимое указателя кадра записывается в стек (указатель кадра содержится в произвольном адресном ре- гистре), производится установка указателя кадра на новую вершину стека и из значе- ния указателя стека вычитается число байт, требующееся для локальной памяти процедуры. Таким образом выделяется ло- кальная память для вызванной процедуры и определяется значение указателя кадра (адресного регистра), который может ис- пользоваться для косвенной адресации с индексированием локальных переменных и параметров. Б. Групповая запись содержимого про- извольного подмножества регистров в стек. Команда MOVEM (Move Multiple Registers) позволяет запоминать содержи- мое произвольного подмножества общих регистров в стеке (или в любой области па- мяти). Указание регистров, содержимое которых должно быть записано в стек или память, производится установкой в 1 со- ответствующих разрядов 16-разрядного поля команды. Для выхода из процедуры достато-
Микропроцессор модели 68000 и модели 432 223 чно выполнить четыре следующие опе- рации : 1. Восстановление содержимого регист- ров по команде MOVEM. 2. Восстановление по команде UNLK среды процедуры, в которую происходит возврат. 3. Возврат из процедуры по команде RTS, при котором из стека сначала извлекается адрес возврата, а затем выполняется пере- дача управления по этому адресу. 4. С помощью команды ADD IMMEDIATE изменяется значение указа- теля стека так, что из стека «выталкивает- ся» необходимое число величин. Таким образом из стека удаляются параметры процедуры. 7.1.8. Организация циклов При программировании ЭВМ очень ча- сто возникает необходимость организации цикла в программе. Команда DBcc обес- печивающая проверку условия, уменьше- ние значения счетчика на 1 и условную передачу управления, является эффек- тивным средством для организации ци- клов самых различных типов. Эта команда занимает два слова памяти и имеет три па- раметра: поле условия, связанное с фла- гами условий, регистр данных и сме- щение. На подготовительном шаге в регистр данных заносится заданное число повторе- ний цикла; затем записывается тело цикла, а в конце его помещается команда DBcc В этой команде указывается одно из 16 возможных условий и задается регистр данных, который будет использован в ка- честве счетчика циклов. Процессор выпол- няет команду DBcc следующим образом. Сначала проверяется, выполнено ли усло- вие, указанное в команде. Затем умень- шается на 1 содержимое регистра данных и проверяется, не стало ли содержимое этого регистра равным — 1. Если ни то, ни другое условие не выполняется, то процес- сор передает управление по адресу, распо- ложенному в пределах 32К байт вперед или назад от данной команды. Однако ес- ли одно или оба условия принимают зна- чение «истина», то выполнение цикла пре- кращается и управление передается сле- дующей после DBcc команде. Рассмотрим фрагмент следующей про- граммы : MOVE D1, # 50 ЗАДАНИЕ ЧИСЛА ЦИКЛОВ LOOP ПЕРВЫЙ ОПЕРАТОР ЦИКЛА (ТЕЛО ЦИКЛА) DBLE DI, LOOP КОНЕЦ ЦИКЛА В регистр D1 записывается число циклов, равное 50. При выполнении команды DBLE после завершения очередного цикла по содержимому регистра кода условий проверяется выполнение условия LE (меньше или равно). Если условие выпол- няется, т. е. имеет значение «истина», то ра- бота в цикле прекращается; если же усло- вие «ложно», то содержимое регистра D1 уменьшается на 1. Теперь проверяется зна- чение счетчика D1. В том случае, когда оно равно 0, выполнение цикла прекращается, иначе происходит передача управления на метку LOOP и снова выполняются ко- манды тела цикла. Отметим, что команда DBLE есть не что иное, как команда DBcc, в которой общее обозначение условия СС заменено на конкретное значение LE (меньше или равно). Поскольку микропроцессор 68000 имеет много информационных и адресных регистров, сохранение их всех при возник- новении исключительных ситуаций или при обращениях к подпрограммам приво- дит к значительным потерям времени. По- этому заботы о сохранении и восстановле- нии содержимого регистров оставлены программисту. С помощью команды MOVEM содержимое любого подмноже- ства регистров или, в частности, всех реги- стров может быть записано в некоторый блок памяти; подобным же образом данные, содержащиеся в блоке памяти, мо- гут быть считаны и записаны в заданные регистры. Например, команда MOVEM.L D1,D5,D6,A3,A4,SAVE обеспечивает пересылку содержимого ре- гистров DI, D5, D6, АЗ и А4 в память, на- чиная с ячейки SAVE. Аналогично по команде MOVEM.L SAVE,D1,D5,D6,A3,A4
224 Глава 7 восстанавливается содержимое тех же самых регистров: в них записываются данные, считываемые из памяти, начиная с ячейки SAVE. Таким образом, достаточ- но сохранять содержимое только тех реги- стров, в которых содержится наиболее важная информация; тем самым ускоряет- ся переключение контекстов различных процедур обработки. 7.1.9. Периферийные устройства семейства 68000 Микропроцессор 68000 имеет собствен- ное семейство периферийных устройств. Некоторые из доступных в настоящее время устройств представлены в табл. 7.16. 7.1.10. Интерфейс микропроцессора 68000 с периферийным устройством 6846 Устройство МС6846 (ROM I/O Timer) или RIOT состоит из ПЗУ, 8-разрядного порта ввода-вывода и таймера/счетчика. Оно обеспечивает выполнение нескольких функций и легко сопрягается с микропро- цессором MC68000. ПЗУ имеет емкость 2К х 8 и программируется фотошаблона- ми; 16-разрядный таймер/счетчик также является программируемым. Конструк- тивное устройство представляет собой один корпус с 40 выводами. В зависимости от желаемой разрядности шины к микро- процессору 68000 могут подключаться и адресоваться им одно или два устрой- ства. Если используется 8-разрядная шина, то для управления должны применяться сигналы: «строб старшего байта» и «строб младшего байта» данных. Отметим, что если используется только одно устройство RIOT, то микропроцессор MC68000 не сможет осуществлять выборку команд для исполнения из памяти RIOT. Это ограни- чение возникает из-за недостаточной раз- рядности шины данных RIOT. Следова- тельно, рационально строить микропро- цессорную систему на базе микропроцес- сора MC68000 и двух устройств RIOT с использованием 16-разрядной шины данных. При таком составе устройств си- стема будет обладать программируемыми фотошаблонами ПЗУ емкостью 2К х 16 бит, двумя параллельными 8-разрядными (или одним 16-разрядным) портами ввода- вывода и двумя 16-разрядными таймера- ми, которые могут использоваться совместно или независимо друг от друга. Таблица 7.16. Микросхемы периферийных устройств процессора 68000 Источник: перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc., copyright 1982 Шифр микросхемы Назначение 68120 Контроллер интеллектуального периферийного устройства 68122 68540 Контроллер группового терминала Схема обнаружения и исправления ошибок 68451 68450 68230 68561 Блок управления памятью Контроллер ПДП Параллельный интерфейс/таймер Коммуникационный контроллер, реализующий не- сколько протоколов 68341 ПЗУ данных, представленных в форме с плава- ющей запятой 68340 68453 68560 Двойной порт ОЗУ Контроллер устройства памяти на ЦМЦ Последовательный процессор прямого доступа к памяти
Микропроцессор модели 68000 и модели 432 225 1. Аппаратные средства RIOT Для обеспечения совместного функцио- нирования устройства RIOT с микропро- цессором 68000 используются десять адресных линий А1-А10, 16 линий шины данных (D0-D15), сигналы R/W, RESET, Е и сигнал выбора микросхемы. Все необ- ходимые сигналы, за исключением послед- него, вырабатываются микропроцессором. Как показано на рис. 7.8, восемь линий шины данных (старшие разряды) подклю- чаются к одному устройству RIOT, а остальные восемь (младшие разряды)-к другому такому же устройству. Все прочие сигналы микропроцессора поступают на устройства RIOT параллельно. Для полу- чения сигналов выбора микросхемы необ- ходимо использовать некоторый деши- фратор. Устройство RIOT способно рабо- тать синхронно с микропроцессором MC68000. а. Синхронная работа. Ч гобы синхронизи- ровать работу устройства RIOT, необхо- димо применять некоторую схему декоди- рования, которая должна подавать сигнал низкого уровня на вход VPA микропроцес- сора 68000, когда на RIOT поступает сиг- нал «выбор микросхемы». Он синхронизи- рует выдачу микропроцессором 68000 сигнала Е и формирование сигнала VMA. Чтобы использовать синхронный выход микропроцессора MC68000, схема декоди- рования помимо сигналов выбора кри- сталла должна генерировать сигнал VPA. Этот сигнал информирует микропроцес- сор MC68000 о том, что периферийное устройство М6800 адресовано и синхрони- зирует выдачу процессором сигнала Е. Кроме того, сигнал VPA вызывает генера- цию сигнала VMA, который используется для управления другими периферийными устройствами семейства 6800. б. Асинхронная работа. В асинхронном ре- жиме работы RIOT с микропроцессором Рис. 7.8. Схема сопряжения устройств МС6846 с микропроцессором MC68000. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982
REVII MC68000 ASM REV = 1.1—COPYRIGHT BY MOTOROLA 1978 1 00001000 ORG $1000 2 00010000 ROMSTR EQU $1000 ♦STARTING ADDR. 3 * OF ’46 ROM 4 00011882 PCR EQU $11882 ♦’46 PERIPH. 5 * CNTR. REG. 6 00011884 DDR EQU $11884 *’46 DATA DIR. 7 * REGISTER 8 00011886 PDR EQU $11886 *’46 PERIPH. 9 * DATA REG. 10 001000 33FC0000 00011882 MOVE.W #$0,PCR CONFIG. ’46 PCR’S 11 001008 33FCFFFF 00011884 MOVE W #$FFFF,DDR CONFIG. ’46 DOR’S 12 0010101 303C0009 MOVE.W #$0A-1,D0 SET NUMB. OF 13 * WORDS FROM ROM 14 * TO DISPLAY 15 ♦ ♦ ♦ * ♦ ♦ ♦ ♦ ♦ ♦ ♦ 16 * 17 ♦ DISPLAY ROUTINE—USES REGS A1, DO, D1, D2, D3 18 * 19 ♦ ♦ ♦ * ♦ ♦ » ♦ ♦ ♦ ♦ 20 * 21 * HEX TO DECIMAL MODIFICATION—IF HEX DIGIT GT 9, 22 * SUBTRACT 8 23 001014 227C00010000 CVRCHK MOVE L #ROMSTR,A1 LOAD IN STR. ADDR 24 00101A 3211 BYTE1 MOVE.W (A1),D1 FETCH WD. FM ROM 25 00101C 3401 MOVE.W D1,D2 MOVE TO SCTCH AREA 26 00101E 0242000F AND.W #$000F,D2 ISOLATE L.S. DIG. 27 001022 0C420009 CMP.W #$0009,D2 CHCK IF NEEDS MOD 28 001026 6F000004 BLE BYTE2 IF NOT, BRANCH 29 00102A 5142 SUB.W #$0008,D2 IF SO, SUBT. 8 30 00102C 3601 BYTE2 MOVE.W D1.D3 GET SECOND BYTE 31 00102E 024300F0 AND.W #$00F0,D3 TO SCRATCH AREA 32 001032 0C430090 CMP.W #$0090,D3 AND REPEAT PROC 33 001036 6F000006 BLE BYTE3 34 00103A 04430080 SUB.W #$0080,D3 35 00103E 8443 BYTE3 OR.W D3.D2 36 001040 3601 MOVE.W D1.D3 37 001042 02430F00 AND.W #$0F00,D3 38 001046 0C430900 CMP.W #$0900,D3 39 00104A 6F000006 BLE BYTE4 40 00104E 04430080 SUB.W #$0800,D3 41 001052 8443 BYTE4 OR.W D3.D2 42 001054 2601 MOVE.L D1.D3 USE LONG WD. FOR MSB. 43 001056 02830000F000 AND.L #$F000,D3 44 00105C 0C8300009000 CMP.L #$9000,D3 45 001062 6F000006 BLE DONE 46 001066 04438000 SUB.W #$8000,D3 47 00106A 8443 DONE OR.W D3,D2 DISPYD DATA IN D2 48 00106C 33C200011886 MOVE.W D2.PDR WRITE DATA TO PIA 49 001072 2E3C0003D090 MOVE.L #250000,D7 DLY FOR 5 SEC 50 001078 5387 DLY SUB.L #1,D7 51 00107A 6AFC BPL DLY 52 00107C 51C8FF9C DBRA DO,BYTE 1 GO AGN IF <> 10 53 * 54 * BACK TO MACSBUG 55 *
Микропроцессор модели 68000 и модели 432 227 56 001080 4E4F TRAP 15 57 001082 0000 DC.W 0 58 * 59 ♦ THE PI A ADRESSES ARE $11882 PCR 60 * $11884 DDR 61 * $11886 TO WRITE TO THE DISPL 62 END ♦♦♦♦♦♦TOTAL ERRORS О— О SYMBOL TABLE BYTE1 ОО1О1А BYTE2 00102С BYTE3 00103Е BYTE4 001052 CVRCHK 001014 DDR 011884 DLY 001078 DONE 00106A PGR 011882 PDR 011886 ROMSTR 010000 Рис. 7.9. Листинг программы. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1982 MC68000 последний может начинать вы- полнение следующей команды, не ожидая момента выработки сигнала синхрониза- ции Е. Чтобы обеспечить асинхронную ра- боту рассматриваемых устройств, схема декодирования помимо формирования сигналов выбора микросхем должна гене- рировать еще и сигнал DTACK. 2. Программные средства обеспечения работы RIOT Совместная работа MC68000 и RIOT обеспечивается очень простыми про- граммными средствами. Следует иметь в виду, что микропроцессор MC68000 адресует каждые 8 бит, даже если он вы- полняет 16-разрядные команды. Это озна- чает, что младший байт команды всегда имеет нечетный адрес, а старший - четный. Так как аппаратные средства выполняют запись всех 16 бит сразу, адреса для реги- стров управления представляются в виде двух отдельных адресов, например PCR : 11 882, DDR : И 884 и т. д. Для ис- пользования ПЗУ не требуется спе- циальных программных средств. Однако при организации ввода-вывода по соответ- ствующим линиям до начала пересылки данных в соответствующий регистр пери- ферийного устройства или приема данных из него должен быть определен регистр управления периферийным устройством и должным образом настроен регистр на- правления передачи данных. На рис. 7.9 представлена программа, реализующая операции выборки данных. Линии ввода-вывода с помощью декоди- рующего устройства МС14511, выполняю- щего преобразование двоично-кодиро- ванных десятичных чисел в десятичные, подключается к четырем семисегментным индикаторам. Программа обеспечивает необходимую подготовку к пересылке вы- водимых данных по линиям ввода-вывода и затем считывает первые 10 байт из ка- ждого ПЗУ. Поскольку дешифратор не способен декодировать шестнадцате- ричные числа больше 9, в программе пре- дусмотрено для таких чисел вычитание из них восьмерки. Затем полученный код вы- дается на индикатор и может анализиро- ваться оператором. Этот пример про- граммы представлен здесь с целью показа того, насколько прост интерфейс между MC68000 и периферийными устройствами семейства 6800. Пример 7.1. Необходимо написать на языке ассем- блера микропроцессора 68000 программу пересылки блока данных из одной области памяти в другую. Переменная DO указы- вает число длинных слов, подлежащих пересылке. Заданы также адрес пересылае- мого блока (АО) и адрес назначения (А1). Решение AGAIN: MOVE.L (АО) +, (А 1) + SUBQ # 1, DO BNE AGAIN END: JMP END
228 Глава 7 Пример 7.2. Требуется написать на языке ассембле- ра микропроцессора 68000 программу сло- жения последовательностей слов, на- чальные адреса которых заданы содер- жимым регистров АО (+ 2) и А1 (+ 2). Сумма должна быть представлена в виде последовательности с начальным адресом А1. Регистр А2 содержит адрес последнего элемента последовательности. Решение. Программа, обеспечивающая выполне- ние сложения последовательностей, может выглядеть следующим образом: 1АРХ43201 и iAPX43202 называют универ- сальным процессором данных (УПД). Не- сколько таких универсальных процессоров могут объединяться в вычислительную си- стему. Если производительность одного УПД равна 200 000 операций в секунду, то система из шести УПД будет иметь ско- рость, равную почти 1,2 млн. операций в секунду, что делает ее равной по про- изводительности универсальной ЭВМ средней мощности (например, IBM 370/148). Следовательно, систему из УПД iAPX432 можно считать универсальной мощной микроЭВМ. Для повышения производительности в УПД реализована конвейерная архитек- AND.W # EFH CCR ; Установка в 0 флага X REPEAT: ADDX.W -(AO), -(Al) ; Сложение двух слов и значения X CMPA.L A2,A1 ; Если не последний элемент строки, BHI REPEAT ; то переход на метку REPEAT END: JMP END ; Останов Отметим, что в приведенных программах символ # обозначает способ непосред- ственной адресации. 7.2. Микропроцессор модели 432 фирмы Intelп Материал этого раздела основан на из- даваемых фирмой Intel руководствах по 32-разрядному микропроцессору Intel 432, изготовляемому с использованием высо- копроизводительной МОП-1 -технологии. Процессор выполнен на трех кристаллах, каждый из которых размещен в корпусе с четырехрядным расположением 64 выво- дов (этот корпус имеет четыре ряда выво- дов, расположенных с шагом 2,5 мм, что обеспечивает большую плотность, чем при использовании стандартного корпуса с двумя рядами выводов). Два процессора обработки данных (микросхемы 1АРХ43201 и 1АРХ43202) и один процессор сопряжения (1АРХ43203) реализованы в ви- де сверхбольших ИС. Этот набор микро- схем содержит более 200 000 вентилей, что примерно в 6 раз превышает число венти- лей в кристалле микропроцессора 8086. Совместно работающие микросхемы п Этот раздел написан на основе мате- риалов фирмы Intel. тура, обеспечивающая перекрытие циклов выборки и исполнения команд. Это значит, что во время отработки одной команды может осуществляться выборка следую- щей. Процессор iAPX43201, дешифрирую- щий команду, и процессор 1АРХ43202, вы- полняющий ее, связаны 16-разрядной дву- направленной шиной микрокоманд, кото- рая обеспечивает передачу данных и управляющих сигналов между двумя ми- кросхемами процессоров. Реализованная в УПД 32-разрядная ар- хитектура позволяет осуществлять логиче- скую адресацию более чем 4 млрд, байт (232). УПД способен выбирать один из 224 элементов объектной таблицы (iAPX432 является своего рода объектно-ориентиро- ванной машиной), а каждый элемент мо- жет определять один сегмент емкостью до 216 байт. Таким образом, «емкость» вир- туального адресного пространства превы- шает 1 Тбайт (240 байт). Такая схема адре- сации позволяет использовать быстродей- ствующую основную память и медленное массовое ЗУ. Микропроцессор Intel 432 обрабаты- вает 32-разрядные информационные слова (подобно тому, как выполняют обработку данных большие миниЭВМ и некоторые универсальные ЭВМ, обладающие более
Микропроцессор модели 68000 и модели 432 229 высоким быстродействием и работающие со словами большей длины, чем в ми- ниЭВМ). Он оперирует с 32-разрядными целыми числами и с числами с плавающей запятой, представленными в 32-, 64- и 80-разрядном формате. Например, два 32-разрядных целых числа микропроцес- сор 432 умножает за 6,25 мкс, а два 80-раз- рядных числа с плавающей запятой-за 26,125 мкс. Такая высокая скорость выпол- нения операций превышает быстродей- ствие многих современных больших уни- версальных ЭВМ. Система команд микропроцессора 432 разработана с учетом особенностей реали- зации языков высокого уровня; микропро- цессор оперирует булевскими и строковы- ми данными, а также целыми числами и числами с плавающей точкой. В микропроцессоре 432 использована параметрическая система защиты памяти, гарантирующая, что все структуры данных защищены посредством ограничения мно- жества программ, которым разрешено обращаться к конкретным данным, и пу- тем указания, в какой степени эти данные могут модифицироваться. Третий процессор системы - процессор сопряжения 1АРХ43203- управляет вво- дом-выводом. Он обеспечивает управле- ние сателлитными процессорами, которые также называют «присоединенными про- цессорами». Каждый такой процессор управляет отдельной операцией ввода-вы- вода независимо от других. Посредством увеличения числа присоединенных процес- соров можно легко спроектировать систе- му любого масштаба. Идеально подходят на роль сателлитных процессоров 16-раз- рядные микропроцессоры 8086 фирмы Intel. Для контроля исправности аппаратных средств микропроцессора два процессора 432 могут быть включены параллельно. При этом оба они работают с максималь- но возможной скоростью и один процес- сор контролирует результаты вычислений, выполняемых другим. Если эти резуль- таты не совпадают, то процессоры остана- вливаются и производится поиск неис- правности в системе. В микропроцессоре 432 фирмы Intel аппаратно выполняются такие функции, как распределение памяти и связь между программами; обычно эти функции реали- зуются в операционных системах про- граммно. Для пересылки данных между программами используются одиночные команды типа «передать» или «принять», которые значительно ускоряют выполне- ние программ. Кроме того, аппаратные средства используются и для синхрониза- ции работы УПД, что позволяет процессо- рам осуществлять «самодиспетчериза- цию»: они автоматически находят свои собственные работы и распределяют рабо- чую нагрузку между собой, а по мере доба- вления к системе новых УПД нагрузка ав- томатически перераспределяется. Применяемый объектно-ориентиро- ванный язык программирования Ада был разработан по инициативе министерства обороны США как язык программирова- ния для систем, построенных на основе ми- кропроцессора 432. Язык этот разрабаты- вался и обсуждался промышленными фирмами и университетами. Он ориенти- рован на системное программирование, на обеспечение численного решения сложных задач, а также на программирование си- стем реального времени, в которых важ- ную роль играет требование параллельной обработки. Элегантность и простота язы- ка Паскаль сочетаются в языке Ада со структурными и выразительными сред- ствами, необходимыми для разработки многофункционального программного обеспечения; Ада является мощным язы- ком, в связи с использованием которого ожидается сокращение времени разработ- ки программ. 7.2.1. Универсальный процессор данных Дешифратор команд (рис. 7.10) и устройство исполнения команд (рис. 7.11) изготовлены по N-канальной высокопроизводительной МОП-техноло- гии и размещены в корпусах с четырех- рядным расположением 64 выводов. 1. Функциональное описание Универсальный процессор данных (УПД) реализован в виде трехступенчато-
230 Глава 7 is6 Г j V J 64 Е Д GND IS3 X- □ 2 63 [Д Д CLKA IS2 Д □ з 62 [Д Д VCC IS1 Д □ 4 61 Е Д CLKB ISO Д □ 5 60 [Д Д GND IS5 Д □ 6 Cj 59 с Д N.C. IS4 Д □ 7 58 [Д Д FATAL/ GND Д 7 8 57 Е Д CLR/ Д115 Д □ 9 56 а Д INIT/ Pl 14 Д □ 10 55 Е Д ALARM/ Д113 Д □ 11 54 Е Д NC MII2 Д □12 53 Е Д VBB мш Д □13 52 EZ Д ICS дПО Д О 14 51 С Д PRQ VCC д □15 50 Е Д VCC М19 Д 7 16 49 Е Д ACDI5 д!8 Д □17 48 Е Д ACD14 д17 Д □18 47 Е Д ACD13 pi6 ^2 □19 46 Е Д ACD12 Д15 Д □20 45 С Д ACD11 д!4 Д □ 21 44 [Д Д ACD10 д!3 □22 43 С Д ACD9 Д12 Д □ 23 42 С Д ACD8 рп Д L7 24 41 Е Д GND мю Д □ 25 40 Е Д ACD7 GND Д □ 26 Ч 39 Е Д ACD6 MASTER Д □ 27 1 1 38 □ Д ACD5 HERR/ Д □ 28 ) 37 с Д ACD4 N.C Д □ 29 36 Е Д ACD3 RDROM/Д □ 30 35 Е Д ACD2 N С. Д □ 31 34 Е Д ACD! VCC Д □ 32 33 Е Д ACD0 Рис. 7.10. Назначение выводов устройства 43201 дешифрации команд и упорядочения микрокоманд. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 го конвейера. Ступеням конвейера, или этапам обработки команд, соответствуют следующие функциональные устройства: 1-я ступень - дешифратор команд, 2-я ступень-устройство, задающее по- следовательность выполнения микроко- манд, 3-я ступень - устройство исполнения команд. Каждая ступень конвейера реализована в виде независимого подпроцессора; под- процессоры 1-й и 2-й ступеней размещены в микросхеме iAPX43201 (рис. 7.12), а под- процессор 3-й ступени-в микросхеме iAPX43202. Если конвейер запущен, то каждый подпроцессор выполняет обработ- ку данных по мере их поступления на со- ответствующие входы и останавливается по исчерпании потока работы. а. Дешифратор команд. Дешифрато- ром команд является первый подпроцес- сор конвейера. Он воспринимает макроко- манды и обрабатывает их с целью выработки микрокоманд, которые необхо- димы для выполнения поступившей ма- крокоманды. Команды микропроцессора 432 имеют различную длину, которая зависит от их сложности и может колебаться от единицы до нескольких сотен бит; каждой команде
Микропроцессор модели 68000 и модели 432 231 CLKA 1 । V J— 64 Е "Т IS6 VCC I □ 2 63 Г" Т IS3 CLKB V □ 3 62 Е Т IS2 MASTER Д □ 4 61 Е т isi PCLK/ Д □ 5 во [22 Т ISO GND V □ 6 Су 59 е Т IS5 HERR/ К И 7 58 Q Т IS4 CLR/ К 22 8 57 Е Т GND N.C К □ 9 56 Т мП5 N.C Т "] 10 55 Q Т рП4 NC Т “Т и 54 Е Т МПЗ BOU1 V И 12 53 Е Т ^112 ICS £ 2) 1з 52 Е Т мП1 PRQ J2 О 14 51 Е Т мио VCC к □15 50 с Т VCC ACD15 V 2? 16 49 Q ЗГд19 ACDI4 V Z]17 48 Е Т я!8 ACDI3 Д ZJ18 47 с 5 MI7 ACD12 Т □19 46 Е "Г м1б ACD11 X 23 20 45 Е Д Д15 ACD10 Т Z321 44 [22 ~Т д!4 ACD9 Т Z322 43 Е Д д!3 ACD8 Т О 23 42 Е I MI2 GND Г З? 24 41 Е 21 мп ACD7 Т ZU 25 40 £ 21 мю ACD6 Т □ 26 > 39 Е 32 GND ACD5 Т [ 1 38 Q д vcc ACD4 Г □ 28 < ) 37 С Д N.C ACD3 Т 22] 29 зб [2 Д NC ACD2 Т 2J зо 35 Е Д GND ACDI Г 22131 34 Е Д NC ACD0 1 223 32 зз (22 Д NC Рис. 7.11. Назначение выводов устройства ис- полнения команд 43202. Источник перепечатано с разрешения фирмы Intel Corporation, copyright Ю82 отводится в памяти необходимое количе- ство слов. Дешифратор команд запраши- вает из памяти слова, необходимые для обработки каждой команды. Команды УПД состоят из переменного числа полей, каждое из которых в свою очередь имеет переменную длину. В большинстве случаев дешифратор команд может декодировать некоторое поле, чтобы определить длину команды. Как только дешифратор устана- вливает ее границы, он переходит к обра- ботке очередной команды. В системе команд микропроцессора 432 есть несколько команд передачи управле- ния, которые могут начинаться с любого бита в сегменте. Поскольку в типичных по- токах команд команды перехода встре- чаются довольно часто, то благодаря это- му в микропроцессоре сведено к миниму- му время запуска конвейера после осу- ществления перехода на ветвь. Для дешифратора команд, кроме того, предусмотрены средства восстановления, применяемые в случае возникновения сбоев при исполнении команд. Информа- ция, необходимая для восстановления, хранится в дешифраторе команд до тех пор, пока команда не будет успешно выполнена. 6. Устройство упорядочения микроко- манд. Это устройство формирует последо-
232 Глава 7 Г лавные Рис. 7.12. Структурная схема устройства 43201. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 вательность микрокоманд, поступающих на вход исполнительного блока iAPX43202. Устройство задания последо- вательности микрокоманд должно опреде- лять, какую микрокоманду необходимо выдавать в каждом такте, а для правиль- ной генерации и обработки команды в нем должны учитываться следующие условия: 1. Является ли источником микроко- манд дешифратор команд или микроко- манды считываются из ПЗУ, входящего в устройство упорядочения микрокоманд? 2. Если микрокоманда считывается из ПЗУ, то должен быть подготовлен адрес следующей микрокоманды. 3. Время, затрачиваемое устройством исполнения команд на выполнение микро- команды. в. Устройство исполнения команд. На третьей ступени конвейера УПД работает устройство исполнения команд, структур- ная схема которого представлена на рис. 7.13. Устройство исполнения команд
Микропроцессор модели 68000 и модели 432 233 Главные синхроимп HERR/ Рис. 7.13. Структурная схема устройства 43202. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 получает микрокоманду от процессора iAPX43201 и направляет ее к одному из двух независимо работающих подпроцес- соров - в устройство манипулирования данными (УМД) или устройство формиро- вания адресных ссылок (УФС). Устройство исполнения команд выпол- няет большинство микрокоманд за один такт, в то время как внутренние устройства задания последовательности микроко- манд, входящие в подпроцессоры, в зави- симости от обрабатываемой микроко- манды могут работать несколько тактов. При выполнении сложных арифметиче- ских операций используется устройство упорядочения микрокоманд в подпроцес- соре обработки данных, а с помощью шины порционной передачи производит- ся вызов такого же устройства в подпро- цессоре формирования адресных ссылок. Процессоры запрашивают и получают ин- формацию, передаваемую по шине от- дельными «порциями». Благодаря такой организации после реализации запроса на выполнение определенной работы подпро- цессором шина освобождается. Когда ре- зультат готов, подпроцессор может воз- вратить его также в отдельном «пакете». В УМД входят регистры и аппаратные средства, обеспечивающие выполнение следующих функций: 1. Распознавание девяти типов данных. 2. Реализацию умножения, деления и нахождения остатка для 16- и 32-раз- рядных операндов. 3. Управление выполнением операций над 32-, 64- и 80-разрядными числами с плавающей запятой. УФС выполняет преобразование 40-разрядных виртуальных адресов в 24-разрядные физические адреса, а также обеспечивает управление доступом к памя- ти для 8-, 16-, 32-, 64- и 80-разрядных опе- рандов. Диапазон физических адресов ограничен максимальным объемом памя- ти, к элементам которой процессор может обращаться без использования массового ЗУ (дисков и т.п.). На рис. 7.14 показано, как универ- сальный процессор данных, состоящий из устройств iAPX43201 и iAPX43202, со- прягается с шиной порционной пере- дачи.
234 Глава 7 Синхр. Г руппа сист. сиги. Г руппа обнаружения сигналов аппаратных ошибок Рис. 7.14. Символическое обозначение универ- сального процессора данных. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 2. Структура команд микропроцессора 432 Команды микропроцессора 432 пред- ставляют собой группы полей, которые со- стоят из переменного числа разрядов. Форма представления команд унифициро- вана. В большинстве случаев команды УПД состоят из четырех основных полей: поля класса, поля формата, поля ссылки и поля кода операции. В зависимости от сложно- сти ссылок на операнды поле ссылки мо- жет содержать несколько дополнительных полей. Длина поля класса равна 4 или 6 бит, в зависимости от выбранного способа ко- дирования. Это поле определяет число требуемых операндов, их примитивы и число ссылок (0-3). Если в поле класса указано, что коман- да имеет 1 или большее число ссылок, то в поле формата необходимо определить, являются ли ссылки явными или неявны- ми. Явные ссылки используются тогда, когда операнд задается командой, неяв- ные-когда в команде подразумевается один или несколько операндов. Если в команде используется явная ссылка, то в поле формата указывается, является ли эта ссылка прямой или косвен- ной. Кроме того, в этом поле может быть отмечено, что некоторый операнд во вре- мя выполнения команды используется для разных целей. Например, команда увели- чения на 1 значения целого числа, находя- щегося в памяти, имеет следующие функ- ции полей: 1. Поле класса определяет, что в ко- манде используются два операнда, каждый из которых занимает в памяти одно слово. 2. В поле формата указывается, что единственная ссылка в команде опреде- ляет логический адрес, который исполь- зуется и как адрес исходного операнда, и как адрес результата операции. 3. Поле ссылки содержит явную ссыл- ку на данные - на целое число, значение ко- торого должно быть уменьшено на 1. 4. Поле кода операции определяет двухместный оператор «уменьшение на 1 значения целого числа». В поле формата может быть указано, что команда содержит меньше явных ссы- лок на данные, чем указано в поле класса команды. В этом случае другие необхо- димые ссылки на данные являются не- явными и соответствующий исходный опе- ранд берется из стека операнда, а полу- ченный результат заносится в этот стек. Реализация следующего оператора
Микропроцессор модели 68000 и модели 432 235 языка высокого уровня может служить примером использования неявных ссылок: А = А + В*С В потоке команд данному оператору будут соответствовать две команды, имеющие следующий формат: телей данных; они отображены схематиче- ски на рис. 7.15 и 7.16. Всего реализовано четыре способа фор- мирования указателя, соответствующие различным вариантам ссылок на опе- ранды: 1. Короткий прямой. I OPCODE I REFERENCE | FORMAT | CLASS [ Предположим, что операнды А, В и С являются целыми числами. Поле класса (крайнее правое поле команды) опреде- ляет, что оператор требует три ссылки, ка- ждой из которых соответствует операнд (А, В и С), занимающий одно слово. Первое поле формата содержит код, за- дающий две явные ссылки на данные (на исходные операнды В и С). Местоположе- ние результата явно не указывается, и по- этому результат умножения (операция ум- ножения задается кодом операции) будет помещен в стек операнда. Поле класса вто- рой команды аналогично полю класса пер- вой команды: здесь снова определяется, что оператор требует трех ссылок. Поле формата второй команды определяет одну явную ссылку на данные (на операнд А) и ссылку на результат вычислений (А). Вто- рой исходный операнд не имеет явной ссы- лки и во время выполнения операции из- влекается из стека операнда (при выполне- нии второй команды стек содержит ре- зультат выполнения первой команды, а именно произведение В* С). Поля ссылок могут иметь различную длину, и число ссылок является пере- менным; указанные величины должны со- ответствовать спецификациям, зада- ваемым полем класса и полем формата. Если специфицированы неявные ссылки, то в команде отсутствуют соответствую- щие поля ссылок. Для спецификации прямых ссылок в команде требуется выде- лять больше разрядов, чем для определе- ния косвенных ссылок. После полей класса, формата и ссылок следует поле кода операции; это поле за- дает операцию, которая должна быть вы- полнена над операндами, определенными в других полях команды. В системе используются различные способы формирования смещений и указа- 2. Длинный прямой. 3. Косвенный стековый. 4. Косвенный общего вида. Смещение формируется также четырь- мя способами, при которых задаются фи- зический адрес и смещение объекта в пре- делах данного сегмента или сегментов. Этим способам соответствуют: 1. Ссылка на скалярный объект. 2. Ссылка на элемент записи. 3. Ссылка на элемент статического век- тора. 4. Ссылка на элемент динамического вектора. 3. Средства обнаружения аппаратных сбоев в процессорах iAPX432 В процессорах iAPX432 предусмотрены аппаратные средства, необходимые для обнаружения ошибок посредством конт- роля с использованием функциональной избыточности. В данном случае функцио- нальная избыточность достигается ис- пользованием процессора iAPX432 для проверки правильности функционирова- ния основной системы. Любой процессор iAPX432 может быть либо основным (контролируемым), либо контролирую- щим. Основной процессор работает в нор- мальном режиме, а все те выходы контро- лирующего процессора, которым соответ- ствуют одноименные проверяемые вы- ходы основного процессора, должны нахо- диться в состоянии высокого сопротивле- ния. Контролируемые выводы основного процессора соединяются параллельно с одноименными выводами контролирую- щего процессора, благодаря чему послед- ний может производить сравнение значе- ний сигналов на собственных выходах со значениями сигналов на выходах основно- го процессора. При обнаружении несовпа-
236 Глава 7 Рис. 7.15. Способы формирования указателя сегмента. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Длина индекса б
Длина базы Указатель сегмента Рис 7.16. Способы формирования смещения, а-случай обращения к скалярным данным, б-случай обраще- ния к элементу записи, в-случай обращения к элементу стати- ческого вектора, г-случай обращения к элементу динамическо- го вектора Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Микропроцессор модели 68000 и модели 432 239 Осн процессор Контролирующий процессор Рис. 7.17. Схема контроля работоспособности микропроцессора. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 дения контролирующий процессор выра- батывает сигнал НЕКЯДаппарагная ошиб- ка). Схема включения основного и контро- лирующего процессоров представлена на рис. 7.17. 4. Информационная структура системы 1АРХ432 а. Организация памяти. В системе iAPX432 реализована двухуровневая структура памяти, при которой про- граммные средства функционируют в сег- ментированной среде, а местонахождение отдельного элемента данных определяется логическим адресом. Перед осуществле- нием выборки значения из физической па- мяти процессор автоматически преобра- зует логический адрес в физический. Про- странство логических адресов ограничено величиной 240, а значение физического адреса не может превышать 224. Поэтому аппаратные средства 1АРХ432 каждый раз осуществляют проверку заданного адреса на принадлежность диапазону адресов фактически имеющейся памяти. Если за- данный адрес в физической памяти не представлен, то необходимый сегмент должен загружаться в нее из вспомога- тельной памяти. Такой способ организа- ции носит название виртуальной памяти. б. Физическая адресация. Любой про- цессор системы iAPX432 имеет доступ к содержимому физической памяти. Про- цессор преобразует логические адреса в физические и выдает 24-разрядный физи- ческий адрес, который указывает на- чальный байт области памяти, содержа- щей адресуемое значение. Максимальная емкость физической памяти равна 16 М байт (224). в. Форматы данных. Когда процессор выполняет команды, он манипулирует операндами, задаваемыми в логическом адресном пространстве контекста соответ- ствующей операции. Некоторый от- дельный операнд может занимать 1, 2, 4, 8 или 10 байт памяти, которые соответ- ственно называются байтом, полусловом, словом, двойным словом и расширенным словом. Все операнды определяются их логическими адресами, которые затем пре- образуются в физические. В логическом адресе может присутствовать смещение, выражаемое числом байт, которое отде- ляет адрес первого байта операнда от ба- зового адреса сегмента данных. В случае многобайтовых операндов адрес указы-
240 Глава 7 Байт Полуслово Слово Двойное слово Расширенное слово Рис. 7.18. Основные форматы данных в мик- ропроцессоре iAPX432. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 вает только младший байт операнда, в то время как старшие его байты определяют- ся последующими более старшими смежными адресами. г. Представление данных. Относитель- но представления данных в системе iAPX432 приняты следующие соглашения: биты в поле байта, слова и т. п. нумеруют- ся в порядке возрастания их числовых зна- чений так, что самый младший бит нахо- дится справа; как показано на рис. 7.18, байты нумеруются справа налево. д. Требования к системе запоминающих устройств процессора iAPX432. Много- процессорная архитектура iAPX432 на- кладывает определенные требования на функционирование системы ЗУ, которая должна гарантировать монопольность обработки элементов данных, запраши- ваемых одновременно разными процессо- рами. Неделимая операция «Чтение-за- пись», выполняемая для операндов в виде полуслов и слов в памяти системы, необхо- дима для манипулирования системными объектами. Когда производится считыва- ние как часть неделимой операции «чте- ние - запись» из некоторой ячейки памяти, запоминающая система должна задержать выполнение всех других считываний из этой ячейки до тех пор, пока в нее не будет осуществлена запись, соответствующая выполняемой операции «чтение - запись», или пока не истечет интервал блокирова- ния по времени, связанный с конкретной такой операцией. Однако в ожидании вы- полнения записи как части неделимой опе- рации «чтение - запись» допустимо выпол- нение операций чтения и записи других типов. В случае обычного считывания или записи многобайтовых операндов запо- минающая система должна гарантиро- вать, что операнд будет полностью считан или записан в память, прежде чем начнется процесс другого обращения к той же самой ячейке памяти. Например, если одновременно происходят две операции записи в одну и ту же ячейку, система должна гарантировать, что множество элементов памяти, используемых для хра-
Таблица 7.17. Краткий перечень набора операторов, реализуемых УПД Операторы обработки Операторы обработки це- Операторы обработки це- символов лых чисел лых чисел двойной длины Пересылка Пересылка Пересылка Установка 0 Установка 0 Установка 0 Установка 1 Установка 1 Установка 1 Запоминание Запоминание Запоминание Операция И Сложение Сложение Операция ИЛИ Вычитание Вычитание Операция «Исключа- Увеличение на 1 Увеличение на 1 ющее ИЛИ» Уменьшение на 1 Уменьшение на 1 Операция «Исключа- Изменение знака Изменение знака ющее ИЛИ НЕ» Умножение Умножение Деление Деление Сложение Нахождение остатка Нахождение остатка Вычитание Увеличение на 1 Отношение типа «рав- Отношение типа «рав- Уменьшение на 1 но» но» Отношение типа «не Отношение типа «не равно» равно» Отношение типа ра- Отношение типа «рав- Отношение типа «рав- венет ва но нулю» но нулю» Отношение типа нера- Отношение типа «не Отношение типа «не венет ва равно нулю» равно нулю» Отношение «равно Отношение типа «боль- Отношение типа «боль- нулю» ше» ше» Отношение «не равно Отношение типа «боль- Отношение типа «боль- нулю» ше или равно» ше или равно» Отношение типа «боль- Присвоение знака Присвоение знака ше» «плюс» «плюс» Отношение типа «боль- Присвоение знака «ми- Присвоение знака «ми- ше или равно» нус» нус» Преобразование сим- Преобразование оди- Преобразование двой- вола в целое число без нарного целого числа ного целого числа в знака в целое двойной дли- одинарное ны Преобразование оди- Преобразование целого нарного целого в про- числа в целое без зна- межуточное действи- ка тельное число Преобразование целого двойной длины в про- межуточное действи- тельное число Операторы обработки Операторы обработки це- Операторы обработки одинарных чисел без знака лых чисел двойной длины без знака одинарных вещественных чисел Пересылка Пересылка Пересылка Установка 0 Установка 0 Установка 0 Установка 1 Установка 1 Запоминание Запоминание Запоминание Операция И Операция И Сложение (одинарное Операция ИЛИ Операция ИЛИ вещественное - проме- Операция «Исключа- Операция «Исключа- жуточное вещественное) ющее ИЛИ» ющее ИЛИ» Сложение (одинарное Операция «Исключа- Операция «Исключа- вещественное - одинар- ющее НЕ ИЛИ» ющее НЕ ИЛИ» ное вещественное) Получение обратно- Получение обратного Сложение (промежуточ- го кода числа кода числа ное вещественное - оди-
Выделение части числа Выделение части числа нарное вещественное) Занесение Занесение Вычитание (одинарное вещественное - одинар- ное вещественное) Определение номера Определение номера Вычитание (одинарное старшего значащего старшего значащего вещественное - проме- бита бита жуточное вещественное) Сложение Сложение Вычитание Вычитание Увеличение на 1 Увеличение на 1 Вычитание (промежу- точное вещественное- одинарное веществен- ное) Уменьшение на 1 Уменьшение на 1 Умножение Умножение Деление Деление Умножение (одинарное вещественное - одинар- ное вещественное) Нахождение остатка Нахождение остатка Умножение (одинар- ное вещественное - про- межу 1 очное веществен- ное) Отношение типа «рав- Отношение типа «рав- Умножение (промежу- но» но» Отношение типа «рав- Отношение типа «рав- но нулю» но нулю» Отношение типа «не Отношение типа «не равно нулю» равно нулю» точное вещественное- одинарное веществен- ное) Отношение типа «боль- Отношение типа «боль- Деление (одинарное ве- ше» ше» Отношение типа «боль- Отношение типа «боль- ше или равно» ше или равно» щественное -одинарное вещественное) Преобразование оди- Преобразование целого Деление (одинарное ве- нарного целого без зна- двойной длины без зна- щественное - промежу- ка в символ ка в одинарное без знака точное вещественное) Преобразование оди- Преобразование целого Деление (промежуточ- нарного целого без зна- двойной длины без зна- ное вещественное - оди- ка в целое двойной ка в целое двойной длины длины нарное вещественное) Преобразование оди- Преобразование целого Инвертирование нарного целого без зна- двойной длины без зна- Нахождение абсолют- ка в промежуточное ве- ка в промежуточное шественное число вещественное число ной величины Отношение типа «рав- Пересылка но» Пересылка Отношение типа «рав- Установка 0 но нулю» Установка 0 Отношение типа «боль- Запоминание ше» Отношение типа «боль- ше или равно» Запоминание Присвоение знака Сложение (веществен- Сложение «плюс» ное-вещественное) Вычитание Присвоение знака «ми- Умножение нус» Деление Преобразование оди- Сложение (веществен- нарного вещественного ное-промежуточное ве- Нахождение остатка в промежуточное ве- шественное) ственное
Сложение (промежуточ- ное вещественное-ве- щественное) Вычитание (веществен- ное -вещественное) Вычитание (веществен- ное - промежуточное вещественное) Вычитание (промежу- точное вещественное- вещественное) Умножение (веществен- ное -вещественное) Умножение (веществен- ное -промежуточное вещественное) Умножение (промежу- точное вещественное- вещественное) Деление (вещественное- вещественное) Деление (вещественное- промежуточное вещест- венное) Деление (промежуточ- ное вещественное-ве- щественное) Инвертирование Нахождение абсолют- ной величины Отношение типа «рав- но» Отношение типа «рав- но нулю» Отношение типа «боль- ше» Отношение типа «боль- ше или равно» Присвоение знака «плюс» Присвоение знака «ми- нус» Преобразование веще- ственного в промежу- точное вещественное Изменение знака Вычисление квадратно- го корня Нахождение абсолют- ной величины Отношение типа «рав- но» Отношение типа «рав- но нулю» Отношение типа «боль- ше» Отношение типа «боль- ше или равно» Присвоение знака «плюс» Присвоение знака «ми- нус» Преобразование проме- жуточного веществен- ного в целое двойной длины без знака Преобразование проме- жуточного веществен- ного в целое число двойной длины Преобразование проме- жуточного веществен- ного в вещественное одинарное Преобразование проме- жуточного вещественно- го в вещественное Операторы для работы с Операторы манипулирова- Операторы манипулирова- дескрипторами доступа ния правами доступа ния описаниями типов Копирование дескрип- Расширение прав Образование общего тора доступа Ограничение прав типа Образование частного типа
Присвоение дескрип- тору доступа значения «пусто» Поиск представления общего типа Поиск представления типа Поиск определения ти- па Операторы уточнения данных Операторы образования Операторы контроля пути сегментов доступа Формирование видово- го уточнения Формирование уточне- ния типа Поиск уточненного объ- екта Образование сегмента Проверка дескриптора данных доступа Образование сегмента Контроль за доступом доступа Образование классифи- цированного сегмента Образование дескрипто- ра доступа Операторы для работы с общими объектами данных Операторы использования Операторы ветвления объединительного адрес- ного пространства Блокировать объект Разблокировать объект Неделимое сложение це- лых одинарных без зна- ка Безусловный переход Пересылка в объедини- Переход по выполнению тельное адресное про- условия странство Переход по невыполне- Пересылка из объеди- нию условия нительного адресного пространства Неделимое сложение це- лых двойной длины без знака Неделимое занесение целого одинарного без знака Неделимое занесение целого двойной длины без знака Переход косвенный Переход внутрисегмен- тный Переход внутрисегмен- тный без трассировки Переход внутрисегмен- тный с возвратом Операторы взаимодейст- вия процессов Операторы взаимодействия Операторы взаимодейст- процессоров вия по контексту Передача сообщения Передача сообщения Вхождение в сегмент процессору доступа Прием сообщения Широковещательная пе- Вхождения в глобаль- редача сообщения про- ный сегмент доступа цессорам Условная передача Считывание информа- Установление контекст- ции о состоянии про- ного режима цессора и показания тай- мера Условный прием Обращение к контек- сту Фиктивная передача Вызов контекста вмес- те с сообщением Фиктивный прием Задержка Считывание показания таймера Возврат из контекста Источник, перепечатано с согласия фирмы Intel Corporation, copyright 1982
Микропроцессор модели 68000 и модели 432 245 нения операнда, не будет в результате со- держать некоторую перемежающуюся комбинацию элементов двух записы- ваемых значений. 5. Краткое описание системы команд микропроцессора iAPX432 В табл. 7.17 представлен перечень опе- раторов, реализованных в универсальном процессоре обработки данных iAPX432. 7.2.2. Процессор сопряжения <АРХ 43203 Процессор сопряжения iAPX43203 является средством обеспечения операций ввода-вывода для периферийных подсис- тем вычислительной системы на основе iAPX432. Он имеет собственное выделен- ное пространство адресов, однако его ин- терфейс с системой iAPX432 обеспечивает- ся посредством отображения некоторой INT jE _J 1 1 V. у 64 [2 T AD15 ALE □ 2 63 CZ T AD 14 OE □ 3 62 CZ T AD13 INH1 □ 4 61 CZ T AD12 vss El 5 T AD11 ХАСК/ □ 6 ( 0 59 c T DEN/ T Z3 7 58 c T AD9 HLD T 7 8 57 CZ T AD8 HDA T Z] 9 56^2 T vcc SYNC JZ n10 55 CZ T AD7 NAK/ J2 ZZJ11 54 CZ T AD6 BOUT T ZJ 12 53 CZ T AD5 ICS T 2j 13 52 CZ T AD4 PRQ £ ZJ14 51 CZ X AD3 vcc IE ZJ15 50 CZ X AD2 ACD15 jz 716 49CZ X AD1 ACD14 T □17 48 dZ T ADO ACD13 JE ZJ18 47 CZ X vss ACD12 T ZJ19 46 CZ T PSR ACD11 X 20 45 CZ T BHEN/ ACD10 T EJ21 44 CZ X WR/ ACD9 T 2] 22 43 CZ X cs/ ACD8 T E)23 42 CZ T ALARM/ vss JE Z224 41 CZ T CLR/ ACD7 T ZJ25 40 £ T HERR ACD6 T ZJ26 \ 39 CZ T FATAL/ ACD5 f 327 I 1 38 c T PCLK/ ACD4 jC □ 28 C ) 37 □ IL INIT/ ACD3 £ ZJ29 36 CZ X vcc ACD2 T ZJ30 35 CZ X CLKA ACD1 T EJ 3i 34 CZ X CLKB ACDO T EJ 32 p__ , 33 CI 1 ZC vss Рис. 7.19. Схема расположения выводов про- цессора сопряжения iAPX43203. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
246 Глава 7 части памяти подсистемы в память основ- ной системы. Как и другие процессоры вы- числительной системы, процессор сопря- жения работает в рамках параметризуе- мой мультипроцессорной системы, ориен- тированной на объекты данных. Процессор сопряжения 1АРХ43203, как и устройства iAPX43201 и iAPX43202, представляет собой СБИС, которая вы- полнена по разработанной фирмой Intel МОП-1-технологии с высокой плотностью компоновки и размещена в корпусе с четы- рехрядным расположением 64 выводов. Конфигурация их показана на рис. 7.19. 1. Функциональное описание процессора со- пряжения Архитектура процессора сопряжения 1АРХ43203 представлена в виде функцио- нальной схемы на рис. 7.20. Группы линий и сигналов, используемых при подключе- нии процессора сопряжения к шине пор- ционной передачи и периферийной подсис- теме, отображены на рис. 7.21. Для орга- низации ввода-вывода может использо- ваться какой-либо присоединенный про- цессор, например микропроцессор 8086, подключенный к процессору сопряжения; совместно оба они работают как некий процессор ввода-вывода вычислительной системы 1АРХ432. По отношению к присоединенному процессору процессор сопряжения являет- ся подчиненным; он, в частности, выпол- няет отображение части памяти перифе- рийной подсистемы в основную память 1АРХ432. В процессоре сопряжения ис- пользованы такие же принципы защиты памяти, как и в других процессорах 1АРХ432. Процессор сопряжения обеспечи- вает отображение в основную память сис- темы 1АРХ432 до пяти фрагментов памяти подсистемы. Эти фрагменты принято на- зывать «окнами» с номерами 0-4. В адресных ссылках при работе присоеди- Периф подсистема AD15 А00 ВНЕМ/, CS/, WR/ ALE, 0Е, SYNC DEN/ HLD, HDA INH1, ХАСК/, NAK/ INT PSR CLKA, CLKB Рис. 7.20. Структурная схема процессора со- пряжения iAPX43203. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Микропроцессор модели 68000 и модели 432 247 Vcc GND Группа сигн. устр. упр. шиной порц. передачи ACD15-0 PRQ --------- ICS -------► BOUT ◄--------- " ALARM/ _________► FATAL/ ----------- Группа J pcLK/ --------► сист. сигн. INIT/ » CLR/ --------► Сигн j CLKA -----------------► синхр. CLKB ----------► Сигн -------- HERR ◄---------► обнаружения аппаратной ошибки AD 15-0 BHEN/ cs/ WR/ ALE OE SYNC Сигн шины ► процессора сопряж }Сигн синхр Процессор сопряж. 43203 DEN/ -----Сигн управл HLD буфером HDA процессора сопряж INH1 ХАСК/ NAK/ Сигн синхр. процессора сопряж. тхтТ _____ Управл блоки 1151 ровкой процес сора сопряж PSR ------ Начальная установка процессора сопряжения Система iAPX432 Перифер. подсис. Рис. 7.21. Символическое обозначение процес- сора сопряжения iAPX43203. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 ненного процессора обычно используются логические адреса, однако в особых слу- чаях возможно использование 24-раз- рядных прямых физических адресов. 2. Базисная схема организации ввода-выво- да Типичная мощная микроЭВМ iAPX432 состоит из основной системы (универ- сальных процессоров данных) и одной или нескольких периферийных подсистем (про- цессоров сопряжения). На рис. 7.22 пред- ставлена архитектура системы с двумя процессорами сопряжения. Все процес- соры работают с общей основной па- мятью, которая содержит программы ос- новной системы, выполняемые универ- сальными процессорами данных. Как показано на рис. 7.22, основная си- стема является замкнутой и изолирован- ной от фактических устройств ввода-выво- да, или от «внешнего мира». Основная система как бы окружена «барьером», ко- торый защищает объекты в основной па- мяти от искажений, возможных при вы- полнении ошибочных или случайных опе- раций ввода-вывода. Управление вводом-выводом (синхро- низация, обработка прерываний, буфери- рование и т. д.) полностью осуществляется периферийными подсистемами и не тре- бует никакого участия УПД. Периферий- ная подсистема представляет собой про- цессор с определенными правами доступа, с собственной памятью, устройствами вво- да-вывода (УВВ) и т.д. Периферийные подсистемы независимы от УПД, и их чис- ло может быть увеличено или уменьшено в зависимости от требуемых характери- стик вычислительной системы. Периферийная подсистема аналогична каналу большой универсальной машины: она работает параллельно с основным процессором и управляет всеми операция- ми ввода-вывода низкого уровня. Однако в отличие от стандартных каналов универ- сальных ЭВМ конфигурация аппаратных или программных средств подсистем мо-
248 Глава 7 Рис. 7.22. Основная система iAPX432 и пери- ферийные подсистемы. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 жет изменяться с целью удовлетворения определенным системным требованиям. На аппаратном уровне процессор сопря- жения подключает периферийную подси- стему к основной системе посредством двух отдельных шин: шины порционной передачи процессора iAPX432 и некоторой общесистемной интерфейсной шины. Во- обще, любая система, в которой исполь- зуется 8- или 16-разрядная шина (напри- мер, шина Multibus фирмы Intel), может использоваться как периферийная подси- стема. В процессоре сопряжения предусмот- рены программные средства для управле- ния «окнами отображения», посредством которых осуществляется связь подсис- темы с памятью основной системы. «Ок- но» настраивается на некоторый от- дельный объект в основной памяти, что позволяет подсистеме считывать соответ- ствующие этому объекту данные или изме- нять их. Кроме того, в процессоре сопряжения реализуется набор разнообразных про- граммных функций, которые могут ис- пользоваться для манипулирования объек- тами в основной памяти и для управления связью между процессами, выполняемыми в основной системе и в подсистемах. Важная особенность системы iAPX432-обеспечение целостности дан- ных. Поэтому такие средства, как доступ к данным с использованием «окна отобра- жения» и «специальные функции», реали- зуются в процессоре сопряжения в расчете на стандартные средства адресации и за- щиты данных, принятые в системе 1АРХ432. Как показано на рис. 7.23, передача ин- формации при вводе или выводе осущест- вляется с помощью сообщений, переда- ваемых между основной системой и интерфейсом УВВ, который входит в состав периферийной подсистемы. Этот интерфейс представляет собой аппаратные и программные средства управления внешним УВВ (например, терминалом по- льзователя), файловой системой или неко- торым псевдоустройством (например, про- граммой подкачки или откачки данных). Сообщение, передаваемое из основной системы в подсистему, содержит информа- цию, необходимую для описания операции ввода-вывода (например, чтение или за- пись на консоль). Интерфейс устройства интерпретирует команду и в случае опера- ции записи передает сообщение на УВВ, а в случае выполнения операции чтения передает сообщение от УВВ к основной системе. Кроме того, в процессе обмена сообщениями между основной системой и интерфейсом устройства может приме- няться квитирование установления связи и сообщений. 3. Организация интерфейса в системе iAPX432 Процессор сопряжения фактически ра- ботает как в составе системы 1АРХ432, где
Микропроцессор модели 68000 и модели 432 249 Рис. 7.23. Цикл обслуживания устройств вво- да-вывода. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 обеспечена параметрическая защита данных, так и в составе периферийной под- системы, которая, например, может быть обычной микропроцессорной системой. Функционирование в двух средах позво- ляет процессору сопряжения производить пересылку данных между двумя система- ми. Как показано на рис. 7.22, процессор сопряжения работает на границе между ос- новной системой и подсистемой. Процес- сор сопряжения подключается к основной системе и работает в ней подобно любому другому процессору. Основное отличие УПД и процессора сопряжения состоит в том, что УПД работает по командам ос- новной системы, в то время как процессор сопряжения отрабатывает команды при- соединенного процессора. 4. Интерфейс периферийной подсистемы Интерфейс периферийной подсистемы (рис. 7.24) представляет собой комплекс аппаратных и программных средств, ко- торый обеспечивает пересылку сообщений между основной системой и УВВ, входя- щим в состав периферийной подсистемы. Аппаратные средства интерфейса перифе- рийной подсистемы образуются процессо- ром сопряжения, присоединенным процес- сором и локальной памятью. а. Аппаратные средства интерфейса пери- ферийной подсистемы Присоединенный процессор В качестве присоединенного процессо- ра могут использоваться различные уни- версальные 8- и 16-разрядные процессоры, например микропроцессоры 8085, 8086 фирмы Intel. Присоединенный процессор используется не только для совместной ра- боты с процессором сопряжения, его мож- но применять также и для выполнения ин- терфейсных программ. Вообще, в интер- фейс периферийной подсистемы может входить несколько присоединенных про- цессоров. Присоединенный процессор и процессор сопряжения связаны друг с другом с помощью шины; вместе они образуют некоторый логический процес- сор ввода-вывода (рис. 7.25). Физическая
250 Глава 7 Рис. 7.24. Интерфейс периферийной подси- стемы. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 связь между этими процессорами осущест- вляется по стандартной системной шине (например, Multibus фирмы Intel). Процес- сор сопряжения может формировать за- просы прерываний присоединенного про- цессора; управление на основе таких запросов позволяет присоединенному про- цессору работать независимо наподобие процессора ввода-вывода и выполнять свои собственные программы до тех пор, пока из процессора сопряжения не посту- пит запрос на прерывание, обусловленный некоторым процессором в основной систе- ме. Процессор сопряжения Процессор сопряжения делает подси- стемный модуль функционально закон- ченным, обеспечивая связь между основ- ной системой и периферийной подсисте- мой. Кроме того, процессор сопряжения «расширяет» набор команд присоединен- ного процессора тем, что обеспечивает ус- ловия для выполнения программ процес- сора ввода-вывода в основной системе. Процессор сопряжения, как показано на рис. 7.25, подключается к шине пор- ционной передачи и к шине периферийной подсистемы; он является аппаратным зве- ном системы, которое обеспечивает пере- сылку программно-управляемого потока данных между основной системой и пери- ферийной подсистемой. Поскольку процессор сопряжения под- ключается к основной системе таким же образом, как и УПД, он обеспечивает реа- лизацию таких возможностей аппаратуры системы 1АРХ432, как связь с процессором, аварийная сигнализация и функцио- нальный контроль с введением избыточно- сти. Для присоединенного процессора про- цессор сопряжения является как бы бло- ком памяти. До тех пор пока процессор со- пряжения не получит из основной системы запрос на связь, он бездействует. При по- ступлении такого запроса процессор со- пряжения генерирует запрос на прерыва- ние присоединенного процессора. По- скольку процессор сопряжения в пассив- ном состоянии рассматривается как блок памяти, другие процессоры периферийной
Микропроцессор модели 68000 и модели 432 251 Основная система Периферийная подсистема Рис. 7.25. Аппаратные средства интерфейса периферийной подсистемы. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 подсистемы (например, УМД) могут обра- щаться и к нему, и в свою очередь к основ- ной памяти системы. б. Программные средства интерфейса пе- риферийной системы Программный контроллер процессора со- пряжения Система программ периферийной под- системы, именуемая контроллером про- цессора сопряжения, выполняется на при- соединенном процессоре и использует средства процессора сопряжения и присое- диненного процессора для управления по- током данных между основной системой и подсистемой. Если контроллер процессора сопряже- ния реализуется в виде совокупности зада- ний, выполняемых под управлением опе- рационной системы RMX-80 или некото- рой другой мультизадачной операционной системы, то облегчаются его разработка и сопровождение. Организация контролле- ра процессора сопряжения как мультиза- дачной программной системы позволяет с помощью передачи сообщений поддер- живать асинхронную связь между основ- ной системой и подсистемой и обеспечи- вает структурирование подсистемы подоб- но тому, как структурирована основная система iAPX432. Связи между контролле-
252 Глава 7 ром процессора сопряжения и фактически- ми интерфейсами устройств полностью произвольны и определяются соответ- ственно прикладному назначению подси- стемы. Кроме того, могут применяться синхронные вызовы процедур с использо- ванием «сообщений», которые передаются между программными модулями в каче- стве параметров. Независимо от способа структурирова- ния контроллера процессора сопряжения его взаимодействие с основной памятью системы осуществляется через процессор сопряжения путем использования функ- циональных возможностей поддержки ус- ловий выполнения рабочей программы в основной системе, организации окон ото- бражения памяти и встроенных функций. Поддержка условий выполнения операций контроллером процессора сопряжения в основной системе Процессор сопряжения обеспечивает в основной системе наличие некоторых средств, которые создают условия для вы- полнения определенных операций конт- роллера процессора сопряжения в основ- ной системе. Этим средством является множество системных объектов, которы- ми способен манипулировать процессор сопряжения. Контроллер процессора со- пряжения представляется в основной па- мяти двумя объектами - процессом и кон- текстом. Сам процессор сопряжения пред- ставляется как процессорный элемент. Представление процессора сопряжения и его контроллера в виде указанных объек- тов создает такие условия выполнения операций контроллером процессора со- пряжения в основной системе, которые аналогичны условиям выполнения процес- сов в УПД, и позволяет использовать стандартные схемы адресации, защиты и передачи данных в пределах основной системы. Как и в случае УПД, процессор сопря- жения поддерживает режим работы с не- сколькими процессами, а контроллер про- цессора сопряжения осуществляет выбор тех средств поддержки функционирования, которые соответствуют подлежащей вы- полнению функции. Это позволяет устанавливать индивидуальные режимы работы для интерфейсов отдельных устройств в периферийной подсистеме. При использовании индивидуальных ре- жимов функционирования некоторая ошибка в интерфейсе одного устройства не оказывает влияния на процессы, упра- вляющие интерфейсами других устройств. Окна отображения памяти Пересылка данных между основной си- стемой и подсистемой может осущест- вляться только с помощью «окна», устана- вливаемого процессором сопряжения. Ок- но определяет соответствие (или отобра- жение) между подобластью памяти подси- стемы в области адресов, выделенных процессору сопряжения, и некоторым объектом в основной памяти (рис. 7.26). Когда некоторый процесс в подсистеме (например, контроллер процессора сопря- жения) считывает данные, используя логи- ческий адрес в пределах окна, то он полу- чает данные из соответствующего окну объекта, находящегося в основной памяти системы. Аналогично запись данных по адресу в пределах окна приводит к факти- ческой записи данных в область основной памяти, соответствующую определенному объекту основной системы. Процессор со- пряжения может устанавливать четыре ок- на, отображающих подобласти памяти подсистемы на четыре различных объекта в основной памяти. Встроенные функции Пятое окно (которое ранее упомина- лось как механизм расширения прог- раммных средств присоединенного про- цессора) позволяет контроллеру процессо- ра сопряжения обращаться к некоторым специальным функциям. Посредством за- писи операндов и кодов операций в уста- новленные ячейки пятого окна контроллер процессора сопряжения вызывает выпол- нение одной из встроенных функций про- цессора сопряжения. Эта процедура сход- на с организацией операций ввода-вывода по принципу распределения памяти между стандартными периферийными устрой- ствами, примером которых может слу-
Микропроцессор модели 68000 и модели 432 253 Пространство памяти периферийной подсистемы Пространство памяти основной системы Адреса локальной памяти Обычное обращение к памяти Адреса памяти процессора сопряжения Обращение к памяти с использованием окна отображения памяти Поддиапазон I I I I 1 т I Процессор сопряжения отображает поддиапазон адресов периферийной подсистемы на объект Рис. 7.26. Организация процессором сопряже- ния «окна» отображения памяти. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 жить контроллер накопителя на гибких ди- сках. После выполнения функции процес- сор сопряжения передает информацию о состоянии контроллеру процессора со- пряжения. В то время как с использова- нием пятого окна выполняется некоторая функция, процессор сопряжения может осуществлять передачу данных посред- ством четырех других окон. Встроенные функции процессора со- пряжения позволяют его контроллеру перестраивать окна, манипулировать объектами в основной памяти и обмени- ваться сообщениями с процессами УПД в основной системе.
254 Глава 7 в. Дополнительные возможности процес- сора сопряжения Процессор сопряжения наряду с рас- смотренными выше обеспечивает еще две возможности, которые используются только в исключительных обстоятель- ствах : режим физических адресных ссылок и доступ с использованием объединитель- ного адресного пространства. Режим физических адресных ссылок Процессор сопряжения обычно рабо- тает в режиме логических адресных ссы- лок, для которого характерны объектно- ориентированная адресация и использова- ние системы защиты памяти. Однако в некоторые периоды времени объекты, ис- пользуемые аппаратными средствами для выполнения преобразования логических адресов в физические, бывают повреждены или отсутствуют. В таких случаях не могут использоваться логические адресные ссыл- ки и процессор сопряжения должен перехо- дить в режим работы с физическими адресными ссылками. В режиме использования физических адресных ссылок сокращается набор функ- ций, выполняемых процессором сопряже- ния, однако в пределах окон процессор со- пряжения оперирует логическими адресными ссылками, за исключением то- го, что окна отображаются на сегменты памяти, задаваемые непосредственно 24-разрядными адресами, как в тради- ционных методах адресации памяти ЭВМ. Режим физических ссылок наиболее часто используется при начальном пуске для за- грузки двоичных отображений объектов из подсистем в память основной системы. После загрузки нужных двоичных отобра- жений в основную память может быть ис- пользован режим работы с логическими адресными ссылками. Использование объединительного адрес- ного пространства Помимо основной памяти в архитекту- ре iAPX432 допускается использование еще одного адресного пространства, кото- рое называется объединительным адресным пространством процессора и па- мяти. Одно из четырех окон процессора сопряжения программным способом на- страивается на обеспечение доступа с ис- пользованием любого адресного про- странства. Когда объединительное про- странство адресуется с использованием логических адресных ссылок, применяют- ся обычные методы объектно-ориентиро- ванной адресации. В режиме использова- ния физических адресных ссылок оно адресуется как некоторый массив 16-раз- рядных регистров, в котором каждый ре- гистр задается 24-разрядным физическим адресом. 7.2.3. Операционная система iMAX системы IAPX432 Объектно-ориентированная архитекту- ра iAPX432 нашла отражение в структуре и реализации операционной системы iMAX, разработанной фирмой Intel для более полного использования возможно- стей новой архитектуры, воплощенной в системе 1АРХ432. Преимуществами объектно-ориентированной системы по сравнению с традиционными является бо- лее совершенная конфигурация системы, ее расширяемость и живучесть. В рамках объектно-ориентированной системы 1АРХ432 ее собственная память представляется как совокупность структур данных или объектов. Принципы парамет- рической защиты, используемые в этой си- стеме, основаны на ограничении прав до- ступа программ или процессов к объектам в памяти системы. Благодаря такому огра- ничению никакие процессы не могут оши- бочно изменить состояние объектов. Неко- торые типы объектов предопределены самой архитектурой системы и исполь- зуются в аппаратных средствах для упра- вления ее работой. Операционная система iMAX ориенти- рована скорее на возможности изготовле- ния оборудования системы iAPX432, чем на потребности пользователя, и в мини- мальной конфигурации рассчитана на обеспечение совокупности операций, необ- ходимых для поддержки объектов, опреде- ляемых аппаратными средствами си- стемы. Эта операционная система исполь-
Микропроцессор модели 68000 и модели 432 255 зуется для порождения, изменения и уничтожения всех системных объектов, включая процессы, порты ввода-вывода и ресурсы памяти. Система iMAX обеспе- чивает для определенного набора устройств организацию базового машин- но-независимого ввода-вывода. В допол- нение к средствам, реализованным в систе- ме минимальной конфигурации, опера- ционная система iMAX будет поддержи- вать виртуальную память (если аппа- ратные средства допускают ее организа- цию), а также файловую систему объектов в долговременном запоминающем устрой- стве. Система iMAX обеспечивает также выполнение таких служебных операций, как планирование выполнения процессов, откачку и подкачку данных в процессе вво- да-вывода и связь с оператором и пользо- вателями. Операционная система iMAX «скрое- на» из «пакетов» программ, необходимых пользователям для определенных прило- жений, и если какой-то конкретный пакет недостаточно подходит для определенных целей, то он может быть легко заменен ка- ким-либо другим. 7.2.4. Сфера применения системы 4АРХ432 Микропроцессор 432 фирмы Intel при- меняется в одноплатной микроЭВМ Intellec 432/100, совместимой с шиной Multibus и используется фирмой Intel в ка- честве вычислительного средства в систе- мах поддержки разработок. МикроЭВМ 432/100 оснащается портом RS-232 и фор- мирователем объектов для символических команд системы 432, который облегчает использование ее архитектурных возмож- ностей и программирование. Мощная микроЭВМ предназначается для использования в многофункцио- нальных системах со сложным про- граммным обеспечением, например таких, как современные банковские системы. В простых случаях банковские системы обеспечивают выполнение небольшого числа различных операций, однако в более крупных системах предполагается наличие управления защитой данных оперативного выполнения денежных отчислений, учета, обеспечения прав доступа к кредитам и многих других операций, требующих одновременного выполнения. В дальнейшем система 432 найдет при- менение в системах коммутации сетей дальней связи, в информационных систе- мах реального времени, в системах авто- матизированного проектирования, в систе- мах коммерческих расчетов и в системах автоматизации и управления предприятия- ми. 7.2.5. Заключение Микропроцессор iAPX432 является новым техническим средством, и область его применения определена далеко не окончательно. Фирма Intel продолжает пу- бликовать материалы, содержащие под- робную информацию о системе команд микропроцессора 432, о способах ввода- вывода и других характеристиках системы. Задачи и вопросы 7.1. Выполните задание 6.1, используя систему команд микропроцессора 68000. 7.2. Определите назначение выводов BERR, UDS, LDS, BGAC и VMA микро- процессора 68000. 7.3. В чем заключаются основные от- личия функциональных возможностей ми- кропроцессоров 8086 и 68000? 7.4. Определите назначение команд LINK, UNLINK и СНК микропроцессора 68000. 7.5. Сравните принципы организации прерываний микропроцессоров 68000 и Z8000. 7.6. Используя две схемы 6821 фирмы Motorola, разработайте аппаратные и про- граммные средства реализации двойного 16-разрядного порта для системы 68000. 7.7. Какое минимальное количество микросхем необходимо для разработки микроЭВМ на базе микропроцессора 432? Дайте функциональное описание исполь- зуемых устройств. 7.8. Опишите основные функцио- нальные особенности системы 432.
Глава 8 ТИПИЧНЫЕ ИНТЕРФЕЙСНЫЕ МИКРО- СХЕМЫ УСТРОЙСТВ МИКРО- ПРОЦЕССОРНЫХ СИСТЕМ В настоящей главе рассматриваются функциональные возможности и интер- фейсные характеристики типичных устройств микропроцессорных систем. Здесь будут представлены устройства 2716, 8355/8755, 8155/8156, 8257, 8279 фирмы Intel и устройство 6850 фирмы Motorola. В приложении Б даны фирменные специ- фикации некоторых из перечисленных устройств. 8.1. Типичные ППЗУ, ОЗУ и устройства ввода-вывода В этом разделе рассматриваются функ- циональные характеристики таких устройств, как ПЗУ/ППЗУ, ОЗУ, и устройств ввода-вывода, а именно устройства 2716, 8355/8755 и 8155/8156 фирмы Intel. Главной особенностью ППЗУ является возможность его повтор- ного программирования посредством из- менения в определенной последовательно- сти уровней напряжения на определенных выводах устройства с помощью специаль- ного программатора ППЗУ. Другой важ- ной особенностью ППЗУ является его энергонезависимость. Это означает, что в случае снятия питающего напряжения, например из-за неисправности, в ППЗУ со- храняется информация. ППЗУ строятся на основе МОП-структур с лавинной инжек- цией и «плавающим» затвором. По со- ответствующей технологии каждый бит реализуется с помощью полевого транзи- стора с «плавающим» затвором (затвор не соединяется с транзистором). Присутствие или отсутствие электронов на плавающем 1} Этот раздел написан на основе мате- риалов, любезно представленных фирмой Intel Corporation. затворе используется для представления логических значений 1 и 0 соответственно. При приложении определенных уровней напряжения на соответствующие выводы ППЗУ электроны с высокой энергией ин- жектируют в плавающий затвор, что при- водит к установлению логического значе- ния 0. Поскольку затвор является «пла- вающим», электроны не могут быть уда- лены электрически. Эти электроны могут быть удалены с помощью воздействия на кристалл ультрафиолетового излучения. Ультрафиолетовое излучение вызывает поток электронов из плавающего затвора в кремниевую подложку транзистора; та- ким образом происходят рассеивание за- ряда в плавающем затворе и установка со- ответствующего бита памяти в состояние 1. Отметим, что, поскольку невозможно подвергать действию ультрафиолетового излучения отдельный плавающий затвор, необходимо производить стирание инфор- мации во всем кристалле. Невозможно стирать или перепрограммировать неко- торый определенный бит или слово. Сле- дует также отметить, что перед каждым перепрограммированием ППЗУ должна стираться содержащаяся в нем информа- ция. Существуют два основных типа ОЗУ - статические и динамические. В статических ОЗУ информация хранится в триггерах, в то время как в динамических ОЗУ для представления информации используются конденсаторы. Следовательно, в динами- ческих ОЗУ информация должна регенери- роваться с использованием типовых схем регенерации, реализуемых на том же самом кристалле. ОЗУ обычно являются энергозависимыми, т. е. в случае выключе- ния напряжения информация в ОЗУ не сохраняется. Устройства ПЗУ/ППЗУ и схема ввода-
Типичные интерфейсные микросхемы устройств 257 вывода 8355/8755 или ОЗУ и схема ввода- вывода 8155/8156 являются однокри- стальными. Эти устройства будут описаны более подробно ниже. 8.1.1. ППЗУ 2716 фирмы Intel Устройство 2716 фирмы Intel является электрически программируемым по- стоянным запоминающим устройством емкости 2К х 8 со стиранием информации с помощью ультрафиолетового излучения (СППЗУ). Для устройства 2716 требуется один источник питания напряжением 5 В. Оно может программироваться в любой последовательности. Программироваться могут как отдельные ячейки, так и блоки ячеек. Нет необходимости в течение одно- го сеанса программирования программи- ровать все ячейки устройства 2716. Следо- вательно, ошибки, допущенные при про- граммировании, могут легко исправлять- ся. Время выборки из СППЗУ 2716 равно 350 нс; это устройство совместимо с большинством микропроцессоров фир- мы Intel. На рис. 8.1 представлены распределе- ние выводов, структурная схема и условия выбора режима использования устройства 2716. На рис. 8.2 приведена типовая схема подключения СППЗУ емкостью 16К байт, реализованной с использованием устройств 2716, к микропроцессору 8085. Отметим, что для получения памяти объе- мом 16К байт требуется использовать во- семь устройств 2716. Поскольку линии AD0-AD7 микропроцессора 8085 мульти- плексированы, для фиксирования адреса, используемого при адресации устройства 2716, необходим внешний фиксатор адреса (схема 8212), который открывается по зад- нему фронту сигнала ALE (ОТКРЫТИЕ ФИКСАТОРА АДРЕСА). Линии А8-А1о микропроцессора 8085 непосредственно соединяются с выводами А8-А10 устрой- ства 2716. Таким образом, обеспечивается подключение И адресных линий устрой- ства 2716. Для формирования сигналов отпира- ния СЕ0-СЕ7, подаваемых на соответ- ствующие входы устройства 2716, исполь- зуется дешифратор ПЗУ 3604А, на входы которого поступают сигналы с линий А8-А15 микропроцессора 8085. Сигнал RD микропроцессора 8085 используется для отпирания выходной линии (ОЕ) устрой- ства 2716. Для управления устройством 3604А используются также два сигнала вы- бора микросхемы: сигнал CSi подается на вход, чувствительный к фронту сигнала, а сигнал CS2-Ha вход, чувствительный к уровню сигнала (для подачи этого сигна- ла используется низкий уровень). Для от- пирания дешифратора ПЗУ используются сигналы ALE и Ю/М микропроцессора 8085, подаваемые на входы CSi и CS2 соответственно. 1. Программирование СППЗУ После выполнения стирания информа- ции все разряды устройства 2716 имеют логическое значение 1. При программиро- вании, т.е. при записи данных в СППЗУ, необходимые разряды переводятся в со- стояние логического 0. Хотя при програм- мировании в память записываются только значения 0, слова данных приобретают требуемые значения. Устройство 2716 переводится в режим программирования, когда на вход Vpp по- дается_питающее напряжение 25 В, а на вход ОЕ-напряжение VIH. Данные, подле- жащие записи в СППЗУ, подаются на ин- формационные выходы устройства 2716 параллельно по 8 бит. Как адресные входы, так и выводы данных устройства 2716 требуют подачи сигналов уровня ТТЛ. 2. Проверка правильности программирова- ния СППЗУ Чтобы определить правильность про- граммирования, должна быть выполнена проверка значений битов, которые были подвергнуты операции программирова- ния. В режиме проверки на вход Vpp дол- жно быть подано напряжение 25 В. Во всех режимах, кроме режима программирова- ния и проверки правильности программи- рования, на входе Vpp должно быть напря- жение 5 В.
Конфиг. выводов 2716 А, С 1 24 3 VCC АбС 2 23 □ А8 а5С 3 22 23 а9 Аа С 4 21 23 vPP Аз С 5 20 □ ОЁ Аз С 6 16К 19 □ А10 А. С 7 18 □ СЁ Ао С 8 17 □ 07 Оо с 9 16 □ об О, С 10 15 □ 05 О2 с И 14 □ о4 GND С 12 13 □ Оз Наименования ВЫВОДОВ Ао Адресные выводы СЁ/PGM Отпирание микросхемы/программирование ОЁ Разрешение вывода О0-О7 Выходы Рис. 8.1. Структурная схема, конфигурация выводов и режимы работы устройства 2716. Примечание Наименования выводов 18 и 20 были изменены с целью согласования обозначений в рамках семейства ППЗУ и ОЗУ на 16К, 32К и 64К Эю изменение никак не повлияло на процесс производства и на характеристики устройства 2716) Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982.
Режим работы Выводы Режим CE/PGM (18) ЕО (20) Vpp (21) (> Выходы (9-11,13-17) Ввод VlL VIL + 5 + 5 Выходные данные Резерв VIH Не имеет значения + 5 + 5 Высокий уровень Программиров Импульс программ от VIL до VIH VIH + 25 + 5 Входные данные Контроль правильн. программы VlL VlL + 25 + 5 Выходные данные Запрет программиров. VlL VIH + 25 + 5 Высокий уровень Структурная схема Выходы данных Vcc ° * О0-О7
Типичные интерфейсные микросхемы устройств 259 Рис. 8.2. Структурная схема подключения ППЗУ на 16К к микропроцессору 8085. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 8.1.2. ПЗУ 8355 и СППЗУ 8755 фирмы Intel В устройство 8355 входит ПЗУ ем- костью 2К х 8 (16384 бит) и два 8-раз- рядных порта ввода-вывода. Каждая ли- ния порта ввода-вывода может програм- мироваться индивидуально и определять- ся как входная или выходная. Устройство 8755 подобно устройству 8355, отличия между ними представлены в приводимой ниже таблице: 1. Конфигурация выводов устройства 8755 На рис. 8.3 представлены конфигура- ция выводов и структурная схема устрой- ства 8755. Назначение выводов не требует специального пояснения. 2. Функциональное описание устройства 8755 а) В устройство входит СППЗУ емкостью 2К х 8 бит, адресуемое И-разрядным адресом и сигналами разблокирования микросхемы. Адреса и сигналы CEt и СЕ2 фиксируются по заднему фронту сигнала ALE в фиксаторе адреса. б) В состав устройства входят два 8-раз- Устройство 8355 Устройство 8755 ПЗУ 2К х 8 бит Вывод 1 используется для сигнала CEj Вывод 5 не использу- ется СППЗУ 2К х 8 бит Вывод 1 используется для сигнала PROG/CEi Вывод 5 используется для подачи напряжения VDD Поскольку пользователь преимуществен- рядных порта ввода-вывода А и В. С по- но имеет дело с устройством 8755, опишем мощью регистра направления передачи это устройство более подробно. данных каждый разряд порта ввода-выво-
260 Глава 8 Конфигурация выводов Рис. 8.3. Структурная схема и конфигурация выводов устройства 8755. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 да может определяться как входной или выходной. Если определенный разряд это- го регистра установлен в состояние 0, то соответствующий разряд порта ввода-вы- вода используется для ввода, в противном случае он используется для вывода. Таким образом, порты ввода-вывода устройства 8755 могут поразрядно «программиро- ваться» с целью задания режима ввода или вывода. Отметим, что содержимое реги- стров направления передачи данных не мо- жет быть считано. С помощью сигналов AD0 и ADj адресуются порты ввода-выво- да и регистры направления передачи данных. Соответствие между значениями сигналов и адресуемыми объектами уста- навливается согласно следующей таблице: AD, AD0 Порт или регистр направления передачи данных 0 0 Порт А 0 1 1 1 0 1 Порт В Регистр направления передачи данных порта А Регистр направления передачи данных порта В 3. Программирование СППЗУ типа 8755 После выполнения каждого стирания все разряды СППЗУ типа 8755 принимают значение логической 1. Устройство 8755 может программироваться либо с по- мощью автономного программатора ППЗУ, либо с помощью модуля програм- мирования ППЗУ в составе системы под- держки разработок. В последнем случае программирование устройства 8755 вы- полняется особенно легко: обычно с по- мощью клавиатуры вводится начальный и конечный адреса области СППЗУ, под- лежащей программированию, а затем на- жатием клавиши «Программирование» инициируется процесс «ввода» желаемой объектной программы в СППЗУ типа 8755. Отметим, что перед каждым про- граммированием информация в СППЗУ должна стираться посредством воздей- ствия на устройство в течение примерно 15 мин ультрафиолетовым излучением. 4. Применение устройства 8755 На рис. 8.4 и 8.5 показано, каким обра- зом устройство 8755 подключается к ми- кропроцессору 8085 в адресном простран- стве памяти и ввода-вывода соответствен- но. Если для подключения СППЗУ приме- няется стандартный способ ввода-вывода,
Типичные интерфейсные микросхемы устройств 261 Рис. 8.4. Схема подключения устройства 8755 к микропроцессору 8085 в адресном простран- стве памяти. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 то для управления этим устройством ис- пользуются как сигнал СЕ2, так и сигнал СЕР Используя свободные адресные ли- нии Ап_15 и сигналы разблокирования микросхем (СЕ), в состав системы на осно- ве микропроцессора 8085 можно включить до пяти устройств 8755 без применения де- шифратора для выработки разрешающих сигналов (рис. 8.5). Если реализуется подключение в адрес- ном пространстве памяти, то устройство 8755 будет выбираться посредством ком- бинации сигнала разблокирования микро- схемы и сигнала Ю/М с использованием для их подачи адресных линий AD8_ 15 ми- кропроцессора. Такой вариант подключе- ния представлен на рис. 8.4. 8.1.3. Устройства 8155/8156 фирмы Intel В устройство 8155 фирмы Intel входит статическое ОЗУ емкостью 256 х 8 (2048 бит), два 8-разрядных и один 6-разрядный порты ввода-вывода и 14-разрядный про- граммируемый счетчик/таймер. 6-раз- рядный порт может использоваться для управления двумя 8-разрядными портами при работе в режиме подтверждения. Устройство 8156 аналогично устрой- ству 8155, за исключением того, что в устройстве 8156 для подачи сигнала от- пирания кристалла используется высокий уровень, а в устройстве 8155 этот сигнал активен, когда на соответствующий вход подается низкий уровень напряжения. 1. Конфигурация выводов и структурная схема устройств 8155 и 8156 На рис. 8.6 представлены конфигура- ция выводов и структурная схема устройств 8155 и 8156. Назначение выво- дов устройства не требует специального пояснения. 2. Регистр команд и регистр состояния Регистр команд является 8-разрядным регистром, в котором разряды 0-3 исполь- зуются для указания функций портов (ввод или вывод), разряды 4 и 5 используются для разблокирования или блокирования прерываний, поступающих из порта С, когда он действует как порт, сопровож- дающий операции ввода-вывода в портах А и В, а последние два разряда 6-7 исполь- зуются для управления таймером. Содержимое регистра команд может
Рис. 8.5. Схема подключения устройства 8755 к микропроцессору 8085 в случае стандартной организации ввода-вывода. Примечание Для первого в системе устройства 8755 исполь- зуется вход отпирания микросхемы СЕЬ для остальных устройств 8755 используется вход СЕ2. Это позволяет иметь в системе до пяти устройств 8755 без применения специального дешифратора Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Типичные интерфейсные микросхемы устройств 263 Конфигурация выводов PC4 c TIMER IN C RESET C PC5 C TIMER OUT C io/м C CEORCE* C RDC WR C ALE C AD0 C AD, AD2 AD3 AD4 ad5 AD6 AD7 Vss d 20 2 3 4 5 6 7 8 9 10 с с С с 12 13 14 15 16 17 18 19 8155/ 8166 8155-2/ 8156-2 39 38 37 36 35 34 33 32 30 29 28 _J vcc □ PC 2 □ PC, □ PCo □ PB7 □ PB6 □ PB5 □ PB4 □ РВз □ PB2 □ PB, □ PB0 27 26 25 24 23 22 21 □ РА6 РА5 ра4 РА3 ра2 PAi □ РАо Рис. 8.6. Структурная схема и конфигурация выводов устройств 8155/8156. Примечание Вывод 8, отмеченный на схеме звездочкой, в устройствах 8155/8155-2 имеет обозначение СЕ, а в устройствах 8156/8156-2-обозначение СЕ Источник перепечатано с разрешения Intel Corporation, copyright 1982 быть изменено при выполнении операции ЗАПИСЬ по адресу ввода-вывода XXXXX000. При этом сигнал Ю/М = 1 и должен быть активным сигнал разблоки- рования микросхемы. На рис. 8.7 опреде- лено значение каждого бита управляюще- го байта. Содержимое управляющего регистра не может быть считано. Регистр состояния состоит из семи фиксаторов-по одному на каждый разряд. Шесть из них (0-5) используется для фикса- ции состояния портов, а один (6)-для представления состояния таймера. Состояние таймера и портов ввода-вы- вода может быть опрошено посредством считывания содержимого регистра состоя- ния (адрес XXXXX000). Формат слова со- стояния представлен на рис. 8.8. Отметим, что запись данных в регистр состояния не может быть осуществлена, поскольку он имеет общий адрес ввода-вывода с управ- ляющим регистром и, когда производится запись по этому адресу, выбирается упра- вляющий регистр. 3. Ввод-вывод Все порты устройств 8155/8156 пред- назначены для параллельного ввода-выво- да, нельзя устанавливать режим ввода или вывода для каждого разряда этих портов. Все разряды отдельного порта исполь- зуются параллельно и только для ввода или вывода. На рис. 8.9 представлена схе- ма адресации таймера и портов ввода-вы- вода устройств 8155/8156. Отметим, что для определения порта ввода-вывода ис- пользуются сигналы AD0-AD2 а) Управляющий регистр и регистр со- стояния Для адресации этих регистров использует- ся один и тот же адрес XXXXX000. Этот адрес играет двойную роль. Когда про- изводится операция ЗАПИСЬ по указанно- му адресу, информация (команда) записы- вается в управляющий регистр. Содержи- мое этого регистра не может быть считано и подано на выводы устройства. Когда вы- полняется операция ЧТЕНИЕ с использо-
264 Глава 8 7 6 5 4 3 2 10 тм2 ТМ! 1ЕВ 1ЕА РС2 PCj РВ РА Выводы РАо.7 Выводы РВо-7 0 = Ввод 1 = Вывод и» Команда таймера << Выводы PCo-Sc Разрешение прерывания по порту А У Разрешение прерывания по порту В 00 = ALT 1 11 = ALT 2 01 = ALT 3 10 = ALT 4 1 = Разблокировать 0 = Заблокировать 00 = Холостая команда, не влияющая на работу таймера 01 = Останов таймера, если он находился в состоянии счета, или "Холостая команда", если таймер не был запущен 10 = Останов таймера непосредственно после выработки сигнала ТС Холостая команда, если таймер не был запущен 11 = Если таймер был запущен, то установка режима работы и загрузка счетчика Запуск таймера непосредственно после загрузки Если таймер находится в состоянии счета, то установка нового режима и загрузка счетчика производятся после срабатывания таймера Рис. 8.7. Назначение разрядов командного ре- гистра. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 Запрос прерывания по порту А Буфер порта А занят/свободен (ввод- вывод) Разрешение прерывания по порту А Запрос прерывания по порту В Буфер порта В занят/свободен (ввод-вывод) Разрешение прерывания по порту В Прерывание таймера (этот разряд устанавливается в 1, когда сраба- тывает таймер в связи с окончани- ем счета, и устанавливается в 0 при считывании содержимого командно- го регистра или регистра состояния и рри выполнении начальной уста- новки аппаратных средств) Рис. 8.8. Назначение разрядов регистра со- стояния. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Типичные интерфейсные микросхемы устройств 265 Адрес ввода-вывода — Адресуемый объект А7 А6 А5 А4 АЗ А2 AI АО X X X X X 0 0 0 Управляющий регистр или регистр состо- яния X X X X X 0 0 1 Универсальный порт ввода-вывода А X X X X X 0 1 0 Универсальный порт ввода-вывода В X X X X X 0 1 1 Порт С-ввод-вывод общего назначения или функции управления X X X X X 1 0 0 Младшие 8 бит таймера X X X X X 1 0 1 Старшие 6 бит таймера и 2 бита управле- ния режимом работы таймера Рис. 8.9. Схема адресации таймера и портов ввода-вывода. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 Примечание Разряды адреса, отмеченные знаком X при адреса- ции не используются Для осуществления выборки соответ- ствующего адресованного объекта (регистра) должны быть за- даны следующие значения сигналов Ю/М = 1, СЕ = 1 (для 8156), СЕ = 0 (для 8155) ванием адреса XXXXX000, на линии AD0_7 выдается информация о состоянии портов и таймера. б) Порт А. Порт А представляет собой регистр, который в зависимости от содержимого командного регистра и регистра состояния может использоваться либо как порт вво- да, либо как порт вывода. Кроме того, этот порт в зависимости от содержимого командного регистра может работать в базисном режиме ввода-вывода или в ре- жиме ввода-вывода с квитированием сооб- щений. Порту ввода-вывода А соответ- ствуют выводы РА0_7 устройств 8155/8156. Этот порт имеет адрес ХХХХХ001. в) Порт В. Порт В представляет собой регистр, функции которого аналогичны функциям порта А. Порту ввода-вывода В соответ- ствуют выводы РВ0_7 устройств 8155/8156. Этот порт имеет адрес ХХХХХ010. г) Порт С. Порт С является 6-разрядным реги- стром, который имеет адрес ХХХХХ011, и может работать в режиме порта ввода или в режиме порта вывода. Кроме того, этот порт может использоваться для пред- ставления сигналов, сопровождающих ввод-вывод в портах А и В. Последний ре- жим использования порта С достигается надлежащим «программированием» раз- рядов AD2 и AD3 регистра состояния. Когда порт С (выводы РС0_5) исполь- зуется для обеспечения режима квитирова- ния, три разряда этого порта выделяются для порта А и три разряда-для порта В. Первый бит в каждой тройке разрядов ис- пользуется для выдачи устройством 8155 запроса на прерывание, второй является выходным сигналом, указывающим со- стояние буфера (заполнен, свободен), а тре- тий используется для приема сигнала стробирования порта при вводе (табл. 8.1). 4. Таймер Таймер представляет собой 14-раз- рядный счетчик, работающий на вычита- ние; импульсы поступают на его вход TIMER IN. При завершении счета таймер обеспечивает выработку либо сигнала пря- моугольной формы, либо импульсного сигнала. Таймер реализуется в виде 16-раз- рядного регистра, в котором 14 разрядов используется для счетчика и 2-для зада- ния режима работы таймера. Младший байт регистра имеет адрес ввода-вывода ХХХХХ100, а старший байт-адрес ХХХХХ101. «Программирование» таймера заклю- чается в загрузке в него того или иного значения, определяющего некоторый ин- тервал времени. Это значение загружается в таймер побайтно с использованием ука- занных выше адресов младшего и старше-
266 Г лава 8 Таблица 8.1. Варианты задания значений управляющих разрядов порта С Вы- вод Вариант 1 Вариант 2 Вариант 3 Вариант 4 РС0 Порт ввода Порт вывода A INTR (прерывание по порту А) A INTR (прерывание по порту А) PC. Порт ввода Порт вывода В BF (буфер порта А занят) A BF (буфер порта А занят) РС2 Порт ввода Порт вывода A STB (строб порта А) A STB (строб порта А) РС3 Порт ввода Порт вывода Порт вывода В INTR (прерывание по порту В) РС4 Порт ввода Порт вывода Порт вывода В BF (буфер порта В занят) РС5 Порт ввода Порт вывода Порт вывода В STB (строб порта В) Примечание. Перепечатано с разрешения Intel Corporation. го байтов регистра таймера. Время счета импульсов, поступающих на вход таймера, определяется содержимым его разрядов 0-13. Разряды 14-15 используются для за- дания типов выходных сигналов таймера (см. рис. 8.10). В зависимости от значений разрядов 14-15 или, как они обозначены на рисун- ках, Mt и М2 может быть задан один из четырех режимов работы таймера. Вы- ходные сигналы, соответствующие этим режимам, представлены в виде временных диаграмм на рис. 8.11. В режиме 0 сигнал на выходе таймера имеет высокий уровень в течение поло- вины времени счета, а во вторую половину этого интервала сигнал на выходе таймера имеет низкий уровень. Режим 1 отличается от режима 0 лишь тем, что после каждого срабатывания тай- мера последний автоматически перезагру- 7 6 5 4 3 2 1 0 м2 Ml Т13 Т12 Ти Tio Т9 Т8 Реж работы Старшие знач. таймера разряды счетчика 7 6 5 4 3 2 1 0 Т7 Тб Т5 Т4 Тз Т2 Т1 То Младшие знач разряды счетчика Рис. 8.10. Формат таймера. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 жается и на его выходе периодически по- является сигнал прямоугольной формы. В режиме 2 после завершения счета на выходе таймера возникает короткий им- пульсный сигнал низкого уровня. Режим 3 отличается от режима 2 толь- ко тем, что после каждого срабатывания таймера последний автоматически переза- гружается и на его выходе периодически появляется импульсный сигнал низкого уровня. Разряды 6 и 7 командного регистра, обозначенные на рис. 8.7 через TMj и ТМ2 соответственно, используются для запуска и останова таймера. Содержимое этих раз- рядов определяет четыре возможных ко- манды, представленные в таблице (см. с. 267). Отметим, что в процессе работы счет- чика-таймера в регистр задания времени счета и режима работы таймера (формат данных для этого регистра представлен на рис. 8.10) может быть загружено новое значение времени счета и установлен новый режим. Новое содержимое регистра задания времени счета и режима работы будет использовано только по команде за- пуска таймера. Возможен также запуск таймера с новым значением времени счета и с сохранением предыдущего режима работы. В случае задания нечетного значения времени счета (в тактах) и при формирова- нии на выходе таймера сигнала прямоу- гольной формы первый период времени счета, когда сигнал таймера имеет высо-
Типичные интерфейсные микросхемы устройств 267 Форма сигналов на выходе TIMER OUT Код режима М2 M-j О О Начало счета 1. Одиночный сигн. прямоугольной формы Окончание счета (Окончание счета) 2. Последователь- ность сигн. прямоугольной формы 1 0 З.Имп в момент окончания счета 1 1 4. Последователь- ность имп. О Рис. 8.11. Режимы работы таймера. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 ТМ2 MTi Функциональное назначение кода О 0 Холостая команда. Не оказыва- ет влияния на работу таймера. О 1 Если таймер не запущен, то- холостая команда. Команда оста- нова, если таймер находится в состоянии счета. 1 0 Если таймер не запущен, то - холостая команда. Команда оста- нова после срабатывания таймера по истечении заданного интер- вала времени. 1 1 Если таймер не был запущен, то установка режима работы таймера, загрузка счетчика тай- мера и запуск таймера. Если таймер находится в состоянии счета, то загрузка таймера и его запуск производятся непос- редственно после истечения задан- ного времени счета. кий уровень, оказывается на 1 больше (рис. 8.12), чем второй, соответствующий низкому уровню сигнала на выходе тайме- ра. При подаче сигнала начальной уста- новки на вход RESET устройства 9155 ре- жим работы таймера и время счета не за- даются, но если таймер работал, то он будет остановлен. Следовательно, после выполнения начальной установки устрой- ства подачей сигнала на вход RESET за- пуск таймера может быть произведен с по- мощью соответствующей команды, зада- ваемой в командном регистре. Отметим, что схема таймера в устрой- стве 8155/8156 реализуется с целью форми- рования на выходе таймера сигнала пря- моугольной формы. Такой таймер не является счетчиком числа событий. Для обеспечения выработки сигнала указанной формы время работы таймера от его запу- ска до окончания счета разбивается на два этапа, в каждый из которых счетчик отни- мает по два импульса от исходно задавае- мого количества импульсов. Таким обра- зом, в регистре задания времени счета содержится значение, не обязательно рав- ное количеству импульсов, поступающих на вход TIMER IN. В частности, нельзя за- грузить в регистр задания времени счета Рис. 8.12. Асимметрия сигнала прямоугольной формы на выходе таймера при задании нечет- ного значения счетчика. Если общее число тактовых импульсов до завершения счета равно 9, то 5 из них попадет в первый период счета Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
268 Г лава 8 Рис. 8.13. Система минимальной конфигура- ции на основе микропроцессора 8085 с органи- зацией ввода-вывода с распределением памя- ти. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 начальное значение 1 и запустить таймер, так как его конечное значение равно двоич- ному числу 10, т.е. 210. Предполагается, что в таких случаях следует использовать схему прерываний, т. е. один из входов ми- кропроцессора 8085, предназначенных для приема запросов на прерывания. После за- пуска таймер^ содержимое регистра зада- ния времени счета может быть использо- вано для вычисления фактического числа импульсов, которые потребуется подать на вход TIMER IN для завершения полно- ю цикла работы таймера. Для определе- ния количества импульсов, которое необ- ходимо подать на вход таймера во второй период его работы, следует выполнить следующие операции: 1. Остановить счет. 2. Считать 16-битовое значение из ре- гистров задания времени и режима счета. 3. Установить в 0 два бита, определяю- щие режим работы таймера. 4. Установить в 0 разряд переноса и выполнить циклический сдвиг 16-битово- го значения вправо на 1 разряд с использо- ванием разряда переноса. 5. Если разряд переноса имеет значе- ние 1, то прибавить половину полного ис- ходного значения счетчика (если исходное значение нечетно, то прибавляется полов- ина исходного значения, уменьшенного на 1). 5. Пример программы Рассмотрим последовательность дей- ствий, которые должны быть выполнены по программе, предназначенной для полу- чения требуемого значения содержимого регистра задания времени счета в устрой- ствах 8155/8156. Сначала производится за- пись в регистр HL микропроцессора 8085 полного исходного значения счетчика. За- тем, чтобы избежать получения неточного значения текущего содержимого счетчика, таймер останавливается. После остановки таймера производятся считывание содер- жимого счетчика таймера и запись млад- шего байта текущего значения счетчика в регистр С микропроцессора, а старшего байта в регистр В микропроцессора 8085.
Типичные интерфейсные микросхемы устройств 269 После осуществления перечисленных дей- ствий микропроцессор 8085 выполняет следующую подпрограмму: 7. Применение устройств 8155/8156 для квитирования установления связи Для организации связи с квитирова- ADJUST 78 МО А,В E63F ANI3F 1F RAR 47 MOV В,А 79 MOV А,С 1F RAR 4F MOV С,А D0 RNC 3F СМС 7С MOV А,Н 1F RAR 67 MOV Н,А 7D MOV A,L 1F RAR 6F MOV L,A 09 DAD В 44 MOV B,H 4D MOV C,L С9 RET После выполнения представленной под- программы содержимое регистров В и С будет равно остаточному числу импуль- сов, которые потребуется подать на вход TIMER IN для завершения текущего цик- ла работы таймера. 6. МикроЭВМ, построенная на основе микропроцессора 8085 На рис. 8.13 представлена схема ми- кропроцессорной системы, реализованной с использованием минимального числа микросхем (8085, 8155 или 8156 и 8355 или 8755). ; Загрузка в аккумулятор старшего ; байта содержимого счетчика. , Установка в 0 старших двух разрядов ; аккумулятора и сброс признака пе- ; реноса ; Циклический сдвиг вправо па 1 раз- ; ряд содержимого аккумулятора с ис- ; пользованием разряда переноса ; Пересылка содержимого аккумулято- , ра в регистр В. ; Загрузка в аккумулятор младшего ; байта содержимого счетчика ; Циклический сдвиг вправо с исполь- ; зованием разряда переноса. , Пересылка содержимого аккумулято- , ра в регистр С. , Если разряд переноса имеет значе- ; ние 0 (второй этап счета), то воз- ; врат. В противном случае выпол- ; нение следующих команд програм- ; мы. ; Установка в 0 разряда переноса. ; Деление полного исходною значения ; счетчика на 2 Если содержимое ре- ; гисчра HL нечетно, то остаток игно- ; рируется. ; Сложение содержимого регистров В , и С с содержимым регистров Н и L ; Пересылка результата сложения в ре- . гистры В и С. , Возврат. нием используются универсальный асин- хронный приемопередатчик (микросхема 1602 фирмы Western Digital) и устройство 8155. Передатчик обеспечивает преобразо- вание слов данных из параллельной формы в последовательную. Приемная секция устройства выполняет преобразо- вание слов из последовательного формата в параллельный. На рис. 8.14 представле- на схема, иллюстрирующая функциониро- вание рассматриваемых устройств при установлении связи с квитированием. На рис. 8.15-8.18 изображены вре- менные диаграммы, блок-схема и про- грамма, соответствующие приемопере-
270 Г лава 8 (Порт В) РВ()-РВ7 РСО РС1 PC 2 ALE AD0-AD7 RD WR PC3 PC4 PC5 8155 (ПортА) РА()-РА7 AD0-AD7 Ю/М RESET OUT WR RD ALE 8085 RST RST 5 5 6 5 (AINTR) (ABF) (ASTB) (BINTR) Ю/М (BBF) RESET (BSTB) Рис. 8.14. Схема включения устройств 8155, 1602 и микропроцессора 8085, обеспечивающая организацию стандартного ввода-вывода с квитированием. 1602 RR1-RR8 (Регистр данных приемника) (Вх приемника) RI TR1-TR8 (Вх. регистра данных передатчика) (Вых передатчика) RRD (Отключение регистра приемника) DR (Данные получены) THRL TRE DRR (Загрузка регистра передатчика) (Регистр передатчика свободен) (Сброс полученных данных) Рис. 8.15. Временная диаграмма процесса передачи данных с квитированием.
Типичные интерфейсные микросхемы устройств 271 Рис. 8.16. Временная диаграмма процесса при- ема данных с квитированием. Номер выводов Наименование сигнала Обозначение сигнала Функция 5-12 Данные регистра приемника RR8-RR1 Хранение полученных данных 4 Отключение регистра прием- ника RRD Блокировка входов RR8-RR1 подачей сигнала высокого уровня 18 Сброс полученных данных DRR Сброс данных при подаче сигнала низкого уровня 19 Данные получены DR Высокий уровень сигнала ука- зывает, что принято слово данных 20 Вход приемника R1 Вход данных в последова- тельном формате 23 Загрузка регистра передатчика THRL При низком уровне сигнала- загрузка символа; при высо- ком уровне-прекращение за- грузки. 24 Регистр передатчика свободен TRE Высокий уровень указывает, что завершилась последова- тельная передача слова. 25 Выход регистра передатчика TRO Выход данных в последова- тельной форме. 26-33 Входы регистра передатчика TRI-TR8 Входы для загрузки переда- ваемого слова дающему блоку (станции), для управления которым используются сигналы устройств 8155/8156. В следующей таблице представ- лены условные обозначения и функции сигналов универсального асинхронного приемопередатчика 1602 фирмы Western Digital. Управление в режиме передачи 1. Если сигнал BF имеет низкий уро- вень, то происходит загрузка данных в ре- гистр передатчика, которая производится при низком уровне сигнала на входе THRL (выход BF связан со входом THRL).
272 Глава 8 Рис. 8.17. Блок-схема работы приемопередаю- щей станции, обеспечивающей прием и переда- чу с квитированием сообщений. Примечание После завершения приема данных на линии DR устанавливается высокий уровень сигнала ДАННЫЕ ПРИ- НЯТЫ, что приводит к выработке сигнала ASTB и активизации прерывания. После перехода сигнала TRE к низкому уровню, указывающему, что регистр передатчика свободен, активизи- руется сигнал BSTB и осуществляется прерывание
Типичные интерфейсные микросхемы устройств 273 0000 FB EI 0001 ЗЕ MVI A,FB 0002 FB ; Разрешение прерываний , Снятие маски для прерываний RST6 5 ; и RST5.5 0003 3D SIM 0004 00 NOP , Установка маски прерываний 0005 ЗЕ MVI А,ЗА 0006 ЗА , Подготовка регистра команд порт ; А-входной, пор г В-выходной, пре- , рывания разрешены F & В 0007 D3 OUT 40 0008 40 0009 FB EI , Вывод команды ; register 000A 76 HLT ; Останов 000B DB IN 41 000C 41 ; Ввод данных через порт А 000D C3 JMP 0009 000E 09 000F 00 ; Переход к началу процесса 0010 3E MVI A,XX 0011 XX , Пересылка данных в регистр А 0012 D3 OUT 41 0013 41 , Передача данных в порт В 0014 C3 JMP 0009 0015 09 0016 00 ; Переход к началу процесса **Программа обработки прерывания** 002С СЗ JMP 0010 (Передача) 002D 10 002Е 00 0034 СЗ JMP 000В (Прием) 0035 ОВ 0036 00 Рис. 8.18. Программа приемопередающей станции. 2. Когда сигнал РЕГИСТР ПЕРЕДАТ- ЧИКА СВОБОДЕН на выходе TRE имеет высокий уровень, на входе BSTB устрой- ства 8155 действует сигнал низкого уровня. ___3. После перехода сигнала на входе BSTB от низкого уровня к высокому на вы- ходе BINTP устройства 8155 также проис- ходит изменение уровня сигнала от низко- го до высокого, что приводит к выводу данных, подлежащих передаче. 4. Переход от низкого к высокому уровню сигнала BF приводит к нараста- нию уровня сигнала THRL, что в свою оче- редь является следствием перехода сигна- ла WR от низкого уровня к высокому. Активизация сигнала THRL приводит к прекращению загрузки данных в регистр передатчика.
274 Глава 8 Управление в режиме приема 1. После нарастания уровня сигнала DR от низкого к высокому уровню (что указывает на завершение приема слова данных и стопового бита) происходит из- менение уровня сигнала ASTB-переход к низкому уровню. ____ 2. Изменение уровня сигнала ASTB влечет нарастание уровня сигнала ABF, ко- торый поступает на вход RRD универсаль- ного асинхроного приемопередатчика. При подаче сигнала высокого уровня на вход RRD происходит блокировка даль- нейшего приема данных. 3. После нарастания уровня сигнала ASTB подается сигнал на вход RST6.5. За- тем происходит уменьшение уровня сиг- нала RD и производится ввод данных в микропроцессор. ___4. После нарастания уровня сигнала RD происходит уменьшение уровня сигна- ла BF, что приводит к подаче на вход DRR сигнала СБРОС ПОЛУЧЕННЫХ ДАН- НЫХ (высокий уровень сигнала). По за- вершении действия указанного сигнала ввод данных может быть продолжен. 8.2. Типичные интерфейсные устройства последовательного ввода-вывода Для обеспечения связи микропроцессо- ра с последовательными устройствами ввода-вывода обычно используются ин- терфейсные устройства последовательно- го ввода-вывода. Эти устройства предназ- начены для преобразования данных из 8-разрядного параллельного формата, в котором они представляются в микро- процессоре, в последовательный формат, в котором данные принимаются и пере- даются последовательными внешними устройствами ввода-вывода. Кроме того, интерфейсные устройства производят пре- образование данных, передаваемых устройствами ввода-вывода последова- тельного действия, в параллельный 8-раз- рядный формат данных, принимаемых ми- кропроцессором. Интерфейсное устрой- ство может выполнять указанные преобра- зования синхронно или асинхронно. При синхронной связи микропроцессор и по- следовательное устройство ввода-вывода должны синхронизироваться во время осу- ществления передачи данных. В асинхрон- ном режиме передающее устройство (ми- кропроцессор или устройство последова- тельного ввода-вывода) может пересылать данные к приемнику (микропроцессору или устройству последовательного ввода- вывода) в любое время, не обеспечивая синхронизации приемного устройства. Временная диаграмма процесса синхрон- ного последовательного приема и переда- чи данных по существу совпадает с вре- менной диаграммой приема и передачи в асинхронном режиме. Эти два способа передачи отличаются лишь способом фор- матирования данных. При синхронной передаче блоку передаваемой информации предшествуют синхронизирующие сиг- налы SYNC. Отметим, что эти сигналы включаются в поток данных всякий раз, когда данные не готовы к передаче. При асинхронной передаче используется спе- циальный формат, в котором каждому слову данных (обычно 5 или 8 бит) пред- шествует стартовый бит (низкий уровень сигнала). После слова данных в этом фор- мате передаются биты контроля по четно- сти или по нечетности и стоповые биты, которым соответствует всегда высокий уровень сигнала. При этом может исполь- зоваться один, два или полтора стоповых бита (в последнем случае время передачи сигнала высокого уровня в 1,5 раза превы- шает время передачи одного бита). Способ асинхронной передачи данных получил широкое распространение главным обра- зом из-за его простоты. Различными фир- мами - изготовителями вычислительных машин создан ряд интерфейсных устройств, которые называют либо уни- версальныни асинхронными приемопере- датчиками (УАПП), либо адаптерами ин- терфейса асинхронной передачи (Asynchronous Communications Interface Adapter, или сокращенно ACIA). Термин ACIA обычно используется в технической документации, разрабатываемой фирмой Motorola. Однако указанные названия являются равнозначными. Соответствую- щие устройства выполняют все необхо- димые действия по асинхронной передаче данных между микропроцессором
Типичные интерфейсные микросхемы устройств 275 и устройством последовательного ввода- вывода, а именно преобразование форма- тов данных, образование для каждого сло- ва данных «кадра», обнаружение ошибок при нарушении четности или нечетности. Типичным примером такого интерфейсно- го устройства является устройство 6850 фирмы Motorola. Некоторые фирмы, на- пример фирма Intel, производят интер- фейсные однокристальные устройства, ко- торые обеспечивают передачу данных как в синхронном, так и в асинхронном режи- ме. Такую микросхему (например, 8251 фирмы Intel) обычно называют асинхрон- но-синхронным универсальным приемопе- редатчиком. Ниже рассматривается устройство 6850 фирмы Motorola и принципы его исполь- зования совместно с микропроцессором 68 000 той же фирмы. Ознакомление с принципами действия этого устройства облегчит читателю изучение других устройств последовательного интерфейса. 8.2.1. Адаптер интерфейса асинхронной передачи данных МС6850 фирмы Motorola1) С помощью адаптера интерфейса асинхронной передачи данных МС6850 к микропроцессору подключаются устрой- ства, которые работают с ним асинхронно с применением последовательного форма- та данных. Устройство МС6850 обеспечи- вает сопряжение микропроцессоров фирмы Motorola с типичными перифе- рийными устройствами, в частности с экранными терминалами, телетайпами и т.д. На рис. 8.19 представлена структур- ная схема устройства МС6850. Оно, как показано на схеме, состоит из следующих основных блоков: 1. Блок управления (выбор кристалла и управление вводом-выводом). 2. Мультиплексор/буфер шины данных. 3. Секция передатчика (регистр данных передатчика и сдвиговый регистр передат- чика). п Материал этого раздела печатается с разрешения фирмы Intel Corporation. 4. Секция приемника (регистр данных приемника и сдвиговый регистр приемни- ка). 5. Регистр состояния и регистр упра- вления. Опишем подробнее перечисленные функ- циональные блоки. 1. Блок управления Обычно к микропроцессору подклю- чается несколько устройств ввода-вывода. Для адресации определенной микросхемы 6850 используются три сигнала выбора микросхемы: CSO, CS1 и CS2. После того как произведен выбор конкретного устройства МС6850 путем установки высо- кого уровня сигналов CS0 и CS1 и низкого уровня сигнала CS2, микропроцессор обы- чно выполняет одну из следующих функ- ций: 1. Ввод содержимого регистра данных приемника. 2. Ввод содержимого регистра состоя- ния. 3. Запись данных в регистр данных передатчика. 4. Запись данных в управляющий ре- гистр. Какая из перечисленных выше функций бу- дет выполнена в зависимости от значений сигналов выбора микросхемы (CS2, CS1 и CS0), разрешающего сигнала (Е), сигнала выбора регистра (RS) и сигнала чтения/за- писи (R/W), определяется согласно табли- це на с. 276. 2. Мультиплексор/буфер шины данных Мультиплексор/буфер шины данных имеет 8-разрядную структуру и является двунаправленным. Он обеспечивает пере- дачу данных в параллельном формате по шине данных как из микропроцессора в ре- гистр данных передатчика, так и из реги- стра данных приемника в микропроцессор. 3. Секция передатчика Передатчик устройства МС6850 выпол- няет последовательную передачу данных. Он вводит данные в параллельном форма- те из регистра данных передатчика и пре-
276 Глава 8 CS2 CS1 CSO R/W E RS Функциональные назначения кода 0 11111 Ввод содержимого реги- стра данных приемника 0 11110 Ввод содержимого реги- стра состояния 0 110 11 Запись данных в регистр данных передатчика 0 1 10 10 Запись данных в управ- ляющий регистр образует их для передачи в последователь- ном формате. Для того чтобы передать слово данных на последовательное устройство, микро- процессор сначала передает слово данных в регистр данных передатчика устройства 6850. Схемы управления передающей сек- ции формируют для этого слова данных стартовый бит, бит контроля по четности (нечетности) и стоповые биты. В таком формате слово передается в сдвиговый ре- гистр передатчика, который реализует сдвиги с тактовой частотой передачи. Та- ким образом, на выход TXD выдаются данные в последовательном формате, ко- торые предназначены для передачи в по- следовательное устройство. 4. Секция приемника Основными элементами секции прием- ника являются регистр данных приемника и сдвиговый регистр приемника. Эта сек- ция обеспечивает преобразование последо- вательного формата данных, в котором они поступают из последовательного внешнего устройства, в параллельный формат и передачу их в регистр данных приемника, из которого данные в свою очередь пересылаются на вход микропро- цессора. Для обеспечения такой пересылки внешнее последовательное устройство передает данные в последовательном фор- мате на вход RXD секции приемника устройства 6850. Считается, что на входе DXD появился стартовый бит, если схемы управления в секции приемника обнаружи- вают на этом входе изменение уровня от высокого к низкому. После обнаружения стартового бита следующие биты посту- пают в последовательном формате в сдви- говый регистр приемника с тактовой ча- стотой приема. После завершения после- довательного ввода данных в сдвиговый регистр 8-разрядное слово данных парал- лельно пересылается из сдвигового реги- стра в регистр данных приемника. Нако- нец, посредством мультиплексора/буфера шины данных и через системную шину ми- кропроцессор осуществляет ввод содержи- мого регистра приемника. 5. Регистр состояния и управляющий ре- гистр Формат данных в 8-разрядном реги- стре состояния устройства 6850 предста- влен на рис. 8.20. Определенные разряды этого регистра используются для иденти- фикации возможных ошибок при передаче данных. Например, после записи в после- довательном формате данных в сдвиговый регистр приемника устройство 6850 авто- матически проверяет наличие требуемого количества стоповых битов. Если обнару- женное их количество не совпадает с чис- лом, указанным в управляющем регистре, то в регистре состояния устанавливается в 1 флаг «Ошибка кадрирования». Кроме того, если в данных, содержащихся в сдви- говом регистре, обнаруживается ошибка контроля по четности или нечетности (вид контроля задается в регистре управления), то устанавливается в 1 флаг «Нарушение четности». Назначение других разрядов регистра состояния устройства 6850 (см. рис. 8.20) не требует специального поясне- ния.
асинхронного приемопередатчика. Источник перепечатано с разрешения фирмы Motorola Semiconductor Products, Inc, copyright 1975.
Обнаружение носителя данных Ь2 = 0 указывает на наличие носителя данных Ь2=»1 указывает на отсутствие носителя данных. 1 Изменение на входе DCD сигнала от низкого уровня до высокого приводит к установке Ь2= 1 и генерации прерывания ( Ь7« 1), (IRQ = 0). 2 Считывание содержимого регистра состояния и ре- гистра данных или начальная установка УАПП приво- дят к установке Ь2«0 и Ь7 = 0. Запрос прерывания Значение разряда "Запрос прерывания" равно инверс- ному значению сигнала на выходе IRQ . Разряд Ь7 ре- гистра состояния устанавливается не только обычным запросом прерывания по выходу IRQ, но и любыми разрешенными прерываниями . Регистр данных приемника занят ЬО«О —регистр данных приемника свободен. Ь0«1 — производится пересылка информации в регистр данных приемника и установка в 1 разрядов регистра состояния РЕ, OVRN и FE. 1. Установка Ь0 = 0 происходит, когда подается коман- да чтения данных при переходе уровня сигнала на входе Е от высокого к низкому или когда производится установка УАПП в исходное состояние 2. Высокий уровень сигнала на входе DCD приводит к установке Ь0 = 0 и к установке исходного состояния приемника Ь7 b6 b5 b4 b 3 b2 b 1 bO IRQ PE OVRN FE CTS DCD TxDRE RxDRF Рис. 8.20. Формат данных регистра состояния УАПП. Источник перепечатано с разрешения Motorola Semiconductor Products, Inc, copyright 1975
Ь4 (WS3) ьз (WS2) Ь2 (WS1) Формат кадра 0 0 0 7 бит данных, контроль по четности, 2 стоповых бита 0 0 1 7 бит данных, контроль по нечетности, 2 стоповых бита 0 1 0 7 бит данных, контроль по четности, 1 стоповый бит 0 1 1 7 бит данных, контроль по нечетности, 1 стоповый бит 1 0 0 8 бит данных, без контроля, 2 стоповых бита 1 0 1 8 бит данных, без контроля, 1 стоповый бит 1 1 0 8 бит данных, контроль по четности, 1 стоповый бит 1 1 1 8 бит данных, контроль по нечетности, 1 стоповый бит Задание коэффициента деления частоты синхроимпульсов и установка в 0 приемной и передающей секций 1 0 Функция Тх, Rx 0 0 -5-1 0 1 4-16 1 0 4-64 1 1 Установка адаптера в О Ь7 Ь6 Ь5 Ь4 ьз Ь2 Ь 1 ЬО RIE ТС 2 ТС1 WS3 WS2 WS 1 CDS2 CDS1 Выбор длины слова, вида контроля и числа стоповых битов Ь4 ЬЗ Ь2 Длина слова Контроль Стоповые биты 0 0 0 7 По четности 2 0 0 1 7 По нечетности 2 0 1 0 7 По четности 1 0 1 1 7 По нечетности 1 1 0 0 8 Без контроля 2 1 0 1 8 Без контроля 1 1 1 0 8 По четности 1 1 1 1 8 По нечетности 1 Разряды управления передатчиком управляют выходом прерываний Ч выходом RTS и обеспечивают посылку сигнала BREAK Ь6 О О 1 1 Ь5 Функция О Установка RTS = O,Tx прерывания запрещены (TIE). 1 Установка RTS=O, Тх прерывания разрешены (TIE). О Установка RTS= 1, Тх прерывания запрещены (TIE). 1 Установка PTS=O, Тх прерывания запрещены (TIE), посылка BREAK. 1) ттг- TIE — сигнал разрешения прерывания в режиме передачи. Рис. 8.21. Формат данных управляющего регистра УАПП. Источник перепечатано с разрешения Motorola Semiconductor Products, Inc, copyright 1975
280 Глава 8 Через шину данных системы микро- процессор может передать 8-разрядный код в управляющий регистр (рис. 8.21). Определенные разряды этого регистра во- спринимаются устройством 6850 как ха- рактеристики формата и режима последо- вательной передачи данных, например число бит данных, число стоповых битов, режим контроля по четности, по нечетно- сти или передача без контроля и т. п. 6. Интерфейс устройства 6850 и 16-рязрядного микропроцессора, подобного микропроцессору 68000 Интерфейс адаптера асинхронной пере- дачи данных МС6850 и микропроцессора MC68000 реализуется легко, поскольку в микропроцессоре MC68000 предусмотрен специальный цикл для управления перифе- рийными устройствами семейства М68000. Выводы D0-D7 шины данных адаптера могут быть с равным успехом подклю- чены либо к старшим, либо к младшим во- сьми линиям шины данных микропроцес- сора 68000. Если подключение произво- дится к линиям старшего байта шины данных микропроцессора, то предпола- гается использование четного адреса и сиг- нала СТРОБ СТАРШЕГО БАЙТА ДАННЫХ (UDS); при подключении адап- тера к линиям младшего байта шины данных микропроцессора предполагается использование нечетного адреса и сигнала СТРОБ МЛАДШЕГО БАЙТА ДАННЫХ (LDS). В рассматриваемом нами случае адаптер подключен к линиям младшего байта шины данных микропроцессора (рис. 8.22). _ Входы Е и R/W устройства 6850 соеди- няются с соответствующими выводами микропроцессора MC68000. Как показа- но на рис. 8.22, для формирования сигна- лов выбора кристалла используется не- сколько различных сигналов. В микро- процессоре MC68000 в противополож- ность микропроцессору MC68000 сигнал ДОСТОВЕРНОСТЬ АДРЕСА ПАМЯТИ (VMA) является активным при низком уровне напряжения; этой же особенностью обладает и сигнал LDS. Для выработки сигнала CS1 указанные сигналы подают- ся на входы схемы, реализующей опера- цию НЕ ИЛИ. Для отпирания одной из 16 выходных линий схемы дешифра- тора SN74LS154 на адресных линиях А8-А23 микропроцессора формируется адрес SF3FFXX. Комбинация сигналов на адресных линиях А4-А7, поступаю- щих на входы А, В, С и D дешифрато- ра, определяет номер выходной линии (в нашем примере линия 2), на которой будет сформирован сигнал низкого уровня, под- аваемый на вход CS2 устройства МС6850. Адресная линия А1 используется для под- ачи сигнала ВЫБОР РЕГИСТРА (RS) на вход RS адаптера МС6850. Таким обра- зом, регистр состояния адаптера имеет адрес $F3FF21, а управляющий реги- стр-адрес SF3FF23. Если же адаптер под- ключается к линиям старшего байта шины данных, то эти регистры имеют адреса SF3FF20 и SF3FF22 соответственно. Отме- тим, что знак $ в ассемблере микропроцес- сора фирмы Motorola записывается перед шестнадцатеричными числами. Кроме то- го, рассматриваемой схемой должен фор- мироваться сигнал ДОСТОВЕРНОСТЬ ПЕРИФЕРИЙНОГО АДРЕСА (VPA), ко- торый подается на соответствующий вход микропроцессора для указания того, что цикл управления периферийным устрой- ством М68000 завершен. Устройство SN74LS154 имеет два разрешающих вхо- да, активных при низком уровне сигнала. Сигналы на эти входы подаются с выходов схем SN74LS30, которые формируют адрес SF3FFXX по сигналам на адресных линиях А8-А23. Поскольку схема SN74LS154 всегда обеспечивает выбор определенного периферийного устройства, сигналы разблокирования микросхемы могут быть поданы и на схему ИЛИ для формирования сигнала VPA. Поскольку число периферийных устройств может пре- вышать 16, целесообразно использовать специальное устройство, имеющее на вы- ходе открытый коллектор для формирова- ния сигнала VPA. При этом операция мон- тажное ИЛИ могла бы выполняться над сигналами с выходов нескольких логиче- ских схем. На рис. 8.23 представлена блок-схема алгоритма функционирования адаптера асинхронной передачи. После того как управляющий регистр соответствующим образом установлен, регистр состояния ис-
Типичные интерфейсные микросхемы устройств 281 Рис. 8.22. Схема соединения устройства МС6850 и микропроцессора MC68000. Источник перепечатано с разрешения фирмы Motorola Semi- conductor Products, Inc, copyright 1982 пользуется для индикации событий-РЕ- ГИСТР ДАННЫХ ПРИЕМНИКА ЗА- ПОЛНЕН (RDRF) И РЕГИСТР ДАННЫХ ПЕРЕДАТЧИКА СВОБОДЕН (TDRE), равно как для индикации ошибок и состояний линий сигналов квитирования запросов. По состояниям сигналов «За- прос на пересылку» (RTS), «Сброс для пересылки» (CTS) и «Обнаружение носите- ля данных» (DCD) микропроцессор опре- деляет, выполнены ли условия, при ко- торых может осуществиться передача. Если все условия выполнены, то может быть начат прием или передача данных или и то и другое. На рис. 8.24 представлен пример про- граммы, которая используется для переда- чи символа из периферийного устройства через адаптер в микропроцессор MC68000 и последующей пересылки принятого сим- вола обратно на терминал. Существенно, что микропроцессор MC68000 производит проверку возможности осуществления передачи или приема данных. При этом ре- гистр состояния опрашивается до тех пор,
282 Глава 8 Рис. 8.23. Блок-схема работы УАПП. Источник перепечатано с разрешения фирмы Motorola Semi- conductor Products, Inc, copyright 1982 пока символ не будет получен. Символ считывается и затем, как только регистр данных передатчика освобождается, пере- дается обратно в адаптер для последую- щей пересылки на терминал. Конечно, во время ожидания поступления следующего символа из адаптера МС6850 микропро- цессор может работать, выполняя любые другие программы.
Типичные интерфейсные микросхемы устройств 283 1 00000000 2 00F3FF00 3 00F3FF00 4 00F3FF02 5 00F3FF02 6 00020000 7 00000008 8 00000000020000 9 00000400000008 10 00000813FCOOO3 00F3FF00 11 00001013FC0051 00F3FF00 12 000018103900F3FF00 13 00001Е0200007С 14 00002266F4 15 00002408390001 00F3FF00 16 00002C66F6 17 00002E103900F3FF02 18 00003408390002 00F3FF00 19 00003C66F6 20 00003E13C000F3FF02 21 00004460D2 22 ORG S00000000 ACIASR EQU S00F3FF00 ACIACR EQU S00F3FF00 ACIADR EQU S00F3FF02 ACIATR EQU S00F3FF02 SYSTACK EQU S00020000 RESET EQU S00000008 DCL SYSTACK DC.L RESET MOVE.B # S03,ACIACR RESET ACIA MOVE.B # S51,ACIACR INITIALIZE ACIA ERROR MOVE.B ACIASR,DO GET STATUS AND.B # S7C,DO MASK IRQ, TDRA,RDA BNE ERROR ANY ERRORS? READS1 BTST #01,ACIASR BNE READS1 MOVE.B ACIADR;DO READ CHARACTER READS2 BTST # 02,ACIASR IS TDRA SET? BNE READS2 LOOP IF NO MOVE.B DO,ACIATR TRANSMIT CHARACTER BRA ERROR START OVER END ***** TOTAL ERRORS 0-0 SYMBOL TABLE ACIACR ERROR SYSTACK F3FF00 ACIADR F3FF02 ACIASR F3FF00 ACIATR F3FF02 000018 READS1 000024 READS2 000034 RESET 000008 020000 Рис. 8.24. Пример программы, обеспечиваю- щей функционирование УАПП.
284 Глава 8 8.3. Устройства управления клавиатурой и дисплеем Ввод программ в микроЭВМ, как пра- вило, производится с помощью клавиа- туры, а для отображения результатов ши- роко используются семисегментные инди- каторы. Основными функциями интерфей- са, связывающего клавишные устройства ввода и микроЭВМ являются: 1. Опознавание факта замыкания клю- ча. 2. Подтверждение достоверности за- мыкания ключа. 3. Декодирование данных, связанных с нажатием определенной клавиши кла- виатуры. Теперь рассмотрим принципы организа- ции интерфейса клавиатуры и микроЭВМ. Клавиатуру можно представить в виде со- вокупности строк (горизонтальных линий) и столбцов (вертикальных линий). На рис. 8.25 показана схема подключения клавиатуры 2 х 2 к типичной микроЭВМ. В нормальном состоянии на вертикальных линиях поддерживается высокий уровень напряжения. При нажатии клавиши (замы- кании ключа) соответствующая горизон- тальная линия определяется путем пооче- редной подачи сигнала низкого уровня через порт А по линиям РА0 и РАР После установления сигнала низкого уровня на одной из горизонтальных линий клавиа- туры на входы РВ2, РВ3 порта В подаются сигналы с вертикальных линий клавиа- туры. Только на одной вертикальной ли- нии, соответствующей замкнутому ключу, будет действовать сигнал низкого уровня. Если при анализе обнаруживается сигнал низкого уровня на вертикальной линии, то состояние горизонтальных линий может проверяться индивидуально для определе- ния той горизонтальной линии, которой соответствует замкнутый ключ клавиа- туры. Таким образом, определяются номе- ра строки и столбца, соответствующие на- жатой клавише клавиатуры. На следующем этапе необходимо под- твердить достоверность нажатия клавиши, или замыкание ключа. В течение коротко- Рис. 8.25. Схема подключения клавиатуры 2 х 2 к микроЭВМ.
Типичные интерфейсные микросхемы устройств 285 го времени после нажатия клавиши проис- ходит «отскакивание» или «дребезг» кон- тактов, после чего соединение устанавли- вается окончательно. Вследствие дребезга контактов микроЭВМ может зафиксиро- вать несколько «нажатий» ключа вместо одного фактического. Для устранения влияния этого эффекта через 20 мс после первого обнаружения замыкания ключа может быть выполнена еще одна проверка его состояния. Если ключ снова оказывает- ся в замкнутом состоянии, то считается, что клавиша была действительно нажата. Очередной шаг заключается в преобра- зовании полученной информации-номе- ров строки и столбца-в более подходя- щий код, например в шестнадцатеричные числа или в код ASCII. Такое кодирование легко осуществить программным спосо- бом. Существуют определенные характери- стики функционирования клавиатур, ко- торые необходимо рассматривать при ор- ганизации подключения некоторой кла- виатуры к микроЭВМ. Известны клавиа- туры с блокировкой, которые не позво- ляют одновременно нажать две или более клавиш, и клавиатуры, которые допускают одновременное нажатие многих клавиш. В первом случае принимается во внимание нажатие только одной клавиши, а нажатие и освобождение других клавиш не приво- дит к изменению вводимой информации. Такая система клавиатуры легко реали- зуется, и поэтому она более часто приме- няется. Однако подобная клавиатура не позволяет осуществлять быстрый ввод данных, поскольку, прежде чем нажать следующую клавишу, необходимо по- лностью отпустить предыдущую. Что же касается клавиатуры, позволяющей одно- временно нажимать несколько клавиш, то в ней игнорируются нажатия всех клавиш, пока не остается нажатой только одна из них. Остановимся теперь на рассмотрении интерфейсных характеристик типичных индикаторов, которые, как правило, реали- зуют две функции: вывод кода, предназна- ченного для отображения, и подачу ото- бражаемого кода через левый или правый вход, если индикатор состоит из несколь- Левый____ вход ___Правый вход Рис. 8.26. Схематическое изображение 4-эле- ментного индикатора. ких элементов. Указанные функции легко реализуются в микроЭВМ программным путем. Если индикатор состоит более чем из одного элемента, то последние, как пра- вило, располагаются в один ряд. На рис. 8.26 изображен индикатор, состоящий из четырех элементов. Отметим, что пре- ставленный на рис. 8.26 индикатор позво- ляет вводить отображаемый код как слева направо, так и справа налево. Если код вводится в индикатор через левый вход, то первой должна выдаваться для отображе- ния цифра самого старшего значащего разряда 4-разрядного числа, затем выво- дится следующая цифра и т.д. Отметим, что при этом первая введенная цифра бу- дет сдвигаться три раза, вторая цифра - два раза, третья-один раз, а оставшаяся цифра (самого младшего значащего разря- да числа) сразу оказывается на своем ме- сте. Операции сдвига выполняются на- столько быстро, что будет казаться, будто все цифры на индикаторе появляются одновременно. Если цифры числа подают- ся на индикатор через левый вход, то сна- чала подается цифра самого младшего значащего разряда, а затем производятся ввод цифр и сдвиги так же, как это дела- лось при вводе через правый вход. Описанные здесь принципы построения и функционирования клавиатуры и инди- катора могут быть реализованы про- граммно или аппаратно. Чтобы освобо- дить микропроцессор от выполнения этих функций, фирмы-изготовители микро- процессоров разработали ряд устройств управления клавиатурой и индикаторами. Эти однокристальные устройства инициа- лизируются микропроцессором, а выпол- няют свои функции независимо от него. Выпускаемые фирмами устройства упра- вления отличаются по своим функцио- нальным возможностям, которые обычно распределяются между устройством упра- вления и микропроцессором. В следующем подразделе рассматри-
286 Глава 8 вается устройство управления клавиату- рой и индикатором 8279 фирмы Intel. Тех- нические характеристики этого устройства представлены в приложении В. 8.3.1. Микросхема контроллера клавиатуры и индикатора 8279 фирмы Intel 1. Введение Материалы этого раздела должны по- мочь в изучении и применении программи- руемого контроллера клавиатуры и инди- катора. Все режимы работы контроллера будут подробно рассмотрены и проиллю- стрированы примерами. Описание устрой- ства 8279 распадается на три основных ча- сти: интерфейс с микропроцессором 8085, интерфейс с аппаратными средствами кла- виатуры и индикатора и программный интерфейс. На рис. 8.27 приведена структурная схема устройства 8279. Это устройство представляет собой контроллер с доста- точно сильно развитой логикой, ориенти- рованной на реализацию заданных функ- ций. Контроллер автоматически управляет регенерацией отображаемой информации и мультиплексированием. Он содержит в своем составе схему устранения влияния эффекта дребезга контактов, что обеспечи- вает нормальное замыкание ключей кла- виатуры. В устройстве, кроме того, имеет- ся ОЗУ емкостью 8x8 бит, которое может использоваться либо как буфер обратного магазинного типа, либо как память для представления фактического состояния всех ключей на данный момент времени. Контроллер 8279 является полностью программируемым устройством. При определенном аппаратном интерфейсе с микропроцессором он допускает задание многих различных режимов функциониро- вания. 2. Подключение контроллера к микропро- цессору 8085 Контроллер 8279 при проектировании предназначался для работы с микропро- цессором 8080, однако он может работать и с микропроцессором 8085. Как уже отме- чалось, основным отличием микропроцес- сора 8085 от микропроцессора 8080 является то, что в микропроцессоре 8085 используются одни и те же контактные ножки для вывода младшего байта адреса и для ввода-вывода данных, т. е. микро- процессор имеет восемь мультиплексиро- ванных выводов. Поскольку на вход Ао контроллера 8279 необходимо подавать сигнал с адресной линии, соответствую- щей самому младшему значащему биту, приходится либо производить фиксирова- ние сигнала Ао при считывании с мульти- плексированных выводов микропроцессо- ра, либо использовать одну особенность в работе микропроцессора 8085. Если контроллер 8279 предполагается применять для организации ввода-вывода с помощью адресуемых портов, то для по- лучения сигнала Ао можно использовать старший байт адресной шины. Микропро- цессор 8085, подобно микропроцессору 8080, во время выполнения операций вво- да-вывода дублирует значения сигналов младшего байта адресной шины на линиях старшего байта адресной шины. Таким образом, как показано на рис. 8.28, сигнал с линии А8 адресной шины может быть подан на вход Ао контроллера 8279. Если контроллер подключается к си- стеме в адресном пространстве памяти, то потребуется обеспечить запоминание по- лного 16-разрядного адреса с мультиплек- сированных линий микропроцессора 8085. Для обеспечения приема адреса с мульти- плексированных выводов микропроцессо- ра могут быть использованы 8-разрядный фиксатор 8282 фирмы Intel или ТТЛ-схема 74LS373. Для указания того, что на муль- типлексированных выводах микропроцес- сора 8085 содержится адресная информа- ция, предусмотрен специальный сигнал АДРЕС УСТАНОВЛЕН (ALE). По задне- му фронту сигнала ALE (при переходе из состояния 1 в состояние 0) младший байт адресной шины записывается в 8-раз- рядный фиксатор адреса. Тем самым обес- печивается получение 16-разрядного адре- са, подлежащего дешифрированию. Схема интерфейса для организации ввода-вывода представлена на рис. 8.29.
OUT A0-A3 OUT B0-B3 BD SL0-SL3 RLq-RL7 CNTL/ST8
288 Глава 8 Рис. 8.28. Интерфейс устройства 8279 с микро- процессором 8085 в случае организации стан- дартного ввода-вывода. Рис. 8.29. Интерфейс устройства 8279 с микро- процессором 8085 в случае организации ввода- вывода с распределением памяти.
Типичные интерфейсные микросхемы устройств 289 Контроллер 8279 имеет 8-разрядную шину данных, предназначенную для выда- чи управляющей информации и для пере- дачи данных. Шина данных контроллера соединяется с мультиплексированными выводами шины адреса/данных микропро- цессора 8085. Для задания направления потока данных в устройстве 8279 предусмотрено использование сигналов RD и WR. Когда сигнал RD имеет логическое значение 1, микропроцессор считывает данные из устройства 8279. Если сигнал WR имеет значение 1, то микропроцессор производит запись данных в устройство 8279. Чтобы упростить схему выбора кристалла, сиг- налы RD и WR независимо от того, в ка- ком адресном пространстве (ввода-вывода или памяти) работает устройство, должны быть активными лишь в течение или цикла ввода-вывода, или цикла памяти. Микро- процессор 8085 не обеспечивает непосред- ственную генерацию этих сигналов, одна- ко их удается сравнительно легко сформи- ровать. Микропроцессор 8085 вырабатывает сигналы WR, RD и Ю/М, которые опреде- ляют выполняемую им операцию. Сиг- налы RD и WR задают направление пере- дачи данных, а сигнал Ю/М определяет адресное пространство операции чтения- записи. В приведенной ниже таблице ука- заны операции, выполняемые соответ- ственно значениям рассмотренных сигна- лов: WR RD Ю/М Операция 0 1 1 Запись для устройства вво- да-вывода 1 0 1 Чтение для устройства вво- да-вывода 0 1 0 Считывание из памяти 1 0 0 Запись в память Используя дешифратор 1-из-8 (например, микросхему 74LS138) на входы которого подаются эти сигналы, легко, как это пока- зано на рис. 8.30, сформировать сигналы IOWR, IORD, MEMR и MEMW. Вход CS устройства 8279 используется для его разблокирования, если сигналами RD, WR и Ао определена операция переда- чи данных. Сигнал на этот вход подается тогда, когда на адресной шине задан пра- вильный адрес. Какие средства дешифри- рования адреса следует использовать, за- висит от сложности проектируемой си- стемы. Если в системе используется много устройств ввода-вывода, то для защиты от конфликтов на шине необходимо приме- нить более сложную схему дешифрирова- ния адреса. Однако в системах с неболь- шим количеством устройств ввода-вывода фактически не требуется производить де- шифрирование адреса. Каждому устрой- ству в этом случае может быть выделена отдельная адресная линия. Вход RESET микросхемы 8279 исполь- зуется для установки устройства в началь- ное состояние при включении питания или при установке начального состояния си- стемы. Этот вывод соединяется с выводом RESET микропроцессора 8085. На вход CLK должна подаваться по- следовательность тактовых импульсов, ис- пользуемая для внутренней синхрониза- ции устройства. Частота их должна превы- шать 200 Кгц: при этом условии внутрен- ние таймеры будут обеспечивать задание корректных задержек. Вход CLK может быть соединен с выводом CLK микропро- цессора 8085 или с другим источником так- товых импульсов. Сигнал с выхода IRQ устройства 8279 указывает микропроцессору, что устрой- ство 8279 содержит данные, предназна- ченные для считывания, т. е. для ввода в микропроцессор. Сигнал IRQ может быть подан на входы RST5.5, RST6.5 или RST7.5 микропроцессора 8085 в качестве запроса прерывания, обусловленного на- личием данных, готовых к пересылке в ми- кропроцессор. По этому запросу микро- процессор 8085 выполнит программу обработки прерывания, в соответствии с которой и будет произведено считывание данных из устройства 8279. Если управле- ние системой организуется без обработки прерываний, то сигнал IRQ не использует- ся; в этом случае микропроцессор считы- вает содержимое регистра состояния и определяет, нужно ли вводить данные, поступившие от устройства 8279. На рис. 8.31 представлена полная схе- ма подключения устройства 8279 к микро-
290 Глава 8 IORD IOWR MEMW MEMR Рис. 8.30. Дешифрирование сигналов WR, RD и Ю/М микропроцессора 8085. Рис. 8.31. Полная схема интерфейса устрой- ства 8279 и микропроцессора 8085.
Типичные интерфейсные микросхемы устройств 291 процессору 8085. Реализация такой схемы предполагает использование команд вво- да-вывода, средств обработки прерываний и непосредственное использование сигна- лов определенных адресных линий микро- процессора. 3. Интерфейс контроллера и аппаратных средств клавиатуры и индика- тора Устройство 8279 реализует интерфейс микропроцессора с клавишным пультом и индикатором. Поскольку организация интерфейса клавиатуры не зависит от ин- терфейса индикатора, сначала рассмотрим интерфейс микропроцессора с индикато- ром. Интерфейс индикатора сравнительно проще интерфейса клавиатуры. Устрой- ство 8279 имеет буферы и средства муль- типлексирования и регенерации, необхо- димые для управления индикатором. Это значительно упрощает организацию ин- терфейса. В действительности, если ис- пользуется индикатор, обеспечивающий отображение четырех знаков, то потре- буется добавить только внешний форми- рователь, пригодный для выбранного типа индикатора. Устройство 8279 имеет два буфера: А и В. Эти буферы могут использоваться от- дельно для образования двух наборов сим- волов с размерностью 4 бит х 16 или со- вместно для формирования одного набора размером 8 бит х 16. Запись данных в бу- фер и считывание данных из него упра- вляются специальными сигналами, со- ответствующие способы управления будут рассмотрены в следующем разделе, посвя- щенном программным средствам обеспе- чения интерфейса. Устройство 8279 обеспечивает выдачу данных из буферов на выходы Ао-А3 и Во-В3. Эти порты вывода являются 4-раз- рядными. Выдача данных через порты синхронизируется с помощью сигналов сканирования SL0-SL3, которые обеспечи- вают мультиплексирование. Сигналы ска- нирования либо используются в режиме прямого выбора, когда в каждый момент времени активен только один сигнал из четырех, либо задают последовательность двоичных 4-разрядных кодов от 0 до 8 или от 0 до 16. Во втором случае должен быть применен дешифратор (например, типа 1-из-16). При использовании дешифратора активным для сигналов сканирования является высокий уровень, а в режиме пря- мого выбора-сигнал низкого уровня. Наряду с другими сигналами устрой- ство 8279 вырабатывает сигнал СТИРА- НИЕ ИНДИКАТОРА (BD). Когда этот сигнал, имеющий низкий активный уро- вень, устанавливается в 1, может быть вы- полнено стирание информации либо по ко- манде, либо автоматически в промежутке между последующими словами. Если используются совместно два вы- ходных порта, то для формирования в ре- жиме мультиплексирования отображаемо- го слова 16 х 8 бит можно применять прямое управление элементами индикато- ра на светоизлучающих диодах. Семь из восьми выходных сигналов можно исполь- зовать для управления сегментами знака индикатора, а восьмой-для управления отображением десятичной точки. При та- кой организации управления можно ото- бражать ограниченный набор буквенно ци- фровой информации или даже некоторые специальные графические знаки. Таким образом, отображаемые на ин- дикаторе символы должны формировать- ся в значительной мере аналогично тому, как это делается в некоторых простых играх. Для реализации описанного прин- ципа работы индикатора потребуется до- бавить анодные и катодные формировате- ли, на которые подаются сигналы с выходов Ао-А3 и Во-В3 устройства 8279 и с выходов дешифратора. На рис. 8.32 представлена схема, соответствующая описанному способу организации интер- фейса индикатора. Теперь рассмотрим интерфейс клавиа- туры, предполагая, что однополюсные ключи на одно направление образуют в схеме клавиатуры либо матрицу 8x8, либо матрицу 4x8. Для управления ма- трицей клавиатуры используются те же самые четыре линии сканирования SL0_3, которые применялись и для управления индикатором. Клавиатура может действо- вать в двух различных режимах: в режиме прямого использования сигналов сканиро-
292 Глава 8 + 5 V 74159 Рис. 8.32. Интерфейс индикатора и контролле- ра 8279 при совместном использовании портов А и В. вания для матрицы 4 х 8 и в режиме, когда сигналы сканирования подаются на деши- фратор, а сигналы с выхода дешифратора подаются на матрицу ключей клавиатуры (для матриц 8 х 8). Последовательности сигналов сканирования, вырабатываемые в указанных режимах, совпадают с после- довательностями сигналов сканирования, используемых для управления индикато- ром. В первом режиме сигналы сканирова- ния непосредственно подаются на соответ- ствующие линии матрицы ключей, в то время, как и во втором режиме, произво- дится предварительное дешифрирование сигналов, вырабатываемых в нужной по- следовательности на линиях сканирова- ния. Для дешифрирования необходимо ис- пользовать внешний дешифратор. Отме- тим, что во втором режиме требуются только три сигнала сканирования, что со- ответствует восьми линиям матрицы клю- чей клавиатуры. В интерфейсе индикатора и интерфейсе клавиатуры должны исполь- зоваться одинаковые режимы сканирова- ния : это значит, что если выполняется ска- нирование клавиатуры с использованием дешифрирования сигналов сканирования, то аналогичное сканирование должно про- изводиться и для индикатора. Устройство 8279 позволяет вводить с клавишного пульта еще два дополни- тельных сигнала: УСТАНОВКА РЕГИ- СТРА КЛАВИАТУРЫ (SHIFT) и УПРА- ВЛЕНИЕ (CONTROL). При замыкании соответствующих ключей (рис. 8.33) устройство 8279 фиксирует их состояние и при вводе данных путем нажатия клавиш на клавишном пульте записывает соответ- ствующую информацию в память обрат- ного магазинного типа. Таким образом, с помощью устройства 8279 можно реги- стрировать 256 различных кодовых комби- наций или символов. На рис. 8.33 пред- ставлена простая схема, обеспечивающая выдачу информации на 16-элементный ин- дикатор и ввод данных с помощью клавиа-
Типичные интерфейсные микросхемы устройств 293 Рис. 8.33. Использование контроллера 8279 в качестве интерфейса клавиатуры и индикато- ра.
294 Глава 8 туры, имеющей 64 клавиши для ввода данных и две для управления-SHIFT и CNTL. В режиме сенсорного сканирования бу- фер обратного магазинного типа преобра- зуется в поразрядную таблицу 8x8, кото- рая содержит битовое отображение со- стояний ключей. Каждый бит этого ото- бражения представляет состояние ключа, находящегося в соответствующей позиции матрицы клавиатуры. Если ключ замкнут, то соответствующий ему бит в ОЗУ будет установлен в состояние логического нуля. В устройстве 8279 не предусмотрена защи- та от влияния эффекта дребезга контактов при их замыкании. В рассматриваемом ре- жиме не регистрируются состояния сигна- лов SHIFT и CNTL. Об изменении состоя- ния матрицы устройство 8279 в этом режиме сообщает выработкой сигнала IRQ. Кроме того, устанавливается соот- ветствующий разряд регистра состояния. В режиме сенсорного сканирования сенсорные элементы не работают по прин- ципу ключа: они должны лишь обеспечить выработку логических значений 1 или О при поступлении сигналов сканирования. В третьем режиме работы устройство 8279 позволяет вводить данные в ОЗУ ти- па обратного магазинного типа. Этот ре- жим является режимом стробированного ввода данных. При этом данные посту- пают на входы RLo_7 и загружаются в ОЗУ по переднему фронту импульса CNTL/STB. В этом режиме сигналы скани- рования в интерфейсе клавиатуры не ис- пользуются, а в интерфейсе индикатора они играют свою обычную роль. 4. Программный интерфейс Для обеспечения правильного функ- ционирования устройства 8279 при опреде- ленной конфигурации применяемых аппа- ратных средств должны использоваться специальные команды. Эти команды пере- даются в порт команд устройства 8279 (При этом на линии Ао должен быть уста- новлен высокий уровень.) При низком уровне сигнала на линии Ао выполняются чтение или запись данных через порт данных устройства 8279. Информация о состоянии считывается через порт ко- манд. Команда задания режима работы ин- дикатора и клавиатуры определяет режим функционирования устройства 8279. Эта команда имеет следующий формат: Старш Младш разр разр 0 0 0 D D К К К Задание реж раб индикатора и клавиатуры DD Назначение поля DD 0 0 Индикатор на 8 знаков (8 бит на знак); Ввод слева 0 1 Индикатор на 16 знаков (8 бит на знак); Ввод слева 1 0 Индикатор на 8 знаков (8 бит на знак); Ввод справа 1 1 Индикатор на 16 знаков (8 бит на знак); Ввод справа ккк Назначение поля ККК ООО Кодирование сигналов сканиро- вания матрицы клавиатуры Блокировка ввода при нажатии двух и более клавиш 0 0 1 Прямое использование сигналов сканирования матрицы клавиату- ры. Блокировка ввода при на- жатии двух и более клавиш 0 1 0 Кодирование сигналов сканирова- ния матрицы клавиатуры. До- пускается одновременное нажа- тие N клавиш 0 1 1 Прямое использование сигналов сканирования матрицы клавиату- ры. Допускается одновременное нажатие N клавиш 1 0 0 Кодирование сигналов сканиро- вания сенсорной матрицы 1 0 1 Прямое использование сигналов сканирования сенсорной матри- цы 1 1 0 Стробируемый ввод данных. Ко- дирование сигналов сканирова- ния индикатора 1 1 1 Стробируемый ввод данных. Пря- мое использование сигналов ска- нирования индикатора Поле DD используется для задания числа отображаемых символов и режима ввода. Могут отображаться либо 8-сим- вольные слова, либо 16-символьные слова. Данные, подлежащие отображению, могут вводиться в индикатор слева или справа.
Типичные интерфейсные микросхемы устройств 295 В режиме ввода данных с левого входа символы вводятся и появляются на инди- каторе как на пишущей машинке. При ра- боте в автоинкрементном режиме каждый новый вводимый символ будет появляться справа от предыдущего. Если использует- ся индикатор на 16 символов, то 17-й вво- димый символ заменит первый символ отображаемого слова. В режиме ввода данных с правого кон- ца индикатора при вводе очередного сим- вола все записанные ранее символы пере- мещаются влево на один шаг, а новый записывается на крайнее правое место. Ин- дикатор в этом случае работает подобно тому, как работают индикаторы калькуля- торов. При вводе 17-го символа символ, введенный первым, будет вытеснен за пределы индикатора. Содержимое поля ККК определяет ре- жим работы клавиатуры и способ сканиро- вания. Способы сканирования наряду с ме- тодом сенсорного сканирования и режи- мом стробируемого ввода обсуждались в предыдущем разделе. Как уже отмечалось, клавиатура может работать в двух различных режимах, свя- занных с разрешением или блокировкой одновременного нажатия нескольких кла- виш и ввода данных, обусловленного за- мыканиями соответствующих ключей. В режиме работы с блокировкой ввода по- сле того, как устройство 8279 обнаружи- вает нажатие клавиши (замыкание ключа), все последующие нажатия клавиш (замы- кания ключей) будут игнорироваться до тех пор, пока не произойдет размыкание первого ключа. В режиме, когда допу- скается одновременное нажатие несколь- ких клавиш, информация о всех замкнутых ключах вводится в память обратного ма- газинного типа FIFO в том порядке, в ко- тором устройство 8279 обнаружило факты замыкания. В этом случае может быть за- дан особый режим, когда одновременное нажатие клавиш и замыкание ключей бу- дут рассматриваться как ошибка. Возник- новение такой ошибки будет сопрово- ждаться установкой в 1 определенного разряда регистра состояния, задержкой последующего ввода в магазинную па- мять и формирование запроса на прерыва- ние. Режим работы с обнаружением ука- занной ошибки устанавливается с по- мощью команды «Сброс запроса прерыва- ния/установка режима фиксации ошибки», которая будет описана ниже. Устройство 8279 имеет программи- руемые счетчики, используемые при вы- полнении деления частоты синхронизи- рующего сигнала до 100 Кгц. Тактовая последовательность частоты 100 Кгц при- меняется для внутренней синхронизации устройства 8279. Желаемое значение дели- теля частоты устанавливается с помощью команды «Установка значения делителя частоты». В поле РРРРР этой команды за- дается значение делителя, необходимое для получения частоты тактовой последо- вательности, равной 100 Кгц. Делитель может принимать значения в диапазоне от 1 до 31. Если синхронизирующий сигнал CLK имеет частоту 2 Мгц, то делитель должен быть равен 20, или 1416. Эта ко- манда имеет следующий формат: Старш Младш Установка значения делит частот разр разр 0 0 1 р р р р р Когда ЦП выдает команду «Чтение из ОЗУ типа FIFO/чтение из сенсорного ОЗУ», устройство 8279 обеспечивает считывание данных из ОЗУ. Эта команда представлена на рисунке. Старш Младш Чтение из ОЗУ магазинной ---------1--------1----11-------Г“~1 памяти, чтение из | 0 I 1 0 А1Х А А А Х-не используется сенсорного ОЗУ J---------------1--1----1----1——J------1—1 В режиме сенсорного сканирования со- держимое поля ААА указывает одну из во- сьми «строк» ОЗУ, которая должна быть считана. Разряд AI используется для зада- ния режима автоинкрементной адресации. Если значение этого разряда равно 1, то после считывания из ОЗУ производится автоматически увеличение адреса считыва- ния. Если разряд AI установлен в 1, то по- сле считывания из ОЗУ не будет сбрасы- ваться запрос прерывания. Во время других режимов работы содержимое по- лей ААА и AI не принимаются во внима- ние. Команда «Считывание из ОЗУ индика- тора» позволяет ЦП считать данные из бу-
296 Глава 8 фера индикатора. Эта команда имеет сле- дующий формат: Старш Младш Считыв из ОЗУ иидикат разр разр 0 1 1 А1 А А А А В поле ААА содержится адрес, по которо- му производится считывание, а поле AI ис- пользуется для задания режима автоин- крементной адресации. Поскольку при считывании из ОЗУ индикатора и при за- писи в него используется один и тот же счетчик, по этой команде устанавливается следующий адрес и задается автоинкре- ментный режим адресации как при считы- вании, так и при записи. По команде «Запись в ОЗУ индикато- ра» устройство 8279 выполняет запись в его буфер. Задание адреса и режима ав- тоинкрементной адресации производится так же, как и в команде «Считывание из ОЗУ индикатора», которая рассматрива- лась выше. Формат команды «Запись в ОЗУ индикатора» представлен на сле- дующем рисунке: Старш Младш разр разр Запись в ОЗУ индикатора 1 0 0 AI A A A A Эта команда не изменяет источник данных, из которого будут производиться последующие считывания: ЦП будет вы- полнять считывание из этого источника данных ОЗУ типа FIFO, сенсорного ОЗУ или ОЗУ индикатора, который был указан последним. Если источником было ОЗУ индикатора, то команда «Запись в ОЗУ ин- дикатора» будет изменять адрес следую- щего считываемого элемента. Команда «Запрет записи/стирание» ис- пользуется для запрещения записи в ОЗУ индикатора или для стирания отображае- мой информации. При выполнении этой команды могут использоваться два 4-раз- рядных порта, что позволяет независимо выполнять функции запрета записи и сти- рания по каждому из двух портов. Формат этой команды представлен на следующем рисунке: Страш Младш Запрет зап стир J | | р | | | х [ [ ‘^ [ Цд [ Вц [ X - не используется Разряды IW используются для установки запрета записи через порт А или через порт В. Если отображаемая информация представлена в виде двоично-десятичных чисел, то при выводе кода одной цифры че- рез один порт может быть установлен за- прет вывода через другой порт. Отметим, что порт А используется для вывода млад- шего полубайта, а порт В-для вывода старшего полубайта. Разряды BL используются для задания операции стирания информации на от- дельном индикаторе по выбранному по- рту. Код, выдаваемый на индикатор во время выполнения этой операции, опреде- ляется командой «Гашение», которая бу- дет описана ниже. Когда отображаемый символ представляется 8-разрядным ко- дом, оба разряда BL должны задавать опе- рацию стирания информации. По команде «Гашение» задаются коды, передаваемые на индикатор при выполне- нии4 операции стирания. Кроме того, по этой команде могут производиться стира- ние ОЗУ индикатора и установка началь- ного состояния устройства. Рассматривае- мая команда имеет следующий формат: Старш. разр. Г ашение Младш разр Cd Cd Cf В поле CD задается код, используемый при выполнении операции «стирание» соглас- но таблице Cq Cd Код «стирания» О X Все нули (X-любое значение) 1 0 20 шестнадцатеричное (пробел в коде ASCII) 1 1 Все единицы Установка в 1 разряда EN означает разре- шение гашения индикатора; при выполне- нии гашения данные не могут заноситься в ОЗУ индикатора. Значение разряда EN фиксируется в регистре состояния, а 1 в этом разряде сохраняется вплоть до за- вершения операции гашения индикатора. Если разряд CF установлен в 1, то про- изводится стирание содержимого ОЗУ ти- па FIFO, сбрасывается сигнал прерывания
Типичные интерфейсные микросхемы устройств 297 и устанавливается в состояние 0 указатель сенсорного ОЗУ. При установке в 1 разряда Сд выпол- няются действия, соответствующие анало- гичной установке разрядов EN и CF. Кроме того, инициируется синхронизация вну- тренней тактирующей последовательно- сти. По команде «Сброс запроса прерыва- ния/установка режима фиксации ошибки» на линии запроса прерываний устанавли- вается низкий уровень сигнала и снимается блокировка записи в ОЗУ. Кроме того, по этой команде устанавливается режим фик- сации ошибки для клавиатуры, допускаю- щей ввод при одновременном нажатии не- скольких клавиш. Этот режим был описан выше. Рассматриваемая команда имеет следующий формат: Сброс запроса прерь1в 'устан реж фиксации ош Старш Младш разр разр X - не используется Установка специального режима фиксации ошибки происходит при значении Е, рав- ном 1, при условии, что клавиатура рабо- тает в режиме, допускающем ввод при одновременном нажатии нескольких кла- виш. Итак, мы рассмотрели все команды устройства 8279. Теперь остановимся на форматах данных для различных реги- стров этого устройства. В одном регистре содержится слово состояния магазинной памяти; это слово фактически отражает информацию о состоянии устройства 8279. Оно имеет следующий формат: Старш Младш Слово сост магазинной памяти В поле NNN указывается число симво- лов, содержащихся в магазинной памяти во время ввода с клавиатуры или в режиме стробируемого ввода; в режиме сенсорно- го сканирования это поле не используется. Установка в 1 разряда F указывает, что магазинная память заполнена и, прежде чем вводить другие символы, необходимо произвести считывание из памяти; в режи- ме сенсорного сканирования этот разряд не используется. Разряд U служит для индикации ошиб- разр______________________ разр Dp S/E О и F N N N ки, связанной с тем, что ЦП производит считывание из незаполненной магазинной памяти типа FIFO; в режиме сенсорного сканирования этот разряд не используется. Разряд 0 обеспечивает индикацию ошибки, обусловленной переполнением магазинной памяти; такая ошибка возни- кает при попытке осуществить запись сим- вола в заполненную память. В режиме сен- сорного сканирования этот разряд не используется. Разряд S / Е имеет двоякое назначение, конкретно определяемое режимом функ- ционирования устройства 8279. В режиме сенсорного сканирования значение 1 в этом разряде указывает, что в сенсорном ОЗУ присутствует по крайней мере один указатель замыкания ключа. В режиме, когда допускается одновременное нажатие нескольких клавиш и установлен режим фиксации ошибки, этот разряд использует- ся для индикации того, чю произошла ошибка, обусловленная одновременным замыканием нескольких ключей клавиа- туры. Разряд Djj используется для сигнализа- ции о том, что индикатор не готов к при- ему информации, поскольку не заверши- лось выполнение команды гашения. В режиме клавишного ввода данные в магазинном ОЗУ имеют следующий формат: Сгарш Младш Формат данных о ОЗУ магазинной памяти Байт данных в указанном формате содер- жит информацию о позиции ключа в ма- трице клавиатуры, а так же значения сиг- налов УСТАНОВКА РЕГИСТРА КЛА- ВИАТУРЫ и УПРАВЛЕНИЕ (линии SHIFT и CONTROL). Поля RL и SC указывают «коор- динаты», или позицию замкнутого ключа матрицы клавиатуры. В поле SC содержит- ся номер линии сканирования, которая бы- ла активна при обнаружении замыкания ключа, а в поле RL указывается номер обратной линии, на которой был обнару- жен сигнал, обусловленный замыканием ключа.
298 Глава 8 MACRO-80 3.36 17-Mar-80 PAGE 1 Программа инициализации устройства 8279 Программа предназначена для установки режима функционирования устройства, задания частоты сканирования и для выполнения снятия запрета на прерывания микропроцессора 8085 0081 0080 C8279 EQU 81Н D8279EQU 80Н ; Регистр управления устройства 8279 ; Регистр данных устройства 8279 0000 ООЗЕ 0008 MODE EQU ООН CLOCK EQU ЗЕН INTM EQU 08H ; Установка режима работы индикатора на 16 сим- ; волов и режима работы клавиатуры с блоки- ; ровкой ввода при нажатии нескольких клавиш ; Команда установки значения делителя частоты , равным 30 ; Маска прерываний с разрешением прерываний ; RST 5.5,6.5,7.5 1000’ ЗЕ ЗЕ ORG 1000H START: MVI A,CLOCK ; Определение начального адреса программы ; Загрузка в per. А команды установки значения 1002’ D3 81 OUT C8279 ; делителя частоты ; Вывод содержимого регистра управления 8279 1004’ ЗЕ 00 MVI A,MODE ; Загрузка в per. А команды режима 1006’ D3 81 OUT C8279 ; Вывод команды для 8279 1008’ ЗЕ 08 MVI A,INTM ; Загрузка в per. А маски прерываний 100 А’ 30 100В’ FB 100С’ С9 MACRO- SIM El RET END START 80 3.36 17-Mar-80 ; Установка маски прерываний, снимающей запрет ; для прерываний RST 5.5, 6.5, 7.5. ; Разрешение прерываний ; Возврат к основной программе PAGE 5 Макросы. Символы: С8279 0081 CLOCK ООЗЕ D8279 0080 INTM 0008 MODE 0000 START 1000’ Ошибок нет Рис. 8.34. Программа инициализации устрой- ства 8279. Разряды S и С представляют неинвер- тированные значения сигналов на линиях SHIFT и CONTROL соответственно. В режиме стробируемого ввода или в режиме сенсорного сканирования память типа FIFO содержит данные, отображаю- щие состояние обратных линий при подаче сигнала стробирования, линии RL0 со- ответствует самый младший разряд байта данных. Ниже даны примеры программ, ко- торые соответствуют схемам аппаратного интерфейса, представленным на рис. 8.31 и рис. 8.33. Для регистра данных в микро- схеме 8279 определен порт ввода-вывода с адресом # 8016, а для регистра управле- ния определен порт с адресом # 8116. Для организации функционирования устройства 8279 необходимо синхронизи- ровать его работу и выбрать опреде- ленный режим функционирования. На рис. 8.34 показана программа, обеспечи- вающая необходимую инициализацию
Типичные интерфейсные микросхемы устройств 299 MACRO-80 3.36 17-Маг-8О PAGE 1 Программа обработки запросов на прерывания от устройства 8279. По этой программе производится считывание символа из устройства 8279 и преобразование его в шестнадцатеричную цифру. Затем сим- вол выдается на индикатор. Программа работает в любом режиме функционирования индикатора и клавиатуры. Для хранения символа в шестнадцатеричном коде используется только младший полубайт. 0081 С8279 EQU 81Н ; Порт команд устройства 8279 0080 D8279EQU 80Н ; Порт данных устройства 8279 0040 RFIF0 EQU 40Н ; Команда чтения из ОЗУ типа FIFO ORG 2СН ; Вектор прерывания RST 5.5 0020 F5 START: PUSH PSW ; Сохранение содержимого регистров 002D’ Е5 PUSH H 002Е’ С5 PUSH В : 002F’ ЗЕ 40 MVI A,RFIFO ; Загрузка в per. А команды «Чтение» из ОЗУ ; типа FIFO 0031’ D3 81 OUT C8279 ; Вывод команды в устройство 8279 0033’ DB 80 IN D8279 ; Ввод из ОЗУ типа FIFO 0035’ Е6 OF ANI OFH ; Очистка старшего полубайта 0037’ 06 00 MVI B,00H ; Очистка регистра В 0039’ 4F MOV C,A ; Пересылка знака в регистр С 003А’ 21 3000’ LXI H,TABLE ; Загрузка в HL базового адреса таблицы 003 D’ 09 DAD В ; Прибавление смещения к базовому адресу ООЗЕ’ 7Е MOV A,M ; Загрузка содержимого элемента таблицы в А ООЗГ 2F CMA ; Инвертирование содержимого аккумулятора 0040’ D3 80 OUT D8279 ; Вывод на устройство 8279 0042’ С1 POP В ; Восстановление содержимого регистров 0043’ Е1 POP H : 0044’ F1 POP PSW : 0045’ FB EI ; Разрешение прерываний 0046’ С9 RET ORG 3000H ; Возврат в основную программу ; Начальный адрес таблицы 3000’ 3F TABLE: DB 00111111B ; Нуль ЗООГ 06 DB 00000110B ; Один 3002’ 5В DB 01011011B ; Два MACRO-80 3.36 17-Маг-80 PAGE 1 -1 3003’ 4F DB 01001111B ; Три 3004’ 66 DB 01100110B ; Четыре 3005’ 6D DB 01101101B ; Пять 3006’ 7D DB 011Ш01В ; Шесть 3007’ 07 DB 0000011 IB ; Семь 3008’ 7F DB 01111111B ; Восемь 3009’ 6F DB 01101111B ; Девять 300А’ 37 DB 0011011 IB ; ’А’ 300В’ 7С DB 01111100B ; v 300С’ 58 DB 01011000B ; ’с’ 300D’ 5Е DB 01011111B ;’d’ ЗООЕ’ 79 DB 01111001B ; ’с’
300 Глава 8 300F’ 71 DB 01110001В ; Т END START MACRO-80 Макросы: 3.36 17-Mar-80 PAGE 5 Символы: С8279 0081 D8279 0080 RFIFO 0040 START 0020 TABLE 3000’ Ошибок нет Рис. 8-35. Программа обработки прерываний от устройства 8279. MACRO-80 3.36 ; 17-Mar-80 PAGE 5 ; Программа обработки прерываний от устройства 8279 в режиме ; сканирования сенсорной матрицы. ; Обеспечивает считывание полной сенсорной матрицы и помещение ; ее в буфер памяти, начиная с определенного адреса. 0081 0080 С8279 EQU 81Н ; Порт команд устройства 8279 D8279EQU 80Н ; Порт данных устройства 8279 0050 RFIFO EQU 50Н ; Команда считывания из ОЗУ типа FIFO с авто- ; ; инкрементной адресацией 00E0 INTEND EQU 0E0H ; Команда сброса запроса на прерывание ORG 2СН ; Начало области рестарта для прерывания по вхо- ; ду RST 5.5 002C’ F5 002D’ E5 002E’ C5 002F’ 3E 50 BEGIN: PUSH PSW ; Сохранение содержимого регистров PUSH Н ; PUSH В ; MVI A,RFIFO ; Загрузка в регистр А команды считывания из ; ; ОЗУ типа FIFO 003Г D3 81 0033’ 21 2000’ 0036’ 06 0B 0038' DB 80 003A’ 77 003B’ 23 003C’ 05 003D’ C2 0038’ 0040’ Cl 0041’ El 0042’ Fl 0043’ FB 0044’ C9 OUT С8279 ; Вывод через порт команд 8279 LXI Н,MATRIX ; Загрузка в HL начального адреса матрицы MVI В,8 ; Загрузка счетчика (регистр В). LOOP: IN D8279 ; Ввод сенсорной матрицы MOV М,А ; Сохранение в памяти INX Н ; Увеличение значения указателя DCR В ; Уменьшение значения счетчика JNZ LOOP ; Переход, если значение счетчика не 0 POP В ; Восстановление содержимого регистров POP Н ; POP PSW El ; Разрешение прерываний RET , Возврат в основную программу ORG 2000Н ; Определение начального адреса матрицы 2000’ MATRIX: DS 8 ; 8 байт памяти END BEGIN MACRO-80 Макросы: 3.36 17-Mar-80 PAGE 5 Символы: BEGIN 0020 С8279 0081 D8279 0080 INTEND 00Е0 LOOP 0038’ MATRIX 2000’ RFIFO 0050 Ошибок нет Рис. 8.36. Программа обработки прерываний от устройства 8279 в режиме сканирования сенсорной матрицы.
Типичные интерфейсные микросхемы устройств 301 MACRO-80 3.36 17-Маг-80 PAGE 1 ; Программа ввода с использованием устройства 8279 в сис- ; теме без обработки прерываний. ; Программа обеспечивает считывание слова состояния па- ; мяти типа FIFO и определение наличия подлежащего ; вводу символа. Если символа нет, то устанавливается ; режим ожидания. При наличии символа он вводится и ; пересылается в регистр A 0081 С8279 EQU 81Н , Порт команд устройства 8279 0080 D8279 EQU 80Н ; Порт данных устройства 8279 0040 RFIFO EQU 40Н , Команда считывания из ОЗУ типа FIFO 0007 MASK EQU 07Н ; Маска для поля NNN ; DRG 2000Н ; Начало программы 2000’ DB 81 START: IN C8279 ; Ввод слова состояния памяти типа FIFO 2002’ Е6 07 ANI MASK ; Маска для поля NNN 2004’ СА 2000’ JZ START 5 ; Если анализируемые биты равны 0, то в , памяти нет символа (переход на метку ; START) 2007’ ЗЕ 40 NVI A,RFIFO ; Загрузка в А команды считывания из ОЗУ 2009’ D3 81 OUT C8279 ; Пересылка команды в устройство 8279 200В’ DB 80 IN D8279 ; Считывание из ОЗУ типа FIFO 200D’ С9 RET END START ; Возврат MACRO-80 3.36 17-Mar-80 PAGE 5 Макросы: Символы: С8279 0081 D8279 0080 MASK 0007 RFIFO 0040 START 2000’ Ошибок нет Рис. 8.37. Программа обеспечения ввода с применением устройства 8279 в режиме без запросов прерываний и соответствующей их обработки. устройства 8279. Поскольку синхронизи- рующий сигнал CLK микропроцессора 8085 имеет частоту 3 Мгц, нужно поделить эту частоту на 30, чтобы получить частоту сканирования, равную 100 Кгц. Для уста- новки требуемого значения делителя ис- пользована команда «Установка значения делителя частоты». Далее необходимо задать режим функ- ционирования устройства 8279. Используя индикатор на 16 символов с левым входом и клавиатуру с кодированием сигналов сканирования и блокировкой ввода при на- жатии нескольких клавиш, применим для этой цели команду «Задание режима ра- боты индикатора и клавиатуры». Поскольку в рассматриваемой схеме предусмотрено формирование устрой- ством 8279 запросов прерывания микро- процессора 8085 по входу RST5.5, в про- граммах, обеспечивающих разрешение прерываний, использованы команды SIM и EI этого микропроцессора. После завер- шения выполнения программы инициали- зации управление передается основной программе. Для задания других режимов работы индикатора и клавиатуры необхо- димо выдавать на устройство 8279 со- ответствующие команды.
302 Глава 8 Ha рис. 8.35 представлена программа обработки прерываний, поступающих на вход RST5.5 микропроцессора 8085 от устройства 8279. По этой программе про- изводится считывание данных из магазин- ной памяти, преобразование полученного кода и выдача соответствующего графиче- ского знака на индикатор. Эта программа может использоваться почти во всех режи- мах работы индикатора и клавиатуры. На рис. 8.36 приведена программа, ис- пользуемая для обработки прерываний в режиме сканирования сенсорной ма- трицы. При обработке прерывания по этой программе производится считывание по- лной сенсорной матрицы и засылка ее в па- мять в определенный буфер. Данные, пред- ставляемые этой матрицей, используются затем в основной программе. Режим стробируемого ввода здесь об- суждаться не будет, так как рассматри- ваемые нами схемы аппаратных средств не настроены на этот режим, однако про- грамма обработки прерываний, предста- вленная на втором листинге, предусматри- вает работу и при конфигурации аппа- ратных средств, соответствующей режиму стробируемого ввода. Если управление системой осущест- вляется без использования запросов пре- рываний и их обработки, то микропроцес- сор должен считывать слово состояния магазинной памяти и по содержимому по- ля NNN определять, имеются ли в этом ОЗУ символы, подлежащие вводу и обра- ботке. Программа для этого случая пред- ставлена на рис. 8.37. 8.4. Контроллеры прямого доступа к памяти Контроллер прямого доступа к памяти (ПДП) представляет собой устройство, ис- пользуемое для управления передачей данных в режиме прямого доступа между микропроцессором и некоторым внешним устройством. Контроллер ПДП может осуществлять передачу данных различны- ми способами: приостанавливать работу микропроцессора или осуществлять по- лный его останов (пакетный ПДП); за- хватывать циклы памяти микропроцессо- ра (ПДП с захватом цикла) или, наконец, использовать прием, основанный на рас- ширении тактовых импульсов. Ряд сложных методов организации ПДП, в частности ПДП с регенерацией динами- ческой памяти, основан на использовании некоторых фрагментов цикла команды (например, части цикла, используемой для увеличения значения счетчика команд), в которых микропроцессор не использует адресную шину и шину данных (про- зрачный, или скрытый ПДП). Наиболее простым способом организации ПДП, ко- торый реализован в большинстве микро- процессоров, является приостановка ра- боты микропроцессора. Такой прием удается использовать, если адресная шина и шина данных имеют три состояния. Как показано на рис. 8.38, для обмена данны- ми между периферийным устройством и памятью внешнее устройство будет адресовать запрос прерывания контролле- ру ПДП, а не микропроцессору. Рис. 8.38. Схема подключения контроллера ПДП к шинам системы.
Типичные интерфейсные микросхемы устройств 303 После получения от периферийного устройства такого запроса контроллер ПДП посылает сигнал на вход HOLD ми- кропроцессора. Микропроцессор заверша- ет выполнение текущей команды, освобо- ждает адресную шину и шину данных и выдает контроллеру ПДП сигнал, под- тверждающий прием сигнала HOLD. За- тем контроллер ПДП пересылает на адресную шину адрес памяти, по которому будет производиться запись или чтение данных в режиме ПДП. После этого кон- троллер ПДП вырабатывает сигнал «Чте- ние» или «Запись» и предоставляет пери- ферийному устройству возможность в зависимости от выполняемой операции либо пересылать информацию на шину данных, либо принимать данные с нее. Для обеспечения передачи блока данных устройство ПДП обычно имеет регистр адреса и счетчик. До начала передачи в адресный регистр загружается на- чальный адрес области памяти для считы- вания или записи данных в режиме ПДП. В счетчик заносится число элементов данных, подлежащих пересылке. Загрузка адресного регистра адреса и счетчика вы- полняется по соответствующим командам программы. После пересылки каждого слова содержимое адресного регистра уве- личивается на 1, а содержимое счетчика уменьшается на 1. Передача данных пре- кращается, когда содержимое счетчика становится равным 0. Контроллер ПДП представляет собой очень сложное и дорогостоящее устрой- ство. Во многих случаях может оказаться выгоднее использовать для передачи бло- ков данных в режиме ПДП какой-либо ми- кропроцессор и память, а не специальный контроллер ПДП. 8.4.1. Контроллер ПДП 8257 фирмы Intel1) Это четырехканальный контроллер ПДП, который воспринимает запросы прерываний от периферийного устройства. 11 Материалы этого раздела печатаются с разрешения фирмы Intel Corporation. Его основной функцией является форми- рование очередного адреса для считыва- ния периферийным устройством данных из памяти или для записи данных в па- мять. Перевод системы в режим ПДП осу- ществляется путем организации «захвата» шины микропроцессора. Устройство 8257 имеет блок приоритетного анализа запро- сов, который принимает запросы от пери- ферийных устройств и пересылает резуль- тирующий запрос на вход ЦП. Оно обеспечивает установку значений счетчи- ков циклов ПДП для каждого канала и вы- дает управляющий сигнал, уведомляющий периферийное устройство о том, что за- данное число циклов ПДП исчерпано. Су- щественно, что для организации функцио- нирования устройства 8257 требуется один порт ввода-вывода (микросхема 8212), ко- торый используется для обеспечения де- мультиплексирования выходов шины данных микропроцессора 8085. На рис. 8.39 представлены структурная схема, конфигурация выводов и рабочие сигналы микросхемы 8257. 1. Описание функциональных возможно- стей контроллера ПДП 8257 а) Общая характеристика Контроллер 8257 является программи- руемым устройством, предназначенным для организации режима ПДП. В комплек- се с микросхемой 8212 фирмы Intel (порт ввода-вывода) устройство 8257 образует полный 4-канальный контроллер ПДП, предназначенный для использования в со- ставе микропроцессорных систем фирмы Intel. После инициализации, выполняемой программно, устройство 8257 может не- посредственно передавать между памятью и периферийным устройством блок данных, содержащий до 16384 байт. Пере- дача данных при этом полностью выпол- няется без участия ЦП. После получения запроса на организацию обмена в режиме ПДП от внешнего устройства контроллер 8257 выполняет следующие действия: 1. Принимает на себя функции упра- вления шиной системы. 2. Передает подтверждение выдавше- му запрос периферийному устройству, ко- торое подключено к каналу высшего при- оритета.
304 Глава 8 Конфигур выв IVOR с i/ow С 1 ' 2 40 39 □ а7 □ Аб MEM R С 3 38 □ А5 MEMW с 4 37 □ Ад MARK С 5 36 □ ТС READY С 6 35 □ Аз HLDA С 7 34 □ а2 ADSTB С 8 33 □ А. AEN С 9 32 □ Ао HRQC 10 8257 31 □ vcc CS С и 30 □ Do CLK С 12 29 □ d, RESET С 13 28 □ d2 DACK 2 С 14 27 □ d3 DACK 3 С 15 26 □ D4 DRQ 3 С 16 25 □ DACK 0 DRQ2 С 17 24 □ DACK 1 DRQ 1 С 18 23 □ DS DRQ0 С 19 22 □ d6 GND С 20 21 □ d7 CLK RESET- Структурная схема D?-Do Ао Аз CS Буфер шины данных Ад А5 READY- HRQ HLDA- MEMR AEN ADSTB DRQ0 СН-0 16 бит per адреса и счетч. DACK О Схема управл вводом/ выводом СН-1 16 бит per адреса и счетч. DRQ 1 DACK 1 СН-2 р*—DRQ 2 16 бит per адреса *1 и счетч, DACK 2 Схема управл и per задания реж Наименования выводов Схема анализа приоритетов СН-3 DRQ3 16 бит per адреса рдскГЗ и счетч» K Внутр шина ТС MARK D7-Do Шина данных AEN Разрешение выдачи адреса А7 - Ао Адресная шина ADSTB Строб адреса I/OR Чтение для УВВ ТС Окончание счета I/OW Запись для УВВ MARK Завершение счета 128 циклов ПДП MEMR Считывание из памяти пп лл Вход запроса ПДП MEMW Запись в память DRQ3- DRQo CLK Вход синхросигналов DACK3- Подтверждение запроса ПДП RESET Вход начальной установки DACK0 READY Гоговность CS Выбор микросхемы HRQ Запрос ПДП (в 8080 А) vcc + 5 В HLDA Подтверждение запроса GND Земля ПДП (из 8080 А) Рис. 8.39. Структурная схема, конфигурация выводов и рабочие сигналы устройства 8257. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 3. Подает младшие 8 бит адреса памя- ти на адресные линии системы Ао-А7; пересылает по шине данных восемь стар- ших разрядов адреса памяти в порт ввода- вывода 8212 (который помещает этот байт кода адреса на линии А8-А15). 4. Вырабатывает сигналы управления вводом-выводом в режиме ПДП, по ко- торым периферийные устройства при- нимают или передают байт данных непос- редственно по заданному адресу.
Типичные интерфейсные микросхемы устройств 305 Контроллер 8257 продолжает упра- влять системной шиной и производить передачу данных до тех пор, пока перифе- рийное устройство сохраняет запрос на ПДП. Таким образом обеспечивается пересылка в едином «пакете» блока пере- даваемых и принимаемых данных между памятью и быстрым периферийным устройством (например, информационный обмен с некоторым сектором гибкого маг- нитного диска). Когда завершается переда- ча заданного числа байт, контроллер 8257 формирует сигнал окончания передачи на выходе ТС (Terminal Count), информируя ЦП о том, что операция обмена в режиме ПДП завершена. Устройство 8257 может работать в трех различных режимах: 1) чтение в ре- жиме ПДП, при котором данные пере- даются из памяти в периферийное устрой- ство; 2) запись в режиме ПДП, при которой данные передаются из периферий- ного устройства в память; 3) контроль в режиме ПДП, при котором не осущест- вляется фактической передачи данных. В режиме контроля управляющие сигналы ЧТЕНИЕ-ЗАПИСЬ для памяти и устройств ввода-вывода не формируют- ся, что предотвращает передачу данных; в остальном же контроллер функциони- рует в этом случае так же, как и в режиме передачи данных. Однако устройство 8257 будет принимать на себя управление си- стемной шиной и выдавать сигнал под- тверждения запроса от периферийного устройства в каждом цикле ПДП. При вы- полнении некоторой процедуры контроля, скажем формирования проверочного сло- ва для циклического избыточного кода, пе- риферийное устройство может воспользо- ваться сигналами подтверждения для управления внутренней выборкой каждого байта блока данных. Например, вслед за передачей блока данных в режиме ПДП из памяти в периферийное устройство может быть выполнена процедура контроля в ре- жиме ПДП, что позволит периферийному устройству проконтролировать вновь по- лученные данные. б) Описание структурной схемы контрол- лера 8257 1. Каналы ПДП В контроллере 8257 реализовано четы- ре отдельных канала ПДП (СН-0, СН-1, СН-2, СН-3), каждый из которых оснащен двумя 16-разрядными регистрами: реги- стром адреса ПДП и регистром - счетчи- ком числа передаваемых байтов. Оба реги- стра должны инициализироваться до «от- пирания» канала. В адресный регистр загружается адрес первой ячейки области памяти, в которую записываются или из которой считываются данные при пересы- лке в режиме ПДП. Значение, загружаемое в младшие 14 разрядов регистра-счетчика, определяет уменьшенное на единицу число циклов ПДП; после выполнения заданно- го числа циклов вырабатывается сигнал ТС. Например, если в регистр-счетчик за- писано значение 0, то сигнал ТС для со- ответствующего канала формируется в первом цикле ПДП. Вообще, если необ- ходимо выполнить N циклов ПДП, то в младшие 14 разрядов регистра-счетчика циклов ПДП следует загрузить значение N-1. Два старших разряда регистра-счет- чика определяют тип операции ПДП для соответствующего канала. Значения этих разрядов не»могут быть изменены во вре- мя цикла ПДП, но допускается их измене- ние в промежутке между передачей блоков в режиме ПДП. Каждый канал восприни- мает сигнал запроса ПДП (вход DRQn) и выдает сигнал подтверждения (выход DACKn). 2. Загрузка и считывание регистров кон- троллера 8257 Когда ЦП производит запись (про- граммирование) или считывание содержи- мого одного из регистров устройства 8257, логический блок «Чтение/Запись» воспри- нимает сигнал ЧТЕНИЕ (I/OR) или ЗА- ПИСЬ (I/OW), дешифрирует младшие четыре бита адреса (Ао-А3) и либо пере-
306 Глава 8 дает данные с шины данных в адресный ре- гистр (сигнал I/OW имеет значение 1), ли- бо выдает содержимое адресного регистра на шину данных (сигнал I / OR имеет зна- чение 1). Сигнал начальной установки является асинхронным; он подается на вход RESET и обычно вырабатывается либо устрой- ством 8224, либо микропроцессором 8085. По сигналу начальной установки блоки- руются все каналы ПДД, очищается ре- гистр режима работы и переводятся в со- стояние высокого сопротивления все ли- нии управления. При работе устройства 8257 в подчи- ненном режиме сигналы адресных линий Ао-А3 используются для выбора одного из регистров, содержимое которого дол- жно быть считано или изменено. В режиме ведущего устройства эти линии исполь- зуются контроллером для передачи четы- рех младших разрядов 16-разрядного адреса памяти. 3. Блок управления Этот блок управляет последователь- ностью операций во время выполнения всех циклов ПДП. Он формирует соответ- ствующие управляющие сигналы и опре- деляет 16-разрядный адрес, который является адресом ячейки памяти, исполь- зуемой в очередной операции записи или считывания в режиме ПДП. Сигнал ADSTB используется как стро- бирующий при передаче старшего байта адреса памяти в устройство 8112 с шины данных. Сигнал AEN служит для блокировки системной шины данных и системной управляющей шины. Сигнал ТС указывает периферийному устройству, что данный цикл ПДП являет- ся последним циклом для передаваемого блока данных, а сигнал MARK-что теку- щий цикл ПДП является 1028-м циклом со времени появления предыдущего сигнала MARK. 4. Регистр режима работы Четыре разряда регистра режима ра- боты используются для разблокирования каналов ПДП, а четыре других при уста- новке их в 1 задают режимы работы устройства 8257, указанные на рисунке, приведенном на с. 307 (1). ЦП обычно «программирует» регистр ре- жима работы после инициализации адресных регистров и регистров-счетчи- ков контроллера 8257. 5. Регистр состояния В 8-разрядном регистре состояния указывается, для каких каналов выполнено условие завершения передачи по сигналу ТС. Кроме того, один разряд этого реги- стра используется в качестве флага обно- вления [с. 307 (2)]. 2. Запись и считывание содержимого регистров устройства 8257 В микросхеме 8257 есть четыре пары «канальных регистров». В каждую пару входит 16-разрядный регистр адреса ПДП и 16-разрядный регистр - счетчик числа ци- клов ПДП (по одной паре регистров на каждый канал). Кроме того, устройство 8257 имеет два «универсальных реги- стра»-8-разрядный регистр режима ра- боты и 8-разрядный регистр состояния. За- грузку этих регистров и считывание их со- держимого ЦП выполняет по командам «чтение» или «запись», в которых адре- суется устройство 8257 и его соответ- ствующие регистры. В то время как ЦП подает 16-разрядный адрес на системную адресную шину и либо выводит подлежа- щие записи данные на системную шину данных, либо принимает с шины данных информацию, подлежащую считыванию, устройство 8228 вырабатывает соответ- ствующие сигналы управления чтением или записью (обычно сигналы I/OR или I / OW). Все или часть из 12 старших разря- дов адресных линий А4-А15 (в зависимо- сти от памяти системы и конфигурации средств ввода-вывода) обычно дешифри- руются для формирования сигнала выбора микросхемы (CS), подаваемого на соответ- ствующий вход контроллера 8257. а) Операции режима ПДП 1. Передача одиночных байтов Передача отдельного байта иниции-
Типичные интерфейсные микросхемы устройств 307 2 1 Разреш. AUTOLOAD Разреш. ТС STOP Разреш EXTENDED WRITE Разреш. ROTATING PRIORITY Сост. ТС для кан. О Сост. ТС для кан. 1 Сост ТС для кан. 2 Сост ТС для кан. 3 руется устройством ввода-вывода, кото- рое подает сигнал DRQ на один из кана- лов устройства 8257. Если канал не заблокирован, то устройство 8257 посы- лает сигнал HRQ на вход HOLD микро- процессора 8085. После этого контроллер 8275 ждет поступления от ЦП сигнала под- тверждения HLDA. Сигнал подтвержде- ния указывает ему, что системная шина свободна и может быть использована им в режиме ПДП. После получения сигнала HLDA контроллер 8257 активирует линию DACK (активный уровень - низкий) для за- прошенного канала. Сигнал DACK для за- просившего устройства ввода-вывода дей- ствует как сигнал выбора микросхемы. Затем контроллер 8257 формирует ко- манды ввода и вывода, после чего осу- ществляется передача байта между вы- бранным устройством ввода-вывода и памятью. По завершении передачи на линии DACK устанавливается сигнал вы- сокого уровня, а на линии HRQ-сигнал низкого уровня, что указывает ЦП на ос- вобождение шины и возможность ее ис- пользования. Сигнал DRQ должен иметь высокий уровень до тех пор, пока не будет выдан и опознан сигнал DACK. Однако он должен приобрести низкий уровень до перехода процесса управления передачей в состояние S4, что предотвращает возник- новение дальнейших пересылок (рис. 8.40). 2. Последовательные пересылки Если одновременно несколько каналов выдают запрос на ПДП, то передача будет проходить в пакетном режиме; переключе- ние с одного канала на другой не приводит к дополнительным издержкам. В состоя- нии S4 анализируются сигналы на линиях DRQ, и во время следующей передачи ре- ализуется запрос с наивысшим приорите- том. При передаче пакетным способом передача по каналу низкого приоритета будет прерываться в случае появления за- проса ПДП по каналу более высокого при- оритета. После завершения передачи по каналу высокого приоритета управление передается каналу низкого приоритета при условии, что в этом канале все еще дей- ствует сигнал DRQ. Чтобы выполнить указанную последовательность действий, не требуется дополнительных циклов, при этом сигнал на линии HRQ продолжает действовать до тех пор, пока на всех ли- ниях DRQ не установится низкий уровень сигнала. 3. Управление прерываниями Непрерывная передача по описанному выше способу может прерываться внеш- ним устройством путем подачи сигнала низкого уровня на вход HLDA. После ка- ждой передачи в режиме ПДП устройство
Сброс Рис 8.40. Диаграмма состояний в процессе выполнения операции ПДП. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982
Типичные интерфейсные микросхемы устройств 309 А15 Ав ALE 2 STB DOs DO] 8212 Die Ph DS2 CLR DS1 13 14 ad7 AD0 8085 Адресная шина —A/^y-Vcc 2| RD WR Вз Ai Bi A2 £ B2 Й Oi 4 .9 32 MEMR EC MEMW D7 Шина данных B4 10/M HOLD HLDA CLK (OUT) RESET IN RESET OUT O4 SEL(B)| 1 RESET Выбор микро- схемы Готовность MEMR Шина IOR управл MEMW IOW cs D7 ! 8257-5 ! Do Готов- ность Aq £ 2 13. a7 DRQo DACK0 DRQi DACKj DRQ2 DACK2 DRQ3 DACK3 TC MARK 19 ,18 24 14 16 15 36 5 DRQo DACKo DRQi DACKj DRQ^ DACK2 DRQ^ DACK3 TC MARK AEN ADSTB 9 vcc 8 13 14. DS2___STB CLR Рис. 8.41. Подробная структурная схема орга- низации интерфейса контроллера ПДП 8257-5 и микропроцессора 8085. Источник перепечатано с разрешения фирмы Intel Corporation, copyright 1982 Die DOe 1 8212 I DI, DOj MD DS1
310 Глава 8 8257 проверяет, продолжает ли действо- вать сигнал HLDA. Если этот сигнал не ак- тивен, то контроллер 8257 завершает теку- щую передачу, устанавливает низкий уро- вень сигнала на линии HRQ и переходит в состояние ожидания. Если сигналы на линиях DRQ все еще активны, то устрой- ство 8257 снова активизирует линию HRQ (сигнал высокого уровня) на третьем такте и продолжает нормально функциониро- вать (рис. 8.40). 4. Использование сигнала ГОТОВ- НОСТЬ Устройство 8257, подобно микропро- цессорам 8080 и 8085, имеет вход READY (готово). Анализ сигнала на входе READY проводится в состоянии S3. Если на входе READY низкий уровень сигнала, то устройство 8257 переходит в состояние ожидания S.W. Значение сигнала на входе READY анализируется в каждом состоя- нии ожидания. Когда на входе READY устанавливается высокий уровень сигнала, устройство 8257, чтобы завершить переда- чу, переходит в состояние S4. Сигнал READY используется для организации ин- терфейса с памятью или устройствами ввода-вывода, которые не удовлетворяют требованиям ко времени установления сигналов на шине данных контроллера 8257. 5. Скорость передачи Устройство 8257 осуществляет переда- чу байта данных за четыре такта. На пере- дачу не расходуется никаких дополни- тельных тактов, что приводит к эффектив- ному использованию шины данных. При подаче на вход CLK тактовых импульсов частоты 2Мгц устройство 8257 будет осу- ществлять передачу данных со скоростью 500 Кбайт/с. 6. Организация ввода-вывода по принци- пу обращения к памяти Микросхема 8257 может быть подклю- чена к системной шине как блок памяти, а не как устройство ввода-вывода. Таким образом, может быть получена конфигура- ция системы, позволяющая организовать ввод-вывод с распределением памяти. Для этого линии управления системной па- мятью должны соединяться с линиями управления вводом-выводом устройства 8257, а линии управления системным вво- дом-выводом должны быть связаны с ли- ниями управления памятью устройства 8257. На рис. 8.41 представлена подробная структурная схема организации интерфей- са микропроцессора 8085 и устройства 8257. Задачи и вопросы 8.1. Изобразите схемы подключения: а) устройства 2716 к микропроцессору 8085, б) устройства 8755 к микропроцессо- ру 8085. Укажите основные отличия рас- сматриваемых схем подключения. 8.2. В чем состоят основные отличия ме- жду портами ввода-вывода 8155/8156 и портами ввода-вывода 8355/8755? 8.3. Разработайте аппаратные и про- граммные средства интерфейса УАПП Ау51013 фирмы General Instruments и микропроцессора 8085. Используйте все сигналы, необходимые для организации интерфейса устройств 8155/8156 в режиме ввода-вывода с квитированием. 8.4. Разработайте аппаратные и про- граммные средства интерфейса устройств 6850 и 6809. 8.5. К микроЭВМ, спроектированной на основе устройств 8085, 8155 и 8755, под- ключена, как показано на рис. 8.42, через порты ввода-вывода клавиатура 4x4. Требуется обеспечить программное вы- полнение следующих функций: - обнаружение факта замыкания ключа, - устранение влияния эффекта дребезга контактов (задержка на 20 мс), - «декодирование» ключа, т. е. получение шестнадцатеричного кода по опреде- ленным номерам строки и столбца ма- трицы клавиатуры, - осуществление ввода при одновремен- ном нажатии двух клавиш. а) Разработайте блок-схему программы, предназначенной для реализации перечис- ленных функций.
Типичные интерфейсные микросхемы устройств 311 Рис. 8.42. Схема соединения линий клавиа- туры с портами ввода-вывода-иллюстрация для упражнения 8.5. Источник D Hall, Microprocessors and Digital Systems, McGraw-Hill, 1982 б) Используя разработанную блок-схему, напишите программу на языке ассемблера микропроцессора 8085. ____ 8.6. Укажите назначение выводов Ао, BD и IRQ устройства 8279. 8.7. Для чего предназначены выводы SL0-SL3 устройства 8279? Каким обра- зом подключаются к этим линиям индика- тор на восемь цифр и клавиатура 8x8? 8.8. Перечислите функциональные харак- теристики контроллера ПДП 8257 фирмы Intel. Почему для организации интерфейса контроллера 8257 необходимо использо- вать устройство 8212?
ОГЛАВЛЕНИЕ Предисловие к переводу......................................................... 5 Предисловие.................................................................... 7 Глава 1. Введение в микрокомпьютерные системы поддержки разработок и конст- руирование систем на основе микропроцессоров................................... 9 1.1. Основные особенности макетных систем............................. 9 1.2. Блок-схема процесса разработки системы.......................... 14 1.3. Пример разработки аппаратных и программных средств конкретной при- кладной системы....................................................... 18 Глава 2. Принципы построения микроЭВМ........................................ 20 2.1. Введение в микропроцессорные системы............................. 20 2.2. Системы счисления и булева алгебра.............................. 27 2.3. Основы построения программных средств............................ 36 Глава 3. Аппаратные средства микропроцессорных систем и способы ввода-вывода 44 3.1. Принципы построения базовых аппаратных средств микропроцессорных систем............................................................... 44 3.2. Декодирование адресов........................................... 57 3.3. Запоминающие и внешние устройства............................... 62 3.4. Типичные методы ввода-вывода для микропроцессоров............... 64 Глава 4. Типичные 8-разрядные микропроцессоры и микроЭВМ...................... 66 4.1. Микропроцессор 8085 фирмы Intel................................. 66 4.2. МикроЭВМ 8048 фирмы Intel....................................... 93 4.3. Микропроцессор Z80 фирмы Zilog................................. 105 4.4. Микропроцессор 6800 фирмы Motorola............................. 122 4.5. Микропроцессор 6809 фирмы Motorola............................. 128 Глава 5. Средства ввода-вывода микропроцессора 8085 ......................... 137 5.1. Программируемый ввод-вывод..................................... 137 5.2. Система прерываний микропроцессора 8085 ....................... 140 5.3. Организация прямого доступа-к памяти........................... 150 5.4. Линии последовательного ввода и вывода данных.................. 150 Глава 6. Микропроцессоры 8086 фирмы «Intel» и 8000 фирмы «Zilog» .... 153 6.1. Микропроцессор Intel 8086 ..................................... 153 6.2. Микропроцессор Z8000 .......................................... 174 Глава 7. Микропроцессор модели 68000 фирмы Motorola и модели 432 фирмы Intel................................................................196 7.1. Микропроцессор 68000 фирмы Motorola.............................. 196 7.2. Микропроцессор модели 432 Intel.................................. 228 Глава 8. Типичные интерфейсные микросхемы устройств микропроцессорных сис- тем ..........................................................................256 8.1. Типичные ППЗУ, ОЗУ и устройства ввода-вывода ................. 256 8.2. Типичные интерфейсные устройства последовательного ввода-вывода . . 274 8.3. Устройства управления клавиатурой и дисплеем................... 284 8.4. Контроллеры прямого доступа к памяти........................... 302 Оглавление................................................................... 312