Текст
                    СПРАВОЧНИК
ПО МИКРО-
ПРОЦЕССОРНЫМ
УСТРОЙСТВАМ
Scan Pirat
2003 г.
Киев
лТехшка»
1987

32.973.2я2 С74 УДК 681.3 Справочник по микропроцессорным устройствам С74 /А. А. Молчанов, В. И. Корнейчук, В. П. Тарасенко, Д. А. Россошинский.— К.! Техн1ка, 1987.— 288 с., ил.—'Библиогр.: с. 279—282. В пер. 1 р. 20 к. 80 000 экз. В справочнике приведены схемы микропроцессоров и микропроцес- сорных устройств, серийно выпускаемых промышленностью, а также сведения, необходимые для проектирования микропроцессорных систем обработки данных. Даны типовые примеры-- построения микроЭВМ и автономных устройств обработки информации на основе микропро- цессоров . Предназначен для инженерно-технических работников, занимаю- щихся проектированием и эксплуатацией вычислительной техники, з также может быть полезай етудентам вузов. 2405000000-078 С"М202(04)-87 62,87 32.973.2Я2 Авторы: А. ГА. Молчанов, В, И. Корнейчук, В, П. Тарасенко, Д. А. Россошинский Рецензенты канд. техн, наук В, П. Волкогон, д-р техн, наук А. В. Палагин Редакция литературы по энергетике, Электронике, кибернетике и связи Зав. редакцией 3. В. Божко q) Издательство «Техн1ка», 1987
ПРЕДИСЛОВИЕ ускоренное развитие всех отраслей народного хозяйства страны . на базе научно-технического прогресса требует значительного рас- ширения сферы применения достижений электроники и вычислитель- ной техники. Основные направления экономического и социального развития СССР на 1986—1990 годы и на период до 2000 года предусматривают рост объема производства средств вычислительной техники в 2— 2,3 раза. При этом будет ускоренно развиваться выпуск'средств авто- матизации управленческого и инженерного труда, малых электронно- вычислительных машин высокой производительности, персональных электронно-вычислительных машин, систем числового программно- го управления для многофункциональных станков и гибких производ- ственных модулей, программируемых командоаппаратов для различ- ных видов оборудования. Технической основой микроЭВМ и микро- процессорных систем служат наборы больших интегральных схем (БИС), серийный выпуск которых освоен электронной промышлен- ностью. Структура настоящего справочника по микропроцессорным уст- ройствам соответствует концепции микропроцессора как про- граммно-управляемого средства обработки информации. Это отра- жено в разделении материала на части, посвященные аппаратным средствам и программному обеспечению микропроцессорных систем. В первой части вначале подробно рассмотрены наиболее распростри- именные серии микропроцессорных наборов, а затем, более кратко, описаны менее распространенные и перспективные серии. Так как микропроцессорные БИС являются весьма сложными цифровыми устройствами, то значительное внимание уделено раскрытию внут- ренней функциональной структуры БИС, что необходимо для пра- вильного представления о работе микропроцессорных устройств, оп- тимизированных по некоторым технико-экономическим показа- телям. Микропроцессоры и микроЭВМ становятся составной частью самых разнообразных систем, приборов и устройств. Возможности их использования для управления, обработки и передачи информации во многом зависят от их оснащенности ередствами программирова- ния. К настоящему времени общее программное обеспечение микроЭВМ и микропроцессоров организационно и технически объеди- няется с системами автоматизированного проектирования БИС, так как основным носителем целевых программ в большинстве информа- ционно-управляющих систем являются БИС постоянной памяти. 3
Широкое использование ^микропроцессоров определило развитие кроссо- вых и резидентных систем автоматизации разработки программ (САРП), ориентированных на различные классы пользователей. Во второй части справочника рассматривается современное состояние программного и математического обеспечения микропроцессоров и микроЭВМ. Описаны операционные системы микроЭВМ, а также ассемблерный уровень, языки программирования высокого уровня, средства проектирования и отладки программного обеспечения, реа- лизуемые как в кроссовых, так и в резидентных САРП микропроцес- соров и микроЭВМ. Первая часть справочника написана В. И. Корнейчукам и В. П. Тарасенко, вторая часть — А. А. Молчановым и Д. А. Россошанским. Отзывы и пожелания просим направлять по адресу: 252601, Киев, I, Крещатик, 5, издательство «Техника».
Часть I АППАРАТНЫЕ СРЕДСТВА МИКРОПРОЦЕССОРНЫХ СИСТЕМ В номенклатуре изделий электронной промышленности, выпуска- емых в настоящее время и предназначенных для построения цифровых систем сбора, хранения и обработки информации наряду с БИС полупроводниковой памяти, важнейшее место занимают ми- кропроцессоры (МП). Микропроцессор представляет собой автономное функциональ- но законченное устройство, состоящее из одной или нескольких Про- граммно-управляемых БИС, включающее все средства, необходи- мые для обработки информации и управления данными, и рассчи- танное на.совместную работу с устройствами памяти н ввода-вывода информации. Создание МП привело к широкому внедрению универ- сальных вычислительных средств в те отрасли техники, где другие вычислительные средства, созданные ранее, не моули быть исполь- вованы. По своей структурной и функциональной организации МП аналогичны процессорам, реализующим программную обработку информации. Главными же отличительными признаками МП явля- ются выполнение всех их структурных единиц в виде БИС, неболь- шая длина операндов, относительно небольшая емкость памяти, храпение микропрограмм в постоянной памяти и пр. Различают универсальные и специализированные МП. По- следние оптимизированы по различным параметрам на конкрет- йыс применения. Специализированные МП целесообразны при больших сериях производства. Применяют МП совместно с микро- процессорными наборами (МН), которые представляют собой со- вокупности совместимых БИС, разработанных для построения раз- личных микропроцессорных средств обработки информации. Обыч- ио в МН входят МП; оперативное запоминающее устройство (ОЗУ); постоянное запоминающее устройство (ПЗУ); полуПостоянное за- поминающее устройство (ППЗУ), допускающее смену записанной в нем информации в специальном нерабочем режиме; БИС микро- программного управления; БИС ввода-вывода или интерфейса внеш- них устройств. Структура МП должна удовлетворять трем основным требова- ниям: быть функционально гибкой, обеспечивать достаточно высо- кое быстродействие и допускать недорогую технологическую реали- зацию. Высокая функциональная гибкость МП, необходимая для Создания эффективного программного обеспечения, достигается мик- ропрограммным управлением, за счет побайтовой обработки и адре- сации данных, развитой системы прерываний и большего числа внутренних регистров. Различают однокристальные и многокристальные (модульные) МП. Структура однокристального МП показана на рис. 1.1, а. Та- кой МП содержит арифметико-логическое устройство АЛУ, устрой- ство управления УУ, блок внутренних регистров БР и блок интер- фейса БИ. АЛУ, как правило, состоит из двоичного сумматора и не- скольких регистров и аппаратным способом выполняет простейшие операции (сложение, вычитание, пересылку, основные логические бперацин и сдвиг). Сложные операции выполняются по микропро- граммам, блок внутренних регистров БР образует внутреннюю 5
память МП и содержит специальные регистры и регистры общего на- значения РОН. Регистры БР связаны с другими блоками МП общи- ми шинами и во многом определяют вычислительные возможности МП. Все РОН доступны выполняемой программе и часто, кроме основных функций (хранение операндов), выполняют функции спе- циальных регистров, например, регистров стека РСТ и индексных регистров ИР. Существует тенденция увеличения числа РОН, об ус- Рис. 1.1. е
ловленная тем, что увеличение объема внутренней памяти позволяет повысить производительность МП за счет сокращения числа обра- щений к ОЗУ. Специальные регистры выполняют функции счетчика команд СК и регистров команд РК, результата РР АЛУ, указателя стека РУС, прямого доступа в память РПД и состояния PC. Послед- ний фиксирует информацию о результатах выполнения последней обработанной команды: например, нулевой результат, положитель- ный или отрицательный знак, переполнение или запрос иа преры- вание. Эта информация используется для реализации условных переходов по программе. Стек выполняется на внутренних регист- рах или на некоторой выделенной области ОЗУ. В последнем случае обращение и адресация к стеку проводится через РУС. Стек на ре- гистрах более быстродействующий, но из-за малого числа регист- ров в МП он имеет небольшую емкость. В РУС хранится адрес 1-й свободной ячейки в стеке. При записи слова в стек значение адреса в РУС увеличивается иа единицу, а при чтении уменьшается на единицу. Кроме этого, в МП имеется возможность прочитать без разрушения содержимое любой ячейки стека без изменения слова в РУС. Устройство управления вырабатывает серии внутренних управ- ляющих сигналов ВУС: В2, ..., Вт с помощью дешифратора кода операции ДСК. Блок интерфейса обеспечивает сопряжение между МП, ЗУ и периферийными устройствами (ПУ) (внешний интер- фейс), а также между частями МП (внутренний интерфейс). Внут- ренняя шина данных МП представляет собой многопроводную ма- гистраль, связывающую все узлы внутри МП. Обычно разрядность внутренней шииы данных совпадает с разридностью внешней^шииы данных ШД, по которой передаются операнды и команды, и опреде- ляет разрядность слов, с которыми оперирует МП. Из-за ограничен- ного числа внешних выводов (особенно у однокристальных МП) шина данных часто работает через специальную буферную схему мультиплексора в режиме двунаправленной передачи. При этом противоположные направления обмена данными между МП и дру- гими устройствами разделены во времени. Многокристальный МП (рис. 1.1, б) выполняют, как правило, на основе БИС двух типов: управляющей (БИСУ) и операционной (БИСО). Операционные БИС содержат АЛУ и РОИ с разрядностью в 2 или 4 бита и снабжены схемами и выводами, позволяющими объединить их в операционную часть МП произвольной разрядно- сти. Управляющая БИС содержит общие для МП регистры и ЗУ микропрограмм ЗУМ, из которого считываются параллельно на все БИСО сигналы микрокоманд МК. Наличие нескольких БИС является недостатком многокристальных МП, но наращиваемая разрядность и меньшая степень интеграции отдельных БИС позво- ляют повысить точность и скорость обработки информации и приме- нять технологию, обеспечивающую более высокое быстродействие БИС. Кроме того, набор микрокоманд можно изменять путем за- мены только одной БИСУ или содержимого ЗУМ (при использо- вании ППЗУ). Однако менее жесткие требования к количеству внеш- них выводов позволяют использовать независимые шину адреса ША, шину управления ШУ и ШД, что также повышает быстродействие МП, позволяет исключить мультиплексор и упростить струк- туру МП. Наиболее типичная система команд МП содержит набор из 70—100 команд (трех-, двух-, одно- и безадресных). Однако ограни- чения на число выводов и сложность УУ не позволяют в полной мере использовать преимущества трех- и двухадресных команд. 7
Вследствие этого в МП наибольшее распространение получили ко- манды, содержащие один адрес операнда или несколько коротких адресов операндов, хранящихся в РОН. Все команды любого микро- процессора можно условно разбить на арифметические, логическйе и вспомогательные. В свою очередь вспомогательные команды со- стоят из команд пересылки, ветвления, обращения к подпрограм- мам и управления вводом-выводом. Арифметические команды МП состоят чаще всего из операций сложения, вычитания, добавления или вычитания 1 н сдвига (в МП новых серий, кроме того, еще умножение и деление). Логические команды выполняют поразрядные операции дизъюнкции, конъюнк- ции, неравнозначности и сравнения. Команды пересылки обеспечи- вают двусторонний обмен информацией между внутренними регист- рами МП или регистрами и ОЗУ. Команды ветвления реализуют условные и безусловные переходы в программе. Команды обраще- ния к подпрограммам реализуют вход в подпрограмму и последую- щий возврат к основной программе. Команды управления вводом- Выводом реализуют операции ввода-вывода информации из внешней памяти и периферийных устройств. В МП применяют прямую, непрямую, непосредственную и не- явную адресации. Первые два способа адресации соответствуют прямой и непрямой (присоединенной, относительной, косвенной) адресации в больших универсальных ЭВМ [4,52]. При непосред- ственной адресации содержимое адресной части команды является операндом. Команды в этом случае не обращаются в ОЗУ за опе- рандами, что обеспечивает экономию памяти и увеличивает скорость обработки информации. При неявной адресации адрес в команде Явно не указывается, но код операции автоматически задает обра- щение к местам хранения данных, требуемых для выполнения опе- рации. Например, для выполнения арифметических операций с неявной адресацией данные берутся из РР. Обмен данными в микроЭВМ происходит между МП, ОЗУ и устройствами ввода-вывода (УВВ)^ Обмен информацией между МП и ОЗУ часто осуществляется через интерфейс, находящийся в МП. Обмен между МП и УВВ осуществляется или через специа- лизированную БИС сопряжения, ориентированную на некоторый класс УВВ, или через универсальный программируемый интерфейс (программируемый контроллер УВВ), обеспечивающий подключение к МП практически любого УВВ. Программируемые контроллеры В общем случае выполняют следующие функции: управляют про- цессом передачи данных между МП и УВВ; преобразуют фор- маты данных; дешифрируют адреса УВВ, посылаемые МП; пере- дают сигналы готовности УВВ к обмену данными с МП; дешиф- рируют коды операций, посылаемые МП, и обеспечивают их выпол- нение. Следует отметить, что обмен данными между ОЗУ и УВВ может осуществляться через МП, однако это снижает быстродействие микроЭВМ. Поэтому в ряде МН имеются БИС, реализующие канал прямого доступа УВВ к памяти, с помощью которого обмен данными осуществляется без участия МП. .Устройства управления первых однокристальных МП строи- лись исключительно по схемному способу. Однако повышение степени интеграции и требования гибкости структуры МП привели к широкому применению микропрограммного управления не только в многокристальных, но и в однокристальных МП. Различают три способа размещения ЗУМ по отношению к МП: внутреннее, внеш- нее и комбинированное. 8
При внутреннем размещении ЗУМ находится на одном кристал- ле с МП и с точки зрения пользователя такое управление ничем не отличается от схемного. В этом случае МП реализует фиксирован- ное множество микропрограмм, соответствующих заданной системе команд. Достигнутая степень интеграции ^лимитирует количество аппаратуры в МП и позволяет реализовать только небольшое коли- чество команд. Быстродействие МП с таким размещением ЗУМ наи- большее, однако замена микропрограмм,а следовательно, и системы команд невозможна. Исключение составляет случай, когда в каче- стве ЗУМ . применяют двустороннюю (активную) память. Однако е.мкость"такой памяти, как правило, недостаточна для хранения раз- витой системы микропрограмм, а трудности создания полупровод- никовой памяти, сохраняющей информацию при отключении пита- ния, существенно сужают область применения МП с двусторонним ЗУМ. При внешнем размещении ЗУМ находится вне МП и может быть выполнено в виде ПЗУ, ППЗУ или совместно с ОЗУ. Микро- команды из ЗУМ в этом случае поступают ио ШД в регистр микро- команд. Поэтому разрядность микрокоманд определяется разряд- ностью ШД. Быстродействие МП ограничено длительностью цикла внешнего ЗУМ и меньше, чем прн внутреннем размещении ЗУМ. Однако внешнее размещение ЗУМ позволяет ие только разработ- чику, но и пользователю изменять и расширять систему команд, приспосабливая ее к специфике конкретного применения. При комбинированном размещении ЗУМ имеется как внутрен- няя, так и внешняя микропрограммная память, благодаря чему та- кой вариант объединяет в себе преимущества обоих способов: от внутреннего ЗУМ — быстродействие, от внешнего ЗУМ —гиб- кость. Однако при таком размещении ЗУМ возникают трудности вследствие малого количества шин, связывающих ЗУМ и МП. Для преодоления этих трудностей используют двухуровневое микро- программирование, прн котором во внешнем ЗУМ хранятся только адреса микрокоманд, записанных во внутреннем ЗУМ. При этом адресоваться могут не только отдельные микрокоманды, но и микро- Подпрограммы илн микропрограммы базовой системы команд.Одним Из эффективных способов реализации такого микропрограммирова- ния является применение механизма блокировки, позволяющее значительно расширить набор исходных микрокоманд. При этом внешняя микрокоманда (хранящаяся во внешнем ЗУМ) имеет струк- туру вида А, М, где А — адрес внутренней микрокоманды (храня- щейся во внутреннем ЗУМ); М — маска, указывающая группу микроопераций, которую надо блокировать при выполнении данной микрокоманды. Упрощенная схема, реализующая двухуровневый Принцип микропрограммирования, показана иа рис. 1.1, в. В этой схеме внешняя микрокоманда разбивается на две части А и М. Часть А поступает на регистр адреса внутренней микрокоманды РАМ, вследствие чего из внутреннего ЗУМ выбирается внутренняя микрокоманда, часть управляющих сигналов которой блокируется узлом блокировки УБ, управляемым маской М. Для уменьшения длины адреса А можно использовать один из методов непрямой адресации, например, присоединенную или относительную. Однако в этом случае необходимо иметь внешнюю микрокоманду записи слова в регистр базового адреса микрокоманды. Другой особенностью управления МП является широкое приме- нение программируемых логических матриц (ПЛМ) вместо ПЗУ. ПЛМ, как и ПЗУ, строят по схеме дешифратор — шифратор, однако в отличие от ПЗУ программирование структуры ПЛМ (электриче- 9
ским или масочным способами) возможно не только на уровне шиф- ратора, но и на уровне дешифратора. ПЛМ в устройствах управле- ния МП применяют для преобразования микрокоманд или адресов, в качестве ЗУМ, или для выполнения всех указанных функций одно- временно. В последнем случае микропрограммное ЗУ предельно простое и состоит из одной или нескольких параллельно работаю- щих ПЛМ (рис. 1.1, г). Регистр РК выбирает требуемую совокуп- ность микрокоманд, отдельные микрокоманды из которой выбира- ются содержимым регистра адреса микрокоманд РАМ и логически- ми условиями ЛУ. Адрес микрокоманды может задавать внешняя МК или же он может быть сформирован с помощью ПЛМ за счет обратной связи (которая на рис. 1.1, г показана штриховой линией). Применение вместо ПЛМ ПЗУ, все адреса которого дешифрируют- ся, потребовало бы технически недостижимой емкости иа одном кристалле. В микропроцессорной схемотехнике установлены следующие ос- новные понятия и термины [51]. Интегральной микросхемой (ИМС) называют микроэлектрон- ное изделие, выполняющее определенную функцию преобразова- ния, обработка сигнала и (или) накапливания информации и имею- щее высокую плотность упаковки электрически соединенных эле- ментов (или элементов и компонентов) и (или) кристаллов, которое с точки зрения требований к испытаниям, приемке, поставке и экс- плуатации рассматривается как единое целое. Элемент ИМС — часть ИМС, выполняющая функцию какого- либо электрорадиоэлемеита, которая изготовлена нераздельно от кристалла или подложки и не может быть выделена как самостоя- тельное изделие с точки зрения требований к испытаниям, приемке, поставке и эксплуатации (под электрорадиоэлементом понимают транзистор, диод, резистор, конденсатор и др.). . Компонент ИМС — часть ИМС, выполняющая функции какого- либо электрорадиоэлемеита, которую можно рассматривать как самостоятельное изделие с точки зрения требований к испытаниям, приемке, поставке и эксплуатации. Корпус ИМС — часть конструкции ИМС, предназначенная для защиты ИМС от внешних воздействий и для соединения с внешними электрическими цепями посредством выводов. Степень интеграции ИМС — показатель степени сложности ИМС, характеризуемый числом содержащихся в ней элементов и компонентов. Степень интеграции определяется по формуле К = 1g N, где N — число компонентов и элементов ИМС (в том числе содержащихся в составе компонентов), входящих в ИМС, а значение К округляется до ближайшего большего целого числа. ИМС первой степени интеграции содержит до 10 элементов и компо- нентов включительно, ИМС второй степени интеграции —от 11 до 100 и т. д. Серия ИМС — совокупность типов ИМС, которые могут выпол- нять различные функции, имеют единое конструктивно-технологи- ческое исполнение и предназначены для совместного применения. Используемые в микропроцессорных устройствах ИМС харак- теризуются большим количеством показателей, которые опреде- ляют их функциональные возможности, быстродействие, эконо- мичность, надежность, условия эксплуатации, стоимость и парамет- ры входных н выходных сигналов [25]. По схемно-технологической реализации МН делят на следую- щие виды: змиттерносвяааиные транзисторные схемы (ЭСЛ), тран- зисторно-транзисторные схемы (ТТЛ), интегральные инжекцион» 10
ные схемы (ИИЛ или И2Л), ТТЛ- и ИИЛ-схемы с диодами Шот- ки (соответственно ТТЛШ и ИИЛШ), схемы на р- и п-канальных транзисторах со структурой металл — окисел — полупроводник (соответственно рМОП и пМОП), схемы на дополняющих (компле- ментарных) МОП-транзисторах (КМОП). Потребляемая мощность и быстродействие ИМС зависят от ре- жима работы (статический 0 или 1 иа выходе, переключение из 1 в 0 или из 0 в 1), параметров нагрузки и других факторов. Если спе- циально не оговорено, то под потребляемой мощностью понимают ее среднее значение. Аналогично для оценки скоростных свойств ИМС используют среднее время задержки распространения сигна- ла, равное полусумме времени задержки распространения сигнала при включении и выключении ИМС. Функциональные возможности ИМС характеризуются коэф- фициентами объединения по входу и выходу и коэффициентом раз- ветвления. Коэффициент объединения по входу — это число входов ИМС, по которым реализуется логическая функция. Коэффициент объединения по выходу — это число соединяемых между собой вы- ходов ИМС для получения монтажных схем И, ИЛИ. Коэффициент разветвления по выходу — это число единичных нагрузок, которое можно одновременно подключать к выходу ИМС (единичной нагруз- кой является один вход основного логического элемента данной серии ИМС). По выполняемым функциям ИМС делят иа комбинационные* запоминающие и содержащие нак комбинационные, так и запоми" иающие схемы. Комбинационной схемой (КС) называют цифровое устройство, сигналы иа выходе которого не зависят от инутреннего состояния и определяются только сигналами на входах схемы, дей- ствующими в данный момент времени. Правила функционирования КС можно задать, указав соответствующую систему переключатель- ных функций (ПФ). Реализуемая ИМС переключательная функция зависит не только от конструктивных особенностей ИМС, но и от способа кодирования 0 н 1. Таких способа два, так как логической 1 может соответствовать высокий (В) уровень сигнала (напряжения, тока) или низкий (Н). Первый способ называют положительной ло- гикой, а второй — отрицательной. Если ИМС в одной системе ко- дирования реализует ПФ у f (*!, xt, ..., хп), то в другой системе оиа будет реализовать ПФ вида у — f (хп х2, ..., хп). Запоминающие схемы осуществляют фиксацию и хранение по- ступающей на их входы информации. Схемы, содержащие как комбинационные, так и запоминаю- щие части, получили название схем с памятью. Таи как в реальных схемах число элементов памяти конечное, то нх также называют цифровыми автоматами с конечной памятью или просто конечными или цифровыми автоматами. К этому классу относится большин- ство ИМС в микропроцессорных сериях. По конструктивно-техно- логическому исполнению ИМС подразделяют на три группы: полу- проводниковые (обозначаются цифрами 1, 5, 6 или 7), гибридные (2, 4 и 8) и прочие .(пленочные, вакуумные, керамические и Другие обозначаются цифрой 3). Цифра 7 присвоена бескорпусным полу- проводниковым ИМС. Указанные цифры являются первым элемен- том (Эх) в условном обозначении ИМС, состоящем всего нз четырех алементов. Второй элемент (Э2) состоит из двух-трех цифр и явля- ется порядковым номером серии (от 00 до 999). Элементы и Э, в совокупности образуют полный иомер серии ИМС. Третий эле- мент (Э8) — две буквы, обозначающие функциональное назначение И
1.1. Условные обозначения функциональных типов ИМС Функциональное назначение Эз И-ИЛИ-НЕ И-ИЛИ-НЕ/И-ИЛИ ЛР лк Схемы вычислительных ИЛИ-НЕ/ИЛИ ЛМ средств Расширители лд МикроЭВМ Микропроцессоры Микропроцессорные секции BE ВМ ВС Прочие дп ИМС микропрограммного управления ВУ Накопители ЗУ Функциональные, расшири- ВР Оперативные РМ тели ВБ Постоянные РВ Синхронизации ПЗУ со схемами управле- Управления прерыванием ВН ния: Управления вводом-выводом вв масочные РЕ Управления памятью ВТ с однократным програм- РТ Функциональные преобразо- мированнем вателн информации ВФ с многократным програм- РР Сопряжения с магистралями ВА мированнем Времязадающие ИМС ВИ с ультрафиолетовым сти- РФ Ми крокалькуляторы вх раннем и электрической Контроллеры вг записью информации Комбинированные ИМС вк ЗУ со схемами управления: Специализированные ИМС вж оперативные РУ Прочие вп ассоциативные РА на цилиндрических маг- РЦ Схемы цифровых устройств Арифметико-логические ИА нитных доменах Прочие РП Регистры ИР Сумматоры им Т риегеры Полусумматоры ил Счетчики ИЕ JK-типа ТВ Шифраторы ИВ RS-типа ТР Дешифраторы ИД D-типа тм Комбинированные ик Т-типа ТТ Прочие ип Динамические тд Шмитта тл Коммутаторы и ключи Комбинированные (DT, RST и др.) тк Тока Напряжения Прочие кт КН кп Прочие ТП Логические элементы Многофункциональные ИМС И-НЕ ИЛИ-НЕ и ЛА ЛЕ ЛИ Аналоговые Цифровые ХА хл или лл Комбинированные хк НЕ лн Матрицы: хн XT ХП И-ИЛИ И-НЕ, ИЛИ-НЕ лс ЛБ аналоговые комбинированные Прочие 12
1.2. Основные характеристики микропроцессорных серий БИС Серия Тип t*. НС п, бит т р*, мВт Р/м*. мВт Р/пт\ мВт Е. В АГ, тыс. шт. в Примечание - 536 МОП 101 >8 2 70 8,75 4,4 —24; 12 2 48 Средства вычислительной техники низкой стоимости для устройств цифровой автоматики 145 КМОП 10е 4 12 3,3 750 0,22 0,018 1,5 16 48 Микрокалькуляторы и микропроцес- сорные устройства бытовой техники < 580 МОП 500 8 19 94 4,9 —5; 5; 12 5 48 Средства вычислительной техники 581 МОП 400 8 28 1000 112 4,0 —5; 5; 12 7 48 среднего быстродействия с побайт- 586 МОП 500 16 22 900 56 2,5 —5; 5; 12 8 48 ной обработкой информации 1801 МОП 125 16 150 1020 64 0,4 5 300 42 1810 МОП 200 16 28 1750 110 4,0 5 29 40 582 пил 1000 . >4 15 200 50 3,3 1,2 .6,5 48 Средства вычислительной техники 583 пил 1000 >8 22 360 45 2,0 1,2 11 48 среднего быстродействия с произ- 584 пил 1000 >4 15 140 35 3,0 1,2 3 48 вольной (аппаратно-наращиваемой) 1883 МОП 1400 >8 21 1000 125 6,0 5 48 разрядностью обрабатываемых слов 587 кмоп 2000 >4 13 10/200 2,5/50 0,2/3.8 9 4,8 48 Средства вычислительной техники 588 КМОП 1000 >16 21 1/35 0,06/2,2 0,03/0,1 5 9 42 с малой потребляемой мощностью 589 ттлш 98 >2 12 725 362 30,2 5 1,4 28 Быстродействующие средства вы- 1802 ттлш 105 >8 3 1200 150 50 5 3,5 42 числительной техники 1804 ттлш ПО >4 18 1200 300 16,7 5 4,2 40 1800 эсл 28 >4 1250 312 —2; —5; 2 48 Цифровые ЭВМ высокой произво- • дительностн । Примечания: 1. Приняты следующие обозначения: t — период синхронизирующих сигналов для основной ИМС серин (напри- мер, для арифметико-логического устройства): п —- разрядность (>п означает возможность наращивания разрядности путем каскадного включения ИМС): т — число внутренних регистров (РОН, РК, РМК, РА и др.) как программно-доступных, так и вспомогательных; Р — потребляемая мощность; р/п — потребляемая мощность, приведенная к одному разряду; Pfnm — потребляемая мощность, приведен- ная к одному разряду внутренних регистров: Е •— напряжение питания; W — число компонент в ИМС; В — число выводов в корпусе ИМС. 2. Звездочкой (*) отмечены характеристики, которые могут изменяться от многих факторов (напряжения питания, температуры окружающей среды, монтажных емкостей и др.). . t 3. Потребляемая мощность ИМС серий 587 и 588 зависит от режима работы, поэтому для этих серий указаны два значения Р\ со в числителе для статического режима, а в знаменателе для динамического режима.
ИМС (табл. 1.1). Четвертый элемент (Э4) — порядковый номер разработ- ки ИМС в данной серии, в которой могут быть несколько одинаковых по функциональному назначению ИМС. Элемент Э4 может состоять из одной или нескольких цифр. Таким образом, условное обозначе- ние типа ИМС имеет структуру Э^Э^. В некоторых сериях ИМС в конце условного обозначения до- бавляется буква, определяющая технологический разброс пара- метров ИМС. Ряд букв может предшествовать номеру серии ИМС. Например, буква «К» означает, что данная серия ИМС пред- назначена для использования в устройствах широкого применения. Сочетание букв «КМ» означает, что данная серия в керамическом корпусе, буквы «ЭК» обозначают выпуск серин на экспорт, а буквы «КБ» означают выпуск серии в беекорпусиом варианте. Основные характеристики микропроцессорных серий БИС при- ведены в табл. 1.2. Глава 1 МИКРОПРОЦЕССОРНЫЙ НАБОР СЕРИИ 580 1.1. СОСТАВ МИКРОСХЕМ СЕРИИ 580 Серия выпускается в виде модификаций К580 и КР580 и состоит из восьми ИМС (табл. 1.3) [4, 8, 7, 38f. Микросхема ИК51 (рис. Г.1, б) осуществляет преобразование параллельного 8-раз- рядного кода и последовательный и наоборот. Необходимость в та- ком преобразовании возникает при передаче данных на большие расстояния, например по телефонной линии. Внутренняя 8-раз- рядиая шина ВШ ИМС связана с 8-разрядиой шиной данных ШД микропроцессорной системы буфером данных БД, состоящим из 1.3. Состав и функциональное назначение ИМС 580 серин ИМС 580 серии Функциональное назначение (номер поясняющего рисунка) Зарубеж- ный ана- лог Тип корпуса ИК51 Программируемый интерфейс связи 2121.28-5 ВВ51 (1.1, д) 8251 244.48-8 ИК53 Программируемый таймер (1.1, е) 2120.24-3 ВМ53 8253 2106.24-1 ИК55 Программируемый интерфейс периферий- 8255 2123.40-2 ВВ55 ных устройств (1.1, ж) 244.48-8 ИК57 Программируемый контроллер прямого 8257 2123.40-2 ВТ57 доступа к памяти ИК59 Программируемый контроллер прерыва- 2121.28-5 ВН59 НИЙ 8259 2123.40-2 ИК80 Центральный процессорный элемент 8080 2123.40-2 ВМ80 (1.1,з) ИР82 Буферные 8-разрядиые регистры 8282 ИР83 8283 2140.20-1 ВА86 Шинные 8-разрядЯые формирователи 8286. 2140.20-1 ВА87 8287 14
входного и выходного регистров данных, входного регистра состоя- ний, а также схем, обеспечивающих переключение выводов ИМС в высокоомное состояние. Блок управления БУ обеспечивает ра- боту ИМС в соответствии с поступающими на ее входы сигналами (табл. 1.4) и управляющей информацией, хранящейся в регистрах режима и команды в блоке регистров управления БРУ. Блок передачи БПЧ предназначен для преобразования параллельного кода в последовательный. Для этого к 8-разрядиому коду данных или сиихросимволу, поступающему по ВШ, добавляется пять слу- жебных разрядов (два разряда для записи стоп-бита, бит контроля, старт-бит и разряд признака синхронизации выхода передатчика), формируемых в БПЧ. Указанные 13 разрядов фиксируются на ре- гистре н разряд за разрядом выдаются иа выход БПЧ. Блок при- ема- БПМ осуществляет прием последовательного кода и передачу иа ВШ сформированного из принятой информации 8-разрядного кода. 1.4. Назначение выводов ИМС ИК61 Номер вывода Наименование вывода —* направление передачи информации 1—4, 8—11 5 14 15 16 17 21 22 Шина данных ШД — вход/выход Вход приемника — вход Синхронизация выхода передатчика — вход Разрешение на прием информации с ШД — вход Выбор ИМС — вход Признак «Управляющая информацня/даиные» на ШД — вход Разрешение иа выдачу информации в ШД — выход Признак готовности приемника к передаче данных в ШД — выход 26 Признан готовности передатчика и приему данных с ШД — 27 28 выход Вид синхронизации — вход/выход Признак готовности внешнего прнемнииа принять данные — 29 33 34 38 39—41 46 вход Признак окончания посылки данных — вход Выход передатчика — выход Тактовое питание — вход Установка ИМС в исходное состояние — вход Сигналы общего назначения — выход Снихроиизация входа приемника — вход Блок регистров сиихросимволов БРС состоит из двух реги- стров и схемы сравнения, предназначенной для сравнения слов из БРС с синхросимволами, поступающими из БПМ. Путем записи соответствующей управляющей ииЗюрмации в БРУ можно запрограммировать работу ИМС ИК51 практически иа любой из- вестный способ последовательной передачи данных. Микросхема ИК53 служит для генерации сигналов с програм- мируемыми временными характеристиками и содержит (рис, 1.1, е) три независимых 16-раэрядных счетчика Ct—СЗ, блок управления БУ и буфер данных БД, который предиазиачеи для согласования внешней ШД и внутренней шииы ВШ. Режим работы ИМС зада- ется путем засылки управляющего слова в регистр БУ и сигнала- 16
1.5. Назначение выводов ИМС ИК53 Л Я р. Kt £ о 9 й £ з 1—8 9 10 11 13 14 15 16 17 18 19, 20 21 22 23 Наименование вывода Шина данных ШД Вход счетчика 1 (С1) Выход Cl (В1) Разрешение счета в С! Вход счетчика 2 (С2) Разрешение счета в С2 Выход С2 (В2) Разрешение счета в счет- чике 3 (СЗ) Выход СЗ (ВЗ) Вход СЗ Адрес счетчика Выбор ИМС Чтение Запись |.6. Назначение выводов ИМС ИК55 0.3 Наименование выводам 82 направление передачи информации U-i я 1—6, 46, 47 Шины канала 3 ШКЗ — вход/выход 9—16 Шины канала 2 ШК2 — вход/выход 20—27 Шины канала 1 ШК1 — вход/выход 29 Установка ИМС в исход- ное состояние — вход 31 Разрешение приема инфор- мации с ШДЗ — вход 92—39 Шина данных ШД — вход/выход 41 Разрешение выдачи ин- формации в ШД4 — вход 42 Выбор ИМС — вход 44, 45 Адрес канала АО, А1 — вход вом. Микросхема ИК57 предназначена для ускорения параллель- ного обмена данными между памятью и периферийными устрой- ствами путем прямого доступа к памяти по четырем каналам. Управ- ляющее слово программы задает режим работы ИМС, приоритет- ми, поступающими на входы ИМС (табл. 1.5). Коэффициент пересчета счетчиков задается путем записи двух 8-разряд- ных слов в соответствующий счетчик. Последнее состояние счетчика, означающее заверше- ние запрограммированного вре- менного интервала, передается в микропроцессорное устройст- во и вызывает прерывание, по которому включается подпро- грамма, связанная с заверше- нием временной выдержки. Если одного счетчика недоста- точно для задания данного временного интервала, имеется возможность увеличения его разрядности путем подключе- ния двух других счетчиков. Кроме того, ИК53 можно .ис- пользовать в качестве счетчи- ка тактовых сигналов, двоич- ного умножителя и генератора импульсов реального времени (часы, минуты, секунды). Микросхема ИК55 (рис. 1.1, ж) применяется для сопря- жения периферийных устройств (дисплей, телетайп, ЗУ) с ШД микропроцессорных уст- ройств и состоит из трех ка- налов К1 — КЗ, блока выбора канала БВК и регистра управ- ления РУ, содержимое кото- рого совместно с сигналами на выводах ИМС (табл. 1.6) опре- деляет режим работы каналов и всей ИМС. Режимы работы каналов К1 и К2 устаиавли-' ваются независимо, а режим КЗ зависит от режимов работы К! и К2. Направление переда- чи информации между шинами UIKt (I = 1, 2, 3) и ШД зада- ется сигналами чтения Ч и за- писи 3 и адресом канала АО, А1 и разрешается либо запре- щается сигналом выбора ИМС. Комбинирование регистров обеспечивает работу ИМСс лю- бым периферийным устройст- 16
ность каналов, начальный адрес и длину передаваемого массива данных. Микросхема принимает и определяет приоритет сигнала запроса от ПУ; приостанавливает выполнение программы в микро- процессоре и отключает его от ШД, освобождая последнюю для об- мена данными между ПУ н памятью; формирует адреса записывае- мых в память или считываемых из памяти слов; подсчитывает коли- чество выполненных циклов записн-считываиия; вырабатывает сигнал завершения обмена после достижения запрограммирован- ного числа циклов, по которому происходит переход к- прерванной программе. Счетчики количества циклов каналов имеют 14, и ре- гистры начальных адресов — 16 разрядов. Микросхема ИК59 предназначена для управления многоуров- невым прерыванием с обслуживанием восьми запросов. Количе- ство обслуживаемых запросов на прерывание работы микропро- цессора можно увеличить до 64 путем каскадирования. Приоритет отдельных запросов устанавливается путем записи соответствую- щего кода в регистр маски ИМС. Поступающие в ИМС запросы фиксируются в регистре запросов, ИМС определяет на основании приоритетов очерёдность их обслуживания и выдает иа управляю- щую тину в микропроцессор общий сигнал на прерывание. Приме- нение ИК59 для обслуживания запросов от периферийных устройств значительно увеличивает быстродействие микроЭВМ. Микросхема ИК80 представляет собой 8-разрядный функцио- нально законченный процессорный элемент без возможности аппа- ратного наращивания разрядности обрабатываемых данных. Со- стоит (рис. 1.1, з) из устройства управления МУ, арифметико-логи- ческого устройства АЛУ и блока регистров БР. Все эти устройства связаны между собой внутренней шиной ВШ, которая через буфер данных БД подключается к двунаправленной внешней шине данных ШД. Устройство управления включает в себя регистр команд РК, Дешифратор ДК команд и схемы синхронизации и управления- ЙМС. Ввод, и вывод управляющих сигналов осуществляется по шине управления ШУ. Побайтная обработка информации реали- вуется в АЛУ, которое состоит из сумматора и комбинационных схем, объединенных в арифметико-логической блок АЛБ, и четы- рех регистров Pl, Р2, РА и РП, служащих соответственно для приема операндов, запоминания результата и его признаков. Каж- дый триггер 5-разрядного РП предназначен для запоминания со- ответствующего ему признака или сигнала, а именно: нулевой ре- вультат Z, отрицательный результат S (бит знака), перенос или ваем Q, полуперенос (из младшей тетрады в старшую) q и чет- ность результата р. Блок регистров БР содержит шесть 8-разрядных регистров общего назначения РВ, PC, РД, РЕ, PH, PL, два 8-разрядных регистра младших разрядов команды РВ2 и РВЗ, предназначенных Для хранения 2-го и 3-го байтов команд соответствующей длины; два 16-разрядных регистра адреса Ра и указателя стека РУ, предна- вначенных соответственно для хранения н выдачи через буфер адреса БА на шину адреса ША адресов команды илн операнда, Для обращения по нему к памяти или устройству ввода-ввода ин- формации и хранения адреса ячейки стека, к которой было послед- нее обращение, и 16-разрядного счетчика команд СК, предназна- ченного для формирования адреса следующей команды. Наименование и назначение выводов ИК80 приведена в табл. 1.7. В ИК80 используются команды длиной в один, два или три байта. Первый байт команды указывает ее длину, код опера- ции, вид адресации и номера регистров, если они участвуют в 17
1.7. Назначение вы годов ИМС ИК80 Номер вывода Наименование вывода /— выход Подтверждение захвата ПЗ. Единица на выходе ПЗ указывает, что выводы МП, которые подключаются к ШД и ША микропроцессорной системы, находятся в высокоомном состоянии и внешние устройства могут управлять ШД и ША системы 2 и 40~— входы Тактовое питание Ф1 и Ф2. Сигналы Ф1 и Ф2 являются неперекрывающимися сериями импульсов с амплитудой 12 В и частотой не более 2 МГц (2,5 МГц для ИК80А) 3 — вход Готовность ГТ. Нуль на входе ГТ означает, что уст- ройство, с которым МП обменивается информацией, не готово к передаче данных. Если после выдачи МП адреса действует сигнал ГТ — 0, то МП переходит в состояние ожидания и остается в нем до прихода сигнала ГТ — 1. Сигнал ГТ можно использовать для организации режима работы МП с остановом после выполнения одного ма- шинного цикла, одной команды или выдачи на ША заданного адреса команды или операнда, а также для согласования работы МП с памятью или УВВ любого быстродействия 4—выход Ожидание ОЖ. Сигнал ОЖ — I означает, что МП нахо- дится в состоянии ожидания или останова 6, 24 и 48 Питание 12 В, —5 В и 5 В 7—9 и 11—23 — Шина адреса ША. Выходы МП, которые подключаются к ША микропроцессорной системы выходы 25 Общий вывод 26—28 и 81—35 — входы- выходы Шина данных ШД. Двунаправленные выводы МП, кото- рые подключаются к ШД микропроцессорной системы 18
П родолжение табл. 1.7 Номер вывода Наименование вывода 37 — вход Сброс СБ. При СБ = 1 выполнение операций в МП пре- рывается; счетчик команд, регистр команд, внутренние триггеры разрешения прерывания и подтверждения за- хвата сбрасываются в нулевые состояния, а МП выводится из состояния останова или захвата. Во время действия сигнала СБ = 1 ША и ШД МП переходят в высокоом- ное состояние, а все выходные сигналы управления МП— в неактивное состояние. Сигнал СБ = 1 должен длиться не менее трех периодов Ф1 и Ф2. По началу сигнала СБ = 0 МП начинает работать с такта Т1 цикла Ml 38 — вход Захват ЗХ. Сигнал ЗХ = 1 переводит МП в состояние захвата, при котором ША и ШД находятся в высоко- омном состоянии, что позволяет, например, ИМС ИК57, использовать ША и ШД для прямого доступа к памяти минуя МП 39 — вход Запрос прерывания ЗП. Сигнал ЗП анализируется в конце выполнения очередной команды или в состоянии останова. Если МП находится в состоянии захвата или триггер разрешения прерывания установлен в 0, то сиг- нал 317 не анализируется 42 — вы- ход Разрешение прерывания Р/7. Сигнал РП отображает состояние триггера разрешения прерывания и при РП == 1 указывает на то, что прерывание разрешено 43 — вы- ход Прием ПМ. Сигнал ПМ — 1 указывает, что ШД нахо- дится в режиме приема, ПМ можно использовать как строб разрешения приема информации с ШД в МП 44— вы- ход Выдача БД. Сигнал БД = 0 указывает, что МП выдал информацию на ШД. ВД используется и для управления записью информации во внешние устройства 45 — вы- ход Синхронизация G. Сигнал G = 1 выдается в первом такте каждого цикла выполнения команды. При С= 1 иа ШД выдается информация о состоянии МП 19
выполнении операции. При этом три младших разряда первого байта команды указывают номер регистра-источника, а следую- щие три разряда — номер регистра-приемиика информации. Адре- са регистров РВ, PC, РД, РЕ, PH, PL кодируются двоичными числами от ООО до 101 соответственно. Код ПО является косвенным адресом ячейки ЗУ, 16-разрядный адрес которой указан в двух 8-разрядных регистрах РН'н PL, а код 111 является номером РА (аккумулятора). Если же один или два из указанных регистров не участвуют в выполнении данной команды, то соответствующие им разряды совместно с двумя старшими разрядами первого байта команды используются для представления кода операции. Второй и третий байты команд соответствующей длины используются для непосредственной адресации ячеек ЗУ или устройств ввода-вывода. 1.2. СИСТЕМА КОМАНД МИКРОСХЕМЫ ЙК80 Список команд ИМС ИК80 приведен в табл. 1.8, где первый байт команды и ее длина заданы с помощью пяти символов. Первые три символа являются цифрами, замена которых двоичными эквива- лентами длиной в два (для первой) и три бита (для второй и третьей) дает восемь бит первого байта команды. Код команды длиной в два и три байта дополнен символами соответствующих байт В2 и В3, например, команда АС/ является двухбайтовой, так как код команды состоит из трех цифр (3; 1 и 6) и символа второго байта Ва. При этом первый байт команды будет иметь вид 11001110. Принцип кодирования команд поясняет табл. 1.9,- в которой приведены все 256 возможных кодовых комбинаций из восьми сим- волов (D^sDjDjDjDjDjDo) и соответствующие им команды. Из табл. 1.9 видно, что например, цифры 01 и 10 в двух старших раз- рядах являются признаками соответственно команды MOV (НЕТ) или арифметической (логической) операции. При этом вид арифме- тической или логической операции задают символы О8О463. Из 256 кодовых комбинаций 13 не использованы для кодирования команд (например,‘001ХХООО). 1.8. ВЫПОЛНЕНИЕ КОМАНД В МИКРОПРОЦЕССОРЕ СЕРИИ 580 Команды в ИК80 выполняются по машинным циклам (МЦ), продолжительность которых составляет 3—5 периодов тактового питания (тактов), отсчитываемых по нарастающим перепадам сиг- нала Ф1 (рис. 1.2, а). Число МЦ и общее количество тактов, необ- ходимое для выполнения команды, определяются типом выпол- няемой команды (табл. 1.8). При этом число МЦ равно суммарному числу обращений к ЗУ и УВВ, необходимых для выборки и выпол- нения данной команды. Например, самые короткие команды RAL выполняются за одни МЦ в течение 4 тактов (2 мкс), так как тре- буют только одного обращения к ЗУ для выборки байта команды, а самая длинная команда XTHL выполняется за пять МЦ в течение 18 тактов (9 мкс), так как необходимо выбрать из ЗУ три байта н записать в ЗУ два байта. Исключения составляют команды DAD и НЕТ, которые выполняются соответственно за три и два машинных цикла, но обращение к ЗУ происходит только один раз в первом цикле. Первый МЦ (сокращенно Ml) является всегда циклом выборки первого байта команды и состоит из 4 или 5 20
1.8. Список команд ИМС ИК80__________________________________, Обозначе- ние Код Содержание Число тактов для выполнения команды. Вектор изменения приз^ наков (Z, S, Q, р). Пояснения Арифметические операции АС1 AD1 SBI SU1 316 B2 306 B2 336 B, 326 B2 a+b2-+pa A—B%—Q-+-PA A—B^PA 7. (+++++). К содержимому РА прибавляется (вычитается) второй байт команды с учетом или без учета переноса (зае- ма), образовавшегося при выпол- нении предыдущей команды, а результат записывается в РА- Признаки (Z, S, Q, q, р) уста- навливаются в соответствии с результатом операции ADC ADD SB В SUB 21 X 20 X 23X 22 X A^R+Q.-+PA A-\-R-+PA A—R—Q-+-PA A-R-+PA 4 (7). (+++++)• К содержи- мому РА прибавляется (вычита- ется) с учетом или без учета переноса (заема) содержимое R регистра, номер X которого указан на третьей позиции кода команды (при X = 6 R — содер- жимое ячейки памяти, адрес которой указан в регистрах PH и PL, а время выполнения команды увеличивается до 7 тактов) ’ DAA 047 (Десятичная коррекция Л) -* -+PA 4. (+++++)• Команда DAA позволяет организовать обра- ботку двоично-десятичных чисел за счет коррекции суммы этих чисел, полученной на двоичном сумматоре, путем добавления кода 6 к старшей и младшей тетрадам в зависимости от их величин и наличия сигналов Q и <? DAD В DADD DAD И DAD SP Oil 031 051 071 BC-\-HL-+PHL DE-\-HL-+PHL HL+HL-^PHL Y+HL-+PHL 10. ( 1 ). Два 8-разряд- иых числа Н и L, рассматри- ваемые как одно 16-разрядное число HL, находящееся в реги- страх PH и PL (PHL), склады- ваются с аналогично образо- ванным 16-разрядным числом ВС (DE, или HL, или К), распо- ложенным в регистрах РВС (PDE, или PHL, mhPY), а ре- зультат заносится в регистр PHL. В соответствии с результатом операции устанавливается толь- ко признак Q, остальные приз- наки остаются без изменений 21
Продолжение табл. 1.8 Обозначе- ние Код Содержание Число тактов для выполнения команды. Вектор изменения признаков (Z, S, Q, Q, р). Пояснения DCR INR 0X5 0X4 R-X-+PR R+X-+PR 5 (10). (+-| Н-)- Содержимое регистра, номер X которого указан на второй позиции кода команды, уменьшить (увеличить) на 1 (при X = 6 R является содержимым ячейки памяти, адрес которой указан в регист- рах PH и PL, а время выпол- нения команды увеличивается до 10 тактов). В соответствии с результатом операции уста- навливаются все признаки кроме переноса DCX В DCXD DCXH DCXSP INX В INXD 1NXH 1NXSP 013 033 053 073 003 023 043 063 ВС—Х^-РВС DE-X-*-PDE HL—X-+PHL Y-X-+PV ВС-\-Х->-РВС DE+X^-PDE HL+X-+PHL ¥-\-\-*РУ 5. ( —). Два 8-разряд- ных числа В и С (D и Е, или Н и L, или У), рассматриваемые как одно 16-разрядное число BC'(DE, HL или У), находя- щееся в регистре РВС (РОЕ, или PHL, или РУ), уменьша- ются (увеличиваются) на 1, а результат заносится в регистр РВС (PDE, ялв PHL, или РУ), образованный парой регистров РВ и PC (PD и РЕ, или PH и PL, или РУ) RAL RAR 027 037 2A+Q-+PA l/24+128Q->7M 4. ( ) Триггер пере- носа и РА объединяются в 9- разрядный кольцевой регистр, на котором производится цикли- ческий сдвиг на один разряд влево (вправо). В триггер пе- реноса при сдвиге записывается старший (младший) разряд А RLC RRC 007 017 Левый цикли- ческий сдвиг на РА Правый цикли- ческий сдвиг на РА 4. ( 1 ). На основе РА образуется 8-разрядный коль- цевой регистр, на котором про- изводится циклический сдвиг на один разряд влево (вправо). В триггер переноса и младший (старший) разряд РА записыва- ется старший (младший) раз- ряд Л 22
Продолжение табл. 1.8 Обозначе- ние Код Содержание Число тактов для выполнения команды. Вектор изменения приз- наков (Z, 3, Q, q, р). Пояснения Логические операции ANA ORA XRA 24 X 26 X 25 JV A/\R-+PA A\/P-+PA avp-^pA 4 (7). (++00+). Над кодами А и R, где R— содержимое ре- гистра, иомер X которого ука- зан на третьей позиции команды, выполняется поразрядная опе- рация И (Д), HJlH(V) или сумма по модулю 2 (V) (при Л = 6 R — содержимое ячейки памяти, адрес которой указан в регистрах PH и PL, а время выполнения команды увеличи- вается до 7 тактов). Признаки Q и q устанавливаются в 0, а остальные — в соответствии с результатом операции ANI QRI XRI 346 Bt 366 Bt 356 Bt . A/\Bt-+PA A\/B2-+PA АуВ^+РА 7. (++00+). Команды отли- чаются от команд ДАМ, OR А и XRA тем, что в качестве второго операнда берется вто- рой байт В8 команды CMA 057 A-+PA 4. ( ). Поразрядная инверсия всех разрядов РА CMC 077 Q-+-TQ 4. ( j ). Инверсия содер- жимого триггера переноса (за- ем а) CMP 27 X A—R 4 (7). (+++++)• Сравне- ние (путем вычитация) А с со- держимым регистра, номер X которого указан иа третьей по- зиции кода команды (при Х=6 R — содержимое ячейки памяти, адрес которой указан в реги- страх PH и PL, а время вы- полнения команды увеличива- ется до 7 тактов). Результатом операции являются значения признаков, а коды в регистрах, хранящих А и R, не изменя- ются 23
Продолжение табл. 1.8 06q зна- чение Код Содержание Число тактов для выполнения команды. Вектор изменения при- знаков (Z, S, Q, q, р). Пояснения CPI 376 В2 А—Вг 7. (+++++). Команда СР1 отличается от команды СМР только тем, что в качестве вто- рого операнда берется второй байт В2 команды STC 067 1-»TQ 4. (——] ). Триггер TQ пе- реноса устанавливается в состоя- ние 1 Команды перехода к подпрограммам (ПП) и возврата из ПП CALL 334 В2В3 Вызов ПП 17. ( •—). Выполняется пер- вая часть действий команды СС Вызов ПП: 11(17). ( ). Если сс 334 по Q = 1 условие вызова ПП выполняется см 374 по S = 1 (например, Q = 1 для коман- cwc 324 52В3 по Q = 0 ды СС), то содержимое счетчика CNZ 304 2^2^з по Z = 0 команд (СК) увеличивается иа 3 СР 364 В2В3 по S — 0 и записывается в стек по адре- СРЕ 354 В2Ва по Р = 1 сам У—Г и У —2. Содержи- СРО 344 BtBs по Р = 0 мое РУ уменьшается на 2. CZ 314В2Ва по Z = 1 В СК передается адрес ВаВ2 первой команды ПП. Если усло- вие вызова ПП не выполняется (например, Q = 0 для команды СС), то управление передается следующей команде программы, для чего содержимое СК уве- личивается на 3. В первом слу- чае команда выполняется за 17, а во втором—за 11 тактов Возврат: 5 (11). ( ). Если уело" КС 330 no Q = 1 вие возврата из ПП выполни" RM 370 по S = 1 ется (например, Q = 1 для коман- RNC 320 по Q = 0 ды RC), то управление пере- RNZ 300 по Z = 0 дается команде, адрес которой RP 360 по S — 0 записан в верхней паре ячеек RPE 350 по Р— 1 стека, для чего в СК записыва- RPO 340 по Р = 0 ются два байта, извлеченные по RZ 310 по Р = 1 адресам У и У + 1, а содержимое РУ увеличивается на 2. Если условие возврата из ПП не вы- полняется (например, Q = 0 для команды RC), то управление передается следующей команде, для чего содержимое СК увели- чивается иа 1. В первом случав команда выполняется за 11, а во втором — за 5 тактов 24
Продолжение табл. 1.8 Обозначе- ние Код Содержание Число тактов ’для выполнения команды. Вектор изменения приз- наков (Z, S, Q, q, р). Пояснения RET DI El 311 команды г 363 373 Возврат из ПП /правления и вво Запрет преры- вания Разрешение прерывания 10. ( ). Выполняется первая часть действий команды RC да-вывода информации 4. ( :—). Триггер разре- шения прерывания устанавли- вается в состояние запрета (разрешения) прерывания. Во время выполнения команд сигнал запроса прерывания не воспри- нимается НЕТ 166 Останов 7. ( ). В СК формиру- ется адрес следующей команды, состояния регистров',, и памяти ие изменяются н МП переходит в состояние останова с воз- можностью последующего за- пуска при возникновении запро- сов на 'Прерывание IN 333 В, Ввод в РА 10. (— -—). С устройства ввода информации, иомер В2 которого указан во втором байте команды, осуществляется прием слова на РА NOP ООО Нет операции 4. ( ). Операция ие выполняется. На СК формиру- ется адрес следующей команды OUT 323 В, Вывод А 10. ( ). Содержимое РА передается в устройство вывода информации, номер Вг которого указан во втором байте команды RST 3X7 Начальный за- пуск прерыва- ющей подпро- граммы 11. ( ). Команда RST поступает в МП от источника запроса на прерывание. Содер- жимое СК записывается в стек по адресам Y — 1 и У — 2 для последующего возврата из пре- рывающей подпрограммы. Со- держимое РУ уменьшается на 2, а в СК записывается адрес 0000000000X000 (X— двоичная запись кода, указанного на вто- рой позиции команды RST) пер- вой команды прерывающей под- программы •25
Н рооолжение табл, i.8 Обоанжче- W’ Код Содержание । Число тактов для выполнения команды. Вектор изменения приз- । каков (Z, S, Q, q, р). Пояснения й JNC INZ JP JPE JPO 12 Команда 332 5,5, 372 5,5, 322 5,5, 302 5,5, 362 5,5, 352 5,5, 342 5,5, 312 5,5, и условного и бе. Переход: по Q « 1 по S =« 1 по Q = 0 по Z == 0 по S =» 0 по Р •= 1 по Р » 0 по 2 « 1 ^условного переходов 10. ( ). Если условие перехода выполняется (напри- мер, Q=1 для команды I С), то в СК записывается адрес 5,5,. Если условие перехода не выполнено (например, Q = 0 для команды УС), то управление передается следующей команде, для чего содержимое СК уве- личивается иа 3 IMP 303 5,5, Переход без- условный 10. ( ). Выполняется первая часть действий коман- ды JC LDA ST А I 0725,5, 062 5,5, команды пересыл ЗУ-*-РА РА-*-ЗУ хи информации 13. ( ). По адресу 5,5,. образованному из третьего и второго байтов команды, выбрать из ЗУ слово и запи- сать его в РА. По команде ST А осуществляется обратная пересылка по тем же адресам LDAXB LDAXD STAX В STAX D 012 032 002 022 а, а, ело-; f t t t co co о. о. 7. ( ). По адресу ВС (DE), образованному из со- держимого регистров РВ и PC (PD и РЕ), выбрать из ЗУ слово и записать его в РА. В коман- дах 57’ЛЛ' В и D осуществля- ется обратная пересылка по тем же адресам LHLD SHLD 052 5,5, 042 5,5, ЗУ -> PHL PHL-*-ЗУ 16. ( ). По адресам 5,5, + 1 н 5а5, выбрать из ЗУ два слова и записать их соот- ветственно в PH и PL. В ко- манде SHLD осуществляется обратная пересылка по тем же адресам LX1 В LXI D LXIH LXI SP 001 5,5, 021 5,5, 041 5,5, 061 5,5, CXjtOtoCo ! ее co co w to to tu to 1 to to te № Illi 4 &!(□$» 10. ( ). Третий и вто- рой байты команды заносятся в регистровую пару РВС (PDE или PHL или РУ), образованную из регистров РВ и PC (PD к РЕ, или PH и PL, или РУ)
Продолжение табл. 1.8 Обозна- чение K04 Содержание Число тактов для выполнения1 команды. Вектор изменения приз- наков (Z, 5, Q, 4, р). Пояснения MOV 1 x2x. Ri -* PRt 5 (7). ( ). Содержимое R регистра, номер Xj которого указан иа третьей позиции кода команды, пересылается в ре- гистр PR2, номер Х2 которого указан на второй позиции кода команды. При Х[ или Х2 = = 6 в качестве источника или приемника информации служит ячейка памяти, адрес которой указан в регистровой паре PHL, а время выполнения команды увеличивается в этом случае до 7 тактов. При Xj — Х2 = 6 выполняется команда HLT MV1 OX e Bi Bi-*-PR 7(10). ( ). Второй байт команды записывается в регистр, номер X которого указан на второй позиции кода команды (при X = 6 запись производится в ячейку памяти, адрес которой указан в регистровой паре PHL). Время выполнения команды в этом случае увеличивается до 10 тактов PCHL SPHL 361 371 HL-*-CK HL-*-PV 5. ( ). Содержимое HL регистровой пары PHL, образ'л- ванной из регистров PH и Pl, пересылается в СК (для ко- манды SPHL — в РУ) POP В POP D POP H POP PSW 301 321 341 361 [Y]-+PC, [Y+ij-*.PB Y]-*-PE, У + 1]->PD YI-+PL, y_|_ i]_>Ptf У]-+РП, У+U — PA 10. ( -). Выбрать из стека по адресам У и У + 1 два байта и записать нх в регистры PC и РВ (РЕ и PD, нли PL и PH, или РП и РЛ). Содер- жимое РУ увеличить на 2 Z1
Продолжение табл. 1.8 Обозна- чение .Код Содержание Число тактов для выполнения команды. Вектор изменения при- знаков (Z, S, Q, q. р}. Пояснения PUSH в PUSH D PUSH н PUSH PSW 305 325 345 365 ВС Стек DE Стек HL -> Стек ПА ->- Стек 11., ( -). Содержимое ВС (DE, или HL, или ПА) ре- гистровой пары, образованной регистрами РВ и PC (PD и РЕ, нли PH и PL, или РП и РД), записать в стек по адресам Y — 2 и Y = 1. Содержимое РУ уменьшить на 2 XCHG 353 PH <+PD, PE^PL 4. ( ——). Регистры PH н PD н регистры РЕ и PL об- мениваются своим содержимым XTHL 343 PHL <-> Стек 18. ( ). Верхушка стека с адресами Y + 1 и Y обменивается своим содержи- мым с регистровой парой PHL, образованной из регистров PH и PL тактов. Три последующих МЦ (М2, М3 и М4) выполняются всегда за три такта, а пятый МЦ — за три или пять тактов. Каждый МЦ со- провождается- выдачей сигнала «Синхронизация» (С) в такте Т1 (рис. 1.2, а). При этом на ШД выдается байт состояния, определя- ющий действия, которые будут выполняться в данном МЦ. По совпадению сигналов Ф1 = 1 и С = 1 байт состояний должен быть зафиксирован во внешнем 8-разрядном регистре и использован в микропроцессорной системе для управления. Назначение отдель- ных разрядов Di (i = 0,7) байта состояния приведено в табл. 1.10. Организация вычислительного процесса в простых микроЭВМ возможна и без учета байта состояний. Из 256 возможных кодов байта состояний в МП использованы только 10, задающих 10 раз- личных машинных циклов, из которых формируются все команды (табл. 1.11). Схема алгоритма работы МП показана на рис. 1.3. Из такта Т1 МП всегда переходит в такт Т2, в котором анали- зируются входные сигналы «Готовность» (ГТ) и «Захват» (ЭХ) и сигнал «Подтверждение останова» (ПО) из байта состояний. Если ПО = 1, то МП переходит в состояние останова СО, выход из кото- рого возможен при поступлении сигналов СБ = 1 (сброс), ЗП = 1 (запрос прерывания) или ЗХ = Г (захват). Переход в СО проис- ходит во втором цикле команды HLT (рис. 1.2, б). Если (ПО) (ГТ) =* = 1, то МП переходит в состояние ожидания СОЖ, нз которого МП выходит по сигналу ГТ = 1. Если (ПО) (ГТ)=1, МП анализирует сигнал ЗХ. Если ЗХ = 0, выполняется такт ТЗ, в течение которого происходит ввод в МП или вывод из МП информации. После завершения такта" ТЗ анали- зируется внутренний сигнал конец цикла (КЦ), по которому осу- ществляются дальнейшие переходы МП. Такты Т4 и Т5, если они в данном цикле присутствуют, используются для завершений 28
выполнения команды за счет внутренних (без обращения к другим ИМС) операций МП. Если ЗХ = 1, по фазе Ф2 такта Т2 этот сигнал фиксируется на внутреннем триггере захвата шин ЗШ, что обеспечивает перевод ШД и III А в высокоомное состояние и, после завершения текущего машинного цикла команды, переход МП в состояние захвата СЗХ.. \ Tt \ Т2 \ ТЗ \ 74 \ ТЗ \ С I--------1_____________________ а Mi I М2 1Г/ I Z? I 73 I W I Г/ t 7? I \ П I »/П п п п п п п п п ФЭ п п_ п____________п____п п п п ША----\ Счетчик команд ШД —У^бС^Команд^-----------X У С 1 1--------1 1_____ ПМ _____I I------------ СО,СОШ______________I 5 I Ml I М2 I мз I КВК \Т1 \ Т2 \ ТЗ \ П \Т5 \ Т1 \Т2 \ТЗ \ Т1 \Т2 \ ТЗ \ Т1 \ Ф1 пппппппппппп 02 JT__n n n—л п_п п п п п п л —X С/Г %--------X Y-1 Х~ Г-2 шд —УдсУястУг----------ХбсХсмз-вМдс'х ска-о/ Рис. 1.2. Перевод ШД и ША в высокоомное состояние всегда происходит по фазе Ф2 соответственно в такте ТЗ и в следующем за ним такте. Если данный цикл не является циклом записи ' и, следовательно, на ШД не надо удерживать подлежащее записи в ЗУ слово, то ШД переходит в высокоомное состояние на такт раньше, т. е. по фазе Ф2 такта ТЗ. Этот перевод индицируется с упреждением сигналом 1 на выходе подтверждения захвата ПЗ, который появляется по на- растанию Ф1 того такта, в котором ШД переходит в высокоомное состояние. 29
g 1.9. Кодирование команд ИМС ИК80 D?D gD ‘D4D3 йоо 001 «to Oil 00 ООО 1ЮР LXIB STAX В I NX В 001 МО (Ml ТОО ММ ио 1Ы DAD В LDAXB DCX В LXI D STAXD INXD DAD D LDAXD DCX D LXI И SHLD INXH DAD Я LHLD DCX H LXI ЭР STA 1NX SP DADSP LDA DCX SP ООО 001 @10
D^D.D, 100 101 no in INR DCR MV1 RLC RRC RAL RAR DAA CMA STC CMC
01 on 100 101 по 111 MOV 1 HLT 1 10 ООО add 001 ADC 010 SUB он sbb 100 ANA f 101 XRA но ORA 111 CMP 11 ООО RNZ POP В JNZ JMP CNZ PUSH в ADI RST 001 RZ RET JZ CZ CALL ACI 010 RNC [POP D JNC OUT CNC PUSH D SUI Oil RC JC IN CC SBI 100 RPO POPH JPO XTHL CPO PUSH H ANI 101 RPE PCHL JLE XCHG CPE XRI но RP POPPSw JP DI CP PUSH PSW ORI 111 RM SPHL JM El CM CPI
г Выход МП из состояния захвата осуществляется по сигналу ЗХ = 0, который сбрасывает в 0 внутренний триггер захвата шин, и МП начинает выполнять следующий цикл с такта Т1, так как не- смотря на то, что ША и ШД переходят в состояние захвата, МП завершает текущий цикл. Для надежного приема сигнала ЗХ его нарастание должно быть стробировано нарастанием Ф2 или спадом Ф1, а спад ЗХ — спадом Ф2, Рис, 1,3. 32
J.10. Назначение разрядов байта состояния Di Наименование сигнала ИМС ИК 80 DO Подтверждение прерывания ПП. По сигналу 2777=1 начи- нается прерывание, для чего МП принимает от прерывающего устройства команду RST, которая обеспечивает передачу уп- равления одной из восьми прерывающих подпрограмм DI Запись — вывод ЗВ. Сигнал 327=0 означает, что в данном машинном цикле происходит выдача информации из МП в ЗУ или УВВ _ D2 Стек СТ. Сигнал СТ = 1 является признаком того, что иа ША установлено содержимое указателя стека D3 Подтверждение останова ПО. Сигнал ПО=\ свидетельствует о том, что МП перешел в состояние останова по команде HLT D4 Вывод В. Сигнал 27=1 указывает на то, что на ША уста- новлен номер У ВВ, а на ШД — выводимая информация D5 ЛИ. Сигнал Л7/=1 является признаком того, что в данном МЦ вы'ирается первый байт очередной команды по адресу, который в данном такте выведен со счетчика команд на ША D6 . Ввод ВВ. Сигнал ВВ—\ указывает на то, что на ША ус- тановлен номер УВВ, - и МП принимает слово с ШД в ре- гистр результата D7 Чтение Ч. Сигнал Ч—\ указывает на то, что в МЦ считы- вается информация из ЗУ После завершения цикла как по ветви с захватом, так н по ветви без него происходит анализ внутреннего сигнала КВК. (конец выполнения команды). Если выполнение команды не окончено, осу- ществляется переход к такту Т1 следующего цикла данной ко- манды. Если же выполнение команды завершено,.то анализируются внешний сигнал запроса прерывания (ЗГГ) и внутренний сигнал разрешения прерывания РП. Эти же сигналы анализируются и при состоянии СС, если ЗХ = 0. Если (ЗП) (РП) = 0, МП переходит на начало цикла Ml очередной команды или в состояние СО (рнс. 1.3). Если же (ЗП) (РП) = 1, то внутренний триггер запроса прерывания 1ТП) устанавливается в 1 (УТП), и МП переходит к выполнению машинного цикла подтверждения прерывания, который является 1-м циклом выполнения, команды RST. Временная диаграмма ра- боты МП при выполнении команды RST показана на рис. 1.2, в. Для надежной фиксации сигнала ЗП на ТП он должен быть подай на вход ЗП не менее, чем за 120 нс до спада Ф2 (Ф1 при СО) последнего такта последнего цикла команды. По Ф2 в Т1 сигнат РП и триггер ТП сбрасываются в 0, запрещая новые прерывания. 2 в-451 33
1.11. Коды машинных циклов в ИМС ИК80 Байт состояния Название цикла DO D1 D2 D3 D4 D5 D6 D7 пп ЗВ ст по В Ml вв ч 0 1 0 0 0 1 0 1 Выборка команды 0 1 0 0 0 0 0 1 Чтение слова из ЗУ 0 0 0 0 0 0 0 0 Запись слова в ЗУ 0 1 1 0 0 0 0 1 Чтение слова из стека 0 0 1 0 0 0 0 0 Запись слова в стек 0 1 0 0. 0 0 1 0 Чтение слова из УВВ 0 0 0 0 1 0 0 0 Запись слова в УВВ 1 1 0 0 0 1 0 0 Подтверждение прерывания 0 1 0 1 0 0 0 1 » останова . 1 1 0 1 0 1 0 0 » прерывания при останове Снятие запрета на прерывания в дальнейшем осуществляется вклю- чением в программу команды EI (разрешения прерывания). Сигнал ЗП можно сбросить в 0 устройством, вызвавшим прерывание в лю- бой момент после начала цикла подтверждения прерывания, но обязательно до появления команды EI для предотвращения повтор- ного прерывания по одному и тому же запросу. Этот сброс можно осуществить сигналом [DO из байта состояний Б С. На IIIЛ выво- дится содержимое счетчика команд СТС, однако оно не изменяется на +1, какобычпо.м не используется для обращения к внешним уст- ройствам или ЗУ, так как в режиме прерывания команда выбирает- ся не по адресу из памяти, а поступает во время действия сигнала ПМ .(прием) из устройства, вызвавшего прерывание. Принятая команда RST обеспечивает запись в верхушку стека по адресам ¥ — 1 и У — 2 в М2 и М3 содержимого СК по сигналам ВД (выда- ча) и переход к одной из восьми Подпрограмм анализа запроса пре- рывания.. Возврат к основной программе после завершения обслу- живания подпрограммы прерывания осуществляется командой RET. Прерывающее устройство может подать на МП вместо команды RST любую однобайтную команду. В этом случае содержимое СК в стек не записывается и не вырабатывается адрес перехода на подпрограмму обслуживания, но так же, как и при выполнении команды RST, содержимое СК в Т2 не изменяется. Такой режим можно использовать, например, для организации в ячейке памяти или в одном из регистров МП счетчика количества сигналов ЗП от какого-либо устройства без прерывания '(только с приостановкой) основной программы. При этом следует учитывать, что после выпол- нения такой операции следует путем периодического включения в программу команды. EI снимать запрет на новые прерывания. После включения напряжения питания и подачи тактовых сигналов Ф1 и Ф2 МП запускается подачей 1 на вход «Сброс» в те- чение не менее трех периодов Ф1, вследствие чего счетчик и ре- гистр команд и внутренние триггеры разрешения прерывания, подтверждения захвата и ожидания сбрасываются в нулевое состоя- 34
ние. Содержимое регистров общего назначения, результата и при- знаков изменяется только в процессе выполнения команд. После окончания действия сигнала «Сброс» МП начинает выполнять цикл ,М/ и выдает на ША нулевой адрес. При обработке данных на МП ИК80 необходимо учитывать особенность реализации операций сложения и вычитания, которая состоит в том, что операция вычитания выполняется как операция сложения первого операнда с дополнительным кодом второго опе- ранда. При этом бит переноса Q в регистре признаков устанавли- ваетвя в 1, если выполнялась операция вычитания и переноса из старшего разряда сумматора не было' или_ если выполнялась опе- рация сложения и перенос -из старшего разряда сумматора был, а бит знака 5 повторяет значение старшего разряда байта резуль- тата. В дальнейших операциях Q учитывается по-разному: при сложении (ACI или ADC) Q = 1 увеличивает, а при вычитании (SBl, SBB) уменьшает результат на единицу младшего разряда. Такая организация обработки признака Q облегчает выполнение многобайтовых операций.. Например, операция 270—529 выполня- ется по следующей схеме: старший и младший байты чисел 270 = 256+ 14 00000001 00001110 529 = 512 + 17 00000010 00010001 14 00001110 —17 11101'110 _______1 11111101 переноса из сумматора нет, следовательно, Q = 1 256 = 00000001 —512=4 11111101 1 — 1 11111110- 11111110 11111101 дополнительный код числа —259 = —(256 + 3) = —00000001 00000011. Указанная особенность выполнения операций приводит к то- му, что байт можно интерпретировать тремя способами. 1. Двоичное число со знаком, представленное в дополйитель- ном коде. Нуль в старшем разряде байта означает знак плюс, а единица — минус. Остальные семь бит определяют величину числа. ' 2. Двоичное число без знака. В этом случае все 8 бит опреде- ляют величину числа. 3. Двухразрядвое десятичное число, две десятичные цифры которого представлены соответственно четырьмя старшими и млад- шими разрядами байта. В этом случае результаты операций долж- ны корректироваться путем -применения DAA. Возможны и другие способы интерпретации байта, которые Должны учитывать указанные особенности ’реализации арифмети- ческих операций. Рассмотрим примеры. Процессы выполнения в МП однобайтовых жомалд сложения И вычитания при 1-м способе интерпретации байта на примере 2* 35
1.12. Сложение чисел 14 и —17 Представление чисел Действия в АЛУ МП | Команда деся- тичное двоичное 14 -17 000011Ю 11101111 0 00001110 11101111 11111101 ADD 14 17 00001110 00010001 1 00001110 11101110 1 11111101 SUB чисел 14 и’—17 приведены в табл. 1.12. Следует заметить, что в МП отсутствует аппарат- ное генерирование сигнала пе- реполнения разрядной сетки, возникающего при данной ин- терпретации байта, например, при сложении чисел одинако- вого знака, сумма которых по модулю больше 128. Второй способ интерпре- тации байта удобен при опе- рациях с числами одного знака и при многобайтовых опера- циях. Переполнение разрядной сетки в этом случае фиксирует- ся признаком Q = 1. 1.13. Примеры действий нал двоично-десятичными числами Действия над числами Команда десятичными ДВОИЧНЫМИ Qv Сумматор АЛУ .. 23 +15 38 0010 ООП 0001 0101 ADD 00 ООН 1000 0000 0000 DAA Коррекция +00 ООН 1000 .23 + 18 0010 ООН 0001 1000 ADD 41 00 ООН 1011 0000 ОНО DAA Коррекция +06 01 0100 0001 ,28 +79 107 0010 1000. 0111 1001 ADD 01 1010 0001 ОНО оно DAA Коррекция +66 10 0000 0111 Третий способ интерпретации байта совместно с командой десятичной коррекции позволяет организовать в МП обработку десятичных чисел, представленных в двоично-десятичном, коде с весами 8, 4. 2 и 1. Необходимость в коррекции, обусловлена тем, что двоично-десятичные цифры суммируются на двоичном сумма- торе. Вследствие этого возникающий из тетрады перенос .уменьшает ее значение на 16 (вес переноса в единицах младшего разряда дан- ной тетрады), а не на 10, как это должно быть при десятичном сло- жении. С другой стороны, перенос из тетрады сумматора возникает при условии, что сумма больше 15, а не 9, как это должно.быть при десятичном сложении. Вызвать перенос и откорректировать двоич- но-десятичную цифру как в первом, так и во втором случае можно за счет прибавления к данной тетраде цифры 6. Указанное прибав- ление надо делать, если был перенос из данной тетрады или содер- жимое данной тетрады больше 9, или цифра в старшей тетраде рав- на 9, а в младшей — больше 9. Для фиксации переноса из младшей тетрады байта служит признак q, а из старшей — Q. Действия над двоично-десятичными числами приведены в табл. 1.13. Десятичной коррекции для команд вычитания в МП нет. По- этому десятичное вычитание в МП следует реализовать путем при*
бавления дополнительного ко- да вычитаемого, формируе- мого по правилу 10* — Y, где k — число десятичных разря- дов, отведенных для представ- ления Y. При этом 10* — Y получают в два этапа. На пер- вом этапе формируют обратный код по правилу 10* — 1 — Y, а иа втором — к обратному коду добавляется Г. Прибав- ление 1 совмещают с опера- цией суммирования путем ис- пользования команды сложе- ния с учетом переноса, уста- новленного предварительно в 1. Примеры вычитания по описан- ному правилу десятичных чи- сел 63 и 79 приведены в табл. 1.14. Признак Q = 1, появля- ющийся после коррекции ре- зультата операции 79—63, со- ответствует числу 10* =s= 100, возникающему в виде переноса ,из старшего разряда сумма- тора, который . при операциях в дополнительных, кодах, как известно, игнорируется. Ука- занный признак можно исполь- зовать для определения знака числа, а именно: при отрица- тельном результате Q = 0, а результат представлен в допол- нительном коде. Во многих применениях МП 8 бит недостаточно для до- стижения заданной точности представления чисел. В этом случае числа представляются двумя -или более байтами, основные арифметические one- рации над которыми реализуются программным путем. В табл. 1.15 приведена программа многобайтового сложения двоичных 1-14. Действия над десятичными числами 63 и 79 Действия над числами двоичными десятичными Сумматор АЛУ 99 “63 ,36 + 116 Коррекция +66 1001 1001 1001 1100 01 ООП ОНО 11 । 0111 1001 01 1011 0000 оно оно 10 0001 оно 99 —79 ,20 + 1 63 84 Коррекция 00 Дополни- тельный код—16 SUB STC ADG DAA SUB STC ADC DAA 01 11 1001 1001 юоо оно 1 0010 0000 1 ОНО ООН 00 1000 0100 0000 0000 00 1000 0100 чисел, расположенных в п ячейках, начиная соответственно с адре- сов а и р (старшие байты чисел расположены в ячейках с боль- шими адресами), с занесением результата на место первого числа. Регистр PD служит в качестве счетчика циклов. При подготовке цикла в него командой МVI, в адресной части которой и втором (адресном) байте указаны соответственно номер PD. и п, заносится длина чисел. При сложении очередных байтов чисел его содержи- мое уменьшается на 1. По нулю этого регистра командой JZ осу- ществляется переход к команде HLT. Адреса очередных- байтов сформируются в регистрах РВС и PHL. Адреса N первых байтов команд образуют ряд со, со + 2, со+5, ..., со + 21, В ячейках с про- пущенными -ц указанном ряду номерами располагаются вторые и третьи байты команд соответствующей длины. Например, коман- ды MVI и //двух- и трехбайтные. Следовательно, в ячейке с адре- 37
» 15. Программа многобайтового сложения двоичных чисел О 2С к О’? Команда и операнд Содержание команды. Пояснения (0 MV1 D, п п -> PD. В регистр PD записывается длина п чи- сел в байтах «4-2 ВХ1 ВС, а. а-^-РВС, fi-+PHL. В регистры РВС и PHL за- носятся адреса а и |3 младших байтов слагаемых со-]-5 . BXI НВ, 3 со+8 OR А А Л V А-+РА. Установка признака Q в 0 путем выполнения команды поразрядной дизъюнкции, после выполнения которой всегда Q = 0 «4-9 LDAX В ЗУ (ВС) -► РА. Пересылка из ЗУ по адресу ВС очередного банта первого слагаемого в РА «4-10 ADCH А 4- ЗУ (НВ) -|- Q -> РА. Сложение очередных байтов чисел CD-f-11 STAX В РЛ->-ЗУ (ВС). Сумма очередных байтов записы- вается в ЗУ по адресу ВС, взятому из регистра РВС <»+12 DCR D D — 1 -> PD. Уменьшение содержимого регистра PD на 1 с целью определения конца операции многобайтового сложения «4-13 JZ ш-}-21 Переход по Z= 1. Если признак Z — 1, который в данном случае означает, что содержимое Рй равно нулю и, следовательно, все байты просум- мированы, то осуществляется переход к команде НВТ. Если Z = 0, то осуществляется переход к команде «4-16 ш-1-16 1NXB ВС 4- 1 РВС. НВ 4- 1 -> РНВ. Образование адресов следующих байтов слагаемых «4-17 1NX Н о 4-18 JMP «4-9 Безусловный переход к команде со 4- 9 (начало цикла) ет-[-21 НВТ Останов, Последняя команда программы 88
1.16. Программа десятичного вычитания- _ К h о Г >> X к со Команда и 'операнд Содержание команды. Пояснения (0 MV1 С, п п->-РС. В регистр PC записывается длина п чисел в байтах <о + 2 STC Q= 1. Триггер переноса'устанавливается в I со + 3 MV1 А, 99 99->РЛ. В регистр РА заносится двоичный код 1001 1001 числа 99 со + 5 АС! 0 А + 0 + Q -* РА. Прибавление переноса, образо- вавшегося в предыдущем цикле, к числу 99 со + 7 SUB Н А — ЗУ (!!!.)-+РА. .Образование очередного байта дополнительного кода вычитаемого со + 8 XCHG PHL —> PDE. Регистры PHL и PDE обменивают- ся информацией со + 9 ADD Н А + ЗУ (HL)~>-PA. Определение очередного байта результата «+10 DAA Десятичная коррекция А <о_+ И MOV Н, А А -> ЗУ (HL). Очередной откорректированный байт результата заносится на место использован- ного байта уменьшаемого ® + 12 XCHG PHL*=* PDE. Регистры PHL и PDE обменивают- ся содержимым ® + 13 ®+ 14 1NX D INXH DE + 1 PDE, HL + 1 -> PHL. Путем прибав- ления 1 формируются адреса следующих байтов операндов со + 15 DCR С С — 1 —- PC. Содержимое счетчика циклов умень- шается на 1 со-1- 16 JNZ со+ 3 Переход по Z = 0. Если Z = 0, то это в данном случае означает, что еще не над всеми байтами выполнены операции и, следовательно, надо вер- нуться на начало цикла к команде MV 1. При Z = 1 переход осуществляется к следующей команде со-4- 19 HLT Останов 39
1.17. Цифровая диаграмма вычитания трехбайтных чисел Исходные числа 3 9 7 6 5 4 се Пояснения 9 1 9 8 I 7 о 3-й цикл 2-й цикл 1-й цикл MV1 Результат 1001 10Q1 1001 1001 1001 1001 АС1 Перенос 0ч 1ч 1 •Результат 1001 1001 1001 1010 1001 1010 SUB Операнд 1001 0001 1001 1000 0001 0111 Результат 0000 1000 0000 0010 1000 ООП add Операнд ООП 1001 0111 оно 0101 0100 Результат 0100 0001 ОНП 1000 1101 0111 DAA Константа 0000 оно 0000 0000 оно 0000 Результат 0100 0111 ( 0111 1000 ООН 0111 Оконч; дельный 0100 0111 0111 1000 ООН 0111 результат 4 7 7 8 3 7 • 1.18. Программа умножения 16-разрядиых чисел Номер ячейкй ЗУ Команда Содержание команды. Пояснения (й LXI Н 0 0-+PHL. Сброс в 0 PHL для последующего накопления в нем суммы частичных произведе- ний <о-]-3 MOV А, С С РА. Младший байт множителя засылается в РА для последующего просмотра его цифр MV1 С, 00001000 00001000 -> PC. В счетчик циклов, организован- ный на PC, записывается число 8 (i>+6 DADH 2HL-+- PHL. Сдвиг суммы частичных произве- дений - ы+7 RAL 2А -|- Q -> РА. Очередной разряд множителя засылается в триггер переноса,-а старшая цифра величины 2HL — в младший разряд РА (о+8 JNC <±>-4-14 Переход по Q = 0. Анализ состояния TQ, в ко-> тором находится очередная цифра множителя со-4-l 1 DADD DE -р HL -> PHL. Образование нового значе- ния суммы частичных произведений путем до- бавления множимого при Q = 1 40
Продолжение табл. 1.18 ag S *® О S=>> Команда — » ' — Содержание команды. Пояснения «+12 • . АС1 ' 0 Л +0+Q —> РА. Перенос из младших байтов HL суммы частичных произведении прибавляется к старшему байту «+14 DCR С С — 1 PC. Уменьшение на 1 кода счетчика циклов co-f-15 JNZ ш + 6 Переход по 2 = 0. При Z = 0 С + 0 и, следо- вательно, умножение иа младший байт не окончено С£>+18 SHL.D а РНЕ-*ЗУ («) : Засылка младших байтов ре- зультата в ЗУ по адресу a (L) и « + 1(H) co-f-21 MOV Н, С 0->-РН. Сброс в 0 PH путем, засылки кода 0 из PC «+22 MOV L, А A->-PL. Старший байт результата умножения на младший байт множителя пересылается в PL для дальнейшего сложения с суммой частичных произведений «+23- «+35 MOV JNZ * РА. Действия, аналогичные тем действиям, которые выполнялись командами ш+3...«+15. В результате выполняется умножение на стар- ший байт множителя. Переход по Z = б ш+38 XCHG PHL-^PDE. Обмен содержимым регистров PHL и PDE ш+39 LHLD a + 1 ЗУ (а + 1) -* PHL. Засылка в PL второго байта результата умножения множимого на младший байт множителя «+42 MOV H, c 0-* PH. Сброс в 0 PH ш+43 DAD D DE + HL -*• PHL. Формирование второго и третьего байтов произведения ш+44 ADC C А + 0 +<? -> РА. Формирование старшего байта произведения 41
1.19. Программа деления двухбайтных чисел Е ® О Р'>> К «со Команда Содержание команды. Пояснения (О LXI В 00 00->-РВС. Сброс в 0 регистра РВС ©4-3 ANA А 0-+TQ. Установка признака Q в состояние 0 ©4*4 LHLD а ЗУ (a-f-1, a,)-*-PHL. Пересылка делимого (ос- татка) в PHL. Во втором ^последующих циклах команда используется для восстановления поло- жительного остатка м-|-7 СМС Q-^-TQ. Инвертирование переноса со 4-8 MOV л, с С-+РА, 2Л4-<2~>РЛ, А-+РС, В-+РА, 2Лф- 4-<?->РЛ, А-+-РВ. Сдвиг частного, которое формируется в РВС, на один разряд влево и за- пись в младший разряд РВС очередной цифры частного. В первом цикле в младший разряд РВС записывается маркерная 1, по которой в дальнейшем фиксируется конец деления со 4*9 RAL ©4-10 MOV - С, А <£>4-11 MOV Л, В ©4-12 RAL ©4-13 MOV В, А ©4-14 JC ©4-33 Переход по <2=1. При <2 = 1 маркерная 1 по- пала в TQ. Это означает, что все циклы деле- ния выполнены и, следовательно, надо перейти к команде HLT, которая в данном случае озна- чает конец деления. При (1 = 0 деление следует продолжить ©4-17 DAD Н 2HL PHL. Сдвиг остатка на один разряд влево ©4-18 SHLD а PHL-+3X («4-1, а). Запись остатка в ЗУ для его восстановления, если он окажется меньше дели- теля Д9.
Продолжение табл. 1.19 о. 5 S «к. .9 тгъ X ксо Команда Содержание команды. Пояснения со-f-21 MOV A, L L-+PA, А — Е-+РА, A^PL, Н-+РА, А — — D — Q -> РА,. А -> PH. Из остатка вычитается делитель co-J-22 SUB Е ш+23 MOV L, А CO-J-24 MOV А, Н <о-|-25 SBB D «>+26 MOV Н, А со+27 JNC со+7 Переход по <2 = 0. Если <2 = 0, то это означает, что очередной остаток положительный, очеред- ная цифра частного равна 1 и следует перейти к выполнению сдвигов ш+30 JMP со+4 Безусловный переход. Эта команда выполняется после команды JNC, если <2 = 1 и, следова- тельно, очередной остаток отрицательный и его надо восстановить со+33 HLT Останов. Конец деления сом со--}- 1 хранится второй байт команды MVI, а в ячейках с адресами со + 14 и со + 15 — второй и третий байты команды J.Z. Так как команда ADC однобайтная и хранится в ячейке с адре- сом со + 10, то первый байт следующей команды записан по адре- су со + 11. Если в рассмотренной программе заменить команду ADC командой SBB, получим программу вычитания для много- байтовых чисел. Если же после команды ADC поставить команду DAA десятичной коррекции, получим программу сложения 2п-раз- рядных десятичных чисел. В табл. 1.16 приведена программа десятичнсгго вычитания п- байтных десятичных чисел, адреса младших байтов которых ука- ваны в регистрах PDE и PHL. Поясняет программу цифровая диа- грамма для вычитания трехбайтных чисел, приведенная в табл. 1.17. При выполнении операций над третьим байтом перенос не Возник, что в данном случае является признаком отрицательного результата, представленного в дополнительном коде. 43
Команда умножения в МП отсутствует. Вследствие этого умно- жение производится программным путем. В табл. 1.18 приведен при- мер умножения двух положительных 16-разрядных двоичных чи- сел, записанных в регистрах РВС и PDE. Умножение начинается со старших разрядов множителя и со сдвигом суммы частичных про- изведений в два этапа. На 1-м этапе умножают на младший байт мно- жителя, а па 2-м — на старший. После этого два полученных произ- ведения суммируются с учетом взаимного сдвига на один байт. При этом старший байт произведения, полученного на 1-м этапе, сумми- руется за счет предварительной его засылки в PL: Три старших байта результата расположены в регистрах РА и PH.L, младший байт — в ЗУ по адресу а. Деление так же как и умножение выполняется в МП про- граммно. В табл. 1.19 приведена программа деления с восстановле- нием остатка двухбайтных положительных чисел. При этом пред- полагается, что делитель больше делимого, делимое в старшем раз- ряде'содержит 0 и находится в ячейках ЗУ с адресами а и a-f- 1 (старший байт хранится по адресу а + 1), а делитель расположен в регистре PDE. Частное формируется в РВС, а конец деления опре- деляется с помощью маркерной 1, которая после определения 16 бит частного перейдет в TQ. Глава 2 МИКРОПРОЦЕССОРНЫЕ НАБОРЫ СЕРИЙ 583 и 584 2.1. ЦЕНТРАЛЬНЫЙ ПРОЦЕССОРНЫЙ ЭЛЕМЕНТ ВС1 СЕРИИ 583 Схемно-технологической основой ИМС серий 583 и 584 является ИИЛ. Серия 583 [J9, 38] выпускается в виде двух модификаций (583 и К583), состав и основные параметры которых-приведены в табл. 1.2 и 2.1. При разработке микропроцессорных систем на ос- нове ИМС этой серии необходимо учитывать то, что серия функцио- нирует в отрицательной логике (1 соответствует низкий потенциал). Центральный процессорный элемент ВС1 Состоит (рис. 2.1, а) из арифметического устройства А У, запоминающего устройства ЗУ в виде 16 регистров общего назначения РОН, блока управления БУ, вырабатывающего внутренние управляющие сигналы ВУС, и вспомогательных регистров результата РР, управления РУ, со- стояния PC, микрокоманды РМ и двух буферных регистров РБ1 и РБ2. Регистры РМ и PC состоят соответственно из 16 и 2 раз- рядов, а остальные — из восьми. Следует отметить, что кроме ука- занных регистров других запоминающих элементов ни в Б У, ни в АУ нет. Остальную часть ИМС составляют исключительно КС. Назначение выводов ИМС приведено в табл. 2.2. Обмен информацией осуществляется по двум двунаправленным шинам данных ШД1 и ШД2, шине микрокоманд ШМ и шине управ- ления ШУ, включающей в себя одно- и двунаправленные выводы и служащей для ввода или вывода управляющих сигналов, а также для каскадирования ИМС при увеличении разрядности, кратной 8 (табл. 2.2). Микросхема работает с числами, представленными в дополнительном коде. Для указания знака отводится один (стар- ший) разряд, который отделяется от мантиссы числа фиксирован- ной запятой. Выделяется знаковый разряд сигналом К на входе 44 -
2.1. Основные параметры ИМС серии 583 ИМС 583 серии Функциональное назначение £12 2 о ь « О X ft Е Ю Р, мВт ВА1 Приемопередатчик магистральный с памятью 4 500 ВА2 » » без памяти 5 500 ВАЗ Универсальный коммутатор / 8 250 ВА4 Коммутатор магистралей 8 400 ВГ1 Контроллер-синхронизатор —— — ВГ2 Контроллер предварительной обработки ин- формации 8 180 ВМ1 Микропроцессор логический 8 260 ВС1 Центральный процессорный элемент 8 360 ВС2 Умножитель 8 340 вез Арифметический микропроцессор 8 290 ВС4 Универсальный » 8 360 ВУ1 Масочная программируемая логическая мат- рица 20X18 — ИК1 Генератор адресов микрокоманд 16 340 КШ Коммутационный микропроцессор 8 . 250 РА1 Ассоциативное запоминающее устройство 16X8 . . — ХЛ1 Коммутатор магистральный 8 1 240 ЗУ. При Д = 1 все разряды чисел в данной ИМС обрабатываются как разряды мантиссы. При К = 0 старший разряд обрабатывается кйк знаковый, а все остальные — как разряды мантисс. Отличия в обработке знакового разряда и разрядов мантисс проявляются при переполнении разрядной сетки и при сдвигах. Под переполне- нием понимается выход результата за пределы диапазона (—1, 1). Это возможно при сложении на сумматоре чисел одного знака, сум- ма которых по модулю больше. 1. Переполнение разрядной сетки сопровождается появлением сигнала'^? = 1 (выход 29), который формируется по правилу 9 = Д' (90<7i V 9оД) V Kq0, где q0 — перенос из знакового разряда; q,— перенос из старшего разряда мантиссы в знаковый разряд. Такое правило формирования сигнала q объясняется тем, что при переполнении разрядной сетки перенос в знаковый разряд сопровождается отсутствием переноса из знакового разряда или отсутствие переноса в знаковый разряд сопровождается переносом из знакового разряда. Так как переполнение связано с ошибочным изменением знака, то ИМС восстанавливает его. Если же перепол- нения разрядной сетки нет, то qa = qr. При Д = 1 переносы 90 и qx не анализируются, так как на месте знакового разряда находится старший разряд из данной группы разрядов мантиссы и его обра- ботка осуществляется так же, как и остальных разрядов мантиссы. Примеры действий с числами в старшей (Д = 0) и младшей (Д = 1) ИМС приведены в табл. 2.3. ' Другое отличие в обработке знакового разряда и разрядов мантиссы проявляется при сдвигах, особенности реализации кото- рых поясняет рис. 2.1, б. При левом арифметическом сдвиге ЛАС 45
в старшей ИМС (К = 0) знаковый разряд (отмечен цифрой 0i отклю- чается от остальных разрядов и в сдвиге не участвует. Bet разряды мантиссы перемещаются на одну позицию влево, в младший разряд младшей ИМС (К — 1) записывается 0, а старший разряд манти. сы (отмечен цифрой 1) старшей ИМС (X = 0), выходящий за пре- делы разрядной сетки после завершения сдвига (выдвигаемый раз- Рис. 2.1. ряд), выдается на выход Л. При правом арифметическом сдвиге ПАС (цифра в знаковом разряде не изменяется) все разряды ман- тиссы перемещаются на одну позицию вправо, в старший разряд мантиссы записывается цифра из знакового разряда, а на выход А выдается цифра из младшего (выдвигаемого разряда). Принципы реализации левых и правых логических (ЛЛС, ПЛС) и цикличе- ских (ЛЦС, ПЦС) сдвигов также поясняет рис. 2.1, б. Для фор- мирования признака А и выполнения указанных сдвигов входы и выходы ИМС должны быть соответствующим образом соединены?
2.2 Назначение выводов ИМС ВС1 О) О S и о 3 X « 1—4 5—7, 35—47 8—23 24 25, 48 26 и 33 27 28 29 30, 31 32 34 Наименование выводов в корпусе 244.48-8 Входы синхросигналов приема S1 и выполнения S2 МК, выдачи результата на ШД1 (S31) и ШД2 (S32) Шина микрокоманд, номера разрядов которой Образуют ряд 5—7, 4-0, 8, 12, 13, 9, 14, 10, 15 и 11 Шины данных ШД1 и П1Д2. Четные номера выводов соот- ветствуют ШД1, а нечетные — ШД2 Шина нулевого потенциала Гальванически связанные в одну точку выводы, служащие для подключения ИМС к источнику питания через токрза- дающий резистор. Величина питающего напряжения Е должна быть не меньше 1,2 В, а сопротивление R резис- тора определяется по формуле R=^\E—1,2)//, где I — питающий ток (225 мА <: I с 345 мА) Правый R и левый L двунаправленные выводы сдвигателя АУ Вход С сигнала переноса сумматора АУ Выход признака нуля результата (признак Z) Многофункциональный выход q, служащий при К = 0 для индикации переполнения разрядной сетки, а при К = = 1 — для вывода сигнала переноса из старшего разряда сумматора АУ Выходы сигналов распространения R и образования G груп- пового переноса Многофункциональный выход А, индицирующий при выпол- нении арифметических операций (mu = mL = 0) состояние знакового разряда, а при сдвигах (т0 = тх = 1) —разряд, выходящий в результате сдвига за пределы разрядной сетки (выдвигаемый разряд). При левых сдвигах — это нулевой или первый разряд старшей ИМС (А = 0), а «при правых сдвигах — седьмой разряд самой младшей ИМС Вход К, задающий позицию ИМС (старшая при К = 0, младшая при А = 1), а следовательно, и способ обработки чисел в ИМС при трех и более ИМС вывод R старшей ИМС соединяется с выводом L соседней младшей ИМС; вывод L самой старшей ИМС (А = 0) соединяется с выводом R самой младшей МС; выводы А этих двух ИМС объединяются в одну точку для выделения выдвигаемого при сдвиге разряда (рис. 2.1, в). При выполнении операций в ИМС с помощью КС формируются три признака q, А и Z, которые присутствуют на соответствующих выходах до приема следующей МК или до изменения кода на ШД1 или ШД2. Для дальнейшего анализа они должны быть записаны на регистр RG. Способ соединения выводов q, А и Z при каскадиро- Ьаиии показан ла рис. 2.1, в. Управляет работой ИМС ВС1 16-разрядная микрокоманда, еостоящая из четырех полей'///, П2, I и J. Пятиразрядное поле^/7/ 47
2.3, Примеры действий в старшей ' и младшей ИМС Число Q Код А Мантисса X 0 00000 1 1 У —- 0 11111J1 X + У при К = о 1 0 0000010 X 4- У при К = 1 0 1 00000 1 0 ~х — 1 1111101 —У — 1 0000001 —X—У при К—0 1 1 1111110 -X—У при Х=1 1 0 1111110 (разряды МК т0— лг4) за- дает одну Из 32 операций, выполняемых ИМС. При этом и тг задают тип операции, а т., — — ее разновидность (табл. 2.4). Арифметические опера- ции (т„ = «j = 0) позво- ляют производить записи кодов 1, 0, А,А,В и В, где А кВ — операнды, поступаю- щие по ШД! и ШД2\ А и В — их инверсные коды. Суммирование прямых ко- дов, а также прямых и ин- версных кодов позволяет ре- ализовать операции сложе- 2.4. Операции в ИМС ВС1 m0= mt= 0 0 т0= тх= 1 m0= Wj= 1 mt Арифметиче- ские операции Логические операции (пе- реносы между разрядами блокируются) Операции счета и сложения со. сдвигом, загрузка PC и пустая операция 000 1 ab ллс (Д 4- С) ЛЦС (В 4- С) 00 1 a -f- b ab ПЛС (А + С) ПЦС (В 4- С) 010 а + Ь ab ЛЦС (А + С) ЛАС (В 4- С) 0 1 1 1 00 а + Ь а а\/Ь aV b ПЦС (А + С) ЛАС (А 4- С) ПАС (В 4- С) ЛЛС (Д4-В4-С) 101 а а V b ПАС (А 4-С) ПЛС (Д4-В4-С) 1 1 0 ь ab V ab ЛЛС (В 4- С) Загрузка PC 111 ь ab V ab ЛЛС (В 4- С) Нет операции 2.5. Примеры арифметических операций в ИМС ВС1 . тп = /П1 == 0 результаты арифметических операций (К = 0) над числами Д*= 1,0111 и В 0,0101 тът3т4 С = 0 С = 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1,1111111 0,1101111 1,0001111 1,1100000 1,0111000 0,1000111 0,0101000 1,1010111 Установка 1 —А 4- В — 2“’ А — В - 2-’ А4-В А —А — 2"’ В —В — 2-’ 0,0000000 0,1110000 1,0010000 1,1100001 1,0111001 0,1001000 0,0101001 1,1011000 Установка 0 —А 4- В А~В Л 4-В4-2"’ А 4-2-’ —А В 4-2-’ —В 48
ния и вычитания типа Л + В, А — В, В — А. Примеры выпол- 9 s нения арифметических операций над числами А~— = 5 и В = — = 0,0101 ^приведены в табл. 2.5. 16 Логические операции выполняются при полной блокировке переносов между разрядами. Вследствие этого результат.их не за- висит от сигнала па входе С. Операцию сдвига можно совмещать с операцией счета..Для этого на вход С следует подать сигнал «1». При выполнении рассмотренных операций всегда формируется признак Z. Формирование остальных признаков зависит от выпол- няемой операции и определяется табл. 2.6, в которой 0 означает, что признак вообще не формируется, .а на соответствующий вывод Выдается 0, например, признаки Аид при выполнении логических • операций не формируются. 2.6. Завгсамость признаков от выполняемой операции 1 то. ^1, А <7 К = 0 К= 0 0 0 0 0 0 Знак 0 0 Перенос 0 о * * * Знак 0 Переполне- ние Перенос . 0 1 X * X 0 0 0 0 1 о * * о 1*0*0 1 * X 0 0 Выдвигаемый разряд - 0 Переполне- ние Перенос 10*^1 1*0*1 1**01 0 Выдвигаемый разряд Переполне- ние Перенос - 1 1 1 1 * Зависят от предыдущей МК Поле П2 определяет принятый в данной МК способ адресации операндов и результата (табл. 2.7), Например, в МК типа RR опе- ранды А и В извлекаются из ЗУ РОИ по адресам I и J, а результат Р заносится в ЗУ РОН по 1-му адресу. В команде RL1 операнд' А поступает с РР, а В — с ШД2. Результат заносится в ЗУ РОН по адресу /. Адреса I и J РОН формируются с помощью полей I и J МК с учетом содержимого PC и РУ (табл. 2.8). Если в нулевом (первом) разряде PC 0, то адрес I (7) формируется полем МК / (7), состоящим из разрядов т8 — тп (т1г — т16). При 1 в указанном разряде PC адреса I и 7 извлекаются соответственно из первых и последних четырех разрядов РУ, в котором фиксируются и хра- нятся соответствующие поля предыдущей МК- Запись кода в PC производится МК загрузки (П1 = 11110), в которой после поля/7/ указывается два подлежащих записи в PC бита, а остальные поля Не используются, например, МК 1111010 запишет в PC код 10. 49
2.7. Сп'СоГы адресации шерам он результата П2 Тип Р = А (АУ) В т5, т9, т,' МК р А В 0 0 0 RR PI Р1 PJ 0 0 1 RL PI Р! ШД2 0 1 0 RR1 Р! РР PJ 0 1 1 RL1 PI РР ШД2 1 0 0 RR2 РР PI PJ 1 0 1 LL РР ШД! ШД2 1 1 0 RR3 РР РР PJ 1 1 1 RL2 РР ШД! PJ 2.8. Формирование адресов РОН РС(0) I РС(1) J 0 РМ (8—11) 0 РМ (12—15) 1 РУ (0-3) 1 РУ (4—7) держимым регистров (три включении питания PC и РУ могут принят^ не- определенную информацию. Поэтому первой МК в микро- программе работы ЭВМ после включения питания должны быть МК загрузки PC. Каждый цикл работы ИМС ВС1 начинается с приема МК по нарастанию S1. Для этого па ШМ следует выставить МК за время tr и удерживать ее в течение времени 72 (рис. 2.1, г). По этому же перепаду сигнала S1 в PC и РУ записываются коды, подготовленные БУ при выполнении предыдущей МК. • После истечения времени со- стояние ШМ не влияет на ра- боту ИМС и может использо- ваться другими ИМС. Приня- тая на РМ МК дешифрируется в течение времени /6. Далее по спаду сигнала S2 в соответст- вии с адресной частью МК и со- информация записывается с ЗУ держимым регистров PC и РУ i РОН илп РРиа РБ1 и РБ2. При выполнении команд типа RL, RL1, RL2 и LL запись кодов в один или оба регистра РБ1 и РБ2 не производится, а в Л У поступают коды непосредственное ШД1. и ШД2, Коды с РБ1, РБ2, ШД1 или ШД2 поступают на АУ, и в течение времени ts происходит выполнение операции, указан- ной в поле П1 МК. По нарастанию S2 полученный в АУ резуль- тат заносится в ЗУ.' РОН или РР. Информация на ШД! или ШД2 может выдаваться только с РБ1 или РБ2 по сигналам S3!, S32, которые никакими временными соотношениями с сигналами S1 и S2 не связаны и поступают в произвольные моменты времени. Так как результат данной МК фиксируется в РР или РОН, а не в РБ1 или РБ2, то указанный результат может быть выдан на ШД1 или ШД2 только в следующем цикле при выполнении следую- щей МК. При выполнении МК типа RL, RL1, RL2 и LL данные на ШД! и ШД2 должны быть установлены за время 7, до фиксации 2.9. Временные параметры ИМС ВС1 Время /р нс Предустановки МК на ШМ Удержания /2 МК на ШМ Удержания высокого /3 и низкого 74 потенциалов на входе S1 ' Дешифрирования 76 МК Выполнения 7В операции в А У Предустановки 77 данных в ШД1 (i = 1,2) Удержания данных ts в ШД1 (I — 1,2) Цикла 7Ц >50 > 100 >200 > 150 > 450 >400 > 100 > 1000 50
2.10. Микропрограмма умножения 32-разрядных чисел & £ а> Р. < Микрокоманда Содержание МК. Пояснения П1 П2 I J 0 10001 000 0 X Р0:=ПЛС (РО). Сдвиг множителя для ана- лиза очередной цифры. 1 111.11 X X X Пустая операция в ИМС ВС1. В УУ услов- ный переход по А (Л равен очередной циф- . ре множителя), а именно: если А — 0, то переход к МК.З, если Л= 1, то переход к МК2 2 00011 000 2 1 Прибавление к сумме час- тичных произведений множимого 3 10101 ,000 2 X Р2:=ПАС (Р2). Сдвиг старших разрядов суммы частичных произведений 4 f 11111 X X X Пустая операция в ИМС ВС1. В У У услов- ный переход по А (Л равен очередной циф- ре произведения, полученной при сдвиге суммы частичных' произведений), а именно: если Л = 0, то переход к МК6, если А = = 1, то переход к МК5 5 00011 000 3 4 РЗ:—РЗ-\-Р4. Запись выдвинутой при сдви- ге суммы частичных произведений цифры на соответствующее ей место в регистре младших разрядов произведений 6 10000 000 4 X Р4: = ЛЛС (Р4). Сдвиг маркерной единицы для определения позиции следующей вы- двинутой цифры произведения и фиксаций конца умножения 7 11111 X X X Пустая операция в ИМС ВС1. В УУ услов- ный переход по Л, а именно: если А = 0, то переход к MK0 — начало цикла умно- жения, а если Л = 1 (это означает, что умножение на 31-й разряд мантиссы закон- чено), то переход к МК8 8 10001 000 0 X Р0:—ПЛС (Р0). Сдвиг множителя для ана- лиза его знака (признак Л) 9 11111 X X * Пустая операция в ИМС ВС1. В У У услов- ный переход по Л, а именно: если А = 0, то переход к МК11, а если Л = 1, то пере- ход к мкю 10 00010 000 2 1 Р2'. — Р2 4- Pl + 1. Коррекция результата й — — — — Конец умножения. Начало следующей мик* ропрограммы 51
результата операции сигналом S2 и удерживаться на иих в течение времени ts после фиксации результата. Временные параметры ИМС ВС1 приведены в табл. 2.9. Управляя подачей сигналов S1 и S2, можно расширить функциональные возможности ИМС и кро- ме режима нормальной работы (подаются S1 и S2) получить еще трн других режима. При запрете S1 новая МК не принимается, а исполняется предыдущая. При запрете S2 новая МК принимается, 52
но содержимое регистров РБ1 и РБ2 не изменяется и результат опе- рации на регистрах ИМС не фиксируется. При запрете SI n.S2 о стояние регистров ИМС не изменяется. При всех описанных режи- мах признаки A, q и Z изменяются в зависимости от вновь принятой МК или от изменений кодов на ШД1 или ШД2. Описанный МП реализует аппаратным способом только про- стейшие арифметические операции сложения, вычитания и сдвига. Более сложные операции реализуются микропрограммным спо- собом. Рассмотрим микропрограмму умножения 32-разрядных чи- сел, представленных в дополнительном коде (табл. 2.10). Умноже- ние начинается с младших разрядов множителя и выполняется со сдвигом суммы мастичных произведений вправо на один разряд. Для получения дополнительного кода произведения в послед- нем такте при умножении на отрицательный множитель следует провести коррекцию результата путем вычитания из суммы частич- ных произведений множителя. Предположим, что множитель, мно- жимое'и сумма частичных произведений (перед умножением равная нулю), располагаются в РОЙ с номерами 0, 1,2 и 3 (сумма частич- ных произведений занимает два РОН-с номерами 2 и 3), а в РОН с номером 4 (Р4) записан вспомогательный код 00...010 (маркер- ная единица в предпоследнем разряде). Граф алгоритма умноже- ния показан на рис. 2.2, а. Для реализации умножения 32-разряд- иых чисел необходимо четыре ИМС ВС1 соединить соответствую- щим образом и на старшую ИМС подать сигнал К ~ 0, а на все остальные — Д'= 1. После окончания умножения знак и 31-й старший разряд мантиссы находятся в-Р2, а 31-й младший разряд мантиссы — в РЗ (“Младший разряд РЗ остается свободным). Следует отметить, что входной перенос С = 0 для всех МК, кроме МК10. Цифровая диаграмма умножения числа ~ 1,1000 на число 9 — — I = 1,0111 приведена в табл. 2.11, где указаны состояния ре- гистров после выполнения соответствующей МК (если состояние регистра не указано, то оно осталось прежним), а количество'раз- рядов, равное 5, взято условно. 2.2. ЛОГИЧЕСКИЙ МИКРОПРОЦЕССОР ВМ1 СЕРИИ 583 Логический МП ВМ1 (рис. 2.2, б) состоит из схемы маскирова- ния и определения- приоритета СМП, запоминающего ЗУ, логиче- ского Л У и управляющего У У устройств, двух триггеров ТВ и Т В К и регистров РМ, PI, PJ, РУ, РДМ, РУ и РП. ЗУ состоит из восьми 8-разрядных РОН (R0 — R7) и обеспечивает выдачу на ЛУ содержимого любых двух регистров. Обмен информацией осуществ- ляется по шине микрокоманд ШМ, четырем шинам данных ШДМ, ШХ, ШУ, ШД и шине управления, состоящим из одно- и двунаправ- ленных выводов (табл. 2.12). Управляет работой ИМС 9-разрядпая МК (т0 — та), разбитая на три поля: П1 — ПЗ. Трехразрядное поле ПЗ (разряды тя — та) задает одну из восьми выполняемых в Л У поразрядных операций (табл. 2.13) над поступающими на его вход операндами а н Ь. Двухразрядное поле П1 задает тип операции (табл. 2.14), который в свою очередь определяет способ адресации операндов, а поле П2 задает 16 разновидностей операции заданного типа (табл. 2.15), где буквой R обозпачается один из РОН. 53
2.11. Цифровая диаграмма .умножения Такт МК Состояние РОН (Р1 и А Состояние РОН (Р0, РЗ и Р4) 0 — Р2: = 0,0000 Р0: = 1,0111 1 0 Р1: = 1,1000 1 Р0: = 0.1011 2 2 Р2: = 1,1000 1 РЗ: = ооооо 3 3 Р2: = 1,1100 0 Р4: = 00010 4 6 Р1-. = 1,1000 0 Р4: = 00100 5 0 Р2: = 1,1100 1 РО: = 0.0101 6 2 Р2: = 1,0100 1 Р4: = 00100 7 3 Р2: = 1,1010 0 Р4: = 00100 8 6 Р1: = 1,1000 0 Р4: = 01000 9 0 Р2: = 1,1010 1 Р0: = 0,0010 10 2 Р2: = 1,0010 1 Р0: = 0,0010 il 3 Р2: = 1,1001 0 Р4: = 01000 6 Р1; = 1,1000 0 Р4: = 10000 0 Р2:-= 1,1001 0 Р0: = 0,0001 14 3 Р2; = 1,1100 1 РЗ: = 00000 15 5 Р2: = 1,1100 1 РЗ: = 10000 16 6 W:=0,01U 1 Р4: =' 00000 17 8 С : = 1 1 Р0: = 0,0000 18 Ю Р2: = 0,0100 0 РЗ: = 10000 19 11 Р2: = 0,0100 0 РЗ: = 10000 У 2.12. Назначение выводов ИМС ВМ1 Номер вывода 1—4 5, 8, 11, 14, 32, 35, 38, 41 6, 9, 12, 15, 31, 34, 37, 40 7, 10, 13, 16, 30, '33, 36, 39 17—21, 26—29 22 23 24 25, 48 42, 43 44, 45, 46 47 Наименование выводов ИМС ВМ1 Входы синхросигналов приема S1 и выполнения S2 МК и выдачи информации на выводы ШДМ и В (S3) и UIN (S4) Двунаправленная шина данных М ШДМ Выходная шина данных У ШУ, постоянно ин- дицирующая содержимое РУ Входная шина данных X ШХ Шина микрокоманды ШМ Вход выбора кристалла ВК » опроса приоритета А и заполнения PI Шина нулевого потенциала Выводы для подклюнения источника питания Выходы S и Р, служащие для индикации пере- полнения PI и признаков приоритета * . Двунаправленная шина N ШХ Двунаправленный вывод В 54
2.13.. Логические операции в ИМС ВМ1 2.14. Типы операций в ИМС ВМ1 Поле ПЗ Реализуе- мая функция Пример П1 Операция ООО а b 00000011 0 0 Байтовая 0 0 1 а 00110011 0 1 Битовая N 0 1 0 ь 00001111 1 0 Битовая / 0 11 а\/ b 00111111 1 1 Битовая 1 + 1 1 0 0 О 00000000 1 0 1 ab V аЬ .00111100 Байтовые операции вы- 1 1 0 b шюооо полняются над двумя байтами, 1 1 1 1 11111111 поступающими на входы а и b ЛУ. Байт результата Q фикси- руется на одном из регистров ИМС. При этом номера РОН, - участвующие в операциях, извлекаются из регистров PN или_Р/ (в последнем случае он может изменяться на ±1). Указанные способы формирования адреса РОН в табл. 2,15 обозначены символами RN, RI, 2? (J + 1) н R (J — 1), например, при П2 = = 1111 операнд а извлекается из РУ, а операнд b — из ЗУ РОН по адресу J— 1, где J — содержимое регистра PJ. В Л У над этими операндами выполняется операция, код которой указан в ПЗ, а результат Q фиксируется в РДМ. При выполнении байтовых операций ТВ и РДМ сбрасываются в 0 (исключение составляют четыре последних операции, прн которых на РДМ фиксируется результат Q), а А является сигналом опроса СМИ, с выходов которой в РП записывается номер i старшей (левой) единицы в коде D, полученном поразрядной конъюнкцией бай- тов, поступающих на входы СМП. При этом на выходы Р и S вы- 2.15. Разновидности операций в ИМС ВМ1 Поле П2 Байтовые операции (т0= fnt= 0) Битовые операции = 1) Q= а (ЛУ) Ь, Tt ?:= 0 (ЛУ) Ь, РП-. = О'. Q 1 а b а ь 0000 RI RJ шх R R ШХ 0001 RN - RN шх РУ R ШХ 0010 РУ RJ ШДМ ТВ R шх ООП РУ RN шх РДМ R шх 0100 RJ RJ ШДМ R R ШДМ 0101 RN RN ШДМ РУ R ШДМ оно RJ ШДМ РДМ R ШДМ 0111 RN ШДМ ТВ R ШДМ 1000 RJ РУ ШДМ R R в 1001 RN РУ ШДМ ТВ R в 1010 R(J + 1) РУ ШДМ РУ R в 1011 R(J-1) РУ ШДМ РДМ R в 1100 РДМ РУ RJ R РУ R 1101 РДМ РУ RN. РУ РУ R 1110 РДМ РУ R(J + 1) РДМ РУ R 1111 РДМ РУ Я (J - 1) ТВ РУ R 55
даются сигналы Р —S = V где d{ — разряды кода D. При /=0 /1 = 0 состояния РП, S и Р не индицируются (S = Р = 0). Битовые операции выполняются над двумя битами, поступаю- щими, па входы а и Ь Л У. При этом кроме адресов регистров необ- ходимо указать и номера разрядов регистров, из которых извле- каются операнды. Номера.разрядов операндов и результата совпа- дают и определяются типом битовой операции (табл. 2.14), а имен- но: при операциях типа N и / номера разрядов извлекаются соот- ветственно из PN и PI, а при операции типа / -ф- 1 номера форми- руются путем увеличения на единицу содержимого регистра PI. Во всех битовых операциях адреса РОН извлекаются из PJ. Напри- мер-, при П2 = 0001 и П1 = 01 операнды а и b выбираются соответ- ственно с РОН и ШХ с позиций, номера которых совпадают и ука- заны в PN. Номер РОН указан в PJ. Результат заносится в РУ на позицию, номер которой указан в PN. Во всех битовых операциях РП : = 0, все неучаствующие в записи результата разряды РДМ и ТВ обнуляются (например, при П2 = 0000 — все, а при П2 = = ООН — все кроме одного), а А при П1 = 11 является сигналом опроса заполнения PI, а именно: при 4=1 и I Д 111 записи в РОН и РУ не происходит, РДМ, PN и ТВ обнуля- ются, a S= 1; при А = 1 и I = 111 ИМС выполняет действия согласно МК; при А = 0 РОН и РУ сохраняют свое содержимое, РДМ, PN и ТВ обнуляются, a S = 0 Синхронизируют работу ИМС ВМ1 сигналы SI — S4. По на- растанию S1 (рис. 2.2, в) происходит прием. информации в РМ, RN, ТВК, PI и PJ. При этом в Р1 и PJ фиксируются адреса опе- рандов из предыдущей МК, в качестве’которых могут быть коды 1, I. -ф- 1, J, J ziz 1, М, Если ТВК = 0, то МК не выполняется, ТВ, S и -Р обнуляются, а остальные регистры сохраняют свое содержи- мое. При ТВК = 1 происходит выполнение принятой МК. Резуль- тат операции по нарастанию S2 заносится в регистр, определенный МК- Синхросигналы S3 и S4 подаются в произвольные моменты времени, так как никакими временными соотношениями ни друг с другом, ни с S/ и S2 не связаны. Временные параметры ИМС ВМ1 приведены в табл. 2.16. Управляя подачей и запретом сигна- лов S1 и S2, можно расширить функциональные возможности ИМС. В качестве примера применения ИМС ВМ1 рассмотрим устрой- ство для выделения одного из 32 сигналов (запросов) с наивысшим приоритетом. Линии, по которым поступают запросы, объединим в ШХ таким образом, чтобы наивысший приоритет имел запрос, поступающий па нулевой разряд ШХ, а наименьший — на 31-й разряд. -Задача состоит в том, чтобы, приняв и запомнив К (К — — 0,31) запросов, последовательно выдать их номера на ШД в по- рядке убывания приоритета. Для решения этой задачи необходимо четыре" ИМС ВМ1 соединить показанным на рис. 2.1, б способом. Программа решения этой задачи приведена в табл. 2.17. Нулевая МК устанавливает код 1 в РУ, размаскировывая тем самым все. разряды ИМС. При выполнении MK0 в PJ записывается адрес РОН, равный 000. Вследствие этого в дальнейшем его вводить не требуется. По МК1 в РОН R0 записывается анализируемый код с 1НХ, а в Р77 — номер старшей единицы. Если в старшем байте единиц нет, то сигнал S = 1 даст разрешение на анализ единицы в следующем байте за счет подачи сигнала S = 1 па вход А. ИМС с самой старшей единицей в байте выдаст на три младших разряда fifi.
2.16. Временные параметры ИМС ВМ1 Параметр tна Время: предустановки МК на ШМ (рис. 2.1, г) удержания /2 МК на ШМ (рис. 2.1, г) удержания высокого /3 и низкого /4 потенциалов на вхо- де Si дешифрации МК выполнения te операции в ЛУ предустановки /, и удержания /я данных на входах В, ШДМ и ШХ предустановки /9 данных, на входах В, ШДМ и ШХ при записи результата в РП Задержка /10 в выдаче информации на ШУ при записи кода в РУ Время: генерации /П признаков S и Р относительно SP генерации t12 признаков S и Р относительно данных на входах В, ШДМ и ШХ при разрешающем значе- нии А опроса (запрета) txs сигналом А подготовленных при- знаков S и Р Задержка /14 в выдаче информации на входы В, ШДМ и Ш при разрешающих значениях S3 и S4 Время: опроса (запрета) /15 (/1в) сигналами S3 н S4 информа- ции на выходах В, ШДМ и ШУ . цикла ta >50 > 100 >200 < 150 < 200 > 100 > 150 <250 <400 <300 <250 <250 < 150 > 1000 2.17. Программа выделения сигналов с наивысшим приоритетом Н омер МК МК ШЛ' Содержание МК 0 • 000011111 000 РУ: = 1, PJ: =0 1 000000010 — R0: = ШХ 2 — — Условный переход по Р, При Р — 1 пе- реход к МКЗ, а при Р = 0— к МК6 3 010001100 РУ (Д'); = 0 4 000000001 —-. R0: = R0 5 — Условный переход по Р. При Р — 1 пере- ход к МКЗ, а при Р = 0 — к МК6 6 — — Конец программы. Переход к следующей * программе 57
ее номер. Два старших разряда можно получить с помощью схем ИЛИ по выражениям ШИ (0) = Р2 V Рз и ШИ (1) — Pt V Рз (Рi — выход сигнала Pi-й ИМС). Например, если самая старшая единица находится на позиции 21 —'10101 (позиция 101 ИМС2), то на ШИ индицируется код 101 и возбужден сигнал Р2, который даст ШИ (0) = 1 и ШИ (1) — 0. Если в слове есть единицы, то осуществляется переход к битовой операции, которая сбросит в 0 соответствующий разряд в РУ, вследствие чего он не участвует в выборе следующей единицы. Для того чтобы в остальных ИМС не маскировать разряд И, на их входы 5Х следует подать запрет. МК4 по аналогии с МК1 выберет следующую единицу в R0. Завер- шится выполнение программы по сигналу Р == Ро V Pi V Г2 V V Р3 = 0. 2.3. СТРУКТУРА И ФУНКЦИИ ДРУГИХ МИКРОСХЕМ СЕРИИ 583 Генератор адресов ИК1 предназначен для построения устройств адресации ЗУ МК, программ и данных. Он состоит (см. рис. 2.2, г) из арифметического АУ, запоминающего ЗУА и управляющего УУ устройств. Обмен информацией осуществляется по двум однонаправ- ленным шииам адреса ША и шииеМК, ШМ, двунаправленной шине данных ШД и шине управления, состоящей из отдельных выводов (табл. 2.18). Прием информации с ШМ и ШД осуществляется на входные регистры РМ и РД, а выдача информации на ШД и ША происходит с выходных регистров РД! и РА, ЗУА состоит из че- тырех 16-разрядных регистров РО— РЗ и адресуется 2-разрядным регистром индекса РИ. Внутренние управляющие сигналы ВУС генерирует УУ, которое в своем составе имеет триггеры X (ТХ), нулевого результата TZ, блокировки (запрета) прерывания ТВ, внешнего TR и внутреннего TI прерываний. Управляет работой ИК1 8-разрядная МК, которая состоит из двух 4-разрядных неза- висимых полей. Поле 1 (разряды MK0 — МКЗ) управляет работой РИ и ШД (табл. 2.19), а поле 2 — ША и ЗУА (табл. 2.20). В ИМС ИК1 заложена возможность обращения к четырем подпрограммам прерывания, первые адреса которых фиксированы 2.18. Назначение выводов ИМС ИК1 Ном^р пывода Наименование выводов 1—3 Входы синхросигналов приема SI и выполнения S2 МК и выдачи результата на ША и ШД S3 4, 5, 42—47 Шина МК ШМ, номера разрядов которой образуют ряд I, 0, 7, 6, 5, 4, 2 и 3 6 Вход X сигнала внешнего условия 7 Многофункциональный вывод 1, служащий для ввода сигнала внешнего прерывания и вывода сигнала внут- реннего прерывания 8—41 Шина адреса ША (номера выводов 8, 10, 12, 14, 16, 18, 20, 22, 27, 29, 31, 33, 35, 37, 39 и 41) 9—40 Шнна данных ШД (номера выводов 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 32, 34, 36, 38 н 40) 24 Шина нулевого потенциала 25 и 48 Выводы для подключения источника питания
2.19. Кодирование поля 1 в МК Поле I Содержание МК ИМС ИК1 00 ab РИ: = ab. Установка РИ полем 1 МК 0100 РИ: = РИ -ф 1. При РИ = 11 возможно прерывание с выдачей на ША адреса 2 = 0... 10 и сигнала /= 1 0101 РИ: = РИ—1. При РИ = 00 возможно прерывание в выдачей на ША адреса 3 и сигнала 1 — 1 ОНО РИ: = РИ. Содержимое РИ не изменяется 0111 РИ: = РИ + X. Содержимое РИ увеличивается на I, если сигнал X = 1 (вывод 6) 10aft ШД: — РаЬ. Выдача на ШД содержимого ячейки ЗУА, адр'ес которой ab указан в поле 1 МК 1 lab РаЬ: = ШД. Запись кода с ШД в ЗУА по адресу ab и образуют ряд: 1 = 0 ... 01; 2 = 0 ... 010; 3 = 0 ... 011 и 4 = 0 ... ... 0100. Для этого при наличии соответствующих условий вместо адресов, указанных в табл. 2.20, ИМС выдает на ША адреса 1, 2, 3 или 4. Адрес 1 генерируется как реакция на внешнее прерывание, вызванное наличием запроса (TP = 1) н отсутствием запрета (ГВ = 0) на прерывание. Адреса 2 и 3 генерируются как реакция на переполнение РИ (табл. 2.19), а адрес 4 — как реакция на ну- левой результат в МК1 —МК10, MKI2 — МК14 (нумерация по полю 2 табл. 2.20). При этом МКО, МК12, МК14 и МК15 на внешние прерывания не реагируют. При одновременном появлении не- скольких причин па прерывание ИМС реагируют на них в соответ- ствии с их приоритетом, который совпадаете величиной адреса (выс- ший 4, низший I). Формирование любого из указанных адресов со- провождается выдачей сигнала / = 1 (вывод 7). Цикл работы ИМС начинается с приема МК на РМ, который осуществляется по нарастанию S1 (рис. 2.3, а). После дешифрации МК по спаду S2 заносится информация в РА, РД1 и TI. Коды, полученные в результате выполнения МК, по нарастанию S2 зано- сятся в ЗУА, РД, ТХ, TR, РИ, ТВ и TZ. Сигнал S3 никакими временными соотношениями с SI, S2 и алгоритмом работы ИМС не связан, может подаваться в произвольные моменты времени и по низкому уровню разрешает выдачу информации на выводы ША, ШД и /. Временные параметры ИМС приведены в табл; 2.21. Вре- мена /j, для ИМС ИК1 и ВМГ определяются аналогично (см. рис. 2.1, г) и равны друг другу (см. табл. 2.16). Основное назначение ИМС ИК1 — построение совместно с ЗУ МК микропрограммных устройств управления (рис. 2.3, б). Адресный вход А ЗУ МК соединяют с ША ИК1, которая генерирует адреса МК. Извлекаемые по этим адресам МК должны содержать три поля:_ Cl, С2 и СЗ. Поле С1 является МК для ИК1, поле С2 содержит”адреса переходов АП, а поле СЗ является управляющим словом УС устройства управления и поступает на операционную часть ЭВМ, которая генерирует признаки А и I, используемые для ветвления микропрограмм. Микросхему ИК1 можно использовать для построения механиз- мов адресации ЗУ данных. Она обеспечивает прямую, относитель- ную, присоединенную и косвенную адресации как с инкрементацией (прибавлением 1), так и без нее. Для реализации механизма адреса- ции необходимо путем коммутации выводов ИМС обеспечить подачу 59
2.20. Кодирование поля 2 в МК Поле 2 Содержанке операции ША p‘ 1 Пояснения 0000 0 +o На ША выдается код 0, содер- жимое ЗУ А не изменяется 0001 Pi +x На ША выдается содержимое регистра Р{ ЗУ А, номер кото- рого указан в РИ', после чего содержимое Р£ при X = 1 (вы- вод 6) увеличивается на 1 0010 РД + 1 ША: = РД, Pi-. = Pi+ I ООН РД —1 Pi: = Pi~l 0100 +РД Р{:=Р{+РД 0101 0 .. +РД оно Р,(0-7) РД (8-15) Pi (0-7) РД (8-15) + + 1 На ША выдается код, первый байт’которого Взят из Р£ (раз- ряды 0—7), а второй — из РД (разряды 8—15). Указанный код увеличивается на 1 и записывается в Р£ 0111 РД РД+1 Рр = РД1 1000 Pi/X = 0 р д/х = 1 4-1 /X — 0 рд+их= 1 При X = 0 ША: = Р£ и Р£: = = Р£ + 1, а при X = 1 ША: — ~РД и Р£=: РД+1 1001 Р£/Х = 0 +0/X = 0 При X — 0 ША: = Р i и Р£: = * 0/Х = 1 +1/X =J = Р + 0, а при X = 1 ША: = = Д и Р£: = Р£ + 1 1010 Pt/X=0, PiKO-7) РД (8-15)/ X = 1 — l/X = 0 P£(0-7) РД (8-15) + + 1/X = 1 При X = 0 ША: = Рi и Р( — =Р£—I, а при Х=1 МК выпол- няется аналогично МК ОНО юн Pi +0 — ноо Pi / +1 Триггер блокировки прерыва- ния сбрасывается в 0 1101 Pt + 1 — 1110 Pi +1 Триггер блокировки прерыва- ния устанавливается в 1 1111 —* +0 Состояние ИМС и ее выходов не изменяется адресной части команды на ШД, а индексной и управляющей ча- стей — на ШМ соответственно на 2, 3 и 0, 1,4—7 разряды. Напри- мер, для реализации прямой адресации с инкрементацией можно воспользоваться МК, представленной в табл. 2.22. Коммутационный МП КП1 предназначен для построения ком- мутаторов и буферных устройств хранения данных. Его можно ис- пользовать для построения мажоритарной восстанавливающей схемы в системах с трехкратным резервированием. ИМС состоит (рис. 2.3, в) из восьми 8-разрядных регистров (РО—РЗ, РАО—РАЗ и РВО—РВЗ), логического Л У и управляющего У У устройств с регистром МК РМ. Обмен информацией осуществляется по четы- рем двунаправленным шинам Ш0—ШЗ, шине МК и неоднородной управляющей шипе (табл. 2.23). Выдача информации на Ш0—ШЗ 60
возможна только с соответствующих регистров РО—РЗ при разре- шающем потенциале на входе S3. Управляет работой ИМС 8-раз- рядная МК, состоящая из двух независимых полей 1 и 2. Поле 2 (разряды МК6 и МК7) задает одну из четырех операций, которые выполняются над операндами в ЛУ (табл. 2.24), а адреса операндов и остальные функции ЛУ задает поле 1 (табл. 2.25). Как и в осталь- ных ИМС 583 серии по нарастанию S1 МК и ВК фиксируются на РМ и триггере'ВК (ТВК)- Если ВК = 0, то МК не выполняется, содержимое РА и РВ сохраняется, а на выходах Z и ШО—Ш1 устанавливаются нули. После дешифрации команды спад S2 фик- сирует информацию на Р( (i = 0,3), вследствие чего она при разре- шающем потенциале на S3 выдается на Шс- После выполнения МК по нарастанию S2 производится занесение информации в PAt 61
2.21. Временные параметры ИМС ИК1 Параметр НС Время: действия сигнала S3 = 0 > 200 опроса (запрета) 1г1 (/12) сигналом S3 информации на выходах ШД, ША и I < 150 Задержка сигналов на выходах ШД, ША и 1 относи- тельно спада S2 при разрешающем значении S3 <250 2.22. Структура МК прямой адресации Разряды МК Поле 1 Поле 2 0 1 2 ч 3 4 5 6 , 7 0 '1 1 0 0 1 1 1 2.23. Назначение выводов ИМС КП1 Номер вывода Наименование выводов 1—3 4 5, 6, 8я—13 7 14, 18, 22, 28, 32, 36, 40, 47 15, 19, 23, 29, 33, 37, 41, 46 16, 20, 26, 30, 34, 38, 42, 45 17, 21, 27, 31, 35, 39, 43, 44 24 25 и 48 Входы синхросигналов приема S1 и выполнения*' S2 МК и выдачи информации Выход Z признака нуля Шины МК ШМ, номера разрядов которых обра- зуют ряд 3, 2, 7, 6, 1, 0, 4 и 5 Вход сигнала выбора кристалла ВК Двунаправленная шина ШЗ » » Ш2 » » Ш1 » » ШО Шина нулевого потенциала Выводы для подключения источника питания и РВ[. Временная диаграмма работы ИМС КП1 показана на рис. 2.3, г, а временные характеристики — в табл. 2.26 (параметры f h — /5 ИМС КП1 определяются аналогично соответствующим параметрам ИМС ВМ1 й равны друг другу). МП К.П1 обеспечивает прием информации с шин данных в ре- гистры и выдачу данных с регистров в шины, коммутацию шин, ло- гическую обработку байтов, последовательный прием и одновремен- ную выдачу до четырех байтов данных, параллельный прием и вы- дачу четырехбайтных данных, сравнение байтов с выдачей призна- 62
2.24. Логические операции в ИМС КП1 Поле 2 Операция Пример (В = 00001111) 00 а V b 00111111 01 ab 00000011 10 а 00110011 11 ab V аЬ OOJ1HOO оля СК. ИМС выполняет ка их равенства (операция ab \/ ab и Z — 1) и поразрядное мажориро- вание данных с трех шин или реги- стров с записью результата в один или три регистра. Магистральный приемопередат- чик КП2 предназначен для комму- тации информации между двумя ти- повыми (для серии 583) шинами Ш1 и Ш2 и шиной ШЗ с повышенной нагрузочной способностью (табл. 2.27). Он состоит (рис. 2.3, 5) из двух регистров Р1 и P2Jvi схемы кс девять элементарных МК (табл. 2.28) в зависимости от комбина- ции сигналов на входах Sz- (i = Tjj. На остальных наборах сиг- налов Si МК либо вообще не выполняется, либо выполняется суперпозиция элементарных МК. Например, при всех Si — 1 ни одна из МК не выполняется, а при всех S, = О выполняются МК.1, Л1К2 и МК5, а именно: ШЗ: — Р1 у Р2 — 1111 V Ш2. Одновременно с выдачей информации на ШЗ выдаются контрольные разряды: К = А + А',, + Xj + X, + Х3 (mod 2) и А = К + Ш3 (0) + Ш3 (1) + + Ш3 (2) -ф-7//3 (3) (mod 2), где Х(-— цифра в i-м разряде Ш1 или Р1 при передаче информации с Ш1 или Р1, либо цифра в г-м разряде Ш2 или Р2 при передаче с Ш2 или Р2\ ШЗ (i) — цифра в ;-м раз- ряде ШЗ (i = 0,3). Формирование по такому правилу сигналов Л и /( в сочетании с двунаправленными выводами позволяет передаваемую на ШЗ ин- формацию сопровождать контрольным разрядом К, сформирован- ным по четности (А — 1) или нечетности (А = 0). При приеме ин- формации с ШЗ можно контролировать по сигналу А число единиц в коде и увеличивать разрядность путем каскадирования. Времен- ные параметры ИМС характеризуются задержками распростране- ния сигналов в Ш1, Ш2 и ШЗ (< J00 нс), сигналов Л (<150 нс) и сигналов А (<75 нс) относительно сигналов S/. Соединение вы- ходов ИМС при каскадировании для увеличения разрядности пока- зано на рис. 2 3, е. КП2 можно использовать в качестве усилителей сигналов (например, синхроимпульсов), так как опа допускает по выводам ШЗ соединение с линией длиной до 65 м (рис. 2.4, а). ЛАагистралъный приемопередатчик ВА2 предназначен для ком- мутации двух типовых для 583 серии шин Ш1 (входнаи) и Ш2 (вы- ходная с открытым коллектором) с двунаправленной шиной ШЗ с по- вышенной нагрузочной способностью и открытым емиттером (рис. 2,4, б). Он состоит из пяти изолированных друг от друга спаренных схем И—НЕ (рис. 2.4, в). При SI = 1 W3j= Ш1 и при S2 = 1 эта же информация передается на Ш2. При SI = S2 = 1 информа- ция с ШЗ передается на Ш2. Наименьшая задержка в ИМС состав- ляет 20 нс (цепь Ш1—ШЗ), а наибольшая— 35 нс. ЛАагистральный коммутатор ХЛ1 предназначен для коммута- ции четырех типовых для 583 серии шин, логической обработки бай- тов и построения мажоритарных восстанавливающих схем в систе- мах с трехкратным резервированием. Он состоит из четырех идентичных каналов, каждый из которых включает 8-разрядное логическое устройство ЛУ и регистр Р{ (i = 1,4) с двунаправленной шиной {1Щ) данных (рис. 2.4, г). Управляется ХЛ1 сигналами на шине управления ШУ, состоящей из двух общих для всех каналов 63
Й.25. Кодирование поля 1 в МК Номер мк Разряды МК о| 1 | 2 | 3 | 4 | 5 Содержание МК Пояснения 0 0 0 I J РВ7:=РА/ (ЛУ) PAJ Над содержимым РА1 и PAJ выполняется логическая опера- ция, определяемая полем 2 МК. Результат заносится в PBJ. Номера I и J указаны соответ- ственно .в разрядах 2 и 3, 4 и 5 МК. Если результат равен нулю, то Z = 1. В противном случае и во всех остальных МК Z =0 1 0 1 РВ.1-. = Ш1 (ЛУ) U1J 2 1 0 0 0 II1J-.=PBJ Содержимое PBJ записывается в PJ, который управляет U]J. Поле 2 в этой и последующих МК не влияет на результат 3 1 0 0 1 PBJ-f (ШС,ШД, ШЕ) Над кодами с трех различных шин (С Д ф Е =f= J) выполня- ется поразрядная мажоритарная операция 4 > 1 0 1 0 РВС:=РВД‘.= =РВЕ.—ДШС, ШД, ШЕ) МК4 выполняется аналогично МКЗ, но результат заносится в три разных регистра РВ. J указывает шину и регистр РВ, которые в операции не участ- вуют 5 1 0 1 1 ШС-.=РВС, ШД:=РВД. ШЕ-.^РВЕ На три разные шины выдаются коды с соответствующих им ре- гистров РВ (С Д Е J) 6 1 1 0 0 - РВС:=РВД:— =РВЕ:=[ (РАС, РАД, РАЕ) МК6 выполняется аналогично МК4, но данные поступают с трех разных регистров РА 7 1 1 0 1 PAJ-.^ШГ В PAJ записывается код с ШЗ 8 1'1 1 0 0 0 РА[.=Ш{ На все РА( принимаются коды с Ш1 (1 = 63) 9 1.1 1 0 6 1 LUi'-PBi На все ИЦ выдаются коды с РВ{ (i = 63) 10 1 1 1 0 1 0 Ш1: = Ш0, Ш2:=ШЗ Коммутация шин 64
Продо'лжение табл. 2.25 Номер мк Разряды МК Содержание МК Пояснения °|1 2 э 4 | 5 11 1 1 1. 0 I 1 шг.=шз, Ш2.—Ш0 12 1 I 1 1 0 0 ШГ.—ШО 13 1 1 1 1 0 1 Ш1:=ШЗ 14 1 I 1 1 1 0 Ш2:=Ш0 15 1 1. 1 1 1 1 Ш2.—ШЗ 2.26. Временные параметры ИМС КП1 Параметр Время: предустановки t-, и удержания ts данных на Входах ШО—ШЗ > 100 относительно спада S2 (МК коммутации) или нарастания S2 (МК записи информации в РА) предустановки данных иа входах ШО—ШЗ при МК > 150 записи информации в РВ Задержка: сигнала Z (1в относительно сигналов на входах ШО—ЩЗ «300 при разрешающем S3 сигнала Z относительно нарастания S1 при разреша- <: 400 ющем S3 сигналов t12 на выходах ШО—ШЗ относительно спада S2 « 250 сигналов /13 на выходах ШО—ШЗ относительно S3 « 150 2.27. Назначение выводов ИМС КП2 Номер вывода Наименование .выводов 1—4, 22—24 5, 11, 15, 21 6, 10, 16, 20 7, 9; 17, 19 8, 18 12 13 14 Синхросигналы S6, S5, SI, S7, S2, S4 и S3 Двунаправленная шина Ш2 с открытым коллектором » » mi » » » » » ШЗ с повышенной нагрузочной способностью и выходным каскадом типа эмиттерного повторителя (открытый эмиттер) Выводы для подключения источников питания Шина нулевого потенциала Двунаправленный вывод А признака ошибки (откры- тый эммитер) Двунаправленный вывод К контрольного разряда (открытый эмиттер) 3 6-451 65
сигналов 2? и So, и четырех независимых групп сигналов S[i, Sj2, Sf3 (i1,4), каждая из которых управляет Z-м каналом (табл. 2.29). В зависимости от значения сигналов So, Silt S;2, S;s i-e ЛУ позво- ляет выполнить 12 разновидностей шести типовых операций: Ш{- 0; Ш^. = Ш/: ZZZ,- = (П/р (ША); Ш . = Ш. V Ш-. = Ш, V V V шп и Ш-. ~ (Шг, mk, Шп), где i ф j #= k {1, 2, мае мсп мм е з мс гптъггттнтт ЖНТГТТ<ПТ1<1Т1>] жгпптъштатш-] и кптншншъ] ГЯДНШМШ?Р Чпмпмшъ гЧШНШЪШТ] I л Рис. 2.4. С6
2.28. Содержание МК в ИМС КП2 мк Содержание МК Условия выполнения St 2 3 4 . 5 G 7 1 Р1-. = Ш1 0 X X X X X 0 2 Р2-.—Ш2 X X 0 . X X X- 0 3 ШЗ--Ш1 X X X X 0 1 х 4 ШУ.=---Р2 X X х X 1 0 X 5 ШЗ-.-Р1 V Р2 X » X X 1 X 0 0 X 6 РР.=ШЗ X X х X 0 X 1 7 Р2: = ШЗ X X х X 0 1 8 Ш1: = Р1 X 0 X X X X 1 9 Ш2-.—Р2 X X X 0 X X • 1 3, 4); /2—мажоритарная функция. Перечень всех разновидностей выполняемых операций приведен в табл. 2.30. Например, если необходимо выполнить подразрядную конъюнкцию байтов с 1111 аШ2 и результат направить на ШЗ и Ш4, то применяют МК9, т. е. (S31, S32, S33, So) = (S41, S42, S43, So)=llOO. При этом на ЛУ1 и ЛУ2 подают сигналы, обеспечивающие выдачу на Ш1 и Ш2 кодаО, например (StI, S12, S13, So) = (S2t, 'i'22, S23, S0)=0010. Если это условие не выполнено, то на входы ЛУЗ и ЛУ4 подают коды, по- лученные путем поразрядной^ дизъюнкции данных с Р1 и шины Ш1, на которую поступает информация с внешних устройств (аналогично относительно Р2 и Ш2). Указанное замечание справедливо и для остальных МК- Быстродействие ХЛ1 определяется задержкой рас- пространения сигнала от к Ш(I #= /) и от ШУ к Ш^ равной 100 нс. 2.29. Назначение выводов ИМС ХЛ1 Номер вывода Наименование выводов 1 Вход сигнала R, фиксирующего информацию на Р,-(/ = 1,4). При R = 0 сигналы на входах и выходах Р, равны. По пере- ходу из 0 в 1 происходит фиксация информации на Р[. Последующие изменения управляющих сигналов при R = 1 не изменяют состояния Pi 2, Входы управляющих сигналов S„, Sn, 51й, S13, S21, S22, 19—31 ^23’ ^31» ^ЗЗ* ^41» ^4’J ’ ^43 Двунаправленные шины Ш1 (выводы 3, 10, 11, 18, 32, 39, 3—18, 32—47 40, 47), Ш2 (выводы 4, 9, 12, 17, 33, 38, 41, 46}, ШЗ (вы- воды 5, 8, 13, 16, 34, 37, 42 , 45) и Ш4 (выводы 6, 7, 14, 15, 35, 36, 43, 44) 24 Шина нулевого потенциала 48 Для подключения питания 2.4. ПРОЦЕССОР ВМ1 СЕРИИ 584~ Серия 584 выпускается в виде модификаций К584, КР584 и состоит из ИМСВВ1, ВГ1, ВМ1, ВУ1, и КП1, которые раз- ' мещены в корпусе 244.48-8 или 2123,40-1, 3* •67
2.30. Логические операции в ИМС ХЛ1 мк Sil (1=1,4) Содержание МК 1 | 2 |'3. к Ull:= Ш2:^ Ш3:= Ш4:= 0 0 0 X 1 0 0 X 0 0 0 0 0 0 у 0 0 X 0 0 0 2 0 0 1 1 Ш4 Ш4 Ш4 ШЗ 3 0 1 0 1 ШЗ ШЗ Ш2 Ш2 4 0 1 1 0 (ШЗ) (Ш4) (ШЗ) (Ш4) (Ш2) (Ш4) (Ш2) (ШЗ) 5 0 1 1 1 Ш3\/ Ш4 ШЗДШ4 Ш2\/Ш4 Ш2\/ШЗ 6 1 0 0 1 Ш2 Ш1 Ш1 Ш1 7 1 0 1 0 (Ш2) (Ш4) (Ш1) (Ш4) (ЦП) (Ш4) (Ш1) (ШЗ) .8 1 0 1 1 Ш2у Ш4 Ш1\/Ш4 Ш/уШ4 Ш1\/Ш3 9 1 1- 0 0 (Ш2) (ШЗ) (ЦП) (ШЗ) (Ш1) (Ш2) (Ш1) (Ш2) 10 1 1 0 1 Ш2\/ ШЗ- Ш1\]ШЗ Ш1\/Ш2 Ш1\/Ш2 11 1 1 1 0 шгушзу Ш1уШЗу Ш1ЦШ2\/ Ш1\/Ш2\/ \/Ш4 УШ4 \/Ш4 \]ШЗ 12 1 1 1 1 /, (Ш2, ШЗ, f2 (Ш1, ШЗ, [2(Ш1,Ш2, Ь(Ш1,Ш2, Ш4) Ш4) Ш4), ШЗ) Четырехразрядный процессор ВМ1 (рис. 2.4, ^состоит из ЗУ регистров общего назначения РОН, АЛУ с мультиплексорами МА и МВ, рабочего РР и дополнительного РД регистров, мультиплек- соров адреса Ма и данных МД и блока местного управления ЕМУ, включающего в себя комбинационную схему КС и регистр операций РО. Наименование и назначение выводов ИМС приведено в та л. 2.31. Запоминающее устройство содержит восемь РОН, адресуемых 3-разрядным кодом от Одо 7. Регистр с номером 7 имеет цепи счета, с помощью которых его содержимое может увеличиваться на 1 или 2, и используется я качестве счетчика команд СК. Обработка ин- формации осуществляется в АЛУ, которое состоит из 4-разрядного сумматора и логических схем, обеспечивающих поразрядную обра- ботку данных и блокировку цепей распространения переноса меж- ду разрядами. Работой АЛУ управляет 4-разрядный код (Qs Qi Qi Qo)> который настраивает АЛУ на выполнение одной из 16 операций (табл. 2.32). При Q3 ~ 1 цепи переноса сумматора блокируются и'сигналы ((=0,3) на выходе АЛУ определяются в соответствии с выполняемой поразрядной логической операцией. При Q:t = 0 цепи переноса не блокируются и на сумматоре вы- полняется одна из восьми арифметических операций с учетом воз- никающих между разрядами переносов у,-. Используя указанные операции, можно выполнять сложение и вычитание двух чисел А и В, поступающих с выходов МА и’ МВ, увеличивать их на еди- ницу и инвертировать. Например, при управляющем коде 0010 на сумматоре суммируется прямой код числа А с инверсным кодом числа В с учетом возможного переноса q0 в младший разряд, т. е. выполняется операция А—В—q0. В табл. 2.32 в графе «Примеры» приведены результаты выполнения указанных операций над числа- ми А=1011 и В=0110. Пятая (старшая) цифра в указанных резуль- татах соответствует значению переноса из старшего разряда сум- матора, ' *•
2.31. Назначение выводов ИМС ВМ1 Номер вывода Наименование выводов 1—5 и 44—47 6, 9, 11, и 12 Входы для ввода МК, соответствующие позициям D, D„, Si, S„ Q3, (?2, Qt и Q„ MK Двунаправленные выводы, обеспечивающие последователь- ный ввод и вывод информации с регистров РД и РР для реализации сдвигов различных типов (рис. 2.4, ж—л) в МП, состоящем из нескольких ИМС. При этом выводы 6, 9, 11 и 12 отдельных ИМС соединяют по схеме, показанной на рис. 2.4, е 7, 24 8,18,19, .32, 38, 42 и 43 10, 23 и 27 Шины нулевого потенциала ’ Неиспользуемые выводы Многофункциональные выводы, назначение которых опреде- ляется кодом позиций П1, ПО на входах 26 и 25, а именно: 10 — выход старшего разряда РДЗ регистра РД при П1 = 1 или выход РДО при П1(П0)=\\ 23 — выход инверсного сигнала переноса счетчика команд (РОН с номером 7) при П1 = 0 или выход старшего разряда шины В при П1 = 1; 27— вход указателя величины приращения содержимого счетчика команд (при 1 на входе 27 содержимое счетчика команд увеличивается на 2, а при 0 — иа 1) при П1 (ПО) — 1 13 14—17 20, 21, 28, 29 22 25 и 26 или выход старшего разряда шины А при П1 = 1 Вход сигнала переноса в АЛУ q0 Выходная шина данных ШД Входная шина данных ВШД Счетный вход (инверсный) счетчика' команд Входы ПО и П1 кода позиции, которую занимает ИМС при увеличении разрядности МП путем каскадирования. На ИМС, расположенные на младшей, промежуточной или старшей позициях, должны подаваться соответствующие им коды (П1, ПО), а именно: 01, 00, 10. Старшая позиции может задаваться как кодом 10, так и кодом 11. В первом случае двойной арифметический сдвиг осуществляется по схеме 30 31 и 48 с двумя знаковыми разрядами» а во втором — с одним Вход для подачи синхронизирующего сигнала СС Выводы, соединенные между собой и используемые для под- ключения источника питания 33, 34 36 и 37, . 35 Выходы шины адреса ША Вход сигнала выдачи адреса ВА со счетчика команд СК. При ВА = 1 (высокий уровень) на ША поступает содержи- мое СК 39 и 4 О Выходы сигналов распространения (39) и формирования (40) группового переноса 41 Выход сигнала переноса из АЛУ (qt) G9
2.32. Операции в АЛУ QiQi Qo Q3^D. Арифметические операции Qa=1. Логические операции Примеры Примеры «о=0 | «0=1 ООО 1 0 1111 I 0000 ab 0010 0 0 1 а + Ь 0 1010 0 1011 ab у ab 1101 . 0 1 0 а-\-Ъ 1 ОЮО 1 0101 ab V ab 0010 0 1 1 а + Ъ 1 0001 1 0010 ab 0100 1 0 0 ь 0 оно 0 0111 ab 1001 1 0 1 ь 0 1001 0 1010 а V £> 1011 1 1 0 а 0 1011 0 1100 а V Ь оно 1 1 1 а 0 0100 0 0101 а У b 1111 Мультиплексоры МА, МВ, МД и Ма применяют для подклю- чения к выходному каналу одного из входных каналов передачи данных. Рабочий регистр РР используется как регистр результата, Полученного при обработке данных в АЛУ, а дополнительный ре- гистр (регистр расширения) — при обработке адресов или в каче- стве расширителя РР при работе со словами двойной длины. Управление работой ВМ1 осуществляет ЕМУ в зависимости от поступающих на ШУ внешних управляющих сигналов и 9-разряд- ной микрокоманды, которая преобразуется КС в 20-разрядный код операции и запоминается на регистре РО (рис. 2.4, 5), сигналы на выходе которого являются внутренними управляющими сигналами УС. Микрокоманда делится на О, Д и S поля длиной в 4, 2 и 3 разря- да соответственно. Обычно указанные поля задают выполняемую в АЛУ операцию (табл. 2.32), способ примененной в МК адресации и номер участвующего в операции РОН. В некоторых МК указан- ные поля применяют по другому назначению. В табл. 2.33 приве- ден список всех выполняемых МП микрокоманд. При выполнении этих МК на ША выдается содержимое СК, если ВА=1, или содер- жимое РД, если В А — 0, и выполняется МК типа ЯИООХ, или содержимое РР в остальных случаях. Все МК выполняются за один период синхронизирующего сигнала СС, после чего резуль- тат фиксируется на внутренних регистрах ИМС. Особенностью схем- ной реализации регистров ИМС является то, что все они выполнены на D-триггерах, переключающихся по нарастанию СС. Вследствие этого передача на ИМС операнда i-й МК (О/) должна запазды- вать на один такт по отношению к передаче i-й МК (МК;) и происхо- дить одновременно с передачей (i + 1)-й МК (рис. 2.5, г). Микрокоманда, поданная на входы ИМС после очередного пере- ключающего перепада СС, преобразуется КС в 20-разрядный код операции и поступает на входы РО. По нарастанию следующего СС этот код фиксируется на РО и настраивает АЛ У и мультиплек- * соры на выполнение соответствующих операций над поступившими с ВШД и внутренних регистров операндами. Очередной переключа- ющий перепад фиксирует образовавшийся к этому времени резуль- тат на внутреннем регистре (па рис. 2,5, г моменты приема резуль- тата г-й операции обозначены как ПР{). В ряде случаев (например, 70
2.33. Микрокоманды ИМС ВМ1 Операция Операнд Код операции А в с QsQaQiQo Д^До Операции АЛУ РОН РР РОН н 00 у (С= ДхВ) РОН рр рр н 01 N вшд РР ШД н 11 000 вшд рр рр н 11 001 вшд рр РД н 11 100 вшд РД рр н 11 011 вшд РД РД н 11 110 вшд РД шд н 11 111 Сложение РОН рр РД ООП 10 'N (С = Д+В+?) РОН вшд рр 0100 10 N РОН ВШД РД 0101 10 N РОН вшд РОН 0111 10 N РОН РД, РД 1100 10 N РОН РД РД 1101 10 N вшд рр РД ООН 11 010 вшд рр шд 0111 11 010 вшд РД рр 1100 . 11 010 вшд РД РД 1101 11 010 Счет (C=B\-q) 0 РД РОН 1110 10 N 0 РД шд 1110 11 010
Пояснения Над операндом А, хранящимся в РОН, номер кото- рого задан в S поле или поступающим с ВШД, а опе- рандом В, хранящимся в РР или РД, выполняются в АЛУ операции, код Н которых задан в Q поле. Результат С операции поступает на ШД или в РД, или в РР, или в РОН, номер которого N Над операндами А и В, поступающими с РОН или с РР, или с РД, или с ВШД, выполняется операция сложения с учетом переноса q, поступающего в млад- ший разряд ИМС. Результат передается В РД, или РР, или РОН, или ШД. Номер У РОН указан в по- ле S. В двух последних операциях А =0, и В может передаваться с РД в РОН или ШД без изменения при 9=0 или с приращением на 1 при q = Г
Операция Операнд Код операции Л в Л1Д, SgSiSe Пересылки РОН шд 0000 10 N (4->С) РОН РД 0001 10 N вшд — РОН 1111 10 N ВШР\ РР оно 10 X вшр] — РР оно 11 010 ВШД — РД ' 0001 и 010 ВШД\ — шд 1111 11 010 ВШД! — шд 0000 и 010 Вычитание с вшд РР РР 1000 11 010 двойным никли- РОН РР РР 1000 . 10 N ческим сдвигом влевб (С = = ЛДЦС (Д + + в + <?)) 1,
Продолжение табл. 2.33 Пояснения Операнд А, поступающий с ВШД или с РОН, номер которого /V, передается в ШД, или РД, или РОН, или РР. Символ X означает произвольный 3-разряд- ный код. Пересылки ВШД-+РР и ВШД-+-ШД осу- ществляются двумя МК, отличающимися друг от дру- га кодами операций и отмеченными фигурными скоб- ками Над обратным кодом А операнда А, поступающего с ВШД или РОН, номер которого N, и операндом В,х хранящимся в РР, выполняется операция сложения с учетом переноса q. Результат записывается в РР со сдвигом на один разряд по правилу левого двой- ного циклического сдвига (ЛДЦС), соединение регист- ров РР и РД при котором показано на рис. 2.4, ж. Вследствие этого цифры со старших разрядов РР и РД старшей ИМС {МС С) записываются в младшие разряды соответствующих регистров младших ИМС (ИС Л4). Промежуточные ИМС {МС П) соединяются обычным для левого сдвига способом
Операция Операнд Код операции л в с OaQsQiQo Д1До SaSiSo Вычитание с вшд рр рр 0010 11 010 двойным ариф- метическим сдви- гом вправо (С = = ПДАС (Л + + В + <?)) РОН рр рр 0010 10 N Сложение с вшд рр рр 1001 11 010 двойным цикли- ческим сдвигом влево (С = = ЛДЦС(Л + + В + о)) РОН рр рр 1001 10 .-V Сложение с вшд рр рр 1011 11 010 двойным ариф- РОН рр рр 1011 10 N метическим сдви* 0 рр рр 1010 10 X гом вправо (С — = ПДАС (Л + + B + q)) 0 рр рр 1010 11 010
Продолжение табл. 2.33 Пояснения Отличие данной операции от предыдущей состоит в том, что сдвиг результата осуществляется по пра- вилу двойного арифметического сдвига вправо (ПДАС). Соединение регистров при таком сдвиге показано на рис. 2.4,з. Цифра в старшем (знаковом) разряде РР сохраняется, цифра из младшего разряда РР пере- ходит в старший разряд РД, а цифра из младшего разряда РД теряется Отличие данной операции от вычитания с двойным циклическим сдвигом влево состоит в том, что в дан- ной операции участвует прямой код числа А Отличие данной операции от вычитания с двойным арифметическим сдвигом вправо состоит в .том, что в данной операции участвует прямой код числа А
Продолжение табл. 2.33 Операция Операнд Код операции Пояснения А в с QeQiQiQo Д1Д. SgSi So Счет со сдвигом ПАС (В + q) 0 РР РР 0000 11 101 К младшему разряду содержимого РР прибавляется перенос q. Результат со сдвигом на один разряд ЛАС (В 4- <?) 0 РР РР 0010 11 101 фиксируется на РР. При этом сдвиг осуществляется ПЦС (В + q) 0 РР РР 0001 и 101 по правилу левого арифметического (ЛАС), цикли- ПЦС (В + q) 0 РР РР 1001 и . 101 веского (ЛЦС) или логического (ЛЛС) сдвигов или ЛЦС (В + <?) 0 РР РР ООН 11 101 правого арифметического (ПАС), циклического (ПЦС) ЛЦС(В + (?) 0 РР РР 1011 11 101 или логического (ПЛС) сдвигов. Передача информа- ПЛС (В + q) 0 РР РР 1000 11 101 ций при указанных сдвигах показана на рис. 2.4, и л лс {в + q) 0 РР РР 1010 11 101 Счет с двойным сдвигом: ПДАС(В + <?) 0 РР РР 0100 11 101 К младшему разряду содержимого РР прибавляется перенос q. Результат со сдвигом на один разряд фик- сируется на РР. При этом сдвиг осуществляется по правилу правого двойного арифметического (рис.2.4, з) ЛДАС (В + q) 0 РР РР 0110 11 101 циклического (рис. 2.4 к) или логического (рис. 2.4, и) ПДЦС (В + <?) 0 РР РР 0101 11 101 сдвигов или левого двойного арифметического ПДЦС (В + <?) 0 РР РР 1101 11 101 (рис. 2.5, а), циклического (рис. 2.4, ж) или логического ЛДЦС (В + q) 0 РР РР 0111 11 101 (рис. 2-5, а) сдвигов. При этом двойные арифметиче- ЛДЦС (В + ?) 0 РР РР 1111 11 . 101 ские сдвиги в зависимости от сигнала на входе ПО ПДЛС (В + <?) 0 РР РР 1100 11 101 выполняются с одним (ПО = 1) или двумя (ПО = 0) ЛДЛС (В + q) 0 РР РР 1110 11 101 знаковыми разрядами. Во втором случае сдвиг осуще- ствляется по схеме, показанной на рис. 2.5, бив. На всех схемах верхний регистр является РР, а нижний — РД
поМКШЮОО) результат на регистрах не фиксируется, а выдается на ШД по мере его формирования.. Независимо от работы АЛУ и мультиплексоров функциони- рует счетчнк команд СК, в качестве которого используется РОН7. По каждому нарастающему перепаду СС (рис. 2.5, г) СК получает приращение, величина которого зависит от позиции ИМС и сигна- лов на входах 22 и 27 (табл. 2.34). В промежуточной или старшей позиции приращение определяется только сигналом на входе 22 (выход 27 в этом случае является выходом старшего разряда шины Л). При использовании СК в качестве РОН (например, при засыл- Рис. 2.5. 75
т 2.34. Приращение кода СК в ИМС В.М1 Позиция ИМС Сигна- лы на входах Прира- щение кода в СК 22 27 Младшая П1 (П0)= = 1 1 X 0 0 0 1 0 1 2 Промежуточная 1 X 0 или старшая 0 X 1 ке в СК кода) для правильной работы ИМС на его инверсный счетный вход (вывод 22) сле- дует подавать единицу, так как в противном случае может про- изойти сбой из-за одновремен- ного выполнения несовмести- мых МО приема и прираще- ния кода. ' Сложные арифметические операции (умножение, деление и др.) ^реализуются в МП про- граммным путем. В табл. 2.35 приведен микроалгоритм умно- жения с младших разрядов множителя и сдвигом суммы частичных произведений двух 4-разрядных чисел на одной ИМС, на которую подаются сигналы П1=П0=1, а в табл. 2.36 представ- лена цифровая ,диаграмма состояний основных узлов ИМС при умножении чисел 11 и 13 по указанному микроалгоритму. В каче- стве единицы времени при построении цифровой диаграммы взят такт, равный одному периоду СС, отсчитанному от начала высокого уровня, возникшего после переключающего перепада. Вследствие этого в такте 0 на ИМС подается MKD, код которой в течение такта О преобразуется КС и поступает на входы РО. Завершается такт О подачей на ИМС переключающего (нарастающего) перепада, по которому преобразованный код МК фиксируется на РО. В первом н последующих тактах вводится и принимается на РО очередная МК и выполняется введенная в предыдущем такте МК. Аналогич- ным образом можно составить программу деления двоичных чисел. Для правильного функционирования МП, состоящего из не- скольких ИМС, их выводы должны быть соответствующим образом соединены. На рис. 2.4, е показано соединение выводов 6, 9, Н и 72, обеспечивающих передачу информации при сдвигах. В зависимости от реализуемого сдвига (табл. 2.37) к указанным выводам подклю- чаются выходы Вых. или входы Вх. младших РР0, РД3 или старших РР3, РД3 разрядов регистров РР или РД, либо константа 0. При реализации некоторых сдвигов отдельные выводы не используются (например, вывод 12 при правом арифметическом сдвиге). Так как передача информации между ИМС осуществляется в инверсном ко- де, то на выводах 6, 9, 11 и 12 можно наблюдать инверсные значения сигналов, указанных в табл. 2.37. Например, на выводе 6 при ле- вом двойном логическом (ЛДЛ) сдвиге будет сигнал 1, а при левом циклическом (ЛЦС) сдвиге — инверсное значение цифры, храня- щейся в РР3. Быстродействие ИМС определяется задержками в рас- пространении сигналов, значения которых приведены в табл. 2.38. 2.5. МИКРОПРОГРАММНОЕ УПРАВЛЕНИЕ В МИКРОСХЕМАХ СЕРИИ 584 Блок микропрограммного управления ВУ1 (рис. 2.5, д) осуще- ствляет формирование адресов, по которым из ПЗУ микропрограмм извлекаются МК. Он состоит из 16- и 14-разрядпых регистров ко- манд РК и микрокоманд РМК, блоков местного управления Б МУ, формирования и модификации адресов МК БФА п БМА и регистров стека БРС. В свою очередь, БРС состоит из двух 10-разрядных 76
2.35. Микроалгоритм умножения р. <ь S £ S Содержание и код МК Пояснения 0 0-+РР 0000 01 00Q Сброс в 0 РР путем выполнения опера- ции 0000 в АЛУ при q = Г 1 ВШД рд 0001 11 010 Засылка множителя ъ РД с ВШД ' 2 ВШД-+Р01Ш 1111 10 000 Засылка множимого в РОН с номером 0 с ВШД 3 ВШД-+ Р0Н1 1111 10 001 Засылка дополнительного кода числа —4 в РОН с номером 1 для организации в нем счетчика сдвигов 4 ПДАС (РОНО-Д + PP + q) 1011 11 000 Сложение с ПДАС, с помощью которого формируется очередная сумма частичных произведений,- Операция должна ныпол- НЯТЬСЯ ТОЛЬКО при _РД9 ~ 1. При РДо — = 0 вместо МК4 должна выполняться МК5 5 ПДАС (PP + q) 0100 11 101 Сдвиг суммы частичных произведений на один разряд вправо. Операция должна выполняться после МКЗ при Рдо — 0. При РД0 = 1 вместо МК5 после МК4 должна выполняться МК6 при q = 0 6 РОН\ + t-*POH\ ОНО 00 001 Уменьшение на 1 содержимого счетчика сдвигов путем прибавления 1 к храня- щемуся в нем дополнительному коду. Наличие переноса из АЛУ означает, что при выполнении МК7 на ШД и ША бу- дут выдаваться старшие (из РР) и мл >д- шие (из РД) разряды результата, а от- сутствие переноса означает, что умно- жение следует продолжать путем пере- хода на начало цикла: к МК4. ее-тл РД0=1, или МК5, или РДП = 0. /л.1 МК6 q = 1, а для МК7 - q = 0 7 РР -> ШД 0100 11 000
2.36. Цифровая диаграмма умножения числа П на 13 Такт "Но. мер мк вшд РР РД Р0Н1 Пояснения 0 0 —. — — ♦ Ввод MK0 1 1 0000 0000 — — Ввод МК1 и выполнение MK0. 0-+-РР 2 2 1101 0000 1101 —• Множитель с ВШД завылается в РД 3 3 1011 0000 1100 — Множимое -+РОН0 4 4 1100 0000 1101 1100 —4-+РОН1. Так как РД„ = 1, то вводится МК4 5 6 ,0000 + 1011 1011 0101 1101 1110 1100 Ввод МК6, так как РДа = 1. Суммирование. Сдвиг 6 7 0101 1110 , 1100 + 1 01101 POHi + q-^POHl. Анализ переноса из АЛУ и РД0. q = 1 7 5 0101 1110 1101 Так как перенос из АЛУ равей 0, а РД0 = 0, то ввод МК5 8 6 . 0101' . 0010 1110 1111 1101 Сдвиг. <?=0 I
9 7 0010 1111 . 1101 + 1 OHIO РОН1 РОН1, q = 1. Анализ переноса из АЛУ и РДа 10 4 0010 1111 1110 Ввод МК4 11 6 ' 0010 1011 1101 • оно 1111 1111 1110 <7 = 0 Суммирование, сдвиг 12 7 оно 1111 , 1110 + 1 01111 РОН 1 -0 qРОН 1, q=l. Анализ переноса из АЛУ и РД» 13 4 Ввод МК4 14 6 оно 1011 10001 1000 1111 1111 1111 9 = 0 • Суммирование, сдвиг 15 7 1000 1111 , 1111 + 1 10000 РОН 1-0 q->-РОН 1, q-= \. Анализ переноса из АЛУ и РД„ * 16 1000 1111 Так как перенос из АЛУ равен 1, то конец операции. Выдача результата q = 0 >
g 2.37. Передача информации в ИМС при сдвиге Позиция ИМС. Номер вывода Тип сдвига ЛЛ, ЛА лц лдл лдц ЛДА1 ЛДА2 ПЛ ПА' пц пдл пдц ПДА1 ПДА2 Старшая 12 0 Выход • РР3 Выход РДЯ Выход РДг Вход РР3 « — Вход РР3 — 6 0 Выход РР3 0 Выход РР, 0 — Вход РД3 Вход РД2 Старшая и проме- жуточная 11 Вход РР0 ч Выход РР0 9 — Вход РД0 Выход РД0 Промежуточная и младшая 12 Вход РР3 . Выход РР8 6 Выход РДа — Вход РДа Младшая 11 Вход РР0 0 Выход РР0 0 Выход РД0 9 - -.1 Вход РД3 Выход РР0
2.38. Задержки в МП серии 584 регистров адреса МК РАМ, каждому из которых может пе- редаваться управление ШАМ. Назначение выводов ВУ1 при- ведено в табл. 2.39. Внутренние управляющие сигналы ВУС в ВУ1 выраба- тывает Б М У, режим работы которого задают коды в регист- рах РМК и РК и управляю- щие исинхронизирующие сиг- налы УСС Ml, М2, ВП, S1 и S2, Зафиксированный в РМК код МК содержит ф, А и Р по- ля. Двухразрядное Ф поле со- вместно с сигналами Ml и М2 Путь распространения сигнала (рис. 2.4, д) Задерж- ка, мкс ВШД, МА, МД, ШД 0,75 ВШД, МА, АЛУ, МД, 1,4 ШД В А, ЗУ РОН, Ма 0,48 q0, АЛУ, МД, ШД 1,2 Яо* АЛУ, q± 0,8 ШУ, КС, РО 0,2 ВШР, МВ, АЛУ, МД, 1.5 шд определяет алгоритм работы БмА, код с выхода которого фиксиру- ется в рабочем РАМ и выдается на ШАМ для выборки из ПЗУ сле- дующий МК (табл. 2.40). Десятиразрядиое А поле совместно с Ф по- лем и кодом из РК определяет алгоритм работы БФА (табл. 2.41), в которой символы X и —означают, что данные разряды в соответ- ствующих ситуациях ие влияют на символ, генерируемый БФА адрес С; символами Bi (I = 0,9) обозначены цифры в соответствующих раз- рядах РДМ; символ х означает, что при выполнении соответствую- щей МК происходит передача управления ШАМ с одного РАМ на другой, что необходимо, например, при переходе на микроподпро- грамму и возврате к основной микропрограмме. Двухразрядное Р поле (Р2, Р1) задает режим работы - РК и ШД в соответствии с табл. 2.42. В ВУ1 реализована возможность прерывания на микропрограм- мном уровне от трех источников: включения питания, сбоя пита- ния и сигнала на входе ВП. Сигналы прерывания по первым двум причинам вырабатываются внутри ИМС. Если два или три сигнала на прерывание появятся одновременно, то они воспринимаются ИМС в порядке приоритета. Высший приоритет имеет сигнал вклю- чения питания, а низший — сигнал на входе ВП. При подаче пита- ющего напряжения ИМС выдает адрес 0000000000 на ШАМ. Для контроля питания по сбоям (кратковременное исчезновение питания) один из входов (25 или 48) подключается через конденсатор С к це- 2.39. Назначение выводов ИМС ВУ1 Номер вывода Наименование выводов 1,2, 20—23, - 26-33 3—18 19, 47 24 25, 48 34, 35 Шина микрокоманд ШМК, предназначенная для ввода в ИМС 14-разрядной МК Двунаправленная шина данных ШД Входы синхронизирующих сигналов S1 и S2 Шина нулевого потенциала Выводы для подключения источника питания Входы Ml и М2 для ввода кода модификации 36 37—46 адреса МК Вход прерывания на микропрограммном уровне ВП Шина адреса микрокоманд ШАМ 81
2.40. Алгоритм работы FMA Ф2 Ф1 М2 Ml Выполняемые действия о о 1 1 О С + 1 1 С— 1 О С+ 2 1 С В РАМ заносится измененный на ±1, ±2 или О код С, поступающий с БФА и сформиро- ванный из разрядов старшего байта РК О 1 1 О А 1 1 4 — 1 О А + 2 1 А В-4- 1 В- 1 1 1 0 1 О 1 С+1 С— 1 С + 2 С В РАМ заносится измененный на ± 1, -j-2 или О код А, поступающий с поля А РМК В РАМ заносится измененное на ±1 содер- жимое РАМ В РАМ заносится измененный на ±1, +2 или 0 код С, поступающий с БФА и сформи- рованный из разрядов младшего байта РК ни нулевого потенциала (рис. 2.5, е). Путем подбора емкости кон- денсатора С можно устанавливать, различное максимальное время t исчезновения питания, воспринимаемое ИМС как сбой. Например, при Rn = 76 Ом (суммарный ток по входам 25 и 48 равен 100 мА) и С = 0,025 мкФ t = 1 мкс, а прн С = 0,25 мкФ t = 10 мкс. При сбоях питания ИМС на ШАМ выдает код 1110000000. Указан- ные коды при включении и сбоях питания Для надежности выдаются в течение четырех тактов. Переключение конденсатора к другой шине питания приводит к тому,*что при сбоях генерируется код 0000000000, а при включении — код 1110000000. При объединении шин 25 и 48 сбои и включение питания приводят к генерации на ШАМ кода 0000000000. Сигнал на входе ВП обеспечивает выдачу иа ШАМ кода 1111111111. Синхронизация работы ВУ1 осуществляется сигналами S1 и S2. По нарастанию S1 происходит прием МК в РМК. Сигнал S2 имеет два рабочих перепада: по нарастанию происходит прием сформированного в Б МА адреса на РАМ БРС, а по спаду — прием кода с ШД в РК. Временная диаграмма работы ИМС приведена на рис. 2.5, ж. Код МК устанавливается за время /7 до нарастания S1 и удерживается это же время после него. Через время ts, необходи- мое для приема и дешифрации МК (в том- числе и Р поля),- коман- ды принимаются на РК, а через время ts + фиксируется на РАМ адрес следующей МК. Через время /5 по этому адресу происходит обращение к ПЗУ. Выбрав очередную МК из ПЗУ (tn — цикл обра- щения к ПЗУ), через время /7 можно принимать ее на РМК- Сле- довательно, для времени /0 выполнения МК справедливо соотноше- ние: tfl + ts + /4 + t5 + tn + t7. Временные параметры приведены в табл. 2.43. Время t0 можно значительно уменьшить и довести его до величины t0 — ts + ts + /4, если совместить во времени выборку из ПЗУ очередной МК и фор- мирование адреса следующей МК. В этом случае синхронизация 82
выполняется одним сигналом S при подаче его как на вход S1, так и на вход S2 (рнс. 2.5, з). Быстродействие ПЗУ должно быть достаточным для организа- ции такого режима работы, а именно: tn + 4 + t, < t0. Если это не выполняется, то время выполнения одной МК определяется ве- личиной t п+ ts + Кроме того, если при выполнении какой-либо МК возникает ветвление (условный переход), то его можно учесть только в следующем цикле, так как в данном цикле выбирается МК по уже сформированному адресу. Рис. 2.6. 83
2.41. Алгоритм работы БФА Разряды старшего (при Ф2 (Ф1) =1) или младшего (при Ф2 (Ф1) = 1} байта команды Генерируемый ^ФЛ адрес Дч Де Дб Д4 Д» Да Д1 До С, С, с, с. с, с. с, С2 С] Ср — л„ -4s 4Ь А, A3 А2 Аг Ао Д] Дз ? 1 л* ? 1 л4. A3 А2 л» Дз Дг — 1 As 1 1 Дх 1 0 1 х | |Ь 1 A3 л3 Л2 Ло — < 1 Л8 Дз д2 2? 1 До A3 А2 Лх Ло — л„ Л8 Д, Дб д6 Д4 Аз л2 Лх Ло — 1 Л8 в, Ве В;, Bt As л2 Лх Ло — 1 э- Ла Дз Дз До Дз Л2 Лх А» —
,1 До До До До До До До А* и
2.42. Режимы работы РК и ШД Р2 Р1 Выполняемые действия О о 1 О Режим хранения информации в_7^ 1 Код с ШД записывается в РД X Младший байт с РК передается при Р1 = 0 в младшие, а при Pl = 1 — в старшие разряды ШД. На неисполы зуемые разряды ШД выдаются нули 2.43. Временные параметры ИМС ВУ1 Параметр f.t НС Время: цикла действия сигнала S2 = О действия /2 сигнала S2 = О образования t3 кода в БФА от момента приема коман- ды в РД модификации tt адреса в БМА Задержка: в выдаче адреса относительно нарастания S2 в выдаче кода с РК в ШД относительно нарастания SI t6 Время: предустановки и удержания МК относительно нарастания S1 и команды относительно спада S2 дешифрации МК tg > 500 > 100 > 300 < 150 < 150 < 30 «50 > 1 0 <200 Для построения устройства управления микроЭВМ, кроме ВУ1, необходимо иметь память микропрограмм, которую можно реализовать, например, на основе ИМС 556 серии.'При этом МК, управляющая работой всей микроЭВМ, в наиболее общем случае должна иметь семь полей: 9-разрядное поле кода операции МП, поле управления входами МП, поле опроса признаков (условий) регистра состояний, поле управления ЗУ и устройством ввода-вы- вода, поле управления входами ВУ1 и поле управления входами ИМС ВП. 2.6. КОНТРОЛЛЕР СОСТОЯНИЙ ВГ1 СЕРИИ 584 Контроллер состояний ВП предназначен для хранения и об- работки .признаков ветвлений программ и микропрограмм, битов состояний микроЭВМ, отсчетов временных интервалов и логической обработки данных. Контроллер ВП (рис. 2.5, и) состоит из 8-разрядного регистра состояний PC, триггеры которого обозначены символами и (г = 6,3), коммутатора КП и триггера ТП признаков, блока ьб
В.44. Назначение выводов ИМС ВГ1 Номер вывода Наименование выводов ИМС для корпуса 244.48-5 1,37—43. 46, 47 2 Шина микрокоманд ШМК, предназначенная для ввода в ИМС 10-разрядной МК Многофункциональный вывод, служащий для выдачи при- знака «Нулевой код па ШДи и наращивания разрядности при использовании нескольких ИМС 3—18 19, 21 20, 22 _ 23 Двунаправленная шина данных ШД Счетные входы ВО, В1 таймеров Входы q0 и «/j переноса таймеров Вход сигнала приоритета П. Сигнал П — 0 обеспечивает независимо ог поданной МК выдачу иа ШД содержимого таймеров 24 25—34 Шина нулевого потенциала « признаков ШП, служащая для ввода в ИМС внеш- них признаков По, . . . , П9 35, 36 44, 45 Входы синхронизирующих сигналов S1 и S2 Выходы Ml, МО кода модификации адреса в ИМС ВУ1 или ВМ1 48 Шина питания 2.45. Перечень МК для ИМС ВС1 Поле МК Содержание МК. Пояснения Ф | Р2 р/ I РО 0 р То1-. — П0. В выбранные Т полем (Ts, Т2, 7\, То) триггеры ТВ1 (/ = 6,3) регистра PC записывается зна- чение признака Пр (р = 0,6). Триггеры Т0(- считают- ся выбранными, если в i-м разряде Т поля нахо- дится 1 (Т{ = 1). Номер Р признака задается кодом в Р поле, например, еслн Т = 1100, Р — 110, то это означает, что значение признака П9 записыва- ется в триггеры Твз, Т02 и Тп. При этом Alj = = Мо= 1 1 - 1 °" Генерация кода модификации (М^/И,,) по правилу = Пр и /Ио — (Пр) \/ То{ (Пр). Выбор / и Пр производится так же, как и в МК при Ф = 0. Если в Т поле задано несколько 1, то Tai в выражении для Мо следует заменить дизъюнк- цией сигналов с выбранных триггеров, например, при 7=1100 (703 V Т02 V 701) (Пр) V V (Т’оз V T'o? V Ги) (Пр) 2 0 0 0 712 : = /?,. Запись признака ZZ7 в триггер Т12 ре- гистра PC. М1 = Л1|)=1 87
П родолжение табл. 2.45 ф 1 р? е ли л/ < Ри г одержание МК. Пояснения 0 0 1 Т-и,: — (ШД)Т. Цифра с разряда ШД, номер кото- рого Т-, записывается в Г1о. Мх = ЛЦ ~ 1 0 1 0 Т!!)'. = (ШД)у. Цифра с разряда ШД, номер кото- рого указан в’ регистре указателя бита РУ блока битовых операций, записывается в Г1о. .,И]=Л10=1 0 1 1 (РУ): = Т. В регистр РУ записывается код из Т поля МК.’ ЛЦ = Л1о = 1 1 0 0 (РУ): = (ШД)Т. В регистр РУ записывается код z-fl тетрады ШД. Номер i тетрады задается Т полем: при Т = 0000 запись не производится, при Т = 0001 z=l, при Г=0010 /=2, при Г=01001=3 н при Т = 1000 1 — 4. Например, при Г = 0100 в РУ записывается третья тетрада ШД, -разряды которой имеют номера 12, 11, 10 и 9. Микрокоманды, содержащие две и более 1 в Т поле, являются при данных Ф и Р за- прещенными. Мг =.М„ = 1 1 0 1 7’()0: = (ШД)Т. Цифра с разряда ШД, номер кото- рого Т, записывается в Тоо. Мх = Л1о — 1 1 1 0 Т01): — (ШД)у. Цифра с разряда ШД, . помер кото- рого указан в РУ, записывается в 'Т„а Мг— Ма= 1 1 1 1 Микрооперации в ИМС не выполняются. Л11=Л10=1 3 0 0 1 0 1 0 0 1 0 Микрооперации в ИМС не выполняются. Л11=Л40= 1 1 1 1 0 0 0 1 1 0 Генерация кода модификации по. правилу: .Wj == 1 и Л40 = (Ц/Д),, где ШД,:— инверсное значение раз- ряда ШД, номер которого указан в Т поле при Р = 001 или в регистре РУ при Р~ 010 1 0 1 Ц7Д,-: = 0. Принудительная установка (маскирова- 1 1 0 ние) z'-ro разряда ШД в 0. Прн Р = 101 1 — Т, а при Р = 110 i указывается в РУ. Л1, = ЛЦ = 1 СС X 1 1 X 1 Генерация кода модификация по правилу Лц — Пп, где /И() = П„ (ТП) \/ 110 (ТП), где ТП — сшнал на выходе триггера ТП
Продолжение табл. 2.45 Поле МК Содержание МК. Пояснения Ф Pl Р1 РО X 1 X Тц: — (ШД) (12-)-z), (1 = 0,3). Запись кода с чет- вертой тетрады ШД в триггеры Tti регистра PC. Запись в T\i производится только при условии, что в /-м разряде Т поля находится 1 •ш 1 1 X X' Toi: = (ШД) (8 -f- i), (Р=6,3). Микрокоманда вы- полняется аналогично предыдущей. Если при Ф = — 4Р поле содержит две и более 1, то произойдет одновременное выполнение соответствующих микро- операций. При этом если Р = 0, то = М„ = 1 5 X X X (ШД) (15 — 8) : = PC (13 — 10, 03 —00). Выдача со- держимого PC в старший байт ШД. Л1, = Мо = 1. 6 0 0 0 Г13: =0/Z3= 1, Гц : =0/Г1 = 1. Сброс в 0 триг- геров Г13 и Т1г, если в соответствующих им разря- дах Т поля указаны 1. = Мо= 1 0 0 1 '(TS), : = 1 /Т3 = 1, (TS)0 : = 1 /Т, = 1. Пуск вы- бранного Т полем таймера по входу 52, для чего его триггер Т устанавливается в 1. Для выбора тай- мера 1 (0) надо в третьем (первом) разряде Т поля указать 1. Alj = Л40 = 1 0 1 0 (РК1)-. = 256/7’3 = 1, : = О/Тз = 1, (ВД); = = 256/7\=1, Гц : = 0/?! = 1. Запись числа 256 в регистр PKt (/ = 0,1), выбранного Т полем тай- мера, и сброс соответствующих триггеров в 0. Л11— = = 1 0 1 1 Микрооперации не выполняются. Л/, == Ма = 1 1 0 0 (ТМ1) ; = 0/7’3 — 1, (ТЛЮ) : =0/7\ = 1. Остапов таймеров. Л1, = Ма = 1. 1 0 1 (РК1)-. = 4/7’3 = 1, Г13:=0/Т8= 1, (РКО)-.~ 4/Tt = 1, : = 0/Tt ~ 1. Запись числа 4 в ре- гистр РК{ (/ = 0,1), выбранного Т полем таймера и сброс соответствующего триггера в 0. Мр = Л10—'1 1 1 0 Запись в выбранные таймеры числа 16 по аналогии с предыдущей МК. Мг = Л1о = 1 1 1 1 Микрооперации не выполняются. Мх = .'Ио = 1 пл
Продолжение табл. 2.45 Поле МК ф | рг\ р/| ро Содержание МК. Пояснения 0 0 0 Микрооперации не выполняются. Л-fj = Л40 = 1 0 0 1 Генерация кода модификации по правилу Мг = 1, .'Ии = Тг!. Выбор номера Z разряда регистра PC осу- ществляется так же, как и в МК при Ф — 1 , 0 1 0 (РК1): = (ШД) (15 — 8)/7’3= I, TJ3: = 0/T3—l, (РКО): = ШД (7 — 0)/Тг = 1, Тц-.^O/T, = 1. За- пись кода с ШД в регистр РК выбранного Т полем таймера и сброс соответствующего ему триггера из PC в 0. Мл = М„ = 1 0 1 1 (СТ1): = (СТ1) + 1 /Т3 = 1, (СТО) = (СТО) + + 1/7'1=1 и генерация кода модификации по правилу = 1, Мо = Тц. Выбор номера 1 раз- ряда регистра PC производится так же, как и в МК при Ф — 1 1 0 0 ШД(\5 — 8): СТ1]Т3 = 1, ШД (7 — 0): = СТО/Т^ = 1. Выдача на ШД содержимого счетчиков, вы- бранных Т полем таймеров Мг = М3~ 1 1 0 1 ТМ1-. = 1/Г3= 1, ГМО: = 1/7\ = 1. Пуск по входу В выбранного Т полем таймера. Mt = Л1о= 1 1 1 0 ТМ1: = 0/Г, = 1, ТМО : = 0/7\ = 1. Останов тай- меров 1 I 1 Микрооперации не выполняются 2.46. Временные параметры ИМС ВГ1 • Параметр tp нс Время: цикла ИМС t0 действия сигнала Sj = 0 /j » » S2 — 0 t2 предустановки и удержания t3 МК относительно нараста- ния S1 обработки информации в таймерах ББО и ДИ (интер- вал времени между нарастанием S1 и последующим спа- дом S2 должен быть д-. /4) Задержка: в блоке. БФМ (время формирования кода'модификацин) выдачи информации на ШД 1$ 500 > 10 > 150 10 <200 < 150 <50
формирования кода модификации БФМ, блока битовых операций ББО с 4-разрядным регистром указателя бита РУ, декодера нуля ДИ и двух 8-разрядных таймеров ТМО и ТМ1, которые имеют по два счетных входа В, и S2 (]эис. 2.6, а), управляемых триггерами ТМ и TS. Они состоят из регистра коэффициента РА пересчета, счетчика СТ и схемы равенства кодов. Внутренние управляющие сигналы БУС генерирует комбинационная схема КС по содержи- мому 10-разрядного регистра микрокоманд РМК. Обмен информа- цией осуществляется по шинам данных ШД, признаков ШП, шинам МК ШМК и неоднородной шине управления ШУ, состоящей из от- дельных каналов для ввода и вывода управляющих и синхронизи- рующих сигналов (тайл. 2.44). Управляет работой ИМС 10-разряд- ная МК, которая состоит из Ф, Т и Р полей. Обычно З-разрядно^ Ф поле задает режим работы ИМС, 4-разрядное Т поле выбирает участвующий в данной МК триггер Tti или T\t регистра PC, а 3- разрядное Р поле задает номер одного из семи признаков, который выбирается К'П для подачи на вход БФМ (при нулевом коде в Р поле ни один из признаков на Вход БФМ не поступает). В ряде МК указанные поля применяются по другому назначению. Перечень МК приведен в табл. 2.45, в которой Т поле ус- ловно опущено, а код в поле Ф задан в восьмеричной системе счи- сления. Работа ИМС синхронизируется сигналами SI M.S2 (рис. 2.6, б), допускающими объединение в один сигнал (рис. 2.6, е). По нара- станию S1 МК принимается в РМК, а по спаду S2 — код в PC, по- лученный в результате исполнения данной МК, после чего форми- руется код модификации (Ml, МО). Временные параметры ВП показаны на рис. 2.6, б и е, а их значения приведены в табл. 2.46. Как. при одном, так и при двух синхронизирующих сигналах время <о цикла ИМС должно удовлетворять условию tQ t3 + Ц + 1б. Обычно принимают /0 ~ 500 нс. Особенностью электрических схем набора' ИМС является при- менение вентилей ИИЛ-типа, построенных на основе многокбллек- торных п-р-п-транзисторов, сигнал 'на базу которых поступает с коллектора р-п-р-транзистора, работающего в режиме источника тока. При этом заданный ток обеспечивается подбором нагрузоч- ного резистора (рис. 2.5, е) по формуле Rn — (Еп — 1,2) //п. .Глава 3 МИКРОПРОЦЕССОРНЫЙ НАБОР СЕРИИ 589 3.1. СОСТАВ, СТРУКТУРА И ФУНКЦИИ МИКРОСХЕМ СЕРИИ 589 Серия 589 выпускается в двух модификациях 589 и К589 и со- стоит из 10 ИМС, основные параметры и назначение которых приведены в табл. 3.1 [2, 4, 7, 8, 9, 35, 38]. Центральный процессорный элемент (ЦПЭ) ИКО2 представляет собой 2-разрядпую секцию устройства обработки данных и состоит (рис. 3.1, а) из арифметического устройства АУ; дешифратора Д микрокоманды; ЗУ—11 регистров общего назначения РОН, обозна- чаемых символами R0—R9 и Т; двух мультиплексоров МА и МВ; регистров адреса РА и данных АС, выводы которых через две схе- мы совпадения с тремя состояниями подключаются к однонаправ- 91
3.1. Состав и назначение ИМС серии 589 ИМС 589 серии Функциональное назначение /ц, НС р, мВт Тип корпуса и„ в АП16 Шинный формирователь (ШФ) 20 470 238.16-2 0,7 АП26 ШФ инвертирующий 16 470 238.16-2 0,7 ИК01 Блок микропрограммного управления 60 850 2123.40-1 0,5 ИК02 Центральный процессорный элемент 98 725 2121.28-1 0,5 И коз Схема ускоренного переноса 10 450 2121.28-1 0,5 ИК14 Блок приоритетного преры- вания 80 450 239.24-2 0,5 ИР12 Многорежимный ' буферный регистр 40 450 239.24-2 0,5 ХЛ4 Многофункциональное син- хронизирующее устройство 40 400 238.16-2 РА04 Ассоциативное ЗУ 40 400 239.24-2 0,5’ РУ01 Оперативное ЗУ 16 4 35 525 238.16-2 0,5 * 17, = 3,6 В для ИР14, для остальных ИМС 17 = 2,4 В. ленным шинам адреса ША и данных ШД. Обмен информапией осу- ществляется по четырем входным и двум выходным шинам, а также по ряду входных и выходных каналов, служащих для каскадиро- вания ИМС (табл. 3.2). Все выходы ИМС, кроме X и Y, имеют три состояния (0,1 и высокоомное состояние). Шины ШМ и ШВ пред- назначены для приема данных соответственно с ЗУ и с устройств ввода информации, однако их можно использовать и по другому назначению. Управляет работой ЦПЭ 7-разрядная МК, состоящая 3.2. Назначение выводов ИМС ИК02 Н омер вывода /, 2* <?, 4 5, 6 7 — 10 11, 23 12, 13 14 15 — 17 и 24 — 27 18 19, 20 21, 22 28 Наименование выводов Инверсные входы внешней шины ШВ » ' » маскирующей шины ШК Выходы сигналов группового переноса X и У Инверсные выходы СО и ПО и входы П1 и С1 сигналов переноса сумматора СО, С1 и сдвигателя вправо ПО, П1, АУ Входы сигналов выдачи адреса ВА и данных ВД Инверсные выходы шины адреса Ш А Шина нулевого потенциала Входы (F6 — F0) шины микрокоманды (U1F) г Вход синхронизирующего сигнала S Инверсные входы шины М ШМ » выходы шины Д ШД Вход источника питания 92
из F и R групп разрядов. Для удобства изложения- наборы цифр « F н R группах обозначаются указанными в табл. 3.3 и 3.4 способами, где символами F6 — F0 обозйа- чены разряды МК (F0 — младший разряд); R'„ и АТ — обобщенные обозначения со- s. 3. Обозначение цифр в Г группах . Ргр>'ппа Обоя.,я. F6 F5 F4 чение держимого регистров, участвующих в опе- рациях. Например, при (F3,- F2, Fl, FO}~ (1100) Rn = Т, а при (1111) АТ = АС. Список всех МК микросхемы ИК02 приве- ден в табл. 3.5, а их мнемоника, которая распространяется только на К = 00 и К ~ = 11,— в табл. 3.6, где символом «+» обозна- чена операция суммирования с учетом воз- никающих между разрядами переносов. При этом следует иметь в- виду то, что между юте я в о о о о 1 1 1 0. о 1 1 о о О о 1 о о О 2 3 4 5 6 7 ИМС указанные переносы, переда- инверсном виде, а именно: С1 — В означает отсутствие пере- носа и код на выходе сумматора данной ИМС на 1 не увеличивается, 93
a Cl = H означает наличие переноса и код иа выходе сумматора увеличивается на 1 (Н и В — низкий и высокий потенциалы). Так как сигнал СО переноса из ИМС генерируется также в инверсном виде (СО — Я — наличие, а СО — В — отсутствие переноса), то это позволяет при каскадировании обходиться без дополнительных инверторов. Способ формирования сигналов переноса СО и уско- Рис. 3.1.
ренного переноса X и У в зависимости от выполняемой операции указан в табл. 3.7, где at н bi (г = 0,1) — разряды цифр па выходах МА и МВ‘, а — переменная, равная 0, если результат соответствую- щей поразрядной логической операции, указанной в табл. 3.5 слева от знака V> во всех разрядах равен 0, и равная 1 в остальных случаях (например, в МК71 а = 0, если Rn (АК)К = 0 во всех раз- рядах). Примеры выполнения МК приведены в табл. 3.8, в которой «И» и «Р» означают соответственно исходные данные и результат операции. Так как входы и выходы данных ИМС ИК02, за исклю- чением X й Y, инверсные, то при вводе и выводе данных они будут представлены в инверсном виде. Например, при выполнении МК72 (табл. 3.8) на входы ШМ и ШК необходимо подать соответственно 01 и 00, тогда ((М) = ((4С) К)) = 10, в АТ запишется 10, а при индикации содержимого АТ и СО на выходах ИМС будут сигналы 01 и 0 соответственно. Все МК микросхемы ИК02 выполняются в течение одного такта синхронизирующего сигнала S. Код МК подается в момент действия сигнала S = 1 (рис. ЗП, б). Дешифратор Д преобразует код МК, вследствие чего ко входам и выходам А У подключаются соответствующие данной МК источники и приемники информаций, и АУ, которое не содержит элементов памяти, выполняет заданную кодом МК операцию. По спаду S результат операции фиксируется в регистрах ИМС. В течение времени действия сигнала S = 1 код на ШТ можно многократно изменять, однако только результат последней МК зафиксируется в регистрах ИМС по спаду 3. Так как сигналы СО, ПО, X и Y выдает АУ, то их значения определяются поступающей на ШТ в данный момент МК, следовательно, их мож- но использовать для проверки соответствующих условий, не завер- шая выполнения МК и не изменяя содержимого регистров ИМС. Временные параметры ИМС показаны на рис. 3.1, б, а их значения приведены в табл. 3.9. Блок микропрограммного управления ИК01 предназначен для генерации адресов МК.и анализа или генерации признаков вычис- лительного процесса в микроЭВМ. Содержит (рис. 3.1,в) регистры адреса МК РАМК и команды РК', схему формирования адреса сле- дующей МК СФА', выходные буферные схемы адреса строки ВБАС и колонки ВБАК, команды ВБК и признака ВВП, а также три триггера ТТ, ТС, TZ и схемы совпадения. Назначение выводов ИМС ИК01 приведено в табл. 3.10. В за- висимости от поступающей информации СФА генерирует адрес следующей МК, который по нарастанию S фиксируется на РАМК и условно разбивается на адреса строки (пять старших разрядов адреса МК) и колонки (четыре младших разряда РАМК). Работу СФА поясняет табл. 3.11, из которой следует, что при AM = 0 старшие разряды кода на входах У А задают способ формирования адреса следующей МК, а младшие разряды являются частью ука- занного адреса. Например, при'операции iPL младший разряд АО адреса следующей МК формируется по содержимому ТТ (АО = Г), А1 и А2 равны соответственно 0 и 1, содержимое АЗ и не изме- няется, а разряды А7 — А4 определяются кодом на входах УАЗ — УА0<А7 — УАЗ и т. д.). При AM — 1 переходы по кодам с вхо- дом У А блокируются и по *нарастанию S осуществляется запись в РАМК команды с шины К, которая может задавать адрес первой МК соответствующей микропрограммы. Кроме адреса следующей МК, СФА формирует сигналы СРП, записи ЗК и выдачи БК коман- ды (габл. 3 12). По сигналу СРП - \ производится опрос запросов на прерывания, зафиксированных в блоке приоритетного прерывания, 95
3.5. Список микрокоманд для ИМС ИМ02 Группа £ | Я Содержание МК. Пояснения о 1 Rn + (ЛС) (Н) 4- Cl -> Rn и ЛС. Над содержимым АС и шины ШН осуществляется поразрядная конъюнкция, ре- зультат которой суммируется с учетом переноса СГс Rn. Результат заносится как в Rn, так и в АС. Адрес R'n за- дается R группой разрядов с ШИ в соответствии с табл. 3.4. Например, при (F3, F2, Ft, F0) = 1100 в ка- честве Rn берется содержимое РОН Т 0 2 ЛГ-f- (ЛС) (К) + С1 АТ. Данная МК аналогична МК01. Символами М и АТ обозначены соответственно код на шине ШМ и содержимое одного из регистров Т или АС группы 2 в соответствии с табл. 3.4. Например, при (F3, F2, Fl, FO) — 1010, АТ=Т 0 3 (ЛТО) ((ВО)у (НО)) ПО; (АТО) (ВО) (НО) У (ATI) у V (В1)(Н1)~* АТО; (ПТ) у (Bl) (Hl) (ATI)-* ATI, где ATI, Bi, Hi (i = 0,l~T—i-e разряды AT, ШВ и ШН соот- ветственно. Данная МК позволяет осуществлять различ- ные варианты сдвига. Например, если в нулевом и первом разрядах ШН нули (К0=К1=0) то АТО -*-ПО, ATI-*- АТО и П1-+АТ1. Это означает, что код в АТ сдвигается на одну позицию вправо, младший разряд передается на вы- ход ПО, а в старший разряд записывается цифра со вхо- да nt. 1 1 HyRn-*-PA; R„-(-НCl-* Rn. В .PA записывается поразрядная дизъюнкция кодов с ШН и Rn, а в Ra — их сумма 2 1 НУ М-*-РА; H-j-M-f-Ct ~* AT. МК12 выполняется анало- гично МКН 1 3 1 2 3 2 ((АТ) у Н) + (АТ) Н + С/АТ. Результат поразрядной дизъюнкции ((AT) V Н) и конъюнкции (ЛГ) К суммиру- ется и заносится в АТ К результату (ЛС) Н или (В) К поразрядной конъюнкции АС или В на К прибавляется еди- (ЛС) Н -f-' 1 -f- С1 -* Rn 1 ничный код (во всех разрядах (ЛС) К + I + С1 -> AT I единицы). (g\ Н I 1 ] Cl > AT I Эта МК позволяет осуществлять • 1 ~ ‘ запись всех 1, всех 0 или вы- читание 1 (дополнительный код «—1» равен 11 ... 11) 96
Продолжение табл. 3.5 Гр> F ппа R Содержание МК'. Пояснения 3 1 *2 3 (АС) К + Rn + Cl /?,; 1 Результат (АС) К или (В) К по- (ДС) К + М + Cl -> АТ | разрядной конъюнкции АС или (R1 К 4- АТ 4- С1 -» АТ В на Д’ суммируется с содер- (й)Л-р. Л1 f Ъ1-+А1 J жимым Rnt Шм или АТ 4 1 2 3 Rn(AC) КRn, (Rn (АС) К) ЧС1 СО М (АС) КАТ, (М (АС) К) УС1^С0 В (АТ) КАТ, (В (AT) K)VC1-+CO j Результат поразрядной конъюнк- ции кодов (для МК41 это Rn, АС и Д') записывается в Rn или АТ, а на СО передается цифра . с С1, если во всех разрядах поразрядной конъюнкции, ука- занной слева от знака у, нули. В противном случае на СО вы- дается цифра 1 5 1 3 3 RnR^_Rm (RnK) vCl -+С0 МК51, 52, 53 выполняются ана- (Л4) Д _> АТ, логично трем предыдущим МК, KYVC1 -+С0 110 без учета АС (в МК51 и 52) (AT) lit АТ, и S (в МК53) ((ЛГ) Kyvci-+coj 6 1 2 3 Rn V (АС) К -г . -> Rn (АС) К уС1->С0 М v (ДС) Д->- АТ, (AC) TvCl^CO (AT) V (В) К — АТ, (В) КХ7С1 СО Результат поразрядной логиче- ской операции Z \/ tK (Z—это R,„ М или АТ; 1 — это ДС или * В) записывается в Rn или АТ. СО формируется так же, как и в МК41 7 1 2 3 Rn — (МС) ^0 “* Результат поразрядной логиче- -+Rn,(Rn(AC)K)\7С1-*-СО CKOg операции (Z = t) = Zt '\>Zt M. = ((AC) K)AT, 1 — это Rn, Af или Д7', t — (Л1 (ДС) K) yCl -+C0 । это (ДС) Д’ или (В) К) записы- АТ = ((В) К) АТ вается в Rn или АТ. СО фор- ((АТ) (В) К) ^С1 СО j миР>'ется так же- как и в МК41 4 6-4 51 97
3.6, Мнемоника и содержание МК FR Содержание МК К = 00 К = Il 01 1LR Rn-'-Cl — Rn и АС ALR R„ + AC A- Cl — R;l и AC 02 АСМ МА-С1—АТ AMA M + AC + Cl — AT 03 SRA АТО—ПО, АТ1—АТ0 П1—АТ1 (ATO) (ВО) —ПО (ATO) (ВО) V (ATI) V Bl — —ATO (П1) \y, (Bl) (ATI)— ATI . 11 LM1 Rn—PA, Rn+Cl-Rn DSM 11 — PA, Rn-\- \ \+Cl—Rn 12 LMM М-РА, М\С1—АТ LDM 11 ->PA, ma- 11А-Ы-ЛТ 13 CIA AT A- Cl — AT DC A AT + 11 + Cl — AT 21 CSR 11 + Cl — Rn SDR AC “P 11 Cl 22 CSA 11 + Cl—AT SDA AC + 11 + Cl — AT 23 CSA 11 a-ci-at LDI В + 11 + Cl — AT 31 INR Rn Cl Rn ADR ЛС A~ Rn~)~ Cl — Rn 32 АСМ MA-C1 — AT AMA AC A-MA-Cl— AT 33 INA AT^Cl —AT AIA B + ATA- Cl— AT 41 CLR 0 — Rn, Cl — CO ANR R„ (AC) — Rn, Rn (AC)\7C1 — CO 42 CLA 0-> AT, Cl — CO ANM M(AC) — AT, M(AC)VC1 — CO 43 CLA 0 -> AT, Cl — CO AN I В (AT) — AT, В (AT) ^Cl — CO 51 CLR 0-Rn, Cl —CO TZR Rn — Rn, Rn yCi — co 52 CLA 0 — AT, Cl —CO LT M M— AT, Л1 v Cl —CO 53 CLA Q — AT, Cl--CO TZA AT —AT, ATT7C1 — C0 61 N0P Rn- Rn, Cl—CO ORR Rn\/AC—Rn AC^C1—CO 62 LMF M — AT, Cl --CO ORM M \/ AC—AT, ACVC1—C0 63 NOP AT —AT, Cl--CO ORI АТ\/ B— AT, BCjCl—CO 71 CMR Rn^Rn, cx-co XNP Rn == AC —> Rn, Rn(AC)V Cl^CO 72 LCM M AT, Cl -- CO XNM M= AC — AT, M(AC) X7C1 — C0 73 СМА AT-- AT, Cl--CO XN1 AT = B— AT, В (AT) v Cl — CO 08
3.7. Формирование сигналов переноса F 0 1 2 3 4 56 '7 X V й0^0 а У V (ai V ^i) (°о V М 1 СО Высокоомное состояние при МКОЗ и (С/) Y V XY в ос- тальных случаях Определяется по табл. 3.5 ПО. (АТО) ((ВО) V (КО)) при МКОЗ, высокоомное состояние в ос- тальных случаях По сигналу (ЗК) S — 1 записываются четыре младших разряда команды в РК, построенный на основе однотактных D-триггеров. Записа’ппый в РК код используется в дальнейшем как для форми- рования адреса МК, так и для выбора регистра в ЦПЭ. Для этого код с РК по сигналу ВК (ОС) = 1 выдается на ВРК. Одноступен- чатый триггер TF при S = 1 инвертирует и отслеживает поступаю- щий на вход Ф сигнал, а при 5=0 хранит его. Такая организация TF позволяет использовать признак F для формирования адреса следующей МК как в данном такте, так и в последующих, для чего используются два двухступенчатых триггера ТС и TZ, переключа- ющихся по нарастанию 5. Управляют работой ТС и TZ сигналы на входах УФ1 и УФО (табл. 3.13). Содержимое ТС и TZ может быть выдано через ВВП на выход ФВ. Управляют выдачей сигналы на входах УФ2, УФЗ и ОС (табл. 3.14). Выдача адреса следующей МК осуществляется через выходные буферы ВБАС и ВБАК. При этом адрес строки выдается по сигналу СС (ОС) = 1, а столбца — по ОС = 1. Если СС (ОС) — 0, то выходы ВБАС переводятся в высокоомное состояние. Выходы ВБАК находятся в высокоомном состоянии при ОС = 0. Такая организация выдачи адреса следую- щей МК позволяет, например, при прерываниях, подавая сигнал ОС = 0 или СС = 0, отключить Б МУ и формировать адрес следу- ющей МК вне Б МУ, сохраняя прн этом неизменным адрес в РАМК. Микросхема ИК01 позволяет формировать 9-разрядный адрес МК, что обеспечивает обращение к ЗУ МП емкостью 512 слов. Увели- чить емкость адресуемой памяти можно за счет введения внешнего регистра расширения адреса, загружаемого по концу цикла выпол- нения МК из специально введенного для этой цели поля МК- Вре- менные параметры ИК01 приведены в табл. 3.15, а диаграммы — на рис. 3.2, а. Шинный формирователь (ШФ) АП16 и ШФ с инверсией (ШФИ) АП26 представляют собой 4-разрядпые коммутаторы (рис. 3.2, б), построенные на схемах совпадения с тремя состояниями (0,1 и высо- коомное). Формирователь АП26 отличается от АП16 тем, что схемы совпадения коммутатора выполнены с инверсией. Вследствие этого передача информации между входами и выходами осуществляется также с инверсией. Назначение выводов АП 16 и АП26 приведено 4* 90
3.8. Примеры выполнения МК F 0 > .2 1 3 4 и 5 6 7 1 и Rn—U АС = 11 К = 10 (ЛС)К== 10 С/ = 1 Л = 00 «„ = 01 С1 = 1 АС= 11 «= 10 (АС)«=10 С1 = 1 «„=10 АС = 11 К = 00 С/ = 0 «„=10 АС= 11 К = 01 «„(АС) «=00 «„=10 АС = 11 К = 00 «„V (АС) «=10 «„ = 10 АС = 11 К = 00 («„= ((АС) «)))=01 р «„=АС= 10 С0= 1 Г*4- II II II °52 «„ = 10 С0 = 1 «„=11 СО = 0 «„ = 00 С0 = С1 «„ = Ю С0= С1 «„ = 01 С0 = С1 2 и М = 01 АС =10 К = 11 (АС) «=Ю С1 = 1 «= 00 М = 01 С1 = 1 АС= 11 «.= 00 С1 = 0 (АС) Л=00 М = 10' АС= 11 к= и С/ = 0 М = 10 АС =11 К= 11 /И (АС) «= 10 М = 01 АС= 10 «= 11 М = 10 АС = 11 К= н (М = ((АС)«))) = 10 р ат = оо СО = 1 — о О о II II II =С^Ч> АТ = 11 со = о АТ = 01 С0 = 1 АТ = 10 С0= 1 АТ= 11 С0= 1 АТ= 10 СО = 1 3 и АТ = 10 В = 01 К = 10 П1 = 1 i.1 "* и чН “ о II II °о _ — о 8= И К= 11 С/ = 0 (В)«= 11 АТ = 10 5=11 К = 00 С/= 1 АТ = 10 В = 10 « = 00 В (АТ) К = 00 АТ = 00 В= 10 К = 00 АТ =00 В= 10 К = 01 • ((АТ)=((В) («)))=Н р /70=0 АТ = 11 АТ = 10 со = о АТ = 10 СО = 1 АТ = 11 Сб = 0 АТ =00 С0 = С1 АТ = 00 С0=С1 АТ= 11 С0=С1
3.9. Временные параметры ИМС ИК02 Параметр ti, но Время t0 цикла > 100 Длительность сигнала 5 = 0 > 33 Время t2 предустановки относительно спада 5 сигналов: на UIF >60 на ШВ, ШМ и ШК >50 С1 и П1 >27 Время удержания относительно слада S сигналов: на UIF (/4), ШВ, ШМ и ШК (Г3) >5 на С1 и П1 > 15 Задержка распространения сигнала от входа: I1IF до выходов X, У и ПО (Z5) <37 ШВ, ШМ, ШК до выходов X, У и ПО (f5) < 29 5 до выходов X, У, ПО (te) < 40 5 до выхода СО (/в) <48 ШК до выхода СО (/5) < 43 ШВ, ВМ, ШК до выхода СО (/6) < 30 С1 до выхода СО < 14 В А, ВД до выходов ША, ШД < 12 S до выходов ША, ШД (ts) <32 Сохранение сигналов на выходах X, У, СО, ПО после спада | <20 8.10. Назначение выводов ИМС ИК01 ' Номер вывода | Наименование выводов 1—6, 8, 10 Инверсные входы команды (разряды К4 — К7, КО—КЗ соответственно) 7, 9, И Выходы (открытый коллектор) трех младших разря« дов регистра команд (ВРК, разряды PK0, РК1 и РК2 соответственно) 12, 13, 15, 16 Входы УФО — УФЗ управления приемом и выдачей признаков Ф н ФВ 14, 17 Инверсный выход (три состояния) и инверсный вход признаков Ф и ФВ 18 Выход (два состояния) сигнала разрешения прерьв вання (СРП). При (УА6— УАО) = (0, 1, 0, 1, 1, 1, 1) СРП = 1, а в.остальных случаях СРП = 0 19 Вход синхронизации 5 20, 40 Входы для подключения источника питания (0 и +5 В соответственно) 21—24, 37, 38 и 39 Входы У АО — УА6 управления формированием адреса следующей МК 25, 35, 36 Входы разрешения выдачи адреса МК (ОС и СС) и приема адреса МК на РАМК (AM) 26—34 Выходы (три состояния) регистра адреса МК (раз- ряды АО — А9 соответственно) 101
g 3.11. Функционирование СФА в ИМС ИКО1 AM Код на входах УЛ Операция У А 6 УАЗ УА4 УАЗ УАЗ 0 0 X X X JCC — переход в те- кущей колонке 0 1 0 X X JZR — переход в ну- левую строку 0 I 1 X X JCR — переход в те- кущей строке 1 0 0 X X JFL — переход по TF 0 1 0 1 0 X JCF — переход по ТС 1 0 1 1 X JZF— переход по TZ 1 1 0 0 X JPR— переход по РК 1 1 0 1 X JLL — переход по ле- вым разрядам РК 1 1 1 0 X JCE — переход в те- кущей колонке в труп- пе адресов строк 1 1 1 1 0 JPX — переход по раз- рядам К4—К7 команды 1 1 1 1 1 JRL — переход по пра- вым разрядам РК 1 X X X X X EWA — загрузка ко- манды в РАМК
Адрес следующей МК Строка Колонка АЗ А7 Ав А5 А4 АЗ А2 А1 АО УА4 УАЗ УА2 УА1 УАО АЗ А2 А1 АО 0 0 0 0 0 УАЗ УА2 УА1 УАО А8 А7 А6 . А5 А4 УАЗ УА2 УА1 УАО А8 УАЗ УА2 УА1 УАО АЗ 0 1 F А8 А7 УА2 УА1 УАО АЗ 0 1 С А8 А7 УА2 УА1 УАО АЗ 0 1 Z А8 А7 УА2 УА1 УАО РКЗ РК2 РК1 РКО А8 А7 УА2 УА1 УАО 0 1 РКЗ РК2 ЛЯ А7 УА2 УА1 УАО АЗ А2 А1 АО А8 А7 А6 УА1 УАО К7 Кб К5 К4 А8 А7 1 УА1 УАО 1 1 РК1 РКО 0 КЗ К2 К1 ко К7 Кб Кб К4
3.12. Формирование сигналов СРП, ЗК и ВК Сигнал Условия формирования МК AM УА6 УАЗ У At УАЗ УАЗ УА1 УАО Срп = 1 X 0 1 0 1 1 1 1 JZR ЗК = 1 X 1 1 1 1 0 X X JPX ВХ = 1 X 1 1 1 0 X X X JCE 3.13. Управление работой триггеров ТС и TZ УФ! У ФО Обозначение и содержание микрооперации (МО) МО МО в TZ МО в ТС 0 0 SCZ Запись F Запись F 0 1 STZ » Хранение 1 1 0 ST с Хранение Запись F 1 HCZ » Хранение в табл. 3.16. Задержка по ка- налу В D составляет 25 нс, а по каналу I -> В — 30 нс (для АП26 —25 нс), а време- на отключения и включения по входам У и ВХ равны со- ответственно 30 и 65 нс (для АП26 — 55 нс). Схема ускоренного пере- носа (СУП) ИКОЗ предназна- чена для формирования груп- повых переносов в ЦПЭ или другие схемы, содержащие сумматор с предварительным Просмотром переноса. Состоит нз восьми элементов И — ИЛИ — НЕ (рис. 3.2, в), которые реализуют восемь функций С1—С8 3.14. Управление выдачей признаков ос УФЗ УФ2 Обозначение и содержание микрооперации (МО) МО Сигнал на ФВ 1 0 0 FF0 1 1 0 1 FFO с 1 1 0 FFZ Z 1 1 1 FFI 0 0 X X — Высокоом- ный Ct — Уоха V Уос<11 Cg ~ У1Х1 V У1Уйх® V У1У‘У<)' С3 — Уъхъ V УаУ1х1 V УгУ>.Учхз V УгУ1Узса^ С8 = У1Х1 V У1Уъхь V УтУзУъЪ V УчУчУзУ^Ха V V У1УйУьУ1Узхз V У1УиУзУ1УзУгхг V УтУзУьУ1УзУзУ1х1 V V УтУьУьУ1УзУгУ1УоСг 103
Назначение выводов ИМС приведено в табл. 3.17. Быстродей- ствие ИКОЗ определяется задержками сигналов or входов Р, Со и X или У до выхода Ск, которые равны соответственно 20, 13 и 10 нс. Микросхема ИК14 является блоком приоритетного прерывания (БПП), предназначена для построения микроЭВМ с многоуровне- выми системами прерывания. Состоит (рнс. 3.2, а) из двух регистров РЗП и РТП, служащих для фиксации соответственно запросов на прерывания и приоритета запросов, приоритетного шифратора CD, схемы сравнения кодов ССК, набора логических элементов 104
3.15. Временные параметры ИМС ИК01 Параметр не Время t0 цикла >85 ' Длительность сигнала S = 0 >30 Время предустановки относительно сигнала 3 сигналов: на шине К (/2) >35 » » У А (/4) >10 » входе Ф (ft) >15 Время удержания относительно нарастания сигнала S сигналов: на шине К (t3) >20 » » УА (tb) >5 » входе Ф (76) >20 Задержка распространения сигнала от входа: S до выходов АС, АК или ФВ (/а) «30 УЛ до выходов ВРК (К) «26 УФ2, УФЗ до выхода ФВ «16 У А до выхода СРП (f7) «24 ОС до выхода ВРК «30 Время перехода шин АС и АК из высокоомного состоя- «30 ния в 0 или 1 или из 0 или 1 в высокоомное под дей- ствием сигналов СС или ОС 3.16. Назначение выводов ИМС АП16 н АП26 Номер вывода Наименование выводов 7 Вход сигнала выбора кристалла ВК. При ВК = 1 выводы В и D переходят в высокоомное состояние, а при ВК = 0 управление ИМС осуществляется по входу Y 2, 5, 11, 14 3, 6, 10, 13 8, 18 Выходы (три состояния) шнны D » » » двунаправленной шины В Выводы для подключения источника питания (0 и 5 В соответственно) 15 Вход сигнала управления Y передачей. При У = 1 осуществляется передача B-+D, а при Y — = 0 — 1^ В 4, 7, 9, 12 Входы шины I и двух триггеров ТП и ТЗ подтверждения и запрета прерывания. Назначение выводов ИМС приведено в табл. 3.18. Запросы па пре- рывание ЗП[ (« = 0,7), поступающие в БПП, фиксируются на о-разрядном РЗП, построенном на основе однотактных триггеров. Вследствие этого при разрешающем сигнале на входе С состоя- ния выходов РЗП повторяют состояние его входов 3/7,-, а при С = 0 сигналы на входах не изменяют состояния РЗП. Схема ИЛИ на вы- ходе РЗП дешифрирует отсутствие запросов в вем. Приоритетный 105
шифратор CD преобразует сигналы на возбужденных шинах в но- мер старшей из них (табл. 3.19). Следует, однако, иметь в виду, что входы и выходы CD подключены к входам ЗП и выходам КП ИМС по цепям с инверсией. Вследствие этого таблицу соответствий входных ЗП( и выходных ZC77y- сигналов можно получить из табл. 3.19 заменой всех 1 и 0 на 0 и 1 соответственно. Регистр РТП со- стоит из четырех однотактных триггеров, принимающих инфор- мацию по сигналу РЗ = 0 и хранящих ее при РЗ = 1. Служит РТП для запоминания кода текущего приоритета и сигнала выбора В группы приоритетов, которые определяют номера разрешенных 106
3.17. Назначение выводов ИМС ИКОЗ Номер вывода Наименование выводов 1, 2, 5—8, 10, 11 Входы групповых переносов Х0—Х7 3 Вход Р разрешения переноса С8. При Р =» 0 выход С8 переходит в высокоомное состояние 4 Выход (три состояния) инверсного значения С8 переноса 9, 12, 13, 15, 16, Выходы инверсных значений сигналов С1—СТ 22, 25 переноса 14, 28 Выводы для подключения источника питания (+5 В и 0 соответственно) 17 Вход инверсного сигнала СО переноса 18—21, 23, 24, 26, 27 Входы групповых переносов У0—У7 3-18. Назначение выводов ИМС ИК14 Номер вывода Наименование выводов 1—3 Инверсные входы ПО, П1, П2 текущего приоритета запросов 4 5 Вход выбора В группы приоритетов Инверсный выход (открытый коллектор) подтверждения 6 7 8—10 прерывания ПП Вход синхронизирующего сигнала S » разрешения прерывания РП Инверсные выходы (открытый коллектор) кода прерыва- ния КПО, КП1, КП2 11 12, 24 Вход СК разрешения считывания кода прерывания Выводы для подключения источника питания (0 и -ф-5 В соответственно) 13 Вход разрешения опроса данной группы РГВ приорите- тов 14 Выход разрешения опроса следующей группы РГ прио- 15—22 23 ритетов Инверсные входы запросов на прерывание ЗПО—ЗП7 Вход разрешения записи РЗ К обработке запросов иа прерывания. Схема сравнения кодов ССК Ьыдает сигнал «1» на выход, если код, поступающий с CD, больше кода текущего приоритета. Назначение ИК14 — генерация по запросам на прерывание сигналов подтверждения прерывания ПП и кода прерывания КП или сигнала РГ опроса следующей группы прерываний, зафикси- рованных в другом БПП, работающем параллельно с данным. Ра- бота ИМС начинается при поступлении сигнала РГВ—1 и сброса ТЗ в 0 нарастающим перепадом РЗ. При этом в РТП записывается (при РЗ=0) и хранится (при РЗ—1) код текущего приоритета. Ну- левое состояние ТЗ обеспечивает прием запросов с входов ЗП на регистр РЗП. Принятые запросы кодируются шифратором CD И поступают на ССК. Если код запроса больше кода, поступающего 107
на ССК с РТП, то ССК выдает сигнал I, который совместно с сиг- налом разрешения прерывания РП (если он равен 1) и другими сиг- налами, поступающими на вход D-трпггера ТП, обеспечивает по нарастанию сигнала 5 установку ТП в 1 (подтверждение прерыва- ния). Сигнал ПП = 0 в подтверждение прерывания устанавливает ТЗ в 1, что, в свою очередь, запрещает прием новых запросов на РЗП и обеспечивает подачу 0 на вход О ТП. Очередной нарастающий перепад сигнала S сбрасывает ТП в 0. Следовательно, длительность сигнала ПП = 0 определяется периодом сигнала S. При наличии одного или более запросов на прерывание код с CD можно выдать иа шину КП сигналом СК (РГВ) = 1. Если код на выходе CD не больше кода, поступающего с РТП, то ССК выдает 0. Генерация сигнала ПП = 0 в этом случае возможна только при условии, что 3.19. Функционирование приоритетного шифратора 3.20 Запросы на прерывания Разрешен- пые к чб- работке запросы 0 I I I 1 1 1 1 1 X' X о о о о 0 1 0 1 1 о 1 о 1 1 I 1 о 1. о 1 о 1 о 1 ЗП0-ЗП7 ЗП1— ЗГ17 ЗП2-ЗП7 ЗПЗ—ЗП7 ЗП4—ЗП7 ЗП5—ЗП7 3116—ЗП7 ЗП7 Нет раз- решенных в третий разряд РТП по входу В записан 0. Разрешенные к обработ- ке запросы на прерывания в зависимости от содержимого регистра РТП приведены в табл. 3.20. При этом следует иметь ввиду, что запись в РТП осуществляется в инверсном коде. После обработки очередного запроса па прерывание (после сброса ТП в 0) новое прерывание возможно только после сброса ТЗ в 0 по нарастанию сигнала РЗ. Для предотвращения повторного прерывания по одно- му и тому же запросу его код с выходов КП перед сбросом ТЗ в 0 можно записать в РТП. Это обеспечивает запрет па прерывание по всем младшим запросам относительно обработанного. Для уве- личения числа входов приема запроса на прерывание ИК14 допус- кает каскадирование. На рис. 3.3, а показана схема БПП на 24 входа ЗП, построенного иа четырех ИМС ИК14, внешнем регистре текущего приоритета РТП и дешифраторе с инверсными выходами (например, на ИМС 155ИД4). Приоритет запросов возрастает с увеличением их номера: младший — ЗП0, старший — ЗП23. При- оритет ИМС определяется коммутацией выводов РГ и РГВ (выход РГ старшей по приоритету ИМС подключается'к входу РГВ следу- ющей по приоритету ИМС). Выходы КП микросхем с номерами КП0 — КП2 объединяются по одноименным разрядам, образуя шину младших разрядов кода прерывания системы. Два старших разряда КПЗ и КП4 генерирует ИМСЗ, которая возбуждается сиг- налами РГ ИМС0 — ИМС2 и используется только как приоритет- 108
ный шифратор. Так как выходы КП выполнены с виде открытого коллектора, то они допускают реализацию монтажного ИЛИ и под- ключаются через резисторы к источнику питания 5В. Аналогично формируется сигнал ПП системы. Управляет работой И.МСО — ИМС2 дешифратор, который дешифрирует два старших разряда текущего приоритета. Временные параметры ИК14 приведены в табл. 3.21 и на рис. 3.3, б. Многорежимный буферный регистр ИР12 (рис. 3.4, а) состоит из восьми одноактных D-триггеров (RG) с объединенными установочными R и синхронизирующими С входами, комбинацион- ной схемы управления и отдельного 2-ступенчатого RS-триггера. Назначение выводов ИМС ИР12 приведено в табл. 3.22. При С= 1 выходы D-трнггеров повторяют сигнал на входах D, а при С = 0 состояние входов D не влияет на состояния регистра RG и его выходов. Триггер ТТ служит для сигнала запроса на прерывание в ЭВМ. Режимы работы ИР12 приведены в табл. 3.23, а временные параметры — в табл. 3.24. Многофункциональное синхронизирующее устройство ХЛ4 выполняет функции делителя частоты с переменным коэффициентом деления, формирователя одиночных импульсов с заданной задерж- кой относительно стартовых импульсов или заданной длительностью И генератора серии с заданным числом импульсов. Состоит (рис. 3.4, б) из 4-разрядного счетчика СТ, который управляется по D- входам блоком предустановки БП, генератора одиночных им- пульсов ГОИ и формирователей переноса ФП, импульсов ФИ де- ленной частоты, длительности ФД и серий ФС. Назначение выводов приведено в табл. 3.25. В режиме деления частоты V = I, С2~ •= СЗ = 0, а на вход С1 подают синхросигналы тактового питания. 8.21. Временные параметры ИМС ИК14 Параметр нс Длительность: цикла /ц >80 сигнала на любом входе ИМС >25 Время предустановки (удержания) сигналов на входах: РП относительно S, tn (ty) >16 (>20) РГВ » s> („(ty) >25 (> 20) Р3 » s< tn(ty) >75 (>0) П, В » S, tn (t) >70 (>0) ЗП > ПП, Tn (Гу) >10 (>35) П и В » РЗ, тп (ту) >15 (>15) Вадержка распространения сигнала по цепи от< ЗП к КП 80 СК к КП 40 • РЗ через ТЗ, РЗП, CD к КП 100 РГВ к КП 35 ЗП к РГ 45 РГВ к РГ 20 РЗ через ТЗ, РЗП к РГ 85 РЗ через РТП к РГ 35 S к ПП (ZJ 15 109
3.22. Назначение выводов ИМС ИР12 Номер вывода Наименование выводов /, 13 2 3—22 Входы В1 и В2 выбора кристалла Вход выбора режима ВР Информационные входы D (выводы 3, 5, 7, 9, 16, 18, 20 и 22) и выходы Q (выводы 4, 6, 8, 10, 15, 17, 19, 21) 11 12 и 24 14 23 Вход S строба Выводы для подключения источника питания (0 и 5 В) Вход R установки нуля Выход запроса прерывания ЗП 3.23. Режим и условия работы ИМС ИР12 Режим работы Условия режима Сброс RG в 0, а ТТ— в 1 Хранение кода в RG Запись кода в RG Выдача кода из RG Передача кода от D к Q R = 0 R = 1, S (ВР) V (S7) (В2) (ВР) = 0 R = 1. S (ВР) V (Bi) (В2) (ВР) = 1 /?= 1, (ВР) V (ВР) (В2) = 1 R = 1, (ВР) V (В~Г) (В2) = 1, S (ВР) V (Bi) (В2) (ВР) = 1 Сброс ТТ в 0 Хранение состояния ТТ Перевод выходов Q в высо- коомное состояние R = 1, S переходит из 1 в 0 R= 1, перехода S из 1 в 0 нет (ВР) V (Bi) (В2) = 0 3.24. Временные параметры ИМС ИР12 Параметр t., НС Длительность импульса на любом входе Время предустановки (удержания) информации на входах D относительно S, Bl, В2 или ВР, переклю- чающих сигнал на входе С RG из 1 в 0 Задержка распространения сигнала по цепи от: S к Q или ЗП R или В1 или В2 к Q D к Q В1 или В2 к ЗП В1 или В2 до установки RG >25 >15 (>20) 30 35 20 25 30 110
Запускается устройство путем подачи на вЯод РЗ сигнала произ- вольной длительности и фазы относительно тактового питания. ГОИ по сигналу с входа РЗ формирует синхронизированный такто- вым питанием импульс начальной установки СТ по входам D, код на которых определяет коэффициент деления К = 2" — KD, где п — чксло разрядов СТ; KD — код иа входах D. После предуста, новки СТ начинает подсчет сигналов на С1. Первый сигнал иа входе С1, который приходит после заполнения всех разрядов СТ единицами (код в СТ равен 11...1), вызывает появление иа выходе F импульса, который по цепи обратной связи через БП осуществ- ляет запись кода с входов D на СТ, обеспечивая тем самым заданный Рис, 3,4. 111
коэффициент пересчета. В режиме формирования длительности вы- ход В соединяют со входом V. Сигнал на входе РЗ обеспечивает предустановку СТ по входам D и запуск формирователя длитель- ности ФД, на "выходе которого появляется сигнал В = 1, разрешаю- щий по входу V подачу тактового питания иа вход +1 СТ. Сигнал F = 1, который генерирует ФИ после заполнения СТ, сбрасывает в исходное состояние ФД (В = 0). Так как сигнал В устанавлива- ется по нарастанию С1, а сбрасывается ло спаду, его длительность t определяется выражением = 2П — (/ — т) /, где т — длитель- ность сигнала Cl\ f — частота. При этом на выходе А формируется серия из N импульсов, где И определяется по выражению KD = — 2" — (Л' — 1). Следует заметить, что задержка 13 сигнала Р — 1 '3.25. Назначение выводов ИМС XJI4 Номер вывода Наименование 7, 3, 15 Входы синхросигналов С2, С1 и СЗ w 2 Вход V формирования длительности 4 » разрешения записи РЗ коэффициента пересчета счетчика 5, 10 Вход Р и выход С переноса счетчика 6, 7 Выходы формирователей длительности В и серий А импульсов 8, 16 Входы для подключения источника питания (0 и 5 В соответственно) 9 Выход F делителя частоты 11—14 Входы D предустановки счетчика по отношению к сигналу начальной установки определяется выра- жением KD == 2n— (t3 — т) / и может регулироваться установкой KD. Входы Р, С2 н СЗ и выход С используются для каскадирования ИМС с целью увеличения разрядности. На рис. 3.4, в показано соединение ИМС, работающих в режиме формирования сигнала заданной длительности. 3.2. ОСОБЕННОСТИ ОРГАНИЗАЦИИ МИКРОЭВМ НА ОСНОВЕ МИКРОСХЕМ СЕРИИ 589 Описанные ИМС используют для построения процессоров мик- роЭВМ, параметры которых изменяются в широких пределах. Про- стейший процессор (рис. 3.5, а) можно построить на основе ИМС только трех типов: ИК01, ИК02 и ПЗУ (например, К556РТ4). При этом разрядность обрабатываемых чисел изменяется в зависимости от числа использованных ИМС ИК02. Цикл выполнения МК начи- нается с ее выборки из ПЗУ. Для этого принятый по нарастанию S в РАМД адрес МК поступает па адресный вход ПЗУ МК- Выбран- ная по этому адресу МК с выхода ПЗУ поступает на управляющие входы ЕМУ н ЦПЭ, обеспечивая формирование адреса следующей МК в ЕМУ и выполнение данной МК в ЦПЭ. Результат выполне- ния данной МК поступает на входы одного нз регистров ЦПЭ и вы- I дается в виде признака СО или 770 в ЕМ У на вход Ф для ветвле- 112
ния микропрограмм и формирования сигналов С1 или П1. По спаду S указанный результат МК фиксируется на регистре ЦПЭ. По очередному нарастанию S подготовленный сигналами на входах УА, К и Ф адрес следующей МК фиксируется на РАМ.К, начиная тем самым цикл выполнения новой МК. Таким образом, время f выполнения одной МК в процессоре состоит из времени tSA про- хождения сигнала по цепи от входа S до выхода адреса БМУ (30 нс), времени tn выборки МК из ПЗУ (70 нс), времени /ц выпол- ( Начало ) г0____1---- 0—02 C/-f; СО-1 '1 024-02 . *i Г 00—АС I Г АС4-АС | Гуо+ас-оом CO-Z R5+AC—05-, А& I 5 02-АС 1 02>АС*1-АС,02 Рис. 3.5, 113
нения операции в ЦПЭ, времени 1б предустановки сигнала Ф на входе БМУ (15 нс), времени Ц записи результата в РОН при S=0 (33 нс). Время /ц зависит от числа ИМС ЦПЭ. В 16-разрядном процессоре их 8 и, следовательно, /ц равно времени прохождения сигнала от LUF к СО (43 нс) в первом ЦПЭ и от С1 к СО (14 нс) в семи остальных. Отсюда /ц > 43 + 7 • 14 = 141 нс, а Го > 289 нс. Время /ц можно значительно уменьшить, если использовать СУП (рис. 3.5, б). В этом случае f определяется временем прохождения сигнала от IHF к X и Y (37 нс), временем генерации сигналов переноса во все ЦПЭ (10 пс) и временем предустановки С1 относи- тельно спада S (27 нс). Кроме того, время t6 предустановки сигнала Ф на входе БМУ становится некритичным (/б меньше времени пре- дустановки С1 относительно спада S) и в Тв не входит. Следова- тельно, (ц > 74 нс, а Го> 207 нс. Длину ячеек ПЗУ выбирают исходя из формата МК, который должен обеспечить управление всеми устройствами ЭВМ. Основ- ная, не зависящая от конфигурации ЭВМ, часть’МК должна со- держать 7-разрядное поле управления адресом УА, БМУ, 4-раз- рядпое поле управления признаками УФ БМУ и 7-разрядное поле микрооперации F ЦПЭ. Дополнительная часть МК определяется структурой микроЭВМ и используемыми дополнительными устрой- ствами и должна содержать не менее трех полей для задания маски ЦПЭ, управления ОЗУ и УВВ. Поле задание маски ЦПЭ по раз- рядности может совпадать с длиной обрабатываемых в ЦПЭ слов. Однако в большинстве случаев достаточно четырех разрядов, кото- рые при К5, К4 = КЗ, К2 = К1, КО или при К5, К4 = КЗ, К2, К1 = КО (рис, 3.5, в) обеспечивают подачу на ЦПЭ одной из двух групп масок: I группа 0000 7700 8000 FF00 0001 7701 8001 FF01 Q0FE 7FFE 80FE FFFE 00FF 7FFF 80FF FFFF 2 группа 0000 7000 8000 7000 OOFF 7077 80FF F0FF 0700 7700 8700 FF00 0FFF 7FFF 8FFF FFFF, заданных в системе с основанием 16, в которой F = 1111, Е ~ = 1110. С помощью приведенных масок можно задавать константы 0 (0000) и 1 (FFFF)y выбирать младший разряд (0001) первого (7 7 00) или второго (00FF) байта; выделять знак (8000) или ман- тиссу (7FFF) числа. Поля МК, управляющие ОЗУ и УВВ, в про- стейшем случае должны содержать по два разряда, один из которых задает код операции (запись или чтение), а второй — разрешение обращения. Кроме того, дополнительная часть МК может при необ- ходимости содержать разряды для управления входами AM, ВА н ВД БМУ и ЦПЭ, а также другие необходимые для конкретной конфигурации микроЭВМ разряды. При решении какой-либо задачи на микроЭВМ с рассмотрен- ным процессором (рис. 3.5, о) необходимо составить и записать в ПЗУ микропрограмму ее решения. Процесс этот очень трудоем- кий, так как даже простейшие арифметические операции, такие как умножение и деление, реализуются громоздкими микропод- программами. В качестве примера рассмотрим деление без восста- новления отстатка положительных чисел X и Y, зафиксированных в R5 и R4 соответственно. При этом предполагается, что X/Y “ 114
3.26. Цифровая диаграмма деления ц В R2 со AC или R5 0 0 000000 0,01111 0 4 000001 1,01000 0 5 0-+Z 1,10111 0 6 1.01110 0 8 000010 0 1,01110 I 4 0,11000 1 5 l->-Z 0,00110 I 8 000101 0 0,01100 2 4 1,01000 2 5 0->Z 1,10100 2 8 001010 • 0 1,01000 3 4 0,11000 3 5 1->Z 0,00000 3 8 010101 0 0,00000 4 4 1,01000 4 5 О-Э-Z 1,01000 4 8 101010 0 0,10000 5 4 0,11000 5 5 0->Z 1,01000 5 8 010100 1 0,10000 состояния Z, Пои Z= = Z < 1. Иначе необходимо было бы предусмотреть микроподпро- грамму анализа переполнения. Схема микроалгоритма (МА) деле- ния показана па рис. 3.5, г, его схемная интерпретация на рис. 3.5, д, а цифровая диаграмма деления числа X = 0,01111 на число У = 0,11000 приведена в табл. 3.26, в которой указаны состоя- ния регистров R2, АС или R5 и выхода переноса СО после выпол- нения в Лм цикле (Ц) /-й МК (колонки «Ц» и «В»). Деление начина- ется с установки Z в 1 и записи маркера MR в R2 (МКО и МК1), по которому в дальнейшем определяется конец операции деления. Далее осуществляется вычитание X — У (МК2—Л1К5) с целью получения первого остатка и цифры частного, относящейся к разря- ду целых. Указанная цифра генери- руется в виде переноса СО, фиксиру- ется в триггере Z и однозначно опре- деляет знак нового остатка. Действи- тельно, при выполнении деления в такте сложения в знаковый раз- ряд сумматора поступает либо 0 (знак положительного остатка) и 1 (знак — У}, либо 1 (знак отрицатель- ного остатка) и 0 (знак +У). Следо- вательно, СО = О свидетельствует, что новый остаток отрицательный (0 + 1 — 1 и переноса нет), а СО = — 1 свидетельствует, что новый оста- ток положительный (единица в зна- ковом разряде суммы перешла в 0, вследствие чего возник перенос). МК6 осуществляет сдвиг остатка Q на один разряд влево путем выпол- нения операции Q + Q = 2Q. МК7 и МК8 осуществляют сдвиг кода в R2 влево па один разряд и запись в млад- ший разряд сформированной ранее МК5 очередной цифры частного. При выполнении МК8 анализируется пе- ренос СО. Сигнал СО — 1 означает, что MR прошел все разряды R2 и, следовательно, деление закончено. При СО = 0 осуществляется переход на новый цикл, а знак выполняе- мой операции определяется анализе к остатку прибавляется прямой, а при Z = 1 — обратный код де- лителя. ' При размещении МК в ПЗУ необходимо учитывать особенно- сти формирования адреса следующей МК в БМУ, которые состоят в следующем: нулевая строка ПЗУ отличается от других строк тем, что к ее ячейкам можно перейти с помощью МК JZR из любой ячейки ПЗУ, вследствие чего ее ячейки следует расходовать эко- номно; условные переходы по F, С, Z осуществляются только к ко- лонкам 2 и 3 или 10 и 11, вследствие этого МК с указанными пере- ходами при распределении ячеек ПЗУ следует размещать в первую очередь, а проверки условий чередовать с вычислительными МК, что позволяет сократить число невычислительных МК, осущест- вляющих только проверку условий; плотность размещения МК повышается, если в зоне расположения микропрограмм отсутствуют незаполненные ячейки. Микропрограмма деления, записанная 115
в символической форме и размещенная в ячейках ПЗУ с учетом ука- занных особенностей, приведена в табл. 3.27. Наглядность разме- щения МК в ПЗУ повышается, если использовать графическую мо- дель ПЗУ в виде 16 колонок по 32 ячейки (рис. 3.5, е) в каждой из которых указывается номер хранящейся в ней МК. Значительно сократить трудоемкость программирования на уровне МК можно путем введения второго (командного) уровня программирования. Одна из основных задач, возникающих при этом,— выбор системы команд. Два крайних решения этой задачи состоят в следующем. В первом случае система команд выбирается с учетом эффективной реализации алгоритмов задач, которые будут решаться па проектируемой ЭВМ. Ориентация на класс решаемых задач существенно по- вышает эффективность ЭВМ, однако програм- мная несовместимость разрабатываемой ЭВМ с существующими ряда- ми ЭВМ создает значи- тельные трудности в со- здании как сервисных, так и прикладных про- грамм, Во втором случае разрабатываемая ЭВМ реализует одну из из- вестных систем команд, например ЕС или СМ ЭВМ, что позволяет зна- чительно сократить за- траты на программиро- вание за счет использо- вания созданного для 3.27. Микропрограмма деления Вершина МА Адрес МК й. aj УФЗ, УФ2 УФ1, УФ0 5 0 60 CLR R2 FFI STZ JCR1 1 61 /NR R2 FFI HCZ JCR2 2,3 62 ILR R4 FFO HCZ JFL7 4 73 CIA AC FFI HCZ JCR2 5 72 ALR R5 FFO STZ JCRO 6 70 ALR R5 FFO HCZ JCR1 7 71 ILR R2 FFO HCZ JCR4 8,9 74 ALR R2 FFZ HCZ JFL6 этих ЭВМ программного обеспечения. При выборе структуры ко- манды аппаратура накладывает некоторые ограничения. Например, код операции команды целесообразно представлять 8-разрядным полем, так как именно такую часть команды БМУ может принять за один такт по шине К- Применение более длинного кода операции приводит к млоготактной расшифровке адреса первой МК микро- программы, которая соответствует данной операции. Это, в свою очередь, замедляет вычислительный процесс. Общая длина коман- ды определяется длиной обрабатываемых слов, которая равна удвоенному числу используемых секций ЦПЭ. Применение более длинных команд требует многократного обращения к ОЗУ в цикле выборки команды, что также замедляет вычислительный процесс. Особенности схемных решений при 2-уровневом управлении рас- смотрим на примере одноадресной ЭВМ с 16-разрядным процессо- ром (рис. 3.6, а), которая состоит из восьми ЦПЭ со схемой уско- ренного переноса СУП, ПЗУ емкостью 512 слов, оперативного ЗУ емкостью не более 64 К слов, семи внешних устройств ВУ1 — ВУ7, БМУ, блока приоритетного прерывания ВПП и конвейерного ре- гистра КР, Применение последнего позволяет почти в 2 раза сокра- тить цикл выполнения МК за счет совмещения выборки последую- щей МК с выполнением очередной. В этом случае выбранная по сформированному в БМУ адресу МК разбивается на две части. Первая часть МК поступает па входы УА БМУ для формирования адреса следующей Л1К. Вторая часть МК фиксируется на КР и управляет работой остальных ИМС. Следовательно, при выборке J16
из ПЗУ i-й МК В ЦПЭ выполняется .1 — 1 МК, а в БМУ форми- руется адрес для выборки i -ф- 1 МК. Такая организация вычисли- тельного процесса возможна только в том случае, если результат t-й МК не влияет иа адрес i -р 1 МК. Такое влияние могут оказы- вать МК условного перехода, например, JFL. В этом случае форми- рование адреса i + 1 МК следует задержать на один такт, что можно реализовать как аппаратно, так и программно. При аппаратной, реализации в поле МК выделяется разряд, который управляет Рис. 3.6. 117
подачей синхронизирующего сигнала в ЦПЭ (рис. 3.5, ж). Наличие 1 в указанном разряде запрещает поступление'спадов S, по которым фиксируется информация в регистрах ЦПЭ. Вследствие этого соз- дается возможность просмотра результатов выполнения МК без Перемещения информации в регистрах ЦПЭ. Кроме того, такой ре- жим позволяет согласовывать работу ЦПЭ с памятью и внешними устройствами, время выполнения операций в которых больше цик- ла ЦПЭ, путем пропуска такого количества тактов, которое необ- ходимо для завершения операций в указанных устройствах. При программной реализации микропрограммы изменяются путем пере- мещения МК таким образом, чтобы условие перехода готовилось заранее до МК условного перехода. Схема алгоритма деления, преобразованного таким образом, показана на рис. 3.6, б. В этом алгоритме два условия формируются и запоминаются на триггерах Z и С за несколько тактов до их использовании. При этом число МК по сравнению с алгоритмом, показанном на рис. 3.5, г, увеличива- лось на одну, однако длина как линейной, так и циклической части алгоритма не изменилась. Если это по каким-либо причинам осу- ществить не удается, то вводят' две МК, первая из которых форми- рует и запоминает условие перехода, а вторая осуществляет по нему переход. При этом производительность процессора падает в 2 раза. При расчете длительности t0 цикла процессора с КР не- обходимо анализировать как время /ц выполнения операции и фик- сации ее результата в ЦПЭ, так и время формирования адреса МК в БМУ. Время f состоит из времени задержки в КР (30 нс для К155ТМ8), времени выполнения операции в ЦПЭ (74 нс при использовании СУП) и времени Ц записи результата в РОН (33 не), следовательно, < = 137 нс. Время состоит из времени задержки (3® нс)> времени tn выборки информации из ПЗУ (70 нс), времени предустановки сигналов на входах УА (10 нс) и времени действия сигнала 3 = 0 (30 нс), следовательно, /м = 140 нс. Время t0 должно быть больше, чем max (/ц, /м) = 140, т. е. t0 > 140 + 3 = 143 на (длительность сигнала 5 = 0 в ЦПЭ больше на 3 нс, чем в БМУ, а она должна быть одинаковой для всех ИМС ЭВМ данной конфи- гурации). Длина команды рассматриваемой ЭВМ (рис. 3.6, а) определя- ется разрядностью центрального процессора и числом обращений к ОЗУ, необходимым для выборки команды. Если потребовать, что- бы команда выбиралась за одно обращение к ОЗУ, то при приня- тых ранее предположениях наиболее целесообразная длина коман- ды равна 16 разрядам. При такой длине команды более одного адре- са операнда разместить в поле команды трудно, что влечет за собой применение одноадресной структуры команд, например, с 8-раз- рядпыми кодами операций и адресов. Это позволяет использо- вать 256 различных кодов операций и обеспечивает прямую адре- сацию ОЗУ емкостью 256 слов. Увеличить количество команд можно за счет более длинного кода операции, однако это требует применения двухтактной системы обращения к соответствующей микропрограмме, так как за один такт в БМУ можно ввести по шине К только 8 бит. Увеличить количество генерируемых адресов ОЗУ можно за счет применения непрямой адресации (присоединен- ной или относительной), а в качестве регистра базового адреса ис- пользовать один из РОН. При этом в системе команд должна быть команда, обеспечивающая замену содержимого указанного ре- гистра. 118
Микропрограмма выполнения одноадресной команды Должна обеспечивать выборку из ОЗУ очередной команды по адресу, ука- занному в счетчике команд,— чтение (иногда запись) операнда по адресу, указанному в команде; по коду операции — выполнение заданного алгоритма и переход к следующей команде. Для этого в РА из РОН, который выполняет функции счетчика команд, необ- ходимо записать адрес и выдать его на ША, а содержимое счетчика команд увеличить на 1. Это можно сделать МК LMI, используя, например, регистр R0. Выбранная из ОЗУ команда фиксируется в одном из РОН ЦПЭ для дальнейшего анализа. Одновременно с фиксацией команды в ЦПЭ код операции по сигналу ЛМ записы- вается в РАМК БМУ, обеспечивая тем самым обращение к первой МК микропрограммы выполнения данной команды. Так как в ко- манде указан адрес только одного операнда, то будем считать, что второй операнд находится в Л С. В этом случае целесообразно ре- зультат операции фиксировать также в АС, что облегчает его ис- пользование в качестве операнда следующей команды. После раз- мещения операндов в соответствующих РОН микропрограмма осу- ществляет выполнение операции, указанной в выбранной команде. При проектировании ЭВМ важное значение имеет аппаратура обмена информацией между процессором и внешними устройствами (пульт управления, дисплей, алфавитно-цифровое печатающее уст- ройство, ЗУ па лентах и дисках, ленточный перфоратор, програм- матор ПЗУ). В рассматриваемой ЭВМ такой обмен осуществляется на основе БПП (рис. 3.6, а), который фиксирует в виде запросов сигналы готовности (Г;, i = 1,7) внешнего устройства к обмену ин- формацией с процессором и осуществляет переход к микропрограм- мам обслуживания внешних устройств, состоящего, как правило, во вводе или выводе заданного массива слов в заданную область памяти и передаче управления либо прерванной программе, либо вновь введенной. Проверку наличия запросов на прерывания удоб- но осуществлять в конце цикла выполнения команды, так как в этом случае при прерываниях необходимо запоминать минимальный объем информации (содержимое счетчика команд и аккумулятора). Осуществляется это при переходах по МК JZR в 15-ю колонку нулевой строки (УЛ = 01011111) путем подачи на вход РП БПП с выхода СРП БМУ сигнала 1. При наличии запросов на прерыва- ние и отсутствии запрета на них как по ТЗ, так и по РТП блок приоритетного прерывания по нарастанию очередного сигнала S подтверждает прерывание (ПП = 0). По сигналу ПП = 0 и коду прерывания (выходы КПО — КП2) необходимо перейти на микро- подпрограмму обслуживания внешнего устройства, вызвавшего прерывание. Это можно осуществить несколькими способами. На рис. 3.6, а сигнал ПП поступает на вход СС БМУ, переводя вы- ходы адреса строки в высокоомное состояние. Этот же сигнал посту- пает на вход СК БПП и разрешает выдачу кода прерывания КП. Так как выходы КП (открытый коллектор) и АС (три состояния) объединены монтажным ИЛИ (гальванически связаны в одну точку и через нагрузочный резистор подключены к источнику +5В), то на адресный вход ПЗУ поступит код, старшие три разряда которого задают КП БПП, а остальные равны 1 (высокоомное состояние вы- ходов А5 и А4 воспринимается ТТЛ-входом ПЗУ как 1). Сформи- рованный указанным образом код (КП2, КП1, КПО, 1, 1, 1, 1, 1, 1) будет адресом первой МК микропрограммы обслуживания внешнего устройства, номер которого задан на выходах КП БПП. Обраще- ние БМУ к Б ПЛ увеличивает цикл выполнения МК, что необходи- мо учитывать при проектировании процессора. Предшествующий 119
переходу на микроподпрограмму прерывания цикл /м1 должен состоять (рис. 3.7, а) из времени: задержки tSA (30 нс), цикла tn 'ПЗУ (70 нс), задержки / (24 нс) сигнала от входов У А до выхода СРП и предустановки сигнала /р (16 нс) на входе-Р/7 БПП. Следо- вательно, /М1 > 30 + 70 + 24 + 16 = 140 нс. Цикл tu2 перехода на Рис. 3.7, 120
микропсдпрограмму состоит из задержек tsn (15 нс) от входа S до ПП БПП и tCA (30 нс), от входа СС до выхода АС БМУ, цикла ПЗУ, времени tAS (10 нс) предустановки сигналов У А относительно спада .S и времени действия сигнала 5 = 0 (33 нс). Кроме того, при объединении в монтажное ИЛИ выходов АС БПП (три состояния) с выходами КП БПП (открытый коллектор) вносится дополнительная задержка обусловленная зарядом мон- тажных конденсаторов адресной шины МК при переходе выходов АС в высокоомное состояние и зависящая от сопротивления рези- стора R, подключаемого между открытым коллектором выходов КП БПП и источником питания +5 В. Величина уменьшается при уменьшении R (нижняя граница R определяется нагрузочной способностью выходов АС БМУ) и при R = 1 кОм tR = 84 нс. Следовательно, /м2 > 15 + 30 + 70 + 10 + 33 + 84 = 242 нс, что значительно больше цикла процессора (143 нс), работающего без прерываний. Если цикл /0 процессора принять равным /м2, то его производительность снижается. Устранить этот недостаток можно несколькими методами. Одним из таких методов является приме- нение генератора с переменной длительностью периода сигнала 5. В этом случае сигнал подтверждения прерывания должен пере- ключать генератор синхросигналов на более длительный цикл, на- пример, путем запрета одного ближайшего к спаду ПП импульса S. Использование вместо монтажного ИЛИ коммутатора, управляе- мого сигналом ПП, также уменьшает /м2 па величину tCA + tR~ — Ц = 114 — tk, где tk — задержка сигнала на коммутаторе, так как переключать шинуДС в высокоомное состояние не надо. Умень- шение цикла t 2 в этом случае может составить 100 нс, однако 19 возрастает на время 1к, так как независимо от наличия прерывания адрес МК проходит через коммутатор. Еще более высокого быстро- действия позволяет добиться схема на рис. 3.6, в, в которой БПП управляется по входу РП от специально введенного в МК бита про- верки наличия прерывания. В предшествующем прерыванию цикле единица в указанном бите проверяет наличие запросов на преры- вание. Если запросы есть, то по очередному нарастанию S БПП генерирует сигнал ПП, который через повторитель (например, К155ЛН4) устанавливает 0 на входе УАО. Вследствие этого, дей- ствующая в данном цикле МК JZR переводит РАМК БМУ в состоя- ние (0, 14), которое является адресом первой МК анализа запросов на прерывания. Если запросов нет, то БМУ выдает адрес (0,15), по которому выбирается первая МК микропрограммы выполнения следующей команды. Задержки, вносимые БПП, меньше задержек, имеющихся в системе БМУ — ПЗУ. Вследствие этого цикл t„ про- цессора не изменяется. Недостатком данной схемы является то, что для анализа кода прерывания надо вводить дополнительные МК и связи в схеме (например, выходы КП БПП подключать к входам К БМУ). Рассмотренные этапы выполнения, команды можно представить в виде графа микроалгоритма работы ЭВМ (рис. 3.7, б), вершины которого соответствуют МК ЦПЭ, БМУ'и БПП. Цикл выполнения команды начинается с МКО, которая выдает на ША со счетчика команд (регистр R0) адреса очередной команды и начинает обраще- ние к ОЗУ путем выдачи сигналов разрешения обращения Е,счи- тывания RD и выдачи адреса ВЛ. Для генерации указанных сигна- лов должны быть предусмотрены биты в МК. Следующая МК1 12|
завершает обращение к ОЗУ и осуществляет прием считанной с ОЗУ команды в регистр Т, а также по сигналам ЛЛ4= 1 иЗ/(/=| (IPX) осуществляет прием кода операции команды (восемь старших раз- рядов) в регистр РАМК и РК- Если цикл ОЗУ больше цикла про- цессора, то необходимо синхронизировать их работу. Это можно сделать многократным повторением Л1К1 или запретом синхросиг- нала S до завершения операции в ОЗУ (по сигналу готовности ОЗУ), или путем анализа сигнала готовности ОЗУ, который по входу Ф должен быть введен в БМУ для осуществления перехода по нему. Следующие две МК2 и МКЗ осуществляют выборку опе- ранда из ОЗУ. При этом предполагается, что принятая в Т по МК1 команда в дальнейшем не понадобится, так как ее операцион- ная и адресная части уже были использованы для перехода на мик- ропрограмму выполнения команды (МПВК). Если это не так, то перед МК2 должны быть МК пересылки Т Rn. После выборки команды и операнда необходимо распределить данные в соответст- вии с требованиями выполняемой команды. Предположим, что выбранная из ОЗУ команда является делением чисел X и V в соот- ветствии с алгоритмом, показанным на рис. 3.6, б. Тогда перед на- чалом деления X и Y необходимо разместить в R5 и R4 (МК4—МК6), после чего осуществляется деление (МК7—МК17). Л1К18 пересы- лает результат в АС и сбрасывает в 0 триггер С, что в дальнейшем используется как признак отсутствия останова. Если вместо деле- ния выполняется команда останова, то последняя МК МПВК уста- навливает триггер Св 1. Далее по сигналу подтверждения преры- вания ПП осуществляется переход па микропрограмму прерыва- ния МПП, которая осуществляет обмен информацией с готовым к- работе ВУ. Завершается МПП анализом текущего состояния прерванной программы и вновь введенной информацией, в резуль- тате которого МПП передает управление прерванной либо вновь введенной программе илн осуществляет переход в состояние оста- нова ОС. В состояние ОС процессор переходит также по сигналу «Сброс», который предварительно устанавливает триггер Св 1. Так как переход в состояние останова осуществляется по сигналу сброса или после завершения ранее введенной программы, то он характеризуется отсутствием готовых к выполнению программ. Следовательно, вывод ЭВМ из состояния останова возможен после ввода готовой к работе программы, т. е. по прерыванию от внешних устройств. С этой целью осуществляется постоянный опрос сигнала ПП и при его появлении — переход на МПП. Микропрограмма работы ЭВМ при выполнении команды деле- ния, представленная в символической форме, приведена в табл. 3.28, а расположение МК в ячейках ПЗУ показано на рис. 3.6, г. Выборку команды из ОЗУ осуществляют МКО и МК1. Так как МК1 выполняется в том же такте, в котором выбирается МК2 из ПЗУ, то адресная часть МК2 содержит микрооперации JPX и AM. По первой из них осуществляется запись части команды в РК, а по второй — в РАМК. При этом предполагается, что код операции деления равен 4,0 (00100,0000) и в этой ячейке следовало бы разместить первую МК микропрограммы деления. Однако для совмещения операций первая МК МПВК (общая для многих ко- манд) помещена в ячейку 4,1 и адресация по коду операции проис- ходит ко второй МК МПВК- Если же при выполнении команды об- ращения к ОЗУ за операндом не требуется (например, при коман- дах останов и запись в ОЗУ), то считанное с ОЗУ слово в РОН не записывается. Следующей особенностью микропрограммы явля- ется анализ условия 11 при выполнении МК17, которое состоит 122
3.28. Микропрограмма деления । Вершина МА (рис. 3.7, б) Адрес МК F УФЗ, УФ2 У Ф1, У ФО УА 0 5А LM1 RO FFI HCZ JCR1 1 51 АСМ Т FF0 HCZ JCC4 2 41 LMI Т FF0 HCZ JPX, ЛЛ1(40) 3 40 АСМ Т FF0 HCZ JCC5 4 50 SDR R5 FF1 HCZ JCC8 5 80 ILR Т FF0 HCZ JCC9 6 90 SDR R4 FF1 HCZ JCC6 7 60 CLR R2 FF0 STC JCR1 8 61 INR R2 FF1 HCZ JCR3 9 63 JLR R4 FF0 HCZ JCR4 10, 11 64 С1А АС FF1 HCZ JCR7 12 72 ALR R5 FF0 STZ JCR0 13 70 ALR R5 FF0 HCZ JCR1 14 71 ILR R2 FF0 HCZ JCR4 15, 16 74 ALR R2 FFZ STC JZF6 17, И 62 /LR R4 FF0 HCZ JFL7 18 73 ILR R2 FF0 STC JZRF 19 OF NOP FF0 HCZ JFL5 21 5В NOP FFC HCZ JZRF 22 FF N0P FF1 $тс JZRF в том, что при выборке МК17 из 62-й ячейки ПЗУ формируется адрес следующей МК в зависимости от условия, формируемого в это же время в ЦПЭ МК15. Вследствие этого указанное условие не зафиксируется в триггере С к моменту, необходимому для его использования. Однако указанное условие можно считать с тригге- ра F, что и использовано в МК17, в адресной части которой указан условный переход по F (JFL). МК18 осуществляет установку в О триггера С и опрос БПП путем генерации сигнала РП по JZRF, вследствие чего дальнейшие переходы определяются состоянием БПП, однако независимо от его состояния в РАМК записывается код OF (000001111)-. Если в БПП есть запросы, то сигнал 77/7=0 от- ключает адрес строки и подает на входы ПЗУ код прерывания (7(772, КП1, КПО, 1, 1, 1, 1, 1, 1), обеспечивая тем самым переход иа под- программу прерывания МПП. Если запросов нет, то по адресу OF выбирается МК19, в адресной части которой указан переход по JFL (триггер С по МК18 еще не успел установиться в 0). Нулевое состояние триггера F обеспечивает переход к МКО на начало вы- борки следующей команды. По сигналу 1 на триггере осуществляет- ся переход к МК21 (останов), в адресной части которой код JZRP обеспечивает переход к ячейке ПЗУ OF и опрос БПП, При этом в триггер F поступает по цепи ФВ, ЦПЭ, Ф содержимое триггера С (FFC). Таким образом, БМУ попеременно генерирует адреса 5 В, OF и опрашивает БПП до тех пор, пока на него не поступят запросы на прерывание. Переход в ОС возможен также по сигналу сброса, поступающему, например, после включения питания. Ука- занный сигнал поступает на вход ОС и переводит выход адреса МК 123
в высокоомное состояние. Вследствие этого из ПЗУ по адресу FF (11...11) выбирается МК22, которая записывает 1 на триггер С и опрашивает БПП. После окончания действия сигнала сброса процессор переходит в состояние ОС или на МПП. Рассмотренные особенности ИМС не исчерпывают всех схем- ных и программных возможностей 589 серии. Например, объедине- ние в одну шину выходов внешних устройств и ОЗУ позволяет освободить шину В, к которой можно подключить сверхоператив- ное ЗУ или сдвигатель, обеспечивающий однотактный сдвиг на лю- бое число разрядов. Подключение мультиплексора ко входу Ф поз- воляет расширить количество анализируемых за один такт усло- вий. Подключение через схему ИЛИ выходов ВРК БМУ ко вхо- дам F ЦПЭ позволяет в командах адресовать РОН. Все это свиде- тельствует о широких функциональных возможностях и гибкости рассмотренной серии ИМС. Глава 4 МИКРОПРОЦЕССОРНЫЕ НАБОРЫ СЕРИИ 145, 536, 581, 582, 586—588, 1800—1802, 1804, 1810, 1883 4.1. МИКРОПРОЦЕССОРНЫЕ НАБОРЫ СЕРИЙ 145, 536, 581 ДЛЯ СПЕЦИАЛИЗИРОВАННЫХ МИКРОЭВМ Микросхемы серии К145 предназначены для построения вычисли- тельных и управляющих устройств бытового назначения (напри- мер, микрокалькуляторов и телефонных аппаратов с кнопочным набором). Состав и функциональное назначение ИМС данной серии приведены в табл. 4.1. Номеронабиратель ИК8 (рис. 4.1, а) состоит из шифратора Ш, сдвигового регистра СР на 4 X 22 бита, схем управления СУ и уст- ранения дребезга СУД, триггеров отбоя ТО и повтора ТП, генера- тора импульсов ГИ, делителя частоты ДЧ и преобразователя кодов ПК. Микросхема размещена в корпусе с 42 планарными выводами, работает от питающего напряжения 6—10 В и осуществляет запоми- нание и однократную или многократную выдачу набираемых на клавиатуре цифр в канал связи в виде серии импульсов с частотой следования 10 или 20 Гц. Процессор ИП11 для 25-клавишных однокристальных микро- калькуляторов выполняет операции сложения, вычитания, умно- жения, деления, извлечения квадратного корня, вычисления про- центов, изменение знака числа; очистки регистров и пересылки между ними информации; анализа переполнения регистров, памяти и некорректных операции. Процессор оперирует с 8-разрядными десятичными числами "в форме с естественной запятой. Память состоит из ОЗУ емкостью 180 бит (3 X 15 X 4 бит) и масочного ПЗУ емкостью 4К бит (8 X 64 X 8 бит) для хранения микропрог- рамм, общий объем которых составляет 512 микрокоманд. Вывод информации на индикацию осуществляется в семисегментном коде. Все операции реализуются по микропрограммам с помощью 26 МК, которые выполняются в течение одного периода синхронизации, за исключением МК передачи управления, которая выполняется за два периода. Время выполнения операции сложения-вычитания 60 мс, 124
умножения-деления 200 мс, извлечения корня 0,5 с. Корпус ИМС имеет 48 выводов. Серия 536 выпускается в виде модификации К536 и совместно с серией 535 предназначена для построения одноплатных микро- ЭВМ и средств цифровой автоматики массового применения, к Рис, 4,1. 125
4.1. Состав и назначение ИМС серии 145 ИМС 145 серии Функциональное назначение АП1 Формирователь импульсов управления сегментной ин- дикацией АФ1 ВВЗ-2 Селектор цифр Интерфейс ввода-вывода для устройства цифровой об- ВВ5-2 ВХЗ-2 ВП работки информации и отсчета времени Интерфейс вывода » ввода-вывода Микроконтроллер для управления технологическим и контрольно-измерительным оборудованием повышенного ГГ1 ИК5 ИК8 ИК11 быстродействия Генератор 4-фазиого тактового питания Однокристальный микроконтроллер Номеронабиратель кнопочного телефонного аппарата Блок связи номеронабирателя н ОЗУ кнопочного теле- ИК13 ИК14 ИК15 ИК18 ИК19 ИК21 ИК501— ИК508 фонного аппарата Однокристальный микроконтроллер Октавный делитель с цифровой фильтрацией сигналов Октавный делитель с большой скважностью Однокристальный микроконтроллер » » Октавный делитель с модулятором Операционные устройства микрокалькуляторов (напри- мер, «Электроника БЗ-21» и «Электроника МК-64», управляющие ПЗУ которых запрограммированы на за- данные функции) ИК1301 ЙК1801 Разновидность однокристального микроконтроллера ИК.13 Контроллер сопряжения вычислительных средств, создан- ных на основе ИМС ИК5 (например, программируемых микрокалькуляторов «Электроника БЗ-21»), с датчика- ми контрольно-измерительного комплекса (например, в системах контроля качества сварочных процессов) ИК1802 Контроллер сопряжения вычислительных средств, создан- ных на базе ИМС ИК5, с электромеханическим печата- ИК1803 кпцим устройством ДК278 Микроконтроллер для управления устройствами: ввода- вывода данных с помощью перфорированных лент, со- пряжения с внешним ЗУ в составе программируемых ми- крокалькуляторов, связи с ЭВМ типа «Электроника-60» ИК1805 Микроконтроллер для управления работой термопечата- ющего устройства «Электроника УТП-15» в составе про- граммируемых микрокалькуляторов типа «Электроника МК-48», «Электроника МК-46» ИК1807 Микроконтроллер для управления электробытовыми при- ИК1808 борами Функциональный программируемый преобразователь для обработки и контроля уровня аналоговых сигналов в ИК18091 ИК1810/ различных периферийных устройствах Центральный процессор 16-разрядной микроЭВМ с мощ- ной системой команд и гибкой системой их адресации (функциональный аналог—- «Электроника-60») 126
Продолжение табл, 4Л имс 145 серии ИК1812, ИК1813 ИК1814 ИК1901 ПК 1902 ИК1903 ИК1904 ИК1905 ИК1906 ' И К.1907, ИК1908 ИК1910 ИК1913 ИК1914 ИК1915 ИК1916 ИП1 ИП2 ИП11 ИП12 Функциональное назначение Комплект микроконтроллеров для управления минитер- мопечатающим устройством при приеме информации от ИМС ИК13 или со стандартного информационного ка- нала Микроконтроллер для управления устройствами ввода- -вывода информации в микроЭВМ, построенной на осно- ве ИМС ИК1809 и ИК1810 Микроконтроллер для бытовых электронных настольных часов с будильником и секундомером, систем оповещения и сигнализации Микроконтроллер для автоматического определения и выдачи в цифровом коде объема крови, выталкиваемого сердцем, в течение 1 мин при измерении с помощью рео- плетнзмографа Микроконтроллер для сервисной автомобильной электро- ники Микроконтроллер, работающий в реальном масштабе временя, а также в режиме таймера для включения-вы- ключения электрических цепей в электробытовых прибо- рах и устройствах промышленного назначения Микроконтроллер для записи и автоматического вызова абонента по одному из номеров Микроконтроллер для управления, контроля и индика- ции режимов работы лентопротяжного механизма быто- вого кассетного магнитофона Микроконтроллеры на основе многофункциональных тай- меров-программаторов для управления технологическим оборудованием и бытовыми приборами в реальном мас- штабе времени Микроконтроллер для преобразования, индикации и об- работки аналоговых сигналов и удержания регулируемых параметров процессов в заданных пределах Микроконтроллер для управления работой лентопротяж- ного механизма при прослушивании и компоновке музы- кальной программы Многофункциональный таймер для отсчета дискретных значений параметра с привязкой к реальному времени, выраженному в минутах и секундах Микроконтроллер для управления работой электропро- игрывателя высокого класса Микроконтроллер для программного управления само- ходными системами (роботами, игрушками) Процессор микрокалькуляторов (например, «Электропич ка БЗ-04») Регистр запоминания микрокалькуляторов (например, «Электроника БЗ-04»^ Процессор 25-клавишных микрокалькуляторов Процессор и устройство управления вводом-выводом од- нокристального инженерного микрокалькулятора (напри- мер, «Электроника БЗ-18») 127
Продолжение табл. 4.1 ИМС 115 серии Функциональное назначение ИП14 Процессор и устройство управления вводом-выводом од- нокристального микрокалькулятора (например, «Электро- ника БЗ-ЗО») на шесть арифметических операций ИП15 ИР1 Однокристальная микроЭВМ Динамический регистр сдвига на 1024/1008 бит (напри- КТ2- ПН1 мер, для микрокалькулятора «Электроника ВЗ-21») Тактовый ключ Преобразователь напряжения (1,5 В преобразуется в 6, 12, 15 и —9 В. Используется в микрокалькуляторе ПП1 «Электроника БЗ-04») Схема управления индикацией (например, для микро- РЕ2 ХК1 ХК2 хкз ХК4 калькулятора «Электроника БЗ-04») ПЗУ емкостью 2К 8-разрядных или 4К 4-разрядных слов Устройство памяти и синхронизации Арифметическое устройство Устройство ввода Устройство управления которым предъявляют требования простоты реализации, низкой стои- мости и невысокого быстродействия. На основе этой серии ИМС по- строена одноплатная 16-разрядная микроЭВМ «Электроника С5-12» с быстродействием 101 опер,/с. Серия состоит из 14 ИМС, состав и функциональное назначение которых приведено в табл. 4.2. 4.2. Состав и основные характеристики ИМС серии 538 ИМС 536 серии Функциональное назначение Р, мВт ГГ1 Генератор тактовых импульсов 1000 ИВ1 Шифратор клавиатуры 200 ИК1 Арифметико-логическое устройство 70 ИК2 Устройство микропрограммного управления 70 икз » управления вводом-выводом 70 ИК4 Последовательный интерфейс 70 ИК5 Таймер 70 ИК6 Устройство управления АЦП 70 ИК7 » селекторным каналом 200 ИК8 » микропрограммного управления 70 ИК9 Арифметико-логическое устройство 70 ИР1 Буферные регистры 70 УИ1 Усилитель мощности' 500 УИ2 » » с запоминанием 500 В серии применяют корпуса следующих типов: 244.48-8 (ИМС ГГ1), 460.24-1 (ИМС УИ1 и УЙ2) и 413.48-1 (остальные ИМС). Генератор ГГ1 служит для получения сигналов Ф1—Ф4 четы- рехфазного тактового питания. 128
Шифратор клавиатуры ИВ1 (рис. 4.1, б) обеспечивает ввод ал- фавитно-цифровой (до 60 клавиш) и управляющей (до 30 клавиш) информации в вычислительные устройства, построенные на ИМС 536 серии. Распределитель РС1 проводит непрерывный опрос кла- виш путем последовательного возбуждения вертикальных шин блока клавиатуры БК. Перенос с РС1 передается на вход рас- пределителя РС2. При нажатии какой-либо клавиши сигнал на соответствующем такте работы РС1 передается по горизонтальным шинам БК на схему равенства кодов СРК- При совпадении кодов в БК и РС2 СРК выдает сигнал, по которому ПЗУ1 и ПЗУ2 фор- мируют код клавиши: управляющий символ считывается с ПЗУ1 и через коммутатор К поступает на регистр выдачи РВ', алфавитно- цифровой символ считывается из ПЗУ! и в зависимости от кода в регистре РУ перекодируется с помощью ПЗУ2 в код (КДИ7 и КДИ8). Ассоциативное ЗУ (АЗУ), состоящее из ячеек памяти и схемы равенства кодов, и узел формирования задержки, располо- женный в блоке управления БУ и регулируемый кодом установки КУ, используются для исключения дребезга контактов и их защи- ты от одновременного нажатия клавиш. После формирования сим- вола, соответствующего нажатой клавише, Б У выдает сигнал го- товности информации ГИ, по которому код из РВ через группу вентилей В поступает на информационную шину ИШ. Арифметико-логическое устройство ИК1 обрабатывает слова длиной в 8 разрядов и имеет выводы, позволяющие создавать АЛУ с разрядностью 8п, где п = 1, 2, .... Устройство управления вводом-выводом информации ИКЗ (рис. 4.1, в) состоит из регистра Р байта состояний; шины процес- сора ШВМ; шины ввода-вывода ШВВ', дешифратора Д; блока управления БУ записью 3, чтением Ч и сбросом С; триггеров ТУ и ТС признаков ЛУ и ЛС и реализует обмен информацией между ШВВ и ШВМ и дешифрацию кода из регистра Р или кода с шины ШВМ. Выбор режима дешифрации задается состоянием шины условий ШУ. А4икросхема ИК4 (рис. 4.1, г) преобразует последовательную форму представления информации в параллельную и наоборот. Режим работы ИК4 задает код в регистре режима РР и сигналы на шинах адреса ША, записи 3 и чтения Ч, которые дешифрируются дешифратором Д. Код 00 в РР соответствует исходному состоянию, при котором все регистры установлены в 0 и работа с ,ИК4 запре- щена. В режиме передачи ПД код из регистра сдвига PC под воз- действием тактовых сигналов ТС последовательно, начиная со стар- ших разрядов, поступает па выход ПД. Передача байта завершает- ся по сигналу переноса с 3-разрядного счетчика С, по которому блок управления БУ производит передачу кода из буферного ре- гистра РБ в PC и вырабатывает сигнал прерывания ПВ, после чего начинается новый цикл передачи. Если в промежутке между очередными сигналами ПВ в РБ не записан новый байт, то в РБ запишется код из регистра установки РУ. В режиме приема ПМ последовательный код поступает на вход PC, заполняет его и схе- мой равенства кодов СРК сравнивается с кодом из РУ, Последую- щие действия зависят от состояния РР. При состоянии 01 осуществ- ляется поиск в принимаемой последовательности кода, равного коду, который хранится в РУ, и выдача сигнала ПВ при обнаруже- нии такого кода. При состоянии 10 принятый в последовательном виде байт по сигналу переноса со счетчика С передается на инфор- мационную шипу ИШ. При состоянии 1 1 на ИШ передаются только те банты, которые нр равны байту, хранящемуся в РУ. 5 6-451 129
Таймер ИК5 (рис. 4.1, 3) служит для формирования временных интервалов, задержек и последовательностей импульсов различ- ной частоты. Состоит из четырех каналов К!—К4. Каналы К2 и КЗ полностью аналогичны каналам К1 и К4 и па рис. 4.1, д не показа- ны. Каждый из каналов содержит 4-разрядный счетчик С, регистр Р и схему равенства кодов СРК. Кроме того, каналы К1 и К2 имеют пр два дешифратора Д, а каналы КЗ и К4 — схему считывания СС текущего кода счетчика. Код в регистрах каналов задает коэф- фициент деления (КД) от 1 до 16. За счет внешней коммутации ка- налов можно получить КД, равный произведению КД отдельных каналов. Дешифраторы выполняют функции распределителей сиг- налов. Микросхема ИК6 предназначена для управления работой АЦП и обеспечивает его сопряжение с микроЭВМ. Устройство микропрограммного управления ИК8 (рис. 4.1, г) обеспечивает формирование адресов микрокоманд AM К в зависи- мости от условий, поступающих от АЛУ и других устройств. Режи- мы работы ИК8 (пуск, останов, ожидание и запрос к ЗУ микро- программ) задает блок управления БУ. Формирование AM К осу- ществляется на регистрах базы микрокоманды РБМ и текущего адреса'РТА, которые имеют соответственно 5 и 7 разрядов и служат для хранения старших и младших разрядов АМК. Заполняется РТА по шине ШМ непосредственно от адресной части очередной МК при чтении ее из ЗУ МК. При этом отдельные разряды АМК можно изменить сигналами, поступающими по шине условий ШУ и реали- зующими таким образом ветвления в микропрограммах. Запись кода в РБМ требует выполнения специальных МК перехода и про- изводится с предварительной записью в регистр следующей МК РСМ. Управление при этом осуществляется МО, сигналы которых формирует дешифратор Д. Для запоминания адреса возврата при переходах служит регистр РАВ. Арифметико-логическое устройство ИК9 (рис. 4.1, ж) состоит из 8-разрядного регистра-сумматора PC, цепей переноса ЦП и ре- гистра признака РП. Двунаправленные 8-разрядные информа- ционная {ИШ) и адресная {ША) шины подключены к общей шине ОШ АЛУ и обеспечивают обмен адресной и числовой информацией. Сигналы переноса, переполнения, равенства нулю, результата и со- держимое нулевого разряда PC фиксируются на РП и выдаются иа шину условий ШУ. Управляет АЛУ дешифратор Д МК на который поступает 8-разрядный код МО, номер ИМС и сигнал разрешения. Буферные регистры ИР1 (рис. 4.2, а) управляются дешифрато- ром Д, который по адресу А и сигналам записи 3 и чтения Ч форми- рует МО записи {31 и 32) и чтения {41 и 42) в регистры Р1 и Р2. Указанные регистры связаны с другими ИМС двунаправленной информационной шиной ИШ через вентили В7 —В4. Значения при- знаков ЛС и ЛУ определяют содержимое Р1 и Р2. или в Р1 и Р2 записывается новая информация, или поразрядная дизъюнкция, или конъюнкция нового и ранее записанного в Р1 и P2i кода. Прием информации от внешних устройств ВУ иа ИШ осуществляется в за- висимости от сигнала РВ (режим ввода) или через коммутатор К (для потенциальных сигналов), или через формирователи сигналов ФС и Р2 (для информации, представленной в импульсной форме). Кроме функций буферных регистров, ИМС ИР1 можно использо- вать для обработки сигналов прерывания. Для этого ФС обеспечи- вает поразрядную запись сигналов прерывания от ВУ в Р2. Мас- кирование этих сигналов выполняет блок схем И Б СИ. При этом в Р1 записывается и хранится код маски. 130
Общий сигнал прерывания СП формируется схемой ИЛИ, объединяющей выходы БСИ. Сигнал прерывания, хранящийся в каком-либо разряде регистра Р2, можно сбросить записью в этот регистр с признаком поразрядной конъюнкции кода с нулем в соот- ветствующем разряде. Серия 581 выпускается в корпусах 244.48-1 и 244.42-1 в виде модификации К581 и состоит из ИМС ИКД, ИК2 и РУ1—РУЗ. Серия предназначена для построения специализированных вычис- 5* 131
лительных .устройств и нашла широкое применение в микроЭВМ «Электроника-60». Процессорный элемент ИК1 (рис. 4.2, 6) представляет собой 8-разрядное АЛУ, в котором на микропрограммном уровне реали- зована обработка 16-разрядных слов. Назначение выводов ИК1 приведено в табл. 4.3. Восьмиразрядный арифметический блок АБ выполняет 84 операции (сложение, вычитание, ±1, 4*2, сдвиги, по- разрядные конъюнкции и дизъюнкции). Двадцать шесть 8-разряд- ных регистров общего назначения РОН объединены дешифратором Д в ЗУ РОН, схемная реализация которого обеспечивает парал- лельную выдачу в АБ или на системную СШ или микропрограм- мную ШМ шину содержимого двух РОН. Режим работы ИМС опре- деляется микрокомандой, записанной в регистр РМ и состоящей из кода регистровой операции и адресов РОН, участвующих в опе- рациях. В микрокомандах условных переходов или с непосредствен- ной адресацией разряды адресов используются либо для указания номера проверяемого условия, либо для записи одного из операн- дов. При этом 10 РОН адресуются прямо путем задания их номеров В соответствующих полях микрокоманды, четыре РОН адресуются либо прямо, либо косвенно, а остальные 12 РОН адресуются только косвенно с помощью 3-разрядного регистра указателя адреса РУД. Из 10 регистров первого типа образуют пять 16-разрядных регист- ров, которые используют как рабочие регистры микропрограмм для хранения команды, исполнительного адреса, двух операндов и слова состояния микропрограммы. Четыре регистра второго типа исполь- зуют как указатель стека и счетчик адреса команд. Остальные 12 регистров используются как шесть 16-разрядных регистров общего назначения. 4.3. Назначение выводов ИМС ИК1 Номер вывода Наименование выводов 4—17, 22—23 — Системная шинй СШ. В режиме приема информа- вход-выход ции по СШ поступают команды и данные, а в режиме выдачи — содержимое РОН 24 Общий вывод. Шина нулевого потенциала 25, 26, 46 п 47 — Ф1, Ф2, ФЗ и Ф4. Синхронизирующие сигналы, входы состоящие из четырех неперекрывающихся, сдви- нутых по времени серий импульсов 27 — вход Управление У. Единичное значение сигнала У переводит МП в режим ожидания, который ис- пользуется, например, в случае ожидания поступ- ления информации в СШ 28—34 и 36— Шнна микрокоманд ШМ. Шина ШМ служит для 44 — вход-вы- связи между ИМС комплекса и в режиме приема ход по ней поступают микрокоманды, а в режиме вы- дачи по ней выводится информация, поданная на СШ, содержимое РОН или результаты проверки условий 45 -г- вход Питание +12 В 48 — вход Питание —5 В Системная информация, состоящая из команд и данных, посту- пает в ИМС ИК1 по 16-разрядной СШ, состоящей из двух 8-разряд- 132
них шин, и с помощью мультиплексоров МА, МВ и МС может зано- ситься в РОН или передаваться в ШМ. Микрокоманды, подлежа- щие исполнению, поступают в ТИС по Ш.М и по сигналу Ф/ фикси- руются на РМ. Код операции микрокоманды с РМ поступает в блок местного управления БМУ, который по Ф2 и ФЗ вырабаты- вает управляющие сигналы УС, обеспечивающие выполнение за- данной микрооперации. Обработка 16-разрядных слов одной микро- командой осуществляется за два цикла за счет того, что во втором цикле младшие разряды номеров регистров, указанных в микро- команде, шгвертируются, и над содержимым регистров, номера ко- торых получены указанным образом, выполняется та же микроопе- рация. За время действия тактовых сигналов ФЗ и Ф4 происходит подготовка к приему следующей микрокоманды или к выдаче инфор- мации в ШМ или СМ. В последнем случае информационные сиг- налы усиливаются выходными усилителями ВУ1 и ВУ2. При вы- полнении операций в АБ вырабатываются признаки отрицатель- ного и нулевого результата, 4- и 8-разрядного переносов и перепол- нения, которые фиксируются в регистрам признаков РП и с помо- щью схемы анализа САП проверяются микрокомандами условного перехода. Микросхема ИК2 (рис. 4.2, в) представляет собой блок микро- программного управления и предназначена для управления рабо- той процессора микроЭВМ «Электроника-60», построенного на осно- ве ИК1. Назначение выводов ИК2 приведено в табл. 4.4. Основными функциями ИК2 является формирование адресов микрокоманд и управление системной шиной СШ. Основным узлом ИМС является счетчик микрокоманд СМ, содержимое которого увеличивается на единицу при каждом обращении к ПЗУ. микропрограмм. Форми- рование и последующая запись в СМ адресов начала микропрограмм и адресов условных и безусловных переходов осуществляются ком- бинационной .схемой КС, которая, в свою очередь, управляется содержимым регистров системной команды РК, микрокоманды РМ, прерываний РП и состояний PC, а также внешними управляющими сигналами ВУС. 4.4. Назначение выводов ИМС ИК2 Номер вывода Наименование выводов 4—7 Входы для подачи сигналов прерывания от внеш- него устройства, по таймеру, питанию и регене- 8 и 12 9—11,13 и 14 рации ОЗУ Входы для 17-го н 16-го разрядов микрокоманды Входы для управляющих сигналов: занято, допол- нение, сброс, готово и ожидание 15—17, 22 и 23 Выходы сигналов управления системным каналом.’ вывод данных, запись байта, подтверждение пре- 24 25, 26, 46 и 47 27, 45 и 48 рывания, синхронизация и ввод данных Шина нулевого потенциала Входы для подачн тактового питания Ф1—Ф4 » » подключения питающего напряжения 5, 12 и —5 В 28—34, 36—44 Шина микрокоманд ШМ, работающая в режиме двусторонней передачи информации 133
Для запоминания адреса возврата из подпрограммы служит регистр РВ. Внутренние управляющие сигналы УС и сигналы уп- равления системной шиной вырабатывают соответственно БМУ и БУСШ, которые управляются содержимым РМ через дешифра- тор операции ДО. Микропрограммы обработки информации записаны в ПЗУ РУ1, РУ2 и РУЗ, где хранятся соответственно первая, вторая и третья страницы управляющей информации. Обращение к страницам осу- ществляется путем задания 2-разрядного кода выбора ИМС, который дешифрируется схемой, встроенной в ПЗУ на стадии изготовления БИС. Вследствие этого отпадает необходимость применять внешние селектирующие схемы. Четвертая комбинация кода выбора ИМС зарезервирована для ПЗУ, содержащего микропрограммы поль- зователя, что повышает эффективность применения МП и позволяет приспосабливать программное обеспечение к классу решаемых задач. 4.2. НАЗНАЧЕНИЕ И СТРУКТУРА МИКРОСХЕМ СЕРИЙ 582, 586—588 Серия 582 состоит из пяти ИМС, которые выпускаются в кор- пусах 244.48-8, 413.48-3 в виде двух модификаций К582 и КР582. Основными ИМС являются процессоры ИК1 и ИК2, которые имеют выводы, обеспечивающие увеличение разрядности с дискретностью в 4 бит. Кроме МП, серия содержит ИМС запуска (ИКЗ), ПЛМ (ИК41, ..., ИК47) и прерываний (ИК5). Микропроцессорный набор данной серии во многом подобен серии 584. Показатели ИМС этой серии уступают показателям серий ТТЛШ и ЭСЛ по быстродействию, серий лМДП по степени интеграции, серий КМОП по энергопотреблению и серий рМОП — по стоимости. Вместе с тем ИМС И2Л серий лишены и многих недостатков, которые имеются в указанных сериях (например, большое энергопотребле- ние у серий ЭСЛ и ТТЛШ), что делает эффективнымих применение в областях, где не требуется экстремальных значений отдельных показателей. Серия 586 состоит из ИМС, основные параметры которых при- ведены в табл. 4.5. Применяются ИМС для одноплатных микроЭВМ. 4.5. Состав и основные характеристики ИМС серии 586 ИМС 586 серии Функциональное назначение Тип корпуса А1, мВт Разрядность (емкость), бнт ИК1 Центральный процессорный 244.48-8 900 16 элемент ИК2 Устройство управления вво- дом и выводом информации 244.48-8 700 8x3 РЕ1 Постоянное ЗУ (ПЗУ) 244.48-8 240 16x1024 РУ1 Оперативное ЗУ (ОЗУ) 460.24-1 150 4x256 ВЕ1 Однокристальная микроЭВМ — — — Однокристальный МП (рис. 4.3, а) ИК1 состоит из 16-разряд- кого параллельного А У, включающего в себя регистры результата РР и признаков РП; ЗУ РОН, выполненных в виде 16 16-разрядныд 134
ячеек РО—Р15; устройства управления УУ, построенного на осно- 'вК" КС типа программируемой логической матрицы, регистра адреса микрокоманды РАМ и триггера блокировки ТБ прерывания и ре- гистров команды РК, информации РИ и адреса РА. Обмен инфор- мации с другими ИМС происходит по общей (информационно- адресной) шине ОШ, которая через буферную схему БС, осуществ- ^-4^1 J \1УС' ОШ ил ПЗУ ОЗУ Интерфейс ПК! Р£1 |Af/ РУ! | РУ! | РУ! | РУ! ИК2 | ИК2 ] m2 | m2 Рис. 4.3. ляющую преобразование МОП-уровней в ТТЛ-уровни, подключена к внутренней шипе ВШ и неоднородной шине управления. Назна- чение выводов ИМС ИК1 приведено в табл. 4.6. Основным устройством обработки данных ИК1 является АУ, ко- торое управляется 5-разрядным кодом, поступающим из УУ, и вы- полняет арифметические и логические операции над операндами, один из которых хранится в РР, а другой поступает с ВШ. Резуль- тат фиксируется в РР, а его признаки — в РП. У У генерирует внутренние управляющие сигналы ВУС, используя для этого ин- формацию из РК, РИ и РП. При этом РОН РО и РЗ имеют цепи счета и используются как счетчики команд и МК, В начальное 135
4.6. Назначение выводов ИМС ИК1 Номер вывода Наименование выводов 1 2 3 Выход сигнала сопровождения адреса СА » » запроса ЗУ ЗП » » записи (чтения) информации в ЗУ (34) 4—6 7 8 9, 28 10—13, 15—23, 25—27 14 24, 35, 43, 36, 45 29—31, 37—42 32 33 34 44, 46 Контрольные входы КВ Вход сигнала ответа ЗУ (ОП) » » пуск П Входы тактового питания С1 и С2 Двунаправленная общая (ипформационно-адреа- ная) шина ОШ Шина нулевого потенциала Входы для подключения источников питания -5 В (24), 5 В (35 и 43) и 12 В (36 и 45) Неиспользуемые выводы Выход сигнала ответа ожидания ОЖ » » .сравнения Вход сигнала ожидания Ж Входы сигналов программно-немаскируемого пре- 47 48 рывания (П1) и маскируемого (П2) Вход сигнала «Сброс» СБ Выход сигнала начала команды состояние МП устанавливается сигналом СБ (47-й вывод), который должен поступить в течение трех тактов, начиная с С1. Через два такта после окончания сигнала СБ МП генерирует адрес 1000 для обращения за 1-й командой. Для организации многопрограм- много режима работы в ИМС предусмотрены маскируемые и немас- кируемые прерывания. Прямой доступ внешних устройств к опе- ративному ЗУ реализован за счет сигналов ОЖ и Ж (32-й и 34-й выводы). Для этого внешнее устройство по началу сигнала С2 вы- дает сигнал Ж, в ответ на который МП генерирует сигнал ОЖ и после выполнения текущей МК переходит в состояние останова, освобождая ОШ. Микросхема ИК2 предназначена для построения схем стыков- ки устройств ввода-вывода с МП, адаптеров, таймеров, формирова- телей сигналов прерывания программ и состоит (рис. 4.3, б) из че- тырех регистров (РА, РБ, PC и РУ), схем равенства кодов СР К и маскирования СМ, блока управления БУ и трех буферных схем БС. Обмен информацией осуществляется по трем 8-разрядным двунаправленным шипам (ША, П!Б и ОШ) и неоднородной шине управления ШУ (табл. 4.7). С помощью ОШ производится обмен информацией с МП ИК1> а внешние устройства подключаются к ША и ШБ. Направление передачи информации в ША и ШБ за- дают сигналы США и СШБ. Все регистры программно доступны МП. Чтобы записать с ОШ в какой-либо из регистров информацию, необходимо возбудить сигналы В, 3 и 34, а па ОШ подать адрес регистра и код операции, которые задаются 4—7 разрядами. При этом 4-й и 5-й разряды совместно с сигналом 34 определяют код 136
4.7. Назначение выводов ИМС ИК2 Номер вывода Наименование выводов 7, з Тактовое питание С1 и С2 2, 24, 25 Входы для подключения источников питания 12 В (2), -5 В (24) и 5 В (25) $-11 Двунаправленная шина Б ШБ 12 Многофункциональный вывод (САУ(П2), используемый для ввода сигнала САУ стробирования пересылки ин- формации между РА и РУ или для вывода сигнала пре- рывания (П2) 13 и 27 Последовательные выход и вход PC 14, 19 и 30 Сигналы, задающие режим работы РЖС, сдвиг или сброс (СДС) и разрешение входа (РВС) в регистре PC 15 Вход сигнала РШБ, задающего режим работы ШБ 16 » » РО, задающего режим обмена 17 и 28 Вход СШБ и США стробирующих сигналов шин Б и А 18 Вход сигнала СБС стробирования передачи информа- ции между регистрами РБ и PC 20 и 21 Входы сигналов запрос (3) и выборка (В) 22 Вход сигнала записи-чтения 34 23 Выход (ВСР) схемы равенства кодов 26 » сигнала ответ ОТ 29 Вход сигнала сброс СБ 31 » » РЖА, задающего режим работы ША и схемы равенства кодов 32—47 Двунаправленные шины ША (выводы 32, 34, 36, 38, 40, 42, 44 и 46) и ОШ (выводы 33, 35, 37, 39, 41, 43, 45 и 47) операции в соответствии с табл. 4.8, где символы 3, ЗК, ЗД, 4 и ЧМ означают соответственно запись, запись с поразрядной конъ- юнкцией или.дизъюнкцией, чтение и чтение сквозь маску (единицы читаются только с немаскированных разрядов). После приема указанных сигналов ИМС генерирует сигнал ОТ и по завершению сигнала В фиксирует информацию с ОШ. Чтение отличается от записи тем, что подается инверсное значение 34, а информация с регистров выдается через такт после снятия сигнала В и поддер- живается на ОШ до окончания сигнала 3. Регистр PC имеет ревер- сивные цепи счета, работающие с частотой до 300 кГц, и сдвига кода влево или вправо (частота до 600 кГц) и допускает каскадиро- вание при двух и более ИМС. Как в режиме счета, так и сдвига можно с помощью СРК формировать сигнал равенства кода в PC с кодом программно управляемой установки. В устройствах форми- рования сигналов прерывания РА фиксирует запросы, а в РВ записывается маска. Выходной сигнал П2 формируется при нали- чии 1 в немаскированных разрядах. Постоянное ЗУ РЕ1 построено на однотранзисторных запоми- нающих элементах с записью информации при изготовлении (масоч- ное ПЗУ), имеет емкость 1024 16-разрядных слова, состоит из (рис. 4.2, г) буферной схемы БС\ блока управления БУ; регистра и дешифратора адреса, выполненных в виде двух независимых ка- налов РХ и ДХ, РУ и ДУ, и накопителя Н с усилителями чтения УЧ. Обмен информацией осуществляется по общей (информационно- 137
4.8. Кодирование операций в ИМС ИК2 Операции с регистрами Запись Чтение 4 5 РА РБ РУ PC РА РБ РУ PC 0 0 3 3 3 ч ч ч ч 1 1 зк 3 3 чм ч ч ч 0 1 зд 3 3 ч ч ч ч 1 0 Сброс РО РВС Сброс Сброс Запрет РВС адресной) шине ОШ и неоднородной шине ШУ (табл. 4.9). Обраще- ние к ПЗУ занимает четыре такта (2 мкс). В 1-м такте в БУ посту- пает сигнал СЛ, по которому осуществляется прием адреса с ОШ, а в конце 3-го такта происходит выдача па ОШ считанной инфор- мации. 4.9. Назначение выводов ИМС РЕ1 Номер вывода Наименование выводов /, 2, 5 Входы сигналов выбора ИМС (ВМ), сопровож- дения адреса СА и запроса 3, 3—45 Неиспользуемые выводы (3, 4, 6, 17, 19—23, 25—31, 33, 37, 38, 43—45) 7 Шина нулевого потенциала 8—10, 32, 34—36, Информационно-адресная часть двунаправлен- 39—41 ной ОШ 11, 14—16, 18, 42 Информационная часть двунаправленной ОШ 12, 13 Тактовое питание С1 и С2 46 и 47 Выводы для подключения источников питания 5 В (46), 12 В (47) 48 Выход сигнала ответ ОТ Оперативное ЗУ РУ1 построено на статических 6-транзистор- пых ЗЭ и имеет емкость 256 4-разрядных слов. Структурная схема и алгоритм работы РУ1 аналогичны ИМС РЕ1, наименование и назначение выводов приведено в табл. 4.10. На основе 586 серии разработана и выпускается одноплатная микроЭВМ «Электроника С5-21» (рис. 4.3, в), состоящая из МП ИК1, ПЗУ и ОЗУ емкостью соответственно 2К и 256 16-разрядных слов и интерфейса, построенного на четырех ИМС ИК2. Структура ЭВМ реализована па основе 16-разрядной двунаправленной ОШ, работающей в режиме разделения времени и допускающей в один такт времени передачу информации только от одного источника к одному приемнику. Производительность ЭВМ достигает 250 тыс. опер, /с, а потребляемая мощность не более 20 Вт. Серия 587 выпускается в виде модификаций 587, К587 (корпус 429,42-1) и КР587 (корпус 2204-42-1). Состав и основные параметры серии приведены в табл, 4.11, 138 ,
4.10. Назначение выводов ИМС РУ1 Номер вывода Наименование выводов 1, 2, 7, 8 3—5, 11—15 6, 10 9, 16 Информационная часть двунаправленной ОШ Адресная часть двунаправленной ОШ Неиспользуемые выводы Выводы для подключения источников питания —5 В (9) и 5 В (16) 17, 19, 24 Входы сигналов выбора ИМС ВМ, сопровож- дения адреса С А и запроса 3 18 20, 21 22 23 Выход сигнала ответ ОТ Тактовое питание С1 и С2 Вход кода операции 34 (запись-чтение) Шина нулевого потенциала 4.11. Назначение и основные параметры ИМС серии 587 ИМС 587 серии Функциональное назначение Разряд- ность, бнт /ц, мкс Число МК . ИК1 Устройство обмена ин- формацией 8 1 50 ИК2 Арифметическое устрой- ство 4 2 168 икз Арифметический расши- ритель 8 2 50 РП1 Управляющая память 14 4 64 Устройство обмена информацией ИК1 содержит 3500 транзис- торов. Предназначено для организации как внутри, так и внепро- цессорного обмена данными параллельным или последовательным способом с разрядностью, кратной 8 битам, и может быть исполь- зовано для построения интерфейса процессоров и каналов, блоков прерывания и управления ЗУ. Разрядность ИК1 увеличивается кас- кадированием произвольного числа ИМС. Арифметическое устройство ИК2 содержит 2500 транзисторов и состоит из восьми 4-разрядных регистров общего назначения, арифметического блока с сумматором и сдвигателем, 12-разрядио- го регистра МК, вспомогательных регистров и схемы управления. Управляет работой ИК2 МК, которая в зависимости от кода в раз- рядах 0 и 1 МК реализует микрооперации четырех типов: регистр— регистр, регистр — рабочий регистр, операция с константой и операция с обменом. В МК первого типа указывается два адреса РОН, из которых извлекаются операнды. Результат заносится в РОН на место второго операнда. В МК второго типа второй опе- ранд извлекается из рабочего регистра (в него же помещается и ре- зультат), а поле адреса второго операнда используется для указа- ния кода операции сдвигателя. В операциях с константой в МК указывается один адрес источника операнда (он же является и при- емником результата) и 4-разрядная константа, которая является вторым операндом. Операции последнего типа предназначены для 139
обмена информацией ЛУ с другими ИМС по трем имеющимся в ИК2 каналам. Во всех указанных типах МК код операции суммирую- щего блока задается независимым 3-разрядным полем МК (разряды 2—4). Всего ИК2 выполняет 168 типов МО над числами, разряд- ность которых можно увеличить до 4/г, где п — количество исполь- зуемых ИК2. Арифметический расширитель ИКЗ предназначен для быстрого выполнения операции умножения, сдвига н поиска первого слева нуля или единицы, или первой неравнозначной пары цифр над 8-разрядными числами и содержит КС умножения и вспомогатель- ные схемы. При каскадировании ИКЗ разрядность растет пропор- ционально квадратному корню от числа использованных ИМС. На- пример, для умножения двух 16-разрядных чисел необходимо четы- ре ИКЗ. При этом время умножения 8-, 16-, 32- и 64-разрядных чисел составляет соответственно 2; 4,2; 8,6 и 17,4 мкс. Управляющая память РП1 содержит 6000 транзисторов и со- стоит из-программируемой логической матрицы (ПЛМ) масочного типа и входных, выходных и вспомогательных регистров. Основное назначение РП1 — построение блоков микропрограммного управ- ления. При этом дополнительного ПЗУ не требуется, так как МК фиксируются в имеющейся в ИМС ПЛМ, емкость которой состав- ляет 64 24-разрядных слов, выбираемых 24-разрядным адресом. Схема РП1 имеет все необходимые средства для наращивания как по емкости ПЛМ, так и по разрядности генерируемой МК. При этом емкость возрастает пропорционально 64п, а разрядность — 14п, где п — число используемых ИМС. В зависимости от записан- ной в ПЛМ информации различают ИМС РП12-РП15. Информация записывается при изготовлении путем замены технологических масок. Все описанные ИМС в статическом режиме потребляют мощ- ность 10 мВт, а при частоте 400 кГц — 200 мВт, Совместно с опи- санными ИМС применяется двунаправленный усилитель К531АП2, который служит для согласования ТТЛ- и КМОП-схем, а также для построения двунаправленных приемопередатчиков информации. Серия 588 выпускается в модификациях К588 и КР588. По структурным и функциональным особенностям подобна 587 серии, однако отличается от нее улучшенными техническими характери- стиками (табл. 4.12). Так, например, 16-разрядное арифметическое устройство (ВС1, ИК2, ВС2) имеет 16 регистров общего назначения, что по емкости в 8 раз превышает аналогичный параметр 587 се- рии. Управляющая память (ВУ1, ИК1, ВУ2) генерирует 13-раз- рядную МК и содержит программируемую логическую матрицу (ПЛМ) емкостью 100 (151 для ВУ2) 24-разрядных слов, адресуе- мых 27-разрядным кодом, и ряд вспомогательных регистров. Ариф- метический расширитель ВР1 (ИКЗ), кроме комбинационной схемы умножения, содержит дополнительные блоки, позволяющие быстро выполнять деление по итерационному способу, многоразрядные сдвиги и вспомогательные микрооперации по обработке чисел с плавающей запятой. ИМС серии имеют все необходимые средства для увеличения разрядности обрабатываемой информации путем каскадирования без применения дополнительных ИМС. Например, разрядность арифметического устройства при каскадировании увеличивается пропорционально 16. Высокая степень интеграции, один низковольтный источник питания, рекордно низкая потребляемая мощность (в статическом 140
[,12. Состав и основные параметры ИМС серии 588 ИМС 588 серии Функциональное назначение Разряд- ность, бит /ц, мкс Корпус ВА1 Магистральный при- емопередатчик 8 0,1 2121.28-4 . ВП Системный контроллер — 1 2124.42-1 ВГ2 Контроллер ЗУ — 0,2 — ВР1 (ИКЗ) Арифметический рас- ширитель 8 5 429.42-1 ВР2 Умножитель 16Х 16 16 2 4118.24-2 ВС1 Арифметическое уст- ройство 16 1 2124.42-1 ИК2 То же 16 1,5 428.42-1 ВС2 16 1 — ВУ1 Управляющая память 13 1,2 2124.42-1 ИК1 » » . 13 1,5 429.42-1 ВУ2 » » 13 — — ИР1 Многорежимный бу- ферный регистр 8 0,15 2121.28-3 режиме потребление одной ИМС составляет 1 мВт), полная совме- стимость с ТТЛ- и ТТЛШ-сериями и высокая гибкость, обусловлен- ная микропрограммным управлением, позволяет применять ИМС 588 серии для построения как встроенных, так и автономных микро- ЭВМ. В состав серии входят ИМС управляющей памяти с записан- ными в ПЛМ микропрограммами, реализующие систему команд ряда микроЭВМ, например, «Электроника 60» и «Электроника НЦ-31». Запись микропрограмм производится путем смены техно- логических масок на заводе-изготовителе. 4.3. МИКРОПРОЦЕССОРНЫЕ СЕРИИ 1800—1802, 1804, 1810, 1883 Серия 1800 [25, 38] состоит из схемы синхронизации (ВБ2), 16-разрядного программируемого сдвигателя (ВР8), 4-разрядного АЛУ (ВС1) и блока управления оперативной памятью (ВТЗ) и предназначена для построения высокопроизводительных вычис- лительных средств, прежде всего ЕС ЭВМ. Все ИМС допускают увеличение разрядности путем каскадирования. Серия 1801 [17, 25, 381 состоит из четырех ИМС (К1801ВЕ1, ВМ1, ВП1 и РЕ1) с высокой степенью интеграции до (3- К)5 ком- понент). Однокристальная 16-разрядная микроЭВМ (рис. 4.3, г) состоит из арифметического устройства А У', блока регистров общего назна- чения РОН', микропрограммного блока управления и прерывания БУП, генерирующего внутренние управляющие сигналы ВУС; таймера Т', блока обмена БО, осуществляющего пересылки-инфор- мации между А У или РОН и внутренней шиной ВШ данных; ОЗУ', ПЗУ и блоков управления последовательной и системной шипами Б У ПН! и БУСШ. МикроЭВМ ВЕ1 реализует 404 команды, которые цключагот в себя в качестве подмножества систему команд ряда микроЭВМ «Электроника НЦ». Количество уровней прерывания равно 5. Таймер состоит из счетчика, регистров интервала и состоя- 141
ния и делителя частота, измеряет интервалы времени и подсчиты- вает сигналы заданного типа. Управляет таймером код в его регист- ре состояний. Связь ВЕ1 с другими ИМС осуществляется по 16-раз- рядной системной и 4-разрядной последовательной шине СШ и ПШ, Интерфейс СШ ВЕ1 совместим с интерфейсом микроЭВМ «Электро- ника 60». Однокристальный 16-разрядный микропроцессор ВМ1 предна- значен для построения встроенных устройств обработки данных и микроЭВМ для решения инженерных и экономических задач. ВМ1 реализует 69 микрокоманд, позволяет адресовать память емкостью 64 Кбайт, с помощью ЗУ магазинного типа обрабатывает прерывания по четырем уровням. На предельной тактовой частоте 5 МГц и при времени выборки информации 400 ис быстродействие ВМ1 составляет 5 • 105 операций (типа регистр — регистр) в се- кунду. Матричная ВП1 представляет собой набор логических элемен- тов, которые на стадии изготовления путем замены нескольких технологических масок можно соединить, что значительно сокра- щает время и стоимость проектирования и изготовления БИС по сравнению с традиционным методом. Указанным способом реали- зован контроллер ОЗУ динамического типа (К1801ВП1-30), пред- назначенный для регенерации и управления работой ЗУ, построен- ных иа основе ИМС 565РУЗ, и контроллер накопителя на гибком магнитном диске (ВП1-41). Ряд ЙМС реализуют функции парал- лельного (ВП1-34 и ВП1-35) и последовательного интерфейсов (ВП1-35). Постоянное ЗУ РЕ1 имеет емкость 4К 16-разрядных слов и отличается от аналогичных ИМС наличием совмещенных адрес- но-разрядных выводов, что позволяет разместить его в корпусе 2106.24-1 с 24 выводами. Вследствие этого ИМС работает в два такта (прием адреса, выдача слова), и время выборки (400 нс) значительно отличается от цикла (900 нс). В режиме хранения ИМС потребляет 150 мВт, а в режиме обращения — 250 мВт. Серия 1802 [14, 26, 40] выпускается в виде двух модификаций 1802 и КР1802 и состоит из 13 ИМС, основные параметры и назна- чение которых приведены в табл. 4.13, где t — время выполнения типовой микрооперации; Р — потребляемая ИМС мощность. Арифметическое устройство ВС1 состоит из 8-разрядного ариф- метико-логического блока со сдвигателем; двух регистров для хранения операндов; регистра расширения, служащего для выпол- нения операций с двойной разрядностью или для хранения одного из операндов; дешифратора 8-разрядной микрокоманды и ряда вспомогательных схем. Увеличение разрядности АУ осуществляется каскадированием произвольного числа ИМС. Выполняет АУ про- стейшие арифметические и логические операции, сдвиги и пере- сылки. Арифметический расширитель ВР1 предназначен для выпол- нения однотактного сдвига кода на произвольное число разрядов и формирования номера разряда, хранящего первую слева единицу. Регистры общего назначения ИР1 емкостью 16 4-разрядных слов имеют два дешифратора, каждый из которых управляет од- ной из двух двунаправленных шин данных. Такая организация ИМС позволяет обращаться к РОН но двум независимым адресам как для записи, так и для чтения информации. Последовательный умножитель ВР2 предназначен для выпол- нения операции умножения двух 8-разрядных чисел и операции деления 16-разрядного делимого на 8-разрядный делитель. Уве- 142
4.13. Состав и основные параметры ИМС серии 1802 ИМС 1802 серии Функциональное назначение t, НС Р, Вт Число выводов ЦС1 Арифметическое устройство 105 1,2 42 ВР1 Арифметический расшири- тель 100 1,2 42 ИР1 Регистры общего назначе- ния 50 1 24 ВР2 Последовательный умножи- тель Умножитель: 1000 1,2 42 8X8 100 1,2 42 12x12 ПО 3 64 16X16 130 4 64 Сумматор 50 1,2 48 Ассоциативное ЗУ 40 1,2 48 ВВ1 Блок обмена информацией 50 1,2 42 ВВ2 » интерфейса 100 1,2 42 Адаптер последовательного интерфейса 100 1 28 Коммутатор магистральный 50 1,2 48 личение разрядности обрабатываемых чисел осуществляется кас» кадироваиием нескольких ИМС. Выполняются указанные опера- ции путем многократного применения операций суммирования и сдвига. Результат имеет 16-разрядный формат, а именно: 16-раз- рядное произведение или 8-разрядное частное и такой же остаток. Умножители 8 X 8, 12 X 12 и 16 X 16 имеют подобную струк- туру и состоят из трех регистров для хранения операндов и ре- аультата, а также комбинационной схемы умножения. При увели- чении разрядности обрабатываемых чисел умножители объединя- ются с помощью сумматоров. При этом количество умножителей растет пропорционально квадрату длины чисел. Например, для построения 32-разрядного умножителя необходимо 16 8-разряд- ных умножителей и набор сумматоров для формирования полного произведения. Сумматор представляет собой 4-разряднуто ИМС, позволяющую ва один такт вычислять сумму (-1)°* а.2А + (-l)ft> Ь2В + (-1/> с, С+ (-1 )d> где ait bit ci, di — двоичные цифры, задающие код выполняемой на сумматоре операции; А, В, С и D — 4-разрядные операнды. Увели- чение разрядности производится простым объединением ИМС. Ассоциативное ЗУ представляет собой матрицу из 32 тригге- ров и схем равенства кодов, позволяющих строить ЗУ большой емкости с выборкой информации по содержанию. Блок обмена информацией ВВ1 состоит из четырех регистров, каждый из которых может быть подключей к любому из четырех каналов данных. Вследствие этого имеется возможность осуществ- лять передачу информации с одного- канала в другой через любой 143
регистр, кроме нулевого, который используется как счетчик. Три из имеющихся каналов предназначены для работы на короткие (внутриплатные) магистрали, а четвертый — на длинные согласо- ванные линии связи. Блок интерфейса ВВ2 предназначен дли управления обменом информацией по асинхронной общей магистрали. Адаптер последо- вательного интерфейса предназначен для преобразования информа- ции из параллельной в последовательную форму и обратно и может быть использован, например, в ЗУ на дисках или линиях передачи данных. Коммутатор магистралей предназначен для управления четырь- мя двунаправленными шипами данных с возможностью логической обработки (например, с маскированием или мажорированием) передаваемой информации, а также может выполнять функции переключателя устройств в системах с двух- или трехкратным ре- зервированием. Серия 1804 полностью совместима с серией 1802 и отличается от нее способом разбивки устройств на отдельные ИМС, Указанные серии взаимно дополняют друг друга и предназначены для совмест- ного применения. Основные параметры и состав серин 1804 приве- дены в табл. 4.14. 4.14. Состав и основные параметры ИМС серии 1804 ИМС 1804 серии Функциональное назначение t, НС Р, Вг Число вы водов вс Микропроцессорная 4-раз- рядная секция 110 1,2 40 ' ВР1 Схема ускоренного пере- носа 10 0,5 16 ВУ1 Схема управления адресом 95 0,6 28 ВУ2 микрокоманды 95 0,6 20 ВУЗ Схема управления следую- щим адресом 40 0,4 16 ИР1 Параллельный регистр 12 0,6 16 Серия 1810 [7] состоит из однокристального 16-разрядного микропроцессора ВМ86 и ряда вспомогательных ИМС (ВМ59А и др.), аналогичных по назначению соответствующим ИМС серии 580. Микропроцессор ВМ86 можно разделить на устройство сопря- жения и обрабатывающее устройство, которые под управлением внутренних управляющих сигналов, генерируемых блоком микро- программного управления (БМУ), могут работать независимо и од- новременно, повышая тем самым общую производительность МП. Устройство обработки (УО) состоит из 16-разрядпого сумматора, четырех регистров операндов, результата и признака и восьми регистров общего назначения (РОН), состоящих из четырех регист- ров данных и четырех индексных регистров, Регистры данных от- личаются тем, что их старшие и младшие байты адресуются отдель- но, вследствие этого их можно рассматривать как восемь 8-разряд- ных регистров. Остальные регистры используются только как 16- 144
разрядные. Устройство сопряжения реализует обмен данными меж" ду МП и 16-разрядиой совмещенной шиной адреса и данных (ШАД) и состоит из сумматора адреса с группой из семи 16-разрядных регистров (4 сегментных, адреса команды, адреса операнда и обме- на) и регистра команды (РК), организованного в виде ЗУ, емко- стью шесть 8-разрядных слов и работающего по принципу «первый записан — первым считан». Такая организация РК позволяет хра- нить в нем шесть байт командной информации, заполняя его по два байта в те моменты времени, когда ШАД свободна. При выполне- нии команд условного перехода РК освобождается от старой ветви программы и заполняется новой. Сумматор адреса и сегментные регистры служат для формирования 20-разрядного фактического адреса, что достаточно для прямого обращения к ЗУ емкостью 1 Мбайт. При этом 16 разрядов адреса выводятся на ШАД, а че- тыре — на многофункциональные выводы, которые в другие мо- менты времени используются для вывода управляющей инфор- мации. Система команд МП ВМ86 состоит из 135 операций, вклю- чая умножение и деление, и совместима с системой команд МП 580ИК80, так как большинство команду них полностью совпа- дает, а отличающиеся команды легко программным путем преобра- зуются в команды МП ВМ86. Длина команды переменная (1—6 байт). Производительность МП составляет 2- 106опер./с при ус- ловии, что время выборки слов из ЗУ составляет 460 не. Програм- мная и аппаратная совместимость с ИМС 580 серин облегчает замену МП 580ИК80 новым, более совершенным МП ВМ86. Серия 1883 состоит из четырех ИМС (ИАО, РТ1, ВР2 и ВА4). Серия является совместной разработкой СССР и ГДР, поэтому имеет двойной номер U83-K1883. Арифметическое устройство ИАО представляет собой 8-раз- рядную секцию, выполняющую стандартный набор простейших операций (+, —, сдвиг, И, ИЛИ) и состоящую из арифметико-ло- гического блока, 18 программно доступных РОН и вспомогательных схем. Связь с другими ИМС осуществляется по двум 8-разрядным двунаправленным каналам данных, 18-разрядной шине микро- команд и вспомогательным выводам, позволяющим наращивать разрядность обрабатываемых слов. Управляющая память РТ1 предназначена для преобразования команд в последовательность МК и состоит нз программируемой логической матрицы (ПЛМ) емкостью 140 34-разрядных слов и уп- равляемой 28-разрядным адресом, блока синхронизации, вспомо- гательных регистров и схем, позволяющих наращивать емкость ПЛМ. Арифметический расширитель ВР2 состоит из комбинацион- ной схемы умножения 16X8 разрядов и вспомогательных регист- ров для выполнения сложения, умножения и деления 16-разряд- ных чисел как с фиксированной, так и с плавающей запятой. Уве- личение разрядности обрабатываемых слов достигается простым каскадированием ВР2, например, четыре ВР2 позволяют произ- водить операции с 64-разрядными числами. Магистральный адаптер ВА4 предназначен для построения устройств связи между внешними устройствами и процессором ЭВМ. На базе описанных ИМС достаточно просто построить 8-, 16-, ' 32- или 64-разрядные ЭВМ с аппаратной реализацией сложных операций (умножение, деление) как с фиксированной, так и с пла- вающей запятой. 145
Часть П ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРОПРОЦЕССОРОВ И МИКРОЭВМ Программное обеспечение (ПО) — комплекс программ, описаний и инструкций, позволяющих автоматизировать отладку программ и решение задач на ЭВМ [52] (рис. 5.1). Аппаратными и микропро- граммными средствами реализуются внутренний язык ЭВМ (МП или микроЭВМ), а также программы, реализующие внешний (вход- ной) язык, который предоставляется пользователям. В универсаль- ных микроЭВМ входным языком является набор директив опера- ционной системы (ОС) и язык программирования. В системное ПО входят программы, необходимые для организации вычисли- тельного процесса и для автоматизации программирования [26. Рис. 5.1. 42], в специальное ПО — программы, ориентированные на конкрет- ную специализацию: например, программные средства автомати- зации и проектирования в САПР микропроцессоров и систем на базе МП, программы для выполнения научных и инженерных рас- четов, программы, реализующие алгоритмы управления техноло- гическими процессами или обрабатывающие результаты экспери- ментов в системах автоматизации научных исследований. Классификация ПО по средствам реализации Резидентное программное обеспечение реализуется на самой микроЭВМ и применяется в системах проектирования МП и МПС, выполненных на микропроцессорах такого же типа. Примерами резидентного ПО являются системы ПО для микроЭВМ семейства «Электроника-60», «Электроника С5», а также для систем проекти- рования и отладки MDS -ICE-80, Tektronix [68]. Кроссовое программное обеспечение реализуется на больших ЭВМ или на мини-ЭВМ. Известно большое количество кросс-систем проектирования и отладки для микроЭВМ и МП на базе БЭСМ-6, ЕС ЭВМ, М-4030, М-220, СМ-3, СМ-4 [36, 37]. Целесообразность применения кроссового или резидентного ПО зависит от конкрет- ной ситуации и определяется такими факторами, как требования 146
к разрабатываемой МПС, стоимость дополнительной аппаратуры для использования резидентного ПО, стоимость кроссового ПО и т. д. В реальных условиях обычно выбирается некоторый компро- мисс в использовании кроссового и резидентного ПО, Например, часто используется трансляция программ на кроссовом транслято- ре, а отладка — с помощью резидентных средств отладки на прото- типной или самой разрабатываемой МПС. Классификация ПО по целевому назначению системы программирования и уровню входного языка 1. Машинно-ориентированное ПО включает трансляторы с авто- кодов, ассемблеров, макроассемблеров, а также отладчики к ним. 2. Процедурно-ориентированное ПО включает трансляторы с алгоритмических языков, а также средства для отладки, редакти- рования, каталогизации и документирования программ, разрабаты- ваемых на основе этих языковых процессоров. 3. Проблемно-ориентированное ПО включает трансляторы с проблемно ориентированных языков, проблемно ориентированные пакеты прикладных программ, проблемно ориентированные библио- теки подпрограмм, средства диагностики и отладки. Значительную часть в ПО ЭВМ занимают программы, органи- зующие вычислительный процесс. Эти программы объединяются в комплексы, которые называются операционными системами. Они позволяют применять однотипные ЭВМ для выполнения различных целевых функций. Программы, входящие в ОС, делят на управля- ющую и обрабатывающие. Основные функции, выполняемые управ- ляющей программой ОС,— управление заданиями, распределение памяти, управление вводом-выводом, управление данными (файла- ми), реакция иа сигналы прерывания и на ошибочные ситуации, ведение протокола вычислительного процесса, а также управление обрабатывающими программами ОС. Обрабатывающими програм- мами в ОС являются трансляторы, редакторы, отладчики и др. Кроссовое ПО микропроцессоров и микроЭВМ использует средства ОС больших ЭВМ или мини-ЭВМ. Так, например, кросс-трансля- тор ассемблера и моделирующая программа системы команд микро- процессора К580ИК80 работают под управлением ДОС/ДОС РВ ЭВМ М-6000, ДОС СМ ЭВМ СМ-3, СМ-4, ДОС и ОС ЕС ЭВМ. Кросс- средства автоматизации программирования для микроЭВМ «Элек- троника С5» погружены в ОС универсальных ЭВМ БЭСМ-6, ЕС ЭВМ и М-220 [36]. Для достижения большего сервиса в использовании кросс-средств и повышения эффективности работы универсальных ЭВМ разрабатываются специальные управляющие процедуры. На- пример, для ведения диалоговой отладки, выполнения трансляции программ микроЭВМ «Электроника С5», объединения их и загруз- ки в моделируемую память в режиме разделения ресурсов между терминалами реализована система диалоговой отладки программ (СИДОП), организованная на основе ОС «Дубна» [36]. Важным компонентом ПО являются наладочные и контрольно- диагностические тесты, которые могут быть автономными или ра- ботать в комплексе под управлением собственного монитора и не использовать общесистемные управляющие программы. 147
г Глава 5 ОПЕРАЦИОННЫЕ СИСТЕМЫ МИКРОЭВМ 5.1. ОБЩИЕ СВЕДЕНИЯ Операционная система действует как интерфейс между аппара- турой и пользователем. Пользователь обеспечивается набором средств для общения с системой, автоматизации программирования, отладки и сопровождения программ. В то же время ОС управляет распределением ресурсов вычислительного комплекса (ВК) для обеспечения эффективной работы. ОС для микроЭВМ подразделяют па следующие: системы обще- го назначения, используемые для разработки и отладки программ микроЭВМ и микропроцессорных систем на базе совместимых с ними микропроцессоров; системы специального назначения, ис- пользуемые для управления процессами в реальном времени с жест- кими временными ограничениями. В зависимости от проблемной ориентации вторая категория ОС снабжается средствами для вос- становления после сбоев и отказов, организации обмена данными в многопроцессорных системах, распараллеливания задач и т. д. По способу организации вычислительного процесса разработан- ные и используемые в настоящее время ОС для микроЭВМ подраз- деляют иа однопрограммные, мультипрограммные, диалоговые, функционирующие в реальном времени, смешанные. Системы общего назначения, например, ФОДОС, ДОС/F, рези- дентные системы микроЭВМ различных конфигураций на базе ми- кропроцессора К580ИК80, являются смешанными. Они в значитель- ной степени ориентированы на диалоговый режим, работу с тайме- ром и, следовательно, отслеживание хода времени. Возможности различных ОС, их структура и функции в значи- тельной мере ' определяются архитектурой ВК. Большое влияние иа них оказывает тип используемых запоминающих устройств. По типу различают: перфоленточные ОС (ПЛОС); магнитоленточ- ные ОС или ОС иа кассетах (МОС); дисковые ОС (ДОС) или диско- вые ОС для функционирования в реальном времени (ДОС РВ); ОС, размещаемые в ПЗУ или ППЗУ. В табл. 5.1 и 5.2 приведены некоторые наиболее распространен- ные ОС, реализованные на мини- и микроЭВМ [47]. Наиболее мощными из перечисленных ОС являются ДОС или ДОС РВ. Такие системы как ФОДОС, ДОС/F открыты для даль- нейшего расширения. Они могут дополняться различными обраба- тывающими программами без изменений в основных управляющих алгоритмах. Однако в процессе эксплуатации таких систем возни- кают значительные трудности, связанные с архитектурой микро- ЭВМ [33]. Перспективным является использование ОС и в целом всего ПО па сменных платах ПЗУ или ППЗУ, для которых не тре- буются специальные программы начальной загрузки системы как в больших ЭВМ [42]. 5.2. ДИСКОВЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ ОБЩЕГО НАЗНАЧЕНИЯ Во время функционирования программы, входящие в состав ДОС, требующие высокой частоты обращения и высокой скорости выполнения, постоянно находятся в оперативной памяти, Они со- 148
5.1. ОС в системах проектирования ПО (для отечественных микроЭВМ, мини-ЭВМ и микропроцессоров) ОС ЭВМ, микро- процессор Транслятор с язы- ков программиро- вания Режим РАФОС «Электроника Ассемблера, ФОР- ТРАН. РЕФАЛ, РАТФОР, БЕЙ- СИК, Паскаль, Модула Многотермипаль- II 100-25» ный ДОС РВ, «Электроника Ассемблера, ФОР- Многотерминаль- ОС РВ 100-25» ТРАН и др. ный, многозадач- ный инмос СМ-4 Ассемблера, ФОР- ТРАН-77, Си и др. То же ДЕМОС «Электроника 100-25» Ассемблера, РАТ- ФОР и др. Многотерминаль- ный ОС 1800 СМ-1800, К 580 Ассемблера, Си, БЕЙСИК, ПЛ/М Нет Микро- ДОС К 580 Ассемблера, ФОР- ТРАН, Си и др. .Многотерминаль- ный, многозадач- ный ДОС/F «ВЭФОРМИКА», К 580 Ассемблера, ПЛ/F Нет ДОС «Электроника К1-Ю», К 580 Ассемблера, ПЛ/М, ФОРТРАН-80, БЕЙСИК ФОДОС II «Электроника-86» Ассемблера, ФОР- ТРАН, БЕЙСИК Многотерминаль- ный ОС РВ «Электроника-79» Ассемблера, ФОР- ТРАН и др. То же — - плос «Электроника-60» Ассемблера, БЕЙ- СИК Ассемблера, БЕЙ- СИК Нет плос «ВЭФОРМИКА», К 580 X» мос «Электроника К1-Ю» Ассемблера 5.2. ОС в системах проектирования ПО (для зарубежных микроЭВМ, мини-ЭВМ и микропроцессоров) ОС ЭВМ, микропро- цессор Транслятор с язы- ков программиро- вания Режим ISIS-II СР/М Intel 8080, 8085 Intel 8080, 8085, Z80 Ассемблера, ПЛ/М, ФОРТРАН-80 Ассемблера, БЕЙ-, СИК, АПЛ, FORTH, ЛИСП, ФОРТРАН, Си, Паскаль, КО- БОЛ, ПЛ/М, PL/1G Нет э 149
Продолжение табл. 5.2 ОС ЭНМ, микро- процессор Транслятор с язы- ков программиро- вания Режим МР/М Intel 8080, 8085, Z80 Ассемблера, .БЕЙ- СИК, АПЛ, FORTH, PL/1G, ЛИСП, Си, ФОР- ТРАН, КОБОЛ, Паскаль Мультипрограмм- ный, многотерми- нальный RT-11 LSI-11/2 LSI-11/23 Ассемблера, БЕЙ- СИК, ФОРТРАН, Паскаль, АПЛ, Си, FOCAL Мультипрограмм- ный HDOS Intel 8080, 8085 Ассемблера, БЕЙ- СИК, ФОРТРАН, Паскаль Мультипрограмм- ный (для OPL), многотерминаль- ный UNIX PDP-11/45 PDP-11/70 Z8000 Ассемблера, БЕЙ- СИК, Си, ФОР- ТРАН-77, Ратфор и др. Мультипрограмм- ный, многотерми- нальнын XENIX LSI-11, Intel 8086 Ассемблера, Си, ФОРТРАН и др. То же ZEUS Z8000, Z-Lab Ассемблера, БЕЙ- СИК, Си и др. Нет ставляют резидентную часть ДОС или ядро. Программе#, постоянно находящиеся на дисках, называются диск-резидентными. Диск- резидентные программы — это обслуживающие программы и часть управляющих программ. Если ОС обеспечивает режим мульти- программирования (одновременного выполнения нескольких задач), то ключевыми проблемами являются взаимная защита задач (и защи- та системы), синхронизация и обеспечение взаимодействия рези- дентных системных процессов [12, 61]. Первая из проблем требует для своего решения аппаратных средств, которые обычно отсутст- вуют в микроЭВМ. Вторая проблема решается путем организации семафоров защиты (Р- и V-операции) [61] и определением состояния системы прерывания разрешено-запрещено во время выполнения управляющих или обрабатывающих программ. Наиболее известны ДОС общего назначения RMX-80 [28], ISIS-II [66], разработанные дли микроЭВМ на базе микропроцес- сорной БИС INTEL 8080, 8085 и для системы INTELL ЕС; DOS КЕТ, СР/М и МР/М для микроЭВМ АВС-26 на базе микропроцессора Z80A. Рассмотрим структуру и состав мощных ДОС общего назначе- ния, используемых для микроЭВМ в СССР. Фоновая-основная дисковая операционная система реального времени (ФОДОС) ФОДОС используется для создания проблемно ориентирован- ных вычислительных - комплексов на базе микроЭВМ «Электро- ника-60», мега-микроЭВМ «Электроника 100-25» и «Электроника-79», 150
Применяется для автоматизации лабораторных экспериментов, управления испытаниями и решения научно-технических задач. В качестве примера применения ФОДОС можно привести вы- числительный комплекс 15 ВУМС-28 (на базе микроЭВМ «Электро- ника-60М») [16]. Программное обеспечение 15 ВУМС-28 включает: тест-мониторную систему (Т.МОС) и (ФОДОС). ТМОС является автономной системой и обеспечивает следующие функции: органи- зацию архива из тест-программ и тестовых документов; загрузку и запуск тестовых программ; корректировку тестовых программ; создание и корректировку тестовых файлов; организацию и выпол- нение последовательности тест-программ; копирование ТМОС; ге- нерацию версии ТМОС. ФОДОС предоставляет пользователю следующие возможности: выполнение па ЭВМ до двух задач одновременно — в фоновом и оперативном режимах; организацию пакетного режима выполне- ния; подготовку, отладку и редактирование задач на ассемблере; создание программ с оверлейной структурой, т. е. допускающих использование общей области памяти для временного хранения программных модулей; создание и расширение библиотеки под- программ; управление обменом данными между периферийными устройствами; генерацию различных версий ОС. Структура ФОДОС (рис. 5.2) состоит из управляющих про- грамм, основных системных программ, вспомогательных систем- ных программ и библиотек различного назначения. Состав и функ- ции ФОДОС могут изменяться в результате создания и расширения системных библиотек и библиотек подпрограмм пользователя, создания командных файлов пользователя, расширения системной макробиблиотеки и создания макробиблиотек пользователя, раз- работки и включения в систему драйверов нестандартных уст- ройств, языковых процессоров и обслуживающих программ поль- зователя. Программы начальной загрузки. В системе ФОДОС каждый монитор имеет соответствующий ему начальный загрузчик. При вагрузке тома, организованного на магнитной лепте или на магнит- ных дисках, начальный загрузчик осуществляет поиск соответст- вующего ему монитора, загружается и получает управление от аппа- ратного загрузчика, реализованного на микропрограммном уровне. Начальный загрузчик выполняет загрузку монитора и передает ему управление. Мониторы операционной системы. Управление работой ФОДОС осуществляется с помощью одного из четырех мониторов: монитора одного задания (SJ), монитора осповпого-фонового задания (FB), монитора расширенной памяти (ХМ) или базового монитора (ВС). SJ-монитор представляет собой наименьший из основных мони- торов ФОДОС; для резидентной части монитора (ядра) требуется 2К слов оперативной памяти. Монитор предназначен для выпол- нения одной программы пользователя. Он обеспечивает выполне- ние всех обслуживающих программ системы и управление всеми периферийными устройствами. FB-монитор обеспечивает режим мультипрограммирования. Резидентная часть монитора занимает 4К слов оперативной памяти. Он обеспечивает выполнение двух полностью независимых зада- ний — основного и фонового. Фоновый режим работы аналогичен режиму работы SJ-монитора. Для выполнения оперативного зада- ния в реальном времени FB-монитор организует работу пользова- теля с таймером. 151
ХМ-монитор реализует все функции FB-монитора. В допол- нение к этому он позволяет обслуживать до 124К слов памяти. Ре- зидентная часть ХМ-монитора занимает 7К слов памяти. Для микро- ЭВМ «Электровика-60» ХМ-монитор не поставляется, поскольку в аппаратуре отсутствуют средства, необходимые для работы дис- петчера памяти. Операционная система ФОДОС Ослуживаюшие программы Управляющие программы Основные системные программы Вспомога- тельные программы Системные библиотеки Программы начальной загрузки Г— Ассемблер (MACRO) Модификация файлов (PATCH) ~—I Системная макробиб- лиотека ;sysmaCsmu: SJ - монитор Редактор текста (EDIT) Модификация объектных модулей (РАТ) Системная объектная — библиотека (SYSLIB.OBJ) "— F В — монитор Редактор связей (LINK) Библиотекарь (LIBR) Отладчик (ОДТ) Программа обмена (PIP) Программа обслуживания устройств (D UP) Программа получения справочника (DIR) Сравнение текстовых файлов (SRCCOM) Программа печати (DUMP) Программа пакетной Обработки (BATCH) Рис. 5.2. 1Б2
BL-монитор является усеченной версией SJ-монитора. Он предназначен для использования в системах с малой конфигура- цией (8К слов памяти) и требует для своей работы всего 1, 8К слов памяти. BL-монитор обслуживает ограниченный набор перифе- рийных устройств и не обеспечивает выполнения Программы па- кетной обработки; Основные программные средства ФОДОС при- ведены в табл. 5.3. Дисковая операционная система вычислительного комплекса «Экран» (ДОС/F) Вычислительный комплекс «Экран» создан на базе микроЭВМ «ВЭФОРМИКА». Дисковая операционная система вычислительного комплекса «Экран» является программным средством управления работой ВК и предназначена для использования в различных си- стемах сбора, хранения и обработки массивов информации, в том числе для построения автоматизированных рабочих мест операто- ров, для автоматизации проектирования, в информационно-поис- ковых, . информационно-диспетчерских системах, а также для со- здания и отладки программного обеспечения систем управления, разрабатываемых на базе микроЭВМ «ВЭФОРМИКА». Система ДОС/F позволяет размещать во внешней памяти набо- ры данных и идентифицировать их уникальными именами; управ- лять работой внешних’устройств; создавать и редактировать символь- ные тексты; выполнять] трансляцию программ, составленных на языке ассемблера микроЭВМ «ВЭФОРМИКА», и использовать средства макроязыка ДОС/F; хранить и использовать оттраш ти- рованные программы для работы с различными наборами данных; выполнять отладку и оперативно изменять ход вычислительного процесса; использовать для размещения программы перекрываю- щиеся области ОЗУ; расширять функциональные возможности ДОС/F; использовать утилиты,- т. е. обслуживающие программы, для выполнения сервисных функций по обслуживанию внешних носителей и упорядочению на них информации. Структура системы и назначение составных частей. Операцион- ная система ДОС/F содержит (рис. 5.3) управляющие программы, системные обрабатывающие программы, системы поддержки вы- полнения программ (средства расширения). Управляющими программами являются программа первона- чальной загрузки, ядро операционной системы, программа управ- ления заданиями. Программа первоначальной загрузки вы- полняет инициализацию работы операционной системы. Она счи- тывает с диска в ОЗУ ядро операционной системы и создает управ- ляющие таблицы ДОС/F. Затем управление передается программе ядра ДОС/F, которая загружает программу управления заданиями. Ядро операционной системы представляет со- бой совокупность программ, постоянно находящихся в ОЗУ в про- цессе работы системы. Программы ядра получают управление по .запросам обрабатывающих программ, которые вызываются систем- ными макрокомандами, такими как OPEN, READ, EXTRN и т. д. Программа управления заданиями всту- пает в диалог с пользователем через системную консоль. В про- цессе диалога программа принимает директивы управления зада- ниями и интерпретирует их. По этим директивам программа управ- ления заданиями создает и удаляет дисковые наборы данных и раз- 153
5.3. Программные средства ФОДОС Обозначение Функция программы EDIT Редактор текста оперирует с текстовыми файлами MACRO Транслятор с языка ассемблера LINK ' Компоновщик преобразует объектные модули в фор- мат загрузочного модуля. Таких форматов три: ото- бражения памяти, перемещаемого формата и абсо- лютного двоичного формата LIBR Программа-библиотекарь включает модули в библио- теку, удаляет модули, создает новые библиотеки и т. п. ODT Программа представляет средства для ведения отлад- ки в интерактивном режиме PIP Программа предназначена для копирования файлов, удаления и переименования файлов, слияния не- скольких файлов и др. DUP Программа создает файлы, устраняет плохие блоки на дисках, расширяет файлы, инициирует устрой- ства с файловой структурой и т. п. DIR Программа выводит информацию о файле: дата со- здания, имя файла, тип файла и т. п. BATCH Программа предназначена для организации пакетной обработки заданий пользователя PATCH Программа предназначена для проверки и последую- щего изменения содержимого слов или байтов файла PAT Программа вносит изменения в объектные модули SRCCOM Программа предназначена для сравнения текстовых файлов DUMP- Программа печати SYSMAC Системная макробиблиотека SYSLIB » объектная библиотека 154
делы библиотек, связывает файлы с наборами данных, создает блоки управления данными, назначает обрабатывающие программы для управления данными, загружает системы поддержки и обрабатыва- ющей программы из указанного в директиве набора данных, выпол- няет индикацию состояния системы. После приема директивы за- пуска обрабатывающей программы программа управления зада- ниями производит подготовительные действия (загрузка системы Рис. 5.3. поддержки, назначение устройств, построение блоков управления данными) и выполняет загрузку обрабатывающей программы в ОЗУ с использованием программы ядра. В процессе работы обрабатывающая программа обращается к программным средствам ядра и системе поддержки. Работа обра- батывающей программы может быть завершена нормально, по макро- команде EOJ; аварийно, если некорректно применяются макроко- манды или неправильно функционируют устройства ввода-вывода; оперативно, по требованию оператора в результате нажатия кла- 155
виши нулевого прерывания. В этом случае управление получает программа Монитор, встроенная в ДОС/F и выполняющая отладоч- ные функции. Ввод директивы J означает нормальное завершение шага за- дания, а ввод директивы Q — его аварийное завершение. При нор- мальном завершении ДОС/F выполняет автоматическое закрытие всех файлов, для которых в программе не выполнялась макроко- манда CLOSE. При аварийном завершении шага задания файлы не закрываются, и, следовательно, созданные и не закрытые к момен- ту аварийного завершения наборы данных не сохраняются. После завершения работы обрабатывающей программы в ОЗУ вновь за- гружается программа управления заданиями и получает управле- ние. Далее можно вв.естп директивы следующего шага задания. Системные обрабатывающие программы вызываются точно так же, как и обрабатывающие программы пользователя с помощью директив управления заданиями. К системным обрабатывающим программам относятся макроассемблер ДОС/F и системные обслу- живающие программы (утилиты). Макроассемблер ДОС/F пред- ставляет собой расширение языка ассемблера микроЭВМ «ВЭФОРМИКА» за счет подключения средств макроязыка ДОС/F, В состав ДОС/F входят следующие утилиты; INTD — обеспечивает инициализацию пакета дисков, провер- ку поверхностей, копирование с одного пакета на другой; PVTOC — выполняет распечатку оглавления указанного тома; COPY — производит копирование информации наборов данных с последовательной организацией; DFORM — создает наборы данных с прямой организацией и производит копирование информации в такие наборы; EDIT — создает и редактирует текстовую информацию; LSERV — обслуживает библиотека (распечатка оглавления, удаление и переименование разделов, коррекция информации в разделах); LMRG — осуществляет образование и слияние библиотечных разделов; GENSUP — производит генерациго систем поддержки; утили- та выполняет совместную трансляцию программных модулей и пере: писывает результат трансляции в библиотеку расширения, обра- зуя новую систему поддержки выполнения программ; HEXBIT — осуществляет преобразование загрузочных фор- матов из шестнадцатеричного формата в формат двоичной загрузки. Системы поддержки являются программными средствами, обес- печивающими обслуживание некоторого вида запросов обрабатыва- ющих программ. Операционная система ДОС/F содержит три системные библио- теки: бйблиотеку расширения системы, системную макробиблиотеку, библиотеку системных каталогизированных процедур. Библиотека расширения системы содержит в своих разделах оттранслированные наборы программных модулей. Эти наборы называются системами поддержки, которые обеспечивают обработку запросов на выпол- нение таких функций, реализация которых не предусмотрена в яд- ре операционной системы. Соответствующая система поддержки веред вызовом обрабатывающей программы загружается в ОЗУ, и ее программные модули вызываются как подпрограммы. Системы поддержки могут содержать драйверы нестандартных устройств, подпрограммы для управления графической информацией и любые другие программы, включаемые пользователем в зависимости от проблемной ориентации комплекса. 156
Директивы программы управления заданиями и перечень макро- команд в ДОС/F. В табл.. 5.4 и 5.5 перечислены директивы опе- ратора и основные макрокоманды, обрабатываемые в ДОС/F. Об- щий вид директив следующий: имя [список параметров], где имя — идентификатор, определяющий действие, выполняемое ОС; списои параметров — конкретизирует действие директивы (например, ука- рывает, где располагаются наборы данных, какого типа н т. д.); I...] — символы заключают необязательные элементы. Общий вид описателя набора данных в директивах ДОС/F сле- дующий: Q имя-устройства, где имя-устройства — двухсимволь- ная комбинация букв латинского алфавита и десятичных цифр; используется для указания монопольных устройств, т. е. устройств, на которых одновременно может быть открыт только один- файл; нмя-набора [имя-раздела] [/принадлежность] [(размещение)], где имя-набора — имя набора данных (до 8 символов), имя-раздела — имя раздела библиотеки, если набор данных библиотечный (до 8 символов), принадлежность — символы К=имя, С, R, Т, W, Р, раз- мещение — номер тома'(0—7). Приведенный выше описатель используется для указания дис- кового набора данных. Символы принадлежности характеризуют следующие наборы данных: личные постоянные на резидентном томе'(С). чужие (К-имя владельца тома), резидентные (R), К и R — представляются толь- ко для чтения, личные постоянные, но расположенные на любом томе (Р), временные, в пределах задания (Т), временные, в преде- лах шага задания (W). Системные макрокоманды ДОС/F хранятся в резидентно-биб- лиотечном наборе SYSMACRO. Макрорасширения системных мак- рокоманд содержат команды вызова программ ядра операционной системы и передачи этим программам параметров (табл. 5.5). Для обращения к программам систем поддержки используется макро- команда EXTRN. Расширение этой макрокоманды содержит вызов программы ядра, которая организует связь обрабатывающей про- граммы с нужной программой системы поддержки. Дисковая операционная система для «Электроники К1-10» Дисковая операционная система [31] предназначена для авто- матизации управления внешними устройствами, взаимодействия оператора с микроЭВМ, автоматизации управления выполнением пользовательских задач, обеспечения разработки программ, ориен- тированных на выполнение аппаратными средствами на базе микро- процессорных наборов серии 580. В нее входят трансляторы с языка ассемблера и языков высокого уровня (ПЛ/М, ФОРТРАН-80, БЕЙСИК и др.). Существенной особенностью организации ДОС является то, что функции системы могут быть расширены другими пакетами про- грамм простым включением их в состав дисковых файлов. Основными функциями, выполняемыми ДОС являются: редак- тирование текстовых файлов с целью создания и изменения исход- ных программных модулей; транслирование программ; объедине- ние программных модулей в завершенные функциональные системы; настройка объектных модулей на абсолютные адреса; работа с биб- лиотеками; загрузка и обеспечение отладки программ; работа с файлами; обработка заданий в пакетном режиме. [57
5.4. Перечень и назначение директив в ДОС/F Директива Формат Назначение Начала и оконча- ния задания START имя Директива начала зада- ния. Указывается имя пользователя (имя зада- ния — до 8 символов) FINISH Завершение задания. Уничтожаются все вре- менные наборы данных Управления нако- пителями на маг- нитных дисках ONLINE [имя,] том Дисковый том, заданный своим номером (0, 1, ... , 7), вводится в режиме ONLINE, т. е. регистри- руется в ОС. Имя тома используется для конт- роля и является необяза- тельным OFFLINE [имя,] том Дисковый том становит- ся недоступным ОС VOLUME # или VO- LUME [имя,] том .Назначение личного тома. Назначенный том исполь- зуется в качестве лично- го тома, если для каких- то наборов данных атри- бут размещения не указан. Параметр указывает от- мену предыдущего назна- чения личного тома Удаления наборов данных DELETE описатель дискового набора данных Набор данных уничтожа- ется Назначения файлов ASSGN имя-файла # ASSGN имя-файла X ASSGN имя-файла, описатель-набора-дан- ных # означает требование отмены назначения для файла X означает требование создания фиктивного на- значения для файла. Для такого файла все функ-' ции типа READ, WRITE и т. д. воспринимаются как пустые операторы. 3-й -формат связывает файл с конкретным на- бором данных 158
г Продолжение табл. 5.4 Директива Формат Назначение Назначения фай- лов ATTACH имя-файла, описатель-набора-дан- ных Директива применяется к библиотечным файлам. Прежнее назначение до- полняется и расширяется наборами данных, ука- занными в параметрах CHAIN имя-файла, описагель-набора- даниых Директива позволяет со- поставить файлу цепочку наборов данных. Позво- ляет открывать файл только на ввод PARL имя-файла, описатель-набора-дан- ных Директива обеспечивает возможность параллель- ного вывода из файла во все наборы, перечис- ленные в группе Ликвидации на- значений FREE имя-монополь- ного-устройства FREE # Отменяются все назначе- ния для файлов, связан- ных с монопольным уст- ройством. Отменяются все назначе- ния на все незанятые устройства NEWSTEP Отменяются все ранее сделанные назначения для файлов Установки режи- ма функциониро- вания KEY В строка KEY число Директива позволяет ус- тановить значение 16- битного поля системных переключателей. В пер- вом случае используется двоичное число, а во втором — шестнадцате- ричное YLOG NLOG Назначение (Y) и отме- на (N) распечатки си- стемных сообщений опе- ратору 159
Продолжение табл. 5.4 Директива Формат Назначение Установки режи- ма функциониро- вания ОС BREAK Директива организует выход в диалоговый ре- жим, если она размеще- на в каталогизирован- ной процедуре Пустая директива позво- ляет вернуться к продол- жению чтения директив в каталогизированной процедуре из диалогового режима (после директивы BREAK) Сервисная configuration Распечатывает список на- значений на консоли опе- ратора Обслуживание магнитной ленты MAGTAPE функция [, кратность] Задает функцию (REW — перемотка в начало, FSF — чтение до ленточ- ного маркера и т. д.) и число повторений функ- ции Загрузки системы поддержки SUPPORT имя SUPPORT # Директива показывает имя раздела библиотеки расширения для загрузки системы поддержки # параметр указывает удаление ранее введен- ной поддержки Загрузки и испол- нения EXEC описатель-1 [, описатель-Э] [, адрес] LOAD описатель-1 [, описатель-2] [, адрес] Описатель-1 указывает набор данных или раздел библиотеки, где размещен набор данных Описатель-2 указывает цепочку дисковых набо- ров данных, используе- мых в оверлейном режиме. Адрес—точка запуска задачи LOAD—передает управление системному монитору, а ЕХЕС — не- посредственно программе 160
Продолжение табл. 5.4 Директива Формат Назначение Вызов каталоги- зированных про- цедур PROC описатель 'список' или // описатель 'список' Описатель — дисковый набор или раздел, содер- жащий тело процедуры И подразумевает PROC- LIB (резидентная библио- тека процедур), а описа- тель — имя ее раздела Список — перечень фак- тических параметров про- цедуры 5.5. Таблица макрокоманд ДОС/F Макрокоманда Имя Назначение Назначения, открытия й закрытия файлов IN IT OPEN CLOSE Перечисляются имена файлов, используемых в программе Открытие указанного файла с указанными характеристиками и метками обработки ошибок н конца файла Закрытие указанного файла Последовательного доступа READ IGN REWRT Чтение очередной записи вход- ного файла Пропуск указанного числа за- писей Замена записей в файле, начи- наи с той, местоположение ко- торой определяется состоянием курсора обмена - REWND Смещение курсора на одну за- пись назад для модификации EOFLE прочитанной записи Формирование метки конца фай- ла. Макрокоманда позволяет уничтожить записи в файле и подготовить запись на их место другой информации - WRITE Вывод записи в файл в в-451 161
Продолжение табл. 5.5 Макрокоманда Имя Назначение Прямого доступа RSET FWD BACK GNUMB Установка курсора обмена на запись с указанным номером Смещение курсора обмена впе- ред на указанное число запи- сей Смещение курсора обмена на- зад на заданное число записей Возвращает номер записи, со- ответствующей текущему поло- жению курсора обмена Библиотечного досту- па GENER FIND BUILD DEL LOAD FETCH SAVE RENAM Объявление одного или несколь- них альтернативных имен для библиотечного файла Поиск указанного раздела на- значенной файлу библиотеки Создание нового раздела биб- лиотеки Удаление ранее сформирован- ных разделов из наборов дан- ных, входящих в состав назна- ченной данному файлу сцеплен- ной библиотеки Загрузка в ОЗУ в шестнадцате- ричном формате или в формате двоичной загрузки из раздела библиотеки Выполняет то же, что и LOAD, но дополнительно загруженно- му модулю передается управ- ление Сохранение заданной области ОЗУ в разделе библиотеки для последующего использования LOAD ал и FETCH Переименование разделов биб- лиотек Индикации состояния системы FSW MTOP GKEY Получение характеристик со- стояния файла Получение старшего адреса об- ласти ОЗУ, выделенной си- стемой обрабатывающей про- грамме Получение значения системного ключа, установленного директи- вой KEY ,62
Продолжение табл. 5.5 Макрокоманда Имя Назначение Обмена через систем- ную консоль и обес- печения доступа к си- стеме поддержки PUT GET EXTRN Вывод сообщения Считывание информации Организация связи с подпро- граммами системы поддержки Завершения шага за- дания EOJ KILL Нормальное завершение шага задания Аварийное завершение шага за- дания ДСС функционально состоит из трех программ, содержащих- ся на системном диске в отдельных файлах: начального загрузчика, резидента, интерпретатора команд. Интерпретатор команд ДОС выполняет загрузку и передачу управления обслуживающей программе; выполнение встроенных операций; вывод диагностической информации для направленной командной строки. Обобщенный синтаксис команд ДОС следующий: COMMAND [(параметры)], где COMMAND — имя команды ДОС, представляю- щее собой полное имя системного файла. Перечень основных команд ДОС приведен в табл. 5.6. 5.6. Перечень команд ДОС' Команда Назначение ATTRIB BINOBJ Изменение атрибутов дисковых файлов Преобразование абсолютного модуля двоичного COPY DEBUG DELETE FORMAT IDISK LIB LOCATE SUBMIT DIR формата в формат ДОС Копирование файлов Отладка программ Удаление файла Инициализация и копирование файлов » диска Работа с библиотеками объектных модулей Создание абсолютных модулей Пакетное выполнение программ Вывод оглавления диска В систему ДОС входят следующие файлы: строчно-редактируе- мые, текстовые, объектных модулей, абсолютных модулей, библио- течные. Для размещения резидента ДОС необходимо 16,5 Кбайт памя- ти ОЗУ.
Операционная система СР/М Операционная система СР/М является одной из самых распро- страненных ОС для микропроцессоров. СР/М—стандартная ОС для МПС иа базе МП 8080, 8085 и Z 80 [13]. СР/М — дисковая ОС для МПС на базе МП 8080, 8085, Z 80, К 580 [23, 34]. СР/М — диа- логовая операционная система, рассчитанная на работу с одним пользователем, которая обеспечивает файловую организацию про- грамм и данных, диалоге пользователем, работу с внешними устрой- ствами, запуск на выполнение. СР/М ориентирована на перенос с одной МПС на другую, обеспечивает возможность постановки на любую МПС на базе МП 8080, 8085, К 580 или Z 80, имеющую не- обходимый набор аппаратных средств. СР/М разделена на несколь- ко модулей: базовую дисковую ОС (BDOS), базовую систему ввода- вывода (BIOS), процессор консольных приказов (ССР). Базовая BDOS реализует все управляющие функции, включая управление дисковыми файлами, управление вводом-выводом на высоком уровне и все вызовы функций, доступные пользователю. Базовая BIOS реализует набор примитивных операций работы с дисками и устройствами ввода-вывода. Только эта часть СР/М не- посредственно взаимодействует с внешними устройствами и зави- сит от особенностей и характеристик внешних устройств. Все дру- гие компоненты СР/М общаются с внешней средой через систему BIOS. Программа обработки команд ССР организует взаимодей- ствие системы с пользователем на языке директив СР/М. Она вво- дит команды с пульта оператора, анализирует их и выполняет либо непосредственно (встроенные команды); либо загрузив программы выполнения команд (загружаемых команд) и передав им управле- ние). Программа обработки команд ССР общается с устройствами ввода-вывода через BIOS, а с файлами — через BDOS. Важным свойством СР/М является возможность загрузки ис- полняемых программ в память системы на место некоторых (или всех) компонентов СР/М. Пользователь СР/М общается с системой с пульта оператора с помощью языка директив системы. Набор ко- манд определяет возможности, представленные пользователю ОС (табл. 5.7). Операционная система UNIX Операционная система UNIX является широко распространен- ной диалоговой ОС, рассчитанной на многотерминальный режим. Система UNIX обладает такими средствами, которых нет даже в более сложных системах: иерархической файловой системой; совместимым вводом-выводом для устройств и между процессами; асинхронным созданием процессов; многими языками высокого уровня и системным языком. Особой ценностью ОС UN IX является мобильность программ. Основу системы составляет ядро. Ядро поддерживает управление процессами, систему ввода-вывода и файловую систему. Взаимодей- ствие с пользователем системы в UNIX реализует основная управ- ляющая программа или оболочка. Оболочка представляет собой один из непривилегированных процессов, работающих в текущий момент в мультипрограммном режиме. Она выполняет распознава- ние и интерпретацию команд, подаваемых пользователем на языке директив системы UNIX. Программа пользователя выполняется в среде, называемой процессом пользователя, Процессы создаются 164
5.7. Команды систем СР/М Обозначение Назначение Размещение , ERA DIR REN SAVE TYPE STAT ASM DDT LOAD PIP ED SUBMIT DUMP SYSGEN MOVCPM Стирание указанных файлов Распечатка имен файлов из ката- лога дискетки Переименование файла Запись в файл содержимого обла- сти памяти Распечатка символьного файла на пульте оператора Выводит на пульт информацию о текущем состоянии системы, дис- ководов, файлов, осуществляет при- вязку логических устройств к фи- зическим устройствам Вызов транслятора с языка ассем- блера Вызов программы отладчика Преобразует НЕХ-файл в файл, содержащий информацию из ис- ходного файла в абсолютном фор- мате. Этот файл может загру- жаться и запускаться на выпол- нение (НЕХ-файл — в шестнадца- теричном формате) Вызов программы обмена инфор- мацией между файлами и между внешними устройствами Вызов редактора символьной ин- формации Переключение системы на ввод команд из файла Распечатка содержимого файла на пульте в НЕХ-формате Выполняет генерацию новой си- стемной дискетки СР/М на предва- рительно размеченной дискетке Регенерация СР/М для другого объема памяти системы Встроенные коман- ды Загружаемые с дис- кетки команды системной утилитой Fork. Fork создает процесс-потомок, представ- ляющий собой копию исходного процесса-предка. Новый, порож- денный процесс выполняет программу, указанную командой стро- кой. Процесс-предок (оригинал) ожидает, пока процесс-потомок (копия) не закончится. После успешного завершения программы процесс-потомок уничтожается. Каждый процесс имеет определен- ный приоритет, поскольку приоритет системных процессов всегда выше приоритета прикладных, системные процессы выполняются первыми до тех пор, пока все они будут завершены. ОС UNIX обеспечивает эффективную организацию хранения и использования информации в системах файлов, Обычные файлы рассматриваются 165
как линейно упорядоченные наборы байтов. Каждый файл пред- ставлен дескриптором файла длиной 64 байт. UNIX предусматри- вает наличие двух специальных видов файлов: файлов-справочни- ков и файлов ввода-вывода. Файл-справочник содержит перечис- ление имен и основных параметров ряда файлов, каждый из кото- рых в свою очередь может быть файлом любого вида: обычным файлом, файлом-справочииком или файлом ввода-вывода. Файло- вая система содержит корневой справочник —файл вида «справоч- ник», от которого ведется отсчет и из которого в иерархии файлов файловой системы есть путь к любому из входящих в систему фай- лов. При работе с файлами ввода-вывода фактически производится активизация соответствующего этому файлу устройства и обмен данными с ним. Взаимодействие пользователя с системой UNIX поддерживает- ся интерпретатором Shell. Shell представляет собой мощный язык приказов. Приказ состоит из последовательности слов, разделен- ных пробелами или знаками табуляции. В ОС UNIX реализован механизм каналов (pipe), позволяющий организовать эффективное взаимодействие программ в мульти- программном режиме. Канал действует каккрайл, связывающий два процесса. Первый процесс записывает в файл, который считы- вается вторым процессом и т. д. В частности, это позволяет опера- тивно объединить несколько простых программ-утилит в новые мощ- ные программные средства. Канал между программами устаиавли- ваетси программно. Рассмотренные механизмы системы UNIX позволяют говорить о ней как о высокоэффективном средстве программирования и от- ладки, отражающем современный уровень развития данной обла- сти [23, 34]. 5.3. ПЕРФОЛЕНТОЧНЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ Перфоленточные операционные системы (ПЛОС) используются в условиях отсутствия у микроЭВМ внешней памяти. Длитель- ность процесса подготовки и отладки программ в таких системах увеличивается по сравнению с системами-, использующими ДОС. Из известных ПЛОС общего назначения следует отметить: рези- дентный редакционно-отладочный комплекс (РОК) с трансляторами для микроЭВМ «Электроника С5» [36], ПЛОС семейства микроЭВМ «Электроника НЦ», ПЛОС микроЭВМ «Электроника-60», ПЛОС различных микроЭВМ (В7, «Электроника КЫО», СМ-1800 [37]), на базе микропроцессора К580ИК80. Так же как и ДОС, перфолеи- точные системы могут содержать средства для управления в реаль- ном времени, распараллеливания процессов, управления вводом- выводом. Языки высокого уровня, для которых имеются трансля- торы в перечисленных ПЛОС, следующие: БЕЙСИК, ПЛ/М, Пас- каль, ФОРТРАН. Перфоленточная операционная система микроЭВМ «Электроника-60» Перфоленточная операционная система (ПЛОС) для ЭВМ типа «Электроника-60» и ВК на ее базе содержат следующие компоненты ]62|: Перемещающий ассемблер, Ассемблер, Компоновщик, Редак- тор текста, Программу отладки, Программу начальной загрузки, 166
Абсолютный загрузчик, Перфорацию в абсолютном формате, Восьмеричную печать, Супервизор ввода-вывода. Для работы ПЛОС необходимы: процессор с оперативной па- мятью емкостью не менее 16 Кбайт, электрифицированная пишу- щая машинка с клавиатурой или дисплей, высокоскоростные и (или) низкоскоростные перфоленточные устройства ввода-вывода. Перемещающий ассемблер. В процессе трансляция выполня- ются следующие функции: определение устройств ввода-вывода в диалоговом режиме; считывание исходного текста программы; вывод сообщений об ошибках; вывод таблицы имен пользователя в алфавитном порядке; вывод перемещаемых объектных модулей; связывание объектных модулей с помощью глобальных имен; сек- ционирование программ; выполнение условного ассемблирования; вывод листинга. Трансляция выполняется за три прохода. Если в комплексе используются высокочастотные устройства ввода-вы- вода, то второй и третий проходы совмещены. Перфолента Переме- щающий ассемблер загружается в память с помощью Абсолютного загрузчика. Абсолютный загрузчик сначала загружает часть ассем- блера, которая очищает память до начального адреса Абсолютного загрузчика, затем загружает остальную часть ассемблера. Пере- мещающий ассемблер создает объектный модуль, из которого про- грамма Компоновщик получает загрузочный модуль. Более деталь- но Перемещающий ассемблер описан в гл. 6. Ассемблер. Ассемблер вырабатывает объектную ленту в абсо- лютном формате. Объектная лента перфорируется при втором проходе, а листинг выдается при третьем. Для высокоскоростных устройств ввода-вывода второй и третий проходы совмещены. В от- личие от Перемещающего ассемблера Ассемблер не выполняет секционирование программ, связывание объектных модулей и условное ассемблирование. Компоновщик. Программа Компоновщик предназначена для связывания и перемещения объектных модулей и получения загру- зочного модуля, загружается в ЭВМ Абсолютным загрузчиком. Компоновщик дает возможность разбивать программу на исходном языке на отдельные модули, и транслировать их отдельно. По- модульная трансляция дает возможность использовать в програм- ме общее количество имен, превышающее количество допустимых имен в одном модуле, а также выполнять исправление и повторную трансляцию отдельных модулей. Редактор текста. Перфолента Редактор текста загружается в память ЭВМ с помощью Абсолютного загрузчика. Затем Редактор текста переходит к начальному диалогу, в процессе которого опре- деляются перфоленточные устройства ввода-вывода. Печать означает готовность Редактора текста к приему команд. В режиме начального диалога возможен ввод следующих команд: Н — высоко- скоростное устройство ввода или вывода; L — низкоскоростное устройство ввода или вывода. Затем выполняется редактирование исходного текста в режиме диалога пользователя с ЭВМ. Программа отладки. Отладка программ осуществляется в ре- жиме диалога пользователя с ЭВМ. Программа отладки обеспечи- вает назначение точек останова в отлаживаемой программе и про- верку ожидаемых результатов в ячейках и регистрах программы. Подробно Программа отладки описана в гл. 8. Программа начальной загрузки. Программа начальной за- грузки выполняет загрузку программ, подготовленных в началь- ном формате и содержащих не более 1628 слов. 167
Абсолютный загрузчик. Абсолютный загрузчик обеспечивает загрузку в любое место памяти двоичных данных, подготовленных на лейте в абсолютном формате. Ленты в абсолютном формате вырабатываются Ассемблером и Компоновщиком. Абсолютный за- грузчик обеспечивает не только загрузку программ, но и их автома- тический запуск. Перфорация в абсолютном формате. Программа перфорации в абсолютном формате выполняет вывод на перфоратор содержимо- го выбранных участков памяти в абсолютном формате. Эта программа загружается в память с помощью Абсолютного загрузчика. Восьмеричная печать. Программа Восьмеричной печати выпол- няет вывод на печатающее устройство содержимого выбранных уча- стков памяти в восьмеричном коде. Программа составлена в пози- ционно-независимых кодах и загружается Абсолютным загрузчи- ком. Перечисленные программы могут быть использованы для дуб- лирования и контроля лент. Супервизор ввода-вывода. Программа Супервизор ввода-выво- да предназначена для организации обмена данными между про- граммами пользователя и периферийными устройствами (ЭПМ, низ- ко- и высокоскоростными перфоленточными устройствами ввода- вывода, высокоскоростным печатающим устройством). Супервизор обеспечивает асинхронное обслуживание периферийных устройств. Управляющая программа для микроЭВМ «Электроника-60» Управляющая программа предназначена для организации вы- полнения программ пользователя в реальном времени и представ- ляет собой совокупность ресурсов, к каждому из которых может получить доступ выполняемая задача пользователя. Таких задач, выполняемых в мультипрограммном режиме, может быть одновре- менно не более 255. Программа построена по модульному принципу и открыта для расширения. Она используется в вычислительных комплексах, ориентированных на перфоленточные носители инфор- мации и прошивку в ПЗУ [40], является хорошим дополнением и стандартной перфоленточной системе программного обеспечения, поставляемого для микроЭВМ «Электроника-60». Управляющая программа содержит программные компоненты, выполняющие сле- дующие функции: синхронизацию процессов по доступу критиче- ским ресурсам, синхронизацию совместного выполнения процессов, контроль времени выполнения процессов, динамическую приори- тетную диспетчеризацию процессов, обработку запросов, посту- пающих из программ пользователя, динамическое управление па- мятью, эмуляцию операций умножения и деления. Каждая задача пользователя, подготовленная для выполнения под управлением Управляющей программы, представлена дискрип- тором (РСВ), стеком и телом программы. Все задачи, подлежащие- выполнению на некотором отрезке времени, объединяются в муль- типрограммный пакет. Мультипрограммный пакет представляет собой «простую структуру», т. е. компонуется в единый модуль за- грузки, загружаемый в основную память как единое целое. Инфор- мация, отражающая динамику выполнения процессов, сохраняется в дескрипторах задач и в связанных с каждой задачей стеках. Де- скриптор задачи (рис. 5.4) и стек формируются в процессе диалога пользователя с программой Генератор мультипрограммного па- 168
кета, который вырабатывает загрузочный модуль, содержащий «простую структуру» в формате двоичной загрузки. В процессе выполнения задач часть информации в дескрипторах остается без изменения (статические данные), другая часть — изменяется (дина- мические данные). . Первые четыре 16-разрядных слова дескриптора содержат сим- волическое имя задачи (не более 6 символов), число, указывающее Число символов Код задачи Символическое имя — Связка всех процессов в системе Связка в динамическом списке Нижняя граница стека Текущая вершина стека Верхняя гранила стека Адрес начального запуска Указатель списка блоков управления памятью Связка контролируемых по времени задач Адрес подпрограммы обработки тайм-аута а ь cd 'ШШЛ Абсолютный приоритет f е Код семафора, иа котором блокиррвана задача Установленное время контроля задачи — Семафор блокирования задач, передающих сообщение данной задаче — Связка в списке жесткой диспетчеризации —“ Счетчик, отрабатывающий интервал запуска задачи — > Указатель таблицы запроса на жесткую диспетчеризацию Рис. 5.4. количество этих символов, и код задачи. Код задачи — это поряд- ковый номер задачи, присваиваемый ей в порядке формирования мультипрограммного пакета (1, 2... 255). Все задачи-связываются в общий список. Связкой служит 5-е слово дескриптора. Управляющая программа содержит головной указатель этого списка (YKAZ — символическое имя этого систем- ного указателя). 169
Генератор мультипрограммного пакета формирует содержимое 7—10 слов и младший байт 14-го слова дескриптора. Седьмое и де- вятое слова содержат информацию о верхней и нижней границах стека задачи и служат для целей контроля. Размер стека назнача- ется в процессе диалога. Значение слова 8 в дескрипторе перед за- грузкой задачи совпадает со значением слова 7. Слово 10 содержит входную точку задачи, т. е. адрес, с которого начнется ее выполне- ние. Младший байт 14-го слова дескриптора содержит начальное значение присвоенного задаче приоритета. На рис. 5.5 приведена структура семафора, обеспечивающего защиту критических ресурсов от вмешательства других процессов, если ресурс в некоторый момент времени уже используется опреде- ленным процессом. Выполнение P-операции на некотором семафоре, связанном с конкретным ресурсом, обеспечивает защиту. Из счет- чика семафора в момент выполнения P-операции вычитается 1, и если значение счетчика меньше нуля, то выполнение процесса приостанавливается. Содержимое регистров запоминается в стеке Код семафора Счетчик Связка семафоров в системе Указатель списка блокированных процессов Рис. 5.5. задачи, а дескриптор размещается в списке блокированных на семафоре процессов в порядке, определяемом значением приоритета. Если ресурс свободен, то процесс продолжает выполнение после входа в программу, связанную с данным ресурсом. Перед освобож- дением ресурса процесс выполняет V-операцию на данном семафоре. Если на данном семафоре имеются заблокированные процессы, то первый процесс из списка включается в очередь готовых к выпол- нению процессов. V-операция добавляет 1 к счетчику семафора. Код семафора, на котором блокируется процесс, всегда заносится в младший байт 15-го слова РСВ, а в старшем байте 1-го слова взво- дится флаг «Блокирование». Таким образом, в любой момент вре- мени известно, в каком состоянии находится процесс. Дескрипторы, связанные с каждой задачей, в любой момент времени размещаются в различных списках. В некоторых списках дескрипторы упорядочены согласно приоритетам задач, определяе- мых кодом в младшем байте 15-го слова РСВ, или по времени пере- ключения в активное состояние. Управляющая программа обраба- тывает следующие списки и очереди: общий список всех задач, скомпонованных в мультипрограммный пакет (YKAZ); очередь за- дач, блокированных на семафорах защиты (каждому семафору соот- ветствует своя очередь); список активных задач (RUNING); очередь задач, готовых к выполнению (NEXTRY); очередь задач, контро- лируемых по тайм-ауту (WSREAL); очередь задач, поставленных на жесткую диспетчеризацию (WSHARD); очередь задач, пере- дающих сообщения (OUTINF); очередь задач, ждущих сообще- ния (WSWAIT). В скобках приведены имена головных указателей списков, используемых в Управляющей программе. Список RUNING всегда представлен одним элементом. 170
Списки WSREAL, WSHARD, WSWAIT упорядочены согласно вычисленным значениям предстоящего времени переключения в оче- редь задач, готовых к-выполнению. Например, первой в списке за- дач, контролируемых по тайм-ауту, размещается задача, для ко- торой время, отпущенное на ее выполнение, истекает раньше, чем у других задач. Управляющая программа состоит из набора отдельных файлов (дистрибутивных файлов), написанных на языке макроассемблера. Генератор Управляющей программы позволяет на инструменталь- ной мини-ЭВМ (СМ-3, СМ-4) или микроЭВМ «Электроника-60» создать версию системы в формате загрузки. Программа генерации организует диалог с пользователем, в процессе которого выясняется состав будущей Управляющей программы. Кроме того, на инстру- ментальной ЭВМ может выполняться формирование н компоновка мультипрограммного пакета с Управляющей программой. Пользо- ватели, располагающие инструментальной ЭВМ, могут получать любые конфигурации Управляющей программы и включать в нее дополнительные функции (свои программные средства для обработ- ки запросов). Пользователи, не располагающие инструментальной ЭВМ, получают в свое распоряжение несколько стандартных конфи- гураций УП. Процесс генерации мультипрограммного пакета авто- матизирован. Пакет может выполняться как на инструментальной ЭВМ, так н на целевой машине. Минимальный состав Управляющей программы представляют программные модули: .DISP — программа диспетчер, PRIOR — программа упорядочения очередей задач по приоритетам, .XV — программа выполнения V-операции, .ХР — программа выполне- ния P-операции, INIT — программа инициализации задач, INUPT— программа обработки прерываний от таймера (стандаптной частоты 50 Гц). Перфоленточная операционная система для микроЭВМ «ВЭФОРМИКА» Система содержит следующие компоненты: монитор, редактор текста, макроассемблер, тест-монитор. Монитор предназначен для выполнения отладочных функций, управления устройствами ввода-вывода, загрузки программ и дан- ных, запуска программ. Задание на выполнение некоторой функции Монитор принимает с консоли оператора в виде небольшого числа простых директив (табл. 5.8). Остальные директивы Монитора приведены в разделе 8.3 и свя- заны с вводом и выводом данных и отладочными действиями. Редактор текста используется для создания новых программ н исправления отлаживаемых программ. Перед загрузкой Редак- тора текста назначаются устройства ввода-вывода вводом дирек- тивы А Монитора. Загрузка Редактора выполняется вводом дирек- тивы R 0000. Для запуска Редактора вводится директива G 10. Ре- дактор текста вводит готовую программу или создает ее в буфере памяти (рабочей области). Специальный программный регистр ре- дактора УБ (указатель буфера) используется для фиксации неко- торого конкретного места в обрабатываемом тексте, относительно которого назначаются различные функции. УБ всегда указывает положение между двумя символами. Каждая директива Редактора оканчивается двумя символами ВШ (эти символы различны для раз- ных устройств). На консоли при вводе символа ВШ отображается 171
5.8. Директивы Монитора ЛЛОС микроЭВМ «ВЭФОРМИКА» Мнемоника Выполняемое действие А (ЛУ) = (ФУ), где ЛУ — код логическо- го устройства; ФУ — код физического устройства Назначение устройств ввода-вывода Осуществляется связь логического уст- ройства (ЛУ) с физическим (ФУ) ЛУ: консоль оператора — С, устройство ввода — R, устройство вывода — Р, уст- ройство печати — L ФУ: consul 260 — К, дисплей ВТ-340-С, фотосчитыватель FS-1501—R, перфора- тор ПА-150 — Р I. адрес 1, где адрес 1 — величина смещения адреса загруз- ки Ввод с перфоленты информации в двоич- ном формате. Выполняется загрузка в память по адресу, определяемому сум- мой смещения и адреса загрузки, указан- ного на ленте G адрес 1, где адрес 1 — точка вхо- да в программу Выполняется передача управления про- грамме по адресу 1 символ $ . Команды Редактора текста делятся на четыре группы: ввода, вывода, манипуляции УБ, манипуляции данными. Допусти- мо объединять команды Редактора в командные строки. Макроассемблер AL/F. Для его загрузки используется директива R0, а для запуска — G 10. Ассемблирование выполняется в два или три прохода. Три прохода необходимы, если используется одно устройство для получения объектной программы и листинга. Тест-монитор — это программа, предназначенная для про- верки работоспособности ОЗУ и внешних устройств (ЭПМ, перфо- ратора и фотосчитывателя). После запуска тест-монитор распе- чатывает на консоли: Т = и ожидает директиву оператора. Ди- ректива тест-монитора определяет запуск соответствующей тест-программы. Вводом следующей директивы оператор уточняет выбранный тест. Глава 6 АССЕМБЛЕРЫ МИКРОПРОЦЕССОРОВ И МИКРОЭВМ 6.1. ФОРМАТЫ ОПЕРАТОРОВ Программист, разрабатывающий программы на языке ассембле- ра, может пользоваться любыми командами и особенностями объектной машины. Все операции и адреса в языке ассемблера имеют символическое представление. 172
Типичным является формат, содержащий четыре поля: поле метки, поле кода операции, поле операнда и комментарий. Эти по- ля отделяются разделителями [53]. На основе основных выполняемых функций команды можно разделить на следующие группы: пересылки данных, арифметиче- ские, логические, управления, обращения к подпрограммам, ввода- вывода. Команды пересылки данных, арифметические, логические и управления используют обращения к памяти и регистрам. Спо- собы адресации операндов могут быть различными. Основные способы адресации Способы адресации удобно рассмотреть на примере макроас- семблера, используемого для микроЭВМ «Электроника-60», система адресации которой содержит почти все используемые в микроЭВМ методы адресации. Методадресации ----•—> 3-и регистр Код операции Номер регистра Рис. 6.1. Программный счетчик (PC) всегда содержит адрес следующего слова, которое должно быть выбрано нз памяти. Это может быть адрес следующей 16-битовой инструкции или адрес 2-го или 3-го слова текущей, обрабатываемой двух- или трехсловной инструк- ции. Для описания способов' адресации используются следующие обозначения: Е — любые выражения, значениями которых может быть 16-разрядная двоичная величина (выражение может быть абсолютное, перемещаемое, внешнее или глобальное или комплекс- ное перемещаемое); R — регистровое выражение, т. е. любое выра- жение, содержащее терм с лидирующим символом % или символ, сопоставленный такому терму (например, R0 = % 0); ER — ре- гистровое выражение или абсолютное, выражение, значение ко- торого находится в диапазоне от 0 до 7; А — общая адресная спецификация, которая определяет 6-битовое адресное поле и описывается в терминах выражений Е, R или ER. Регистровый способ адресации. Операнд, используемый в опе- рации, размещается в регистре. Номер регистра указывается в ин- струкции, например, R3 = % 3; CLR R3. Символ R3 получает зна- чение выражения % 3 (т. е. номер 3-го регистра). Это значение используется в поле операнда инструкции CLR, которая выпол- нит очистку 3-го регистра. Команда транслируется в одно 16-раз- рядное слово, которое содержит код операции, указание на способ адресации и номер регистра (рис. 6.1). Косвенный регистровый способ адресации. Содержимое регист- ра определяет адрес операнда, используемого для выполнения инструкции. Формат для A: 01R или (ER). Примеры команд: CLR C!)R1, CLR (Rl), CLR (1). На рнс. 6.2 представлена структура машинной команды, полученной после трансляции инструкции MOV ffl R3, Q)R2. 173
Автоинкрементный способ адресации. Содержимое регистра (ER) увеличивается на 2, после того, как было использовано инст- рукцией в качестве адреса операнда. Формат для A: (ER)-j-. При- мер команды: GLR (R0)+. Также как и остальные машинные ко- манды, инструкция CLR(R1)+ после трансляции содержит код опе- рации, адрес операнда и указание на способ использования этого операнда (рис. 6.3). Автоинкрементная косвенная адресация. Регистр (ER) содер- жит указатель на адрес операнда. Содержимое регистра увеличи- Метод адресации О 1a t 0 !2П ' Код операции 1 65 52 9в_ НоиерАрегистрод Регистр 2 Адрес операнда Регистр 3 Адрес операнда Ячейка ОЗУ Операнд 2 Ячейка ОЗУ Операнд f 2 О Рис. 6.2. Метод адресации t-й регистр Рис. 6.3. МетОадрт 3-й регистр Рис. 6.4. вается на 2 после того, как оно было использовано в качестве ука- зателя. Формат для A: W (ER)-J-. Пример команды: CLR в) (R3) + . Содержимое 3-го регистра является указателем на адрес операнда. Ячейка, содержащая операнд, будет очищена, а содержимое регистра увеличено на 2 (рис. 6.4). Автодекрементная прямая и автодекрементная косвенная адре- сации. Они отличаются от предыдущих двух способов адресации только тем, что содержимое регистра уменьшается на 2 до того, как будет обрабатываться операнд. Формат для А: —(ER) автодекре- ментная адресация; Q) —(ER) — автодекрементная косвенная ад- ресация. Индексная адресация. Значение выражения (Е) содержится во 2-м или 3-м слове выполняемой инструкции. Эффективный адрес операнда определяется сложением значения выражения Ес содер- жимым регистра ER. Значение выражения Е является смещением, 174
а содержимое регистра ER представляет базу. Формат для А: Е (ER). Примеры инструкций: CLR X + 2 (Rl), MOV R0, —2 (R3). Адрес операнда для первой инструкции определяется суммой значения выражения X + 2 и содержимым 1-го регистра. Адрес приемника второй инструкции — 2 плюс содержимое-Э-го регистра (рис. 6.6). Иидексиая косвенная адресация. Сумма значения выражения (Е) и содержимого регистра (ER) определяет указатель на адрес 1-е слово инструкции Метод адресации: регистровый индексный 7/ 3 2 о. [в 1, (Г О У 1211 М~ Нов операири Нойер регистра 2-е слово инструкции Рис. 6.5. Рис. 6.6. операнда. Формат для A: CUE (ER). Пример инструкции: CLR в) 114 (R4). Если содержимое регистра 4 — величина 300, то зна- чение 414 определяет указатель на адрес операнда. В том случае, если содержимое ячейки 414 — величина 1000, то команда CLR вы- полнит очистку именно этой ячейки. Непосредственная адресация. Непосредственная адресапия обеспечивает хранение операнда (Е) во 2-м или в 3-м слове инструк- ции (рис. 6.6). Этот способ адресации является модификацией авто- инкрементного способа. В качестве регистра адреса используется регистр команд. Формат для А: # Е. Примеры инструкций: MOV # 10, R0, MOV # X, Rl. Первая инструкция выполняет пересылку величины 10 в регистр 0. Во второй инструкции значение, соответствующее символу X, пересылается в регистр 1, 175
Абсолютная адресация. Адресное выражение Q # Е опреде- . ляет абсолютный адрес, которой хранится как 2-е или 3-е слово инструкции. Абсолютная адресация является модификацией авто- инкреметной косвенной адресации, когда в качестве указателя ис- пользуется содержимое регистра команд. Формат для A: Q # Е. Примеры инструкций: MOV g) # 200, Rl, CLR g) # X. Первая Инструкция выполняет пересылку содержимого ячейки 200 в ре- гистр R 1. Вторая инструкция выполняет очистку содержимого ячей- ки, адрес которой определяется значением символа X. Относительная адресация. Относительная адресация ассемб- лируется точно так же как индексная адресация, использующая счетчик команд в качестве индексного регистра. Формат для А: Е, Примеры инструкций: CLR 100, MOV R0, Y. Смещение для получения адреса операнда размещается во 2-м или 3-м слове инструкции. Эта величина во время выполнения ин- струкции складывается с адресом инструкции (счетчик команд является базовым регистром). Инструкция MOV 100, R3 после тран- сляции и размещения в памяти микроЭВМ описывается следующим образом: Ячейка 20: 016703 Ячейка 22: 000054 Ячейка 24: Следующая инструкция. Во время выполнения инструкции процессор обрабатывает первое слово (MOV) и увеличивает значение счетчика команд на 2. В течение следующего цикла вычисляется действительный адрес операнда, который определяется как сумма содержимого ячейки 22 (смещение) и содержимого счетчика команд (счетчик команд ссы- лается на ячейку 24, так как в этом цикле его содержимое после вы- борки ячейки 22 увеличилось на 2). Таким образом, адрес источ- ника (первого операнда) равен: СМЕЩЕНИЕ + СЧЕТЧИК КОМАНД = 548 4- 248 = 1008. Косвенная относительная адресация. Относительная косвен- ная адресация подобна предыдущей, за исключением того, что вы- ражение Е используется как указатель на адрес операнда. Значе- ние указателя определяется суммой содержимого счетчика команд и следующего слова инструкции. Формат для А: ©Е. Пример ко- манды: MOVg)Z, R1 (рис. 6.7). Например, в оперативном запоми- нающем устройстве команда MOV Q Z, R1 после трансляции и за- грузки может быть представлена в следующей форме: Ячейка Si ЖЭ Инструкция MOV б) Z, R1 Ячейка 35: Следующая инструкция Ячейка 100:00377 (поле Z) В результате выполнения инструкции MOV g)Z, RI, будет вы- полнена пересылка содержимого ячейки 3778 в регистр 1. Способы адресации других микроЭВМ и МП незначительно от- личаются от вышеприведенных (табл. 6.1). Стековая адресация. Архитектура МП RCA COSMAC 1800 и микроЭВМ INTEL MCS-48, MOSTEKZ 80 предусматривает сте- ковую адресацию [68]. Для организации стековой адресации исполь- зуются регистры К(Х)'или R (2). R (X) —это четырехбитовый ре- гистр, содержащий иомер одного из 16-битовых регистров, пред- 176
назначенных для временного хранения данных, R (2) — 16-битовой регистр. Содержимое регистра R (2) является указателем иа вер- шину стека, организуемого в памяти с произвольной выборкой. Программист может отменить увеличение или уменьшение значе- ния R (2), т. е. изменение указателя стека. Это происходит в тех случаях, когда сохраняемые в стеке данные необходимо использо- вать в следующих командах. С точки зрения логики выполнения инструкции в программе стековая адресация RCA COSMAC 1800 вквивалентна автоинкрементной или автодекрементной адреса- циям, рассмотренным выше. Дуальвая адресация. Понятие дуальной адресации использует- ся при программировании на микроЭВМ MOTOROLA М6800 [55]. Этот термин определяет двухадресную команду, причем в качестве первого операнда используется аккумулятор А или аккумулятор Рис. 6.7. В. Второй операнд определяется правилами непосредственной, прямой, расширенной или индексной адресаций. Например, инст- рукция LDA А $ 8000 определяет загрузку на регистр А содержи- мого ячейки с адресом 8000. Расширенная адресация. Когда используется прямая адреса- ция, при программировании на микроЭВМ MOTOROLA М6800, инструкция транслируется в два байта. Второй байт содержит адрес операнда в беззнаковой 8-битовой двоичной форме. Расши- ренная адресация Предполагает размещение инструкции в пределах трех байт памяти микроЭВМ. 2-й и 3-й байты инструкции содержат расширенный адрес операнда в беззнаковой 16-битовой двоичной форме. Некоторые инструкции MOTOROLA М6800 могут использовать только расширенную адресацию. В этом случае ассемблер всегда генерирует трехбайтовую инструкцию независимо от величины адреса. Для тех инструкций, которые могут использовать как пря- мую, так и расширенную адресации, формат инструкции — 2 бай- та или Збайта — ассемблер определяет исходя из абсолютного значе- ния адреса. Если значение адреса находится в диапазоне от 0 до 255, то используется прямая адресация; если десятичное значение адреса превосходит 255 — расширенная адресация. 177
6.1. Способы адресации в микропроцессорных системах Микропроцессорные системы Способы адресации RCA COSMAC 1800 MICROPROCESSORS Регистровый, косвенный-регистро- вый, непосредственный, стековый MOTOROLA М6800 (МИКРОЭВМ) Дуальный, аккумуляторный, са- моопределенный, непосредствен- ный, относительный, индексный, прямой и расширенный INTEL MCS-48 (МИКРОЭВМ) Регистровый, косвенный-регистро- вый, непосредственный, стековый MOSTEK Z80 (МИКРОЭВМ) Непосредственный, непосредствен- ный-расширенный, модифицирован- ный через нулевую страницу, от- носительный, расширенный, индекс- ный, регистровый, косвенный-ре- гистровый, самоопределенный TEXAS INSTRUMENTS TMS 9900 (семейство микропроцессоров) Регистровый, косвенный-регист- ровый, автоинкрементный, относи- тельный, индексный, непосредст- венный Непосредственная — расширенная адресация. Понятие непо- средствеиной-расширенной адресации используется при программа- ровании на микроЭВМ MOSTEK Z80 [55]. Типичным примером ин- струкции, использующей указанный тип адресации, является ин- струкция загрузки регистровой пары HL 16-битовым значением: Код операции Один или два Вайта Младшая часть адреса Старшая часть адреса Операнд Операнд Рис. 6.8. LD HL, DATA; STARTING ADDRESS OF DATA STRING. Опе- ранды в поле инструкции разделяются запятой, а комментарий от- деляется от поля инструкции символом «;». Инструкция данного типа после трансляции и размещения в памяти занимает 3 или 4 байта (рис. 6.8). 178
Модифицированная через нулевую страницу адресация. Дан- ный тип адресации используется в микроЭВМ MOSTEK Z80. Одно- байтовая инструкция содержит код операции и адрес одной из восьми ячеек нулевой страницы памяти.В результате выполнения такой инструкции может быть получен доступ к полному 16-бито- вому адресу. Этот тип адресации эффективно используется в коман- дах перехода, вызова подпрограмм и возврата. Самоопределениая адресация. Мнемоника инструкции и ее код после трансляции предполагает обращение к одному из регист- ров, доступных пользователю. В качестве примера использования данного типа адресации можно указать арифметические инструк- ции (MOSTEK Z80), которые всегда направляют результат в акку- мулятор. Символические имена Ассемблер обрабатывает символические имена трех типов: по- стоянные, определяемые пользователем н макроимена. Постоянные имена представляют собой мнемонику различных машинных команд н директив ассемблера. Эти имена не надо опре- делять перед использованием в поле оператора. Например, симво- лические имена, используемые в программах, составленных на ассемблере, разработанном для семейства микроЭВМ TEXAS INSTRUMENTS TMS9900 [68], означают следующее: СВ (com- part bytes) — сравнение байт; J EQ (jump equal) — переход при вы- полнении сравнения; DEC (decrement) — вычитание единицы; CLR (clear)'— очистка, и т. д. ; Мнемоника большей части команд ассемблеров различных мик- роЭВМ и МП совпадает. Различия в основном проявляются на бо- лее низком уровне, т. е. в реализации команд, а также в способах адресации и записи выражений в поле операндов. Имена, определяемые пользователем, и макроимена. Имена, определяемые пользователем,— это метки, имена, сопоставленные некоторым значениям оператором присваивания, имена макро- команд, определяемых пользователем, и фиктивные аргументы [62]. Имена некоторых макрокоманд могут быть системными и ие опре- деляться пользователем. Их значения и действия стандартные и определены заранее для данной версии ассемблера и операцион- ной среды. Обычно все имена формируются из литерно-цифровых симво- лов. В большинстве ассемблеров есть ограничения на максималь- ное количество литер в имени (не более шести). Первой литерой Должна быть буква. 6.2. УСЛОВНОЕ АССЕМБЛИРОВАНИЕ Ассемблер содержит достаточно мощные средства для условно- го ассемблирования, которые позволяют получать различные ва- рианты программ в зависимости от среды функционирования и тре- бований пользователя. В ассемблере эти средства называют сред- ствами условной трансляции, встроенными в транслятор. 179
Условное ассемблирование в ассемблере для микроЭВМ «Электроника-60» в ОС ФОДОС Условная трансляция управляется набором директив. Директивы. IF и .ENDC. Формат директив: метка: IF условие, аргумент(ы) блок программы ENDC, где условие — одно из условий, перечисленных в табл. 6.2, аргу- менты — символический аргумент (аргументы) или выражение (вы- ражения) для проверки заданных условий. Если условие выпол- няется, то блок программы, размещенный между директивами .IF и .ENDC транслируется; если условие не выполняется — ие транслируется. 6.2. Условия, задаваемые в директивах условной трансляции Условие Аргумент Блок программы транслируется, если Основ- ное Дополни- тельное EQ GT LT DF В IDN Z G NE LE GE NDF NB DIF NZ L Выражение » Символическое имя "Аргумент типа параметра макрокоманды Два аргумента типа па- раметра макрокоманды Выражение 9 Выражение = 0(# 0) » > 0 (< 0) » < 0 (> 0) Имя определено (не опре- делено) Аргумента нет (аргумент есть) Аргументы одинаковы (различны) Выражение = 0 (# 0) » > 0 « 0) Параметр макрокоманды, который используется как аргумент директивы условной трансляции, должен заключаться в угловые скобки или охватываться символами «>» и «/». , При проверке условий DF и NDE используются две логические операции для группировки символических аргументов: & — опе- рация «И», I — операция «ИЛИ». Пример; . IF EQ А—В+1 ; БЛОК ТРАНСЛИРУЕТСЯ, ЕСЛИ ENDC А — В + 1 = 0. Директивы. IFF, IFT, .IFTF. Директивы используются только в блоках условной трансля- ции. Форматы директив: метка : ’. IFF метка : . IFT метка ; , IFTF 180
Данные директивы указывают, что часть программы, размещен- ная за одной из них до следующей директивы транслируется в зави- симости от результата проверки условия в директиве условной’ трансляции: .IFF — транслировать, если условие ложно, .IFT — транслировать, если условие истинно, .IFTF — транслировать не- зависимо от значения условия. Пример-. . IF DF А&В ; ПУСТЬ А и ВОПРЕДЕЛЕНО, А . IF DF С ; С — НЕОПРЕДЕЛЕНО .IFF ; ДАННЫЙ БЛОК ТРАНСЛИРУЕТСЯ, Т. К. ; УСЛОВИЕ ЛОЖНО, С — НЕОПРЕДЕЛЕНО. . IFT ; ДАННЫЙ БЛОК НЕ ТРАНСЛИРУЕТСЯ, Т.К. ; УСЛОВИЕ ЛОЖНО, С — НЕОПРЕДЕЛЕНО. . IFF ; ДАННЫЙ БЛОК ТРАНСЛИРУЕТСЯ, Т. К. ; УСЛОВИЕ ЛОЖНО, С — НЕОПРЕДЕЛЕНО. . IFTF ; ДАННЫЙ БЛОК ТРАНСЛИРУЕТСЯ НЕЗАВИСИМО . ENDC ; ОТ УСЛОВИЯ. . ENDC Директива .IIF — директива непосредственной условной траис- лтции. Формат директивы: IIF условие, аргумент, команда, где уе- ли ие— одно из условий, допустимых для директивы .IF (табл. 6.2); аргумент — выражение, символический аргумент или пара- метр макрокоманды (табл. 6.3); команда — команда ассемблера. 6.3. Директивы условной трансляции в языке ассемблера ОС ФОДОС Директива Аргумент Блок ассемблируется, если .IFZ или .IFEQ Выражение Выражение =0 .IFNZ или .IFNE » ¥= 0 .IFL или .IFLT » » <0 .IFG или .IFGT » » >0 .IFLE » » <0 .IFDF Символический Символ определен .IFNDF » » не определен Для этой формы оператор. ENDC не требуется. Если условие истин- но, то ассемблер транслирует указанную в директиве команду, на- пример: .IIF NE А INC ZET Команда INC ZET транслируется, если значение выражения А не равно 0. 181
1 Условное ассемблирование в AL/F Ассемблер AL/F, входящий в состав перфоленточной операци- онной системы, реализованной для микроЭВМ «ВЭФОРМИКА», содержит две команды, выполняющие условное ассемблирование: IF и ENDIF. Если выражение в команде IF равно 0, то операторы ассемблера, размещенные между командами IF и ENDIF, не транс- лируются. Если значение выражения не равно 0, то в текст исход- ной программы включаются операторы, размещенные между коман- дами IF и ENDIF. Самя команды IF и ENDIF не приводят к генера- ции машинных команд, они лишь определенным образом интерпре- тируются ассамблером. Пример-. VAR SET IH DAT: DS 100H IF VAR DS ENDIF 100H Установка значения IH для имени VAR позволяет зарезерви- ровать дополнительных 100 Н байт памяти в программе, т. е. всего 200Н байт. Если директивой SET имени VAR было бы сопоставлено значение ОН, то в программе ассемблер выделил бы всего 100Н байт памяти для массива DAT. 6.3. МАКРОСРЕДСТВА АССЕМБЛЕРОВ ' Макроопределение состоит из начального оператора, тела мак- роопределения и конечного оператора. Макроопределение должно быть обработано до вызова макрокоманды. Для того, чтобы можно было использовать одно и то же макроопределение в различных программах, его помещают в макробиблиотеку пользователя или системную. Макросредства языка ассемблера на микроЭВМ «Электроника-60» в ОС ФОДОС Директива .MACRO. Формат директивы: .MACRO имя, параметры, где имя — имя макроопределения и макрокоманды в вызове;, — допустимый разделительный знак: запятая, пробел и (ИЛИ) сим- вол ГТ (горизонтальная табуляция); параметры — последователь- ность допустимых символических имен, разделенных запятыми, пробелами и (ИЛИ) символами ГТ. Директива >ENDM. Формат директивы: .ENDM имя, где имя — имя макроопределения. В директиве ,ENDM необяза- тельно указывать имя макроопределения. 182
Директивы .MACRO и .ENDM — директивы указания начала и конца макроопределения, соответственно. .MACRO позволяет указать имя макроопределения и список формальных параметров. Директива .MEXIT. Формат директивы: .MEXIT. Директива используется для завершения макроопределения до того, как встретится конечный оператор .ENDM. Пример: . MACRO ADM А, В, С ; МАКРООПРЕДЕЛЕНИЕ ADM. , IF DF SYMB ; НАЧАЛО БЛОКА УСЛОВНОЙ ТРАНС- ЛЯЦИИ. . MEXIT ; КОНЕЦ МАКРОРАСШИРЕНИЯ. . ENDC ; КОНЕЦ БЛОКА УСЛОВНОЙ ТРАНС- ЛЯЦИИ. . ENDM ADM ; КОНЕЦ МАКРООПРЕДЕЛЕНИЯ. В данном примере, если произойдет вход в блок условной транс- ляции, то директива .MEXIT будет завершать и блок условной трансляции, и макрорасширение, т. е. выполнится переход к обра- ботке следующей команды, размещенной после вызова макро- команды ADM. Вызов макрокоманды. Формат директивы: метка : имя параметры, где имя—символическое имя, указанное в директиве .MACRO;, параметры — фактические параметры, заменяющие формальные, перечисленные в директиве .MACRO. Параметры разделяются за- пятой, пробелом и (ИЛИ) символом ГТ. Параметр может быть позиционным и ключевым. Первый фак- тический параметр в макрокоманде соответствует первому фор- мальному параметру в макроопределении. Таким образом, между формальными и позиционными фактическими параметрами имеется взаимно однозначное соответствие. Пример: . MACRO REND А, В, С . ENDM REND REND (.WORD, 5,0), #40, DATA Фактические параметры макрокоманды REND являются позици- онными. Устанавливается следующее соответствие между формаль- ными и фактическими параметрами: Формальные параметры: Фактические параметры: A WORD, 5,0 В #40 С DATA 183
Ключевые параметры содержат ключевое слово и записываются в виде: имя=последовательность символов, где имя — имя фор- мального параметра (ключевое слово); последовательность симво- лов— значение фактического параметра символов. В макрокоманде ключевой параметр указывается в любом месте последовательности фактических параметров и не влияет на позиционное соответствие остальных параметров. Ключевой параметр в макроопределении является частью позиционно упорядоченных формальных парамет- ров и определяет значение параметра по умолчанию. Директивы генерации. Директивы генерации используются для изменения последовательности генерируемых при трансляции операторов, для определения числа параметров макрокоманды и знаков в строке, для определения метода адресации параметров. Директива .NARG. Формат директивы: .NARG имя, где имя — допустимое в языке ассемблер символическое имя. Ди- ректива размещается в макроопределении и связывает указанное в ней имя со значением, равным числу используемых в вызове мак- рокоманды фактических параметров. Директива .NCHR. Формат директивы; .NCHR имя, строка, где имя — допустимое в языке символическое имя; строка — строка печатных знаков; строка должна быть заключена в угловые скобки «( )» или ограничена знаками® 7/ », если она содержит разделительные знаки « , », пробел и (или) ГТ. Директива .NCHR может появляться в любом месте программы и присваивать указан- ному в ней имени значение, равное числу символов в строке. Директива .NTYPE. Формат директивы: .NTYPE имя, выражение, где имя — допустимое символическое имя; выражение — допусти- мое выражение метода адресации в том виде, как оно используется в операторе. Директива определяет для указанного имени значение, равное значению 6-битового метода адресации указанного параметра. Пример-. . NTYPE TYP, PARI . IFNE TYP & 27 В данном примере переменной TYP присваивается значение метода адресации, используемого в операторах при записи в них выраже- ния, к которому ссылаются через параметр PAR1. Следующая ди- ректива .IF NE проверяет, не используется ли метод непосредствен- ной адресации через счетчик команд (метод адресации — 010, номер регистра — 111). Директива .ERROR. Формат директивы: метка : .ERROR, выражение, комментарий, где выражение — допустимое в языке выражение (необязательное). Директива .PRINT. Формат директивы: метка : PRINT, выражение, комментарий. Сообщения, выводимые по директивам .ERROR и PRINT содержат: символ «Р», который печатается только в случае использования ди- 184
рективы .ERROR; текущее значение счетчика адреса; значение выражения, указанного в директиве; исходный оператор. Директива .MCALL. Формат директивы: .MCALL имя 1, имя 2, .... имя N., где имя i — имена макроопределений из макробиблиотек (i = = 1, 2, ..., N). Директива обеспечивает доступ в макробиблиотеку пользователя и системную библиотеку. Она объявляет имена макро- определений, которые будут использованы в программе. Макросредства ассемблера микроЭВМ «ВЭФОРМИКА» в операционной системе ДОС/ F Макросредства, реализованные в ДОС/F, представляют собой полный препроцессор и предназначены для макрообработки любых символьных текстов. Однако макроязык в значительной степе- ни ориентирован на использование с ассемблером микроЭВМ «ВЭФОРМИКА». Макроопределение. Макроопределение указывается оператора- ми MDEF и MEND. Первый оператор задает имя макрокоманды и список параметров. За этим оператором могут размещаться ко- манды ассемблера и операторы макросредств. Оии образуют тело макроопределения. Конец тела макроопределения отмечается опе- ратором MEND: t- имя-макрокоманды MDEF список-параметров тело макроопределения MEND. Параметры в списке параметров разделяются запятыми. Символ « ; » ограничивает просмотр текста. В расширенный текст все сим- волы, начиная с символа « ; » и до конца строки, не поступают. Таким образом, в макроопределениях можно размещать комментарий, который не расширяется в выводной поток. Вызов макрокоманды. Чтобы выполнить расширение текста, записывают вызов макрокоманды, используя имя макрокоманды и список аргументов. Пример: MCN MDEF &Р1, &Р2 MOV &Р1, &Р2; ТЕЛО МАКРООПРЕДЕЛЕНИЯ. К7: MCN М, А MCN В, М В'расширенный текст в результате обработки двух вызовов макро- команды MCN поступит следующий текст: К7: MOV М, А MOV В, М В теле макроопределения может размещаться вызов другой макро- команды, называемой вложенной макрокомандой. В общем случае формат макрокоманды следующий: [метка -:] имя-макрокоманды [список аргументов]; где символы «[» и «]» охватывают необязатель- ные элементы. 185
Параметры. Параметры обозначаются буквенно-цифровыми идентификаторами С лидирующим символом &, например, &PAR1, &А03, &GAMA. Параметры перечисляются в операторе MDEF и мо- гут размещаться в любом месте тела макроопределения. Запись &PAR.ABC означает, что в данном месте макроопределения вместо символа «&PAR» должен быть подставлен соответствующий аргу- мент, за которым размещаются символы «АВС». Значениями пара- метров могут быть: арифметические и символьные константы, на- пример, 2EFH, 1770, 10D, NAME, D1, знаковые константы, напри- мер, ’А + В — С’, ABC’ ’DE’, список элементов, представляющих арифметические, символьные или знаковые константы; элементы списка разделяются запятыми, а весь список охватывается круглы- ми скобками, например, ('А + В', 3D, NAM). Для обращения к элементу списка параметр индексируется; в теле макроопределе- ния используется запись вида &PAR (I). Переменные макропериода. В макроопределениях допустимо использование локальных и глобальных переменных, которые ис- пользуются для хранения промежуточных результатов вычисления выражений в процессе макрообработки и для обмена информацией между макрокомандами. Локальные переменные объявляются опе- ратором макросредств LOC, а глобальные переменные — оператором GLOB, например, LOC &VAR1, &VAR2 и GLOB &VAR10, &VAR 20 (100). В последнем случае объявлен массив глобальных перемен- ных & VAR20. Ж элементу массива обращаются указанием индекси- рованной переменной, например: & VAR 20 (J). Локальные переменные макропериода используются только в пределах одного макроопределения и теряют свои значения, когда вызывается другая макрокоманда. Глобальные переменные сохра- няют свои значения для всех макроопределений. Операторы макропериода. Операторы определения глобальных и локальных переменных имеют следующий формат: GLOB список-перемениых, LOC список-переменных. Начальным значением локальным и глобальным переменным при- сваивается арифметическая константа 0. Оператор присваивания выполняет назначение текущих значений переменным и параметрам: MSET операнд-выражение, где операнд — параметр, переменная или индексированная перемен- ная; выражение — арифметические, символьные и знаковые кон- станты, параметры, локальные и глобальные переменные, функ- ции макропериода, разделенные знаками операций макропериода. Пример: GLOB &GVAR1, &GVAR2 MSET & GVAR 1 =50 MSET & GVAR 2 = & GVAR2 + 10 Если в теле макроопределения содержатся перечисленные выше операторы, то при каждом очередном вызове макрокоманды пере- менные &GVAR1 и &GVAR2 будут получать следующие значения: &GVAR : 50, 50, 50, ... &GVAR2 : 10, 20, 30, ... 186
Оператор безусловного перехода осуществляет безусловный переход на оператор с указанным именем генераторного перехода: MGO имя-генераторного-перехода. Имя-генераторного-перехода — это последовательность от од- ной до семи букв илн цифр, начинающаяся с буквы с лидирующим символом «%», например, % MCR, % F100. Генераторный пере- ход должен осуществляться только на операторы макропериода. |3-1 Оператор условного перехода вычисляет значение указанного в ием выражения. Если выражение имеет значение 0, то следующим обрабатывается оператор, идущий за оператором MGOIF. Если значения выражения отлично от 0, то следующим обрабатывается оператор, названный именем перехода. Формат оператора условного перехода: MGOIF выражение, имя-генераторного-перехода. Операторы MGO и MGOIF могут указывать переходы либо к другим операторам макропериода, либо к обычной текстовой ин- формации, содержащейся в макроопределении. В последнем случае, если требуется пометить переход, используется пустой оператор MNOP. Его формат следующий: имя-генераторного-перехода MNOP. Операторы MGOIF, MGO, MNOP позволяют генерировать нужную часть макроопределения требуемое число раз. Используя оператор MSET и перечисленные выше операторы, можно организовать циклы. Пример: МРОР MDEF & А, & В % Fl MGOIF &А EQ 0, o/ofnD MSET & А =& А— 1 POP & В MGO % Fl % FND MEND Макрокоманда МРОР позволяет организовать требуемое число раз расширение в выводной текст команды ассемблера POP. Напри- мер, если в тексте программы будет размещен вызов МРОР 4, D, то в результате его обработки сгенерируется следующий текст: POP D POP D POP D POP D Выражения. В качестве операндов в выражениях могут исполь- зоваться явно заданные арифметические, символьные и знаковые константы, параметры, локальные и глобальные переменные; функ- ции определения типа, длины, выделения подстроки и логического сдвига. Операции, допустимые в выражениях, следующие: арифме- тические: сложение (+), вычитание (—), умножение (X), деление (/), вычисление остатка (MOD); логические: логическое сложение (OR), умножение (AND), исключающее или (XOR), отрицание (NOT); отношения: «равно» (EQ), «не равно» (NE), «меньше чем» (LT), «меньше или равно» (LE), «больше чем» (GT), «больше или равно» (GE); конкатенации (!). 187
Все допустимые операции связаны между собой отношением старшинства,для определения порядка их выполнения в'выражеиин. Ниже перечислены все допустимые операции в порядке .убывания их приоритета: NOT *, /, AND, MOD +, —, OR, XOR EQ, NE, GT, GE, LT, LE ! Таким образом, вначале в выражении выполняются все операции NOT, затем Х-, /, AND, MOD, затем +, — и т. д. Круглые скобки изменяют порядок вычисления операций; вначале вычисляются все операции в соответствии с приоритетами внутри скобок, а затем все остальные операции. Выражения могут использоваться для опреде- ления индекса, для указания элемента массива глобальных пере- менных, а также могут генерировать символы в выходной поток. В последнем случае выражение должно быть задано в квадратных скобках [...]. Пусть задано следующее макроопределение: GEN MDEF &P1, &P2, &P3, &P4, &P5 LXI &P1, &P2 LXI &P3, &P4 LXI &P5, [&P2 4- &P4] STA [&P2 ! &P4] ; [&P4 X- &P4-&P2] MEND В результате вызова макрокоманды GEN В, 20, D, 15 , Н в выход- ной поток будет сгенерирован следующий текст: LXI В, 20 LXI D, 15 LXI Н, 35 STA 20 15 ; 205 Функции. В качестве операндов в выражениях могут быть ис- пользованы функции макропериода ТУР, LEN, SUB, SHR и SHL. Функция определения типа имеет следующий формат: ТУР (аргумент), где аргумент — параметр, локальная или глобальная переменная, константа или элемент списка. Значением функции является одна из следующих символьных строк: —'С' — аргумент-знаковая строка или ссылается иа знако- вую строку; —'А'—аргумеит-арифметическая константа или ссы- лается на арифметическое значение; — 'Г — аргумент-символьиая константа или ссылается на символическое имя; —'М' — аргумен- том является параметр, заданный списком, или глобальная пере- менная, объявленная как массив. Пример-. Если оператор MDEF, вводящий некоторое макроопредение имеет следующий вид: SUM MDEF &А, &В, а вызов макрокоманды SUM содержит в качестве аргументов список: SUM ('NAME', ЮН, 188
DATA), .1050, то функция TYP, вызываемая внутри макроопределе- ния SUM, возвращает следующие значения: Вызов TYP (&А) TYP (&А(1)) TYP (&A (2)) TYP (&A (3)) TYP (&B) Значение 'M' 'C' 'A' 'I' 'A' Функция определения длины имеет формат: LEN (аргумент), где аргументом является любое выражение. Функция LEN возвра- щает значение, равное длине строки, размерности массива или • количеству цифр в десятичном представлении арифметической кон- станты в зависимости от типа аргумента. Пример-. Вызов LEN (107FH) LEN (70H) LEN(DELTA) LEN (&VAR1) Значения 4 3 5 8, если значением параметра является строка 'NEW YEAR' Функция выделения подстроки имеет следующий формат: SUB (аргумент 1, аргумент 2, аргумент 3), где аргумент 1 — константа, переменная, параметр, элемент мас- сива, аргумент 2 — номер знака в строке, с которого выделяется подстрока, аргумент 3 — количество выделяемых знаков. Функция SUB возвращает выделенную знаковую подстроку строки, указан- ной первым аргументом. Если аргумент 1 имеет арифметическое вначение, то оно предварительно преобразуется в знаковую строку. Пример-. Вызов SUB ('ABCD 12345', 4, 5) SUB(& PAR, 2, 1) Значение D 1234 1. где & PAR имеет значение 214. Функции логического сдвига позволяют сдвигать вправо (SHR) или влево (SHL) значение 1-го выражения в соответствии с величи- ной, указанной 2-м аргументом: SHR (выражение 1, выражение 2), SHL (выражение 1, выражение 2). Биты, выталкиваемые за пределы разрядной сетки, теряются, а Освобождающиеся разряды заполняются нулями. Пример-. Вызов Значение SHL (1001100 В, 1) 0011000 В SHR (1001100 В, 2) 0010011 В 189
Указание аргументов ключевым способом. Обычно аргументы сопоставляются параметрам на основании их порядка размещения в макровызове (позиционный способ присвоения значений пара- метрам). Задание параметров ключевым способом означает указание параметра, которому присваивается данное значение, с помощью ключевого слова. В качестве ключевого слова используется обозна- чение параметра без начального символа «&». Пример'. ADSST MDEF &ОР1, &ОР2, &RES LXI н, &ОР1 LXI D, &ОР2 DAD D SHLD & RES MEND Макрокоманда ADDST, предназначенная для выполнения сложения 16-битовых значений размещенных в памяти, может быть вызвана различными способами: ADDST DATA, 20F4H, SUM или ADDST RES= SUM; 20F4H, OP1 =DATA. Во втором вызове используются ключевой и позиционный способы определения значений параметров. Оба вызова приводят к генера- ции одинаковой последовательности команд: LXI Н, DATA LXI D, 20F4H DAD D SHLD SUM Механизм кодовых макросов ASM-86 Ассемблер ASM-86 [44], применяемый в микропроцессоре К1810ВМ86 (INTEL 8086), обрабатывает кодовые макросы как инструкции. Кодовые макросы добавляются во время определения в символическую таблицу ассемблера. Формальные параметры макрокоманд определяют, каким образом они размещаются в гене- рируемой инструкции и как должны обрабатываться. Определение кодового макро: Code Macro (имя) [(список формальных параметров)], где (имя)—имя макро, (список формальных параметров)—со- держит формальные параметры, разделяемые запятыми и опреде- ляемые следующим образом: (формальное имя) : (символ специ- фикации) [(модифицирующий символ)] [(диапазон)]. С кодовым макро можно не употреблять параметров, так же как и для отдель- ного параметра можно ие указывать модифицирующего символа и значения диапазона. В табл. 6.4 и 6.5 приведены возможные значения символов спе- цификаций и модифицирующих символов. Специфицирующие сим- волы определяют тип операнда, сопоставляемого формальному па- раметру. Модифицирующая литера зависит от типа операнда, кото- рый может быть переменной или числом. 190
6.4. Символы спецификаций Символ Тип операнда А С D Аккумуляторные регистры АХ или AL Код — меточное выражение Данные — число используемое как непосредственное зна- чение Е Эффективный адрес—или М (адрес памяти) или В (ре- гистр) М Адрес памяти — может быть переменная или регистровое R S X выражение в скобках Только основной регистр » регистр сегмента Прямая ссылка к памяти 6.5. Модифицирующие символы Переменные Числа Символ Тип Символ Значение ь W d sb Байт Слово Двойное слово Байт со знаком ь W От —256 до 255 Другие значения Допустимые форматы для указания диапазона следующие: (число Ь) (число Ь, регистр) (регистр) (регистр, число Ь) (число Ь, число Ь) (регистр, регистр) Число b — это 8-битовое число, но не адрес. Пример: Code Macro IN dst: Aw, port: Rw (DX) Code Macro ESC opcode: Db (0,63), adds: Eb В приведенных заголовках определений кодовых макро указано: в первом, что входной порт идентифицируется DX регистром; во втором, что ’opcode’ — это непосредственные данные в диапазоне от 0 до 63. Определение кодового макро завершается директивой: End М. Тело кодового макро может содержать только следующие директивы: SEGFIX RELB DW NOSEGFIX RELW DD MODRM DB DBIT Директивы, используемые в кодовых макро, определяют битовый шаблон н условия обработки операндов макрокоманды. 191
: •* Директива SEGFIX (формальное имя) — указывает ассемб- леру, что необходимо выполнить проверку необходимости генера- ции префиксного байта в инструкции для обеспечения доступа к требуемому адресу памяти.. Директива NOSEGFIX segreg (формальное имя), где segreg сегментные регистры ES, CS, SS или DS. Директива обеспечивает контроль ошибочного -использования сегментных регистров для адресации к операндам, указанным в вызове макрокоманды. Директива MODRM, (формальное имя), (формальное имя) или MODRM NUMBER7 (формальное имя) — обеспечивает генерацию битов типа адресации. Возможно получение до 32 возможных зна- чений: 8 регистровых и 24 индексных типа. Директивы. RELB (формальное имя) и RELW (формальное имя) позволяют вычислить смещение между инструкцией и меткой, рассматриваемой в качестве операнда. Директивы DB (формальное имя) / NUMBERS, Dw (фор- мальное имя) / NUMBER W, DD (формальное имя) определяют однобайтовые, двухбайтовые и четырехбайтовые значения, соответ- ственно; NUMBERB и NUMBERW указывают однобайтовые и двух- байтовые значения. Пример-. Code Macro XOR dst: Ew, src: Db SEGFIX dst DB 81 H MODRM 6, dst DW src End М В данном примере определена инструкция XOR, которая содержит два операнда. Первым операндом может быть ячейка памяти или регистр, вторым операндом является непосредственная константа в пределах одного байта. Код инструкции определяетси константой 81 Н. Генерируемая мода адресации для первого операнда ПО. Директива DBIT (описание поля) [(описание поля)] определяет значения отдельных разрядов в пределах генерируемой инструкции. Пример-. Code Macro DEC dst: Rw DBIT 5 (9 H), 3 (dst (0)) End M Директива DBIT указывает ассемблеру, что первые 5 бит ин- струкции имеют значение 9Н. Если оставшиеся биты равны 0, то 16-ричное значение байта — 48Н. Если в программе обрабатывается инструкция DEC DX и DX имеет значение 2Н, то окончательное значение генерируемой инструкции для выполнения: 48Н + 2Н = = 4АН. Макропроцессоры, независимые от входного языка В настоящее время широкое распространение получают макро- процессоры общего назначения, неориентированные на какой-то конкретный язык программирования [24, 53]. Сферами примене- ния таких макропроцессоров являются: расширение возможностей языка, для которого макропроцессор является препроцессором; разработка и создание инструментального изыка, например, разра- 192
ботка языка WICSP [21]; редактирование текстовой информации; генерация и настройка программного обеспечения. Рассмотрим простой макропроцессор, разработанный для се- мейства микроЭВМ «Электроника-60» [40]. Прототипом реализо- ванного на микроЭВМ макропроцессора является известный макро- процессор Стречи GPM [21]. Макровызов выглядит следующим об- разом: [имя-макрокоманды, список-аргументов]. Аргументы в спис- ке разделяются запятыми, например, ' [RCVE, 305,1] [LINK]. Вторая макрокоманда в данном примере не содержит аргументов. Вызовы макрокоманд могут встречаться как в аргументах, так и в имени макрокоманды. Формальные параметры в теле макрокоманды обозначаются Сймволом\, за которым располагается номер параметра. Например, строка АВ\1С\2АВ содержит два формальных ггараметра \1 и \2. Обработка макрокоманды выполняется по следующему алго- ритму; 1. Имя макрокоманды и аргументы вычисляются в последова- тельности слева направо. Этот процесс включает расширение любых макровызовов внутри параметров и имени. 2. Ищется вычисленное имя макрокоманды в списке пар имен- значений. Поиск выполняется в обратном порядке, т. е. от послед- него включенного в список имени к первому (первым в списке явля- ется имя системной макрокоманды DEF). Если имя не найдено, то возникает ошибочная ситуация. 3. Символическая строка, представляющая значение, которое соответствует данному найденному имени, просматривается так же, как и исходная (т. е. все вызовы внутри также .вычисляются). Если встречены символы\г (г = 0, 1, 2...), то они будут заменены копия- ми соответствующих фактических параметров, которые к этому моменту уже вычислены. Если г больше числа действительных па- раметров, то возникает ошибочная ситуация. Во время подстановки аргументы просто копируются без вычисления, даже если внутри расположены макровызовы. 4. После завершения расширения список аргументов теряется, и любые определения, которые были добавлены в цепочку опреде- лений во время вычисления макровызова, удаляются. 5. Сканирование входного потока продолжается с той литеры, которая стоит после символа ] макровызова. Для занесения новых пар имен-значений в список используется системное имя DEF и скобки (и) для того, чтобы избежать подста- новки аргументов в момент обработки макрокоманды ' DEF, Рас- смотрим пример: [DEF, А, <А\1А>] [DEF, В, (В [А, Х\1Х]В>] [DEF, АРА, (Р\1\1Р)] В примере в список пар имен-значений будут занесены сле- дующие имена и значения: 1 Имя Значение А А\1А - ' В В [А, Х,\1.Х]В АРА ' Р\1\1Р 7 6-451 193
Во время обработки один уровень скобок (и) снимается. Скоб- ки запрещают вычисление строки внутри скобок, даже если там рас- положен вызов макрокоманды. Строка В [А, X, \1 X] В полностью попадает в список, хотя там и расположен вызов макрокоманды А, так как вычисление этого вызова запрещается скобками (и). Вызов макрокоманды [АРА, 2Х] приводит к следующему рас- ширению Р2Х2ХР, если ранее пара имя-значение была определена макрокомандой [DEF, АРА, (Р\1\1Р)]. Просмотр списка пар имен-значений в обратном порядке позво- ляет динамически переопределять макрокоманды и использовать временные локальные макроопределения. Так, локальное опреде- ление макро А всвоем вызове: [А, X, В, [DEF, А, (\1\2\ 1)]] при- водит к результату: ХВХ. Эта форма соответствует эффекту выра- жения f (...) where f (...) — ..., т. е. вызову функции с действитель- ными параметрами с одновременным определением этой функции. Подобный динамизм в обработке макрокоманд позволяет вести условную обработку текстов без введения специальных средств пери- ода генерации. Например, выражение а = 0 ->- у, б, где а, 0, у, б — строки, возможно содержащие вызовы макрокоманд, можно представить следующим образом: [a, [DEF, а (б)] [DEF, 0, (у)]]. Если значение строки 0 то же, что и строки а, то в результате обра- ботки вызова х будет получена строка у, так как определение для строки 0 было сделано позже, чем для а. Если значение строки 0 не равно значению строки а, то в результате обработки вызова а будет получена строка 6. Например, последовательность строк: [DEF, А, (SIGMA)] [DEF, В, (ВЕТА)] [[A], [DEF, [А], (XXX)] [DEF, [В], (YYY]] приведет к появлению в выходном тесте строки XXX. Макропроцессор располагает набором системных макрокоманд: DEF, VAL, UPDATE, BAR, BIN, DEC, REND. Системные макро- команды выполняют специальные функции обработки строк и их значения определены заранее, хотя программист н может переопре- делить их обычным образом (используя макрокоманду DEF). DEF. Вызов макрокоманды приводит к размещению второго и третьего аргументов в списке пар имен-значений. Второй аргу- мент определяет имя макрокоманды, а третий — ее тело, исполь- зуемое впоследствии на этапе расширения. V AL. Макрокоманда позволяет копировать значение, заимство- ванное из пары имя-значение, в выходной поток без какой-либо об- работки. Например, вызов [DEF, X, (а)], за которым следует [VAL, X], продуцирует а, несмотря на то, что строка а может со- держать вложенные вызовы и определения. Вызов [DEF, X, ((а ))], за которым следует вызов [X], приводит к тому же результату. UPDATE. Макрокоманда заменяет значение, связанное с 1-м аргу- ментом, текстом, указанным в качестве второго аргумента. Например, [DEF, X, (а)р определяет пару: имя-Х-значение а. Макрокоманда [UPDATE, X, (б)] заменяет строку а на строку 6. В результате бу- дет получена пара: имя-Х-значение 6. BAR. Макрокоманда выполняет арифметические операции над двоичными данными целого типа. В макрокоманде необходимо указать три аргумента. Первый аргумент : + (сложение),— (вычи- тание), (умножение), / (деление нацело), R (получение остат- ка от деления). Два других аргумента — двоичные данные. 194
• Например, [BAR, R, [X], [Y]] дает остаток от деления зна- чений X на Y. Макрокоманда BAR должна быть «вложенной», так как попытка получить двоичные данные в выходном потоке оши- бочна. 1 BIN и DEC. Макрокоманды выполняют перевод из десятичной литерной формы во внутреннее представление и обратное преобра- зование, соответственно. Например, [DEF, X, (—125)] [BIN, [X]] ’ , • В результате будет получено внутреннее (машинное) представление числа — 125. Рассмотрим другой пример: [DEC, [BAR, +, [BIN, [X]], [BIN, [Y]]]. Данный вызов приводит к получению суммы зна- чений и переводу их во «внешнюю» десятичную форму. Вычислен- ное значение будет выведено в поток. REND. Макрокоманда не содержит аргументов и позволяет переключить макропроцессор на опрос пультового терминала. В этот момент пользователь может назначить новые входные файлы. Для выполнения операций десятичной арифметики программист может определить в своей программе следующие макрокоманды: [DEF, + ([DEC, [BAR, + , [BIN,\1], [BIN,\2]]]>] [DEF, — , ([DEC, [BAR, — , [BIN,\1], [BIN,\2]]]>] [DEFK * , ([DEC, [BAR, X ,[BIN,\1], [BIN,\2]]])J [DEF, QUOT, ([DEC, [BAR, /, [BIN,\1], [BIN,\2]J])] [DEF, REM, ([DEC, [BAR, R, [BIN,\1], [BIN, \2]]])] Эти же макрокоманды содержатся в библиотеке системных макро- команд. Обработка файла с системными макрокомандами назнача- . ется в диалоговом режиме. После обработки любых библиотечных файлов может быть назначена обработка файла, содержащего текст программы, вызовы системных и библиотечных макрокоманд, опре- деления н вызовы макрокоманд пользователя, содержащихся в дан- ном файле.' 6.4. ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ Макроассемблер микроЭВМ «Электроника-60» Основные сведения. Макроассемблер использует систему команд ЭВМ «Электроника-60», «Электроника 100-25», «Электро- ника-79», обеспечивает совместимость своих обрабатываемых про- грамм с программами, обрабатываемыми Перемещающим ассемб- лером, входящим в состав ПО перфоленточной ОС микроЭВМ «Электроника-60». Аналогичные машинно-ориентированные систе- мы программирования — это макроассемблер MACRO-П и ассемб- лер RAL-IIP, предназначенные для автоматизации программиро- вания па процессорах фирмы DEC (PDP-11) США [62], Основные характеристики языка: контроль исходного текста и командной строки, определяющей ассемблерные функции; вывод сообщений об ошибках на терминал; создание перемещаемого объектного модуля; обработка глобальных символов для связыва- ния объектных модулей и секционирования программ; обработка макрокоманд и макроопределений в библиотеках и в исходном тек- сте; обработка директив условной трансляции; создание таблиц 7* 195
символов, их представление на внешнем устройстве в алфавитном порядке; создание листинга программы. Трансляция выполняется за два прохода. Формат утверждений следующий: метка : оператор операнды комментарий. Метка и ком- ментарий являются необязательными. Пример-. REGTST : BIT # MASK, VALUE; СРАВНЕНИЕ БИТОВ. Данная^ команда содержит два операнда: &MASK и VALUE. С утверждением может быть связано несколько меток, например} АВС: F70: ABCD: : MOV А, В Использование пары символов «: :» указывает, что метка — гло- бальный символ. К этой метке можно обращаться из других, неза- висимо странслированных модулей. Символы и выражения. В программе на языке макроассемблера можно указывать следующие символические имена: постоянные (мнемоника инструкций и директив), пользовательские (метки, имена в утверждениях прямого присваивания, формальные пара- метры и имена микрокоманд), макрокоманд (определяемые пользо- вателем и системные), регистров, локальные, имя счетчика адреса. Кроме того, в программах могут использоваться константы: числа и символы в коде КОИ-7 (ASCII) и Radix 50. Пример-. А = 1 ;СИМВОЛ А ПОЛУЧАЕТ ЗНАЧЕНИЕ 1 В = А — 1 & MASK ; СИМВОЛ В ПОЛУЧАЕТ ЗНАЧЕНИЕ ВЫРА- ; ЖЕНИЯ D=. ; СИМВОЛ D ПОЛУЧАЕТ ЗНАЧЕНИЕ ТЕКУ- ; ЩЕЙ ВЕЛИЧИНЫ СЧЕТЧИКА Е: MOV #10, TEN ; СИМВОЛ Е ПОЛУЧАЕТ ЗНАЧЕНИЕ ТЕКУ- ; ЩЕГО РАЗМЕЩЕНИЯ КОМАНДЫ: ; MOV # 10, TEN По умолчанию все константы в исходной программе обрабаты-.- ваются как восьмеричные. Для указания другой системы счисле- ния используются специальные унарные операторы и директивы. Пример-.-. 3.0, 7.63Ё — 1 ,ЗЕ—0 — числа с плавающей запятой (десятичные), 'D123 — десятичное число в формате Radix 50. Директивы макроассемблера. Список директив макроассемб- лера приведен в табл. 6.6, Пример программирования на ассемблере микроЭВМ «Электро- ника-60». .TITLE .ERROR .GLOBL .ERROR, ERROR, ADDRER, ER .GLOBL MULDIV, ZERO .CSECT ERRORS 100; программа обработки ERR.- К: MOV #5, —(SP); системных ошибок EMT ERROR 196
ERR. R: MOV # 4. — (SP) EMT ERROR ERR. P: MOV #6,'— (SP) EMT ERROR ERROR: MOV- 20 (SP), ER MOV 22 (SP), RO SUB #2, RO MOV RO, ADDRER JMP ZERO .ASECT .=4 .WORD ERR.К, 200 .= 10 .IFNE MULDIV .GLOBL COMOBR .WORD COMOBR, 200 .IFF .WORD ERR.R, 200 .EbjDC .=24 .WORD ERR.P, 200 .END Программа .ERROR получает управление от другой програм- мы в результате обработки команд MOV # (код ошибки),— (SP) EMT ERROR Входными данными для нее является стек, содержащий код ошиб- ки. Доступ к содержимому стека осуществляется через указатель верШины стека SP. Программа .ERROR извлекает из стека код ошибки и засылает в ячейку с именем ADDRER значение программ- ного счетчика (также размещенное в стеке) в момент возникновения ошибки. Затем выполняется останов по команде HALT, которая является содержимым ячейки ZERO. Ячейки ADDRER, ER, ZERO размещаются в основной программе рядом. Таким образом, в момент останова программист может выяснить причину останова. Ассемблер К580 Микропроцессор К580ИК.80 содержит фиксированную систему команд, что облегчает составление прикладных программ, по сравнению с программированием систем на базе процессорных элементов (секций) [20, 44]. При выполнении команд МП формирует двоичные признаки (флажки), отражающие особенности резуль- дата выполненной команды. Директивы‘ассемблера. Директивы определяют порядок ассемб- лирования, размещают в памяти информацию, присваивают числен- ные значения символическим наименованиям,, резервируют память и выполняют ряд других функций. В описаний директив символы [и] заключают необязательные конструкции. 197
6.6. Директивы макроассемблера Категория Формат Выполняемая функция Управление ..LIST Увеличивает счетчик уров- ЛИСТИНГОМ .LIST арг .NLIST .NLIST арг Аргументы: SEQ LOC BIN ня листинга на 1 Управляет листингом в со- ответствии с аргументом Уменьшает счетчик уровня листинга № 1 Подавляет часть функций лис, тинга в соответствии с аргу- ментом Если счетчик уровня мень- ше 0, то листинг подавляет- ся за исключением строк, содержащих ошибки Размещение номера строки » номера адреса команды Листинг генерируемого дво- ичного кода ВЕХ SRC СОМ MD МС ME Листинг дополнения генери- руемогр кода адресами опе- рандов и операндами Листинг исходного текста » комментария * макроопределений » • . макровузовов » макрорасширений МЕВ CND LD ТОС SYM ТТМ .TITLE имя .SBTTL текст .IDENT строка .PAGE » двоичного кода макрорасширений Листинг нетранслируемых условных кодов и соответ- ствующих директив .IF и .ENDC Листинг всех директив .LIST и .NLIST без аргу- ментов Листинг таблицы трансляции после 1-го прохода Листинг таблицы символов Управление выводным фор- матом (телетайп, терминал, АЦПУ) Печать имени объектного модуля в первой строке лис- тинга Печать текста на каждой странице листинга и. вывод таблицы оглавления листинга Дополнительное имя версии объектного модуля в кодах Radix 50 Назначение следующей страницы листинга 198
Продолжение табл. 6.6 Категория Формат Выполняемая фу-нкция Управления функциями .ENABL арг .DSABL арг Аргументы: ABS АМА CDR CRF FPT LC LSB PNC REG GBL Назначает функции, опреде- ляемые аргументом Отменяют функции, опреде- ляемые аргументом Абсолютный двоичный фор- мат Вырабатывает абсолютные адреса вместо перемещае- мых, указанных в программе Колонки 73—80 рассматри- ваются как комментарий Создание таблицы пере- крестных ссылок Управление выражениями с плавающей запятой Управление ASCII входным форматом Назначение или отмена соз- дания блока локальных ссылок Управление двоичным выво- дом Указание начальных значе- ний имен: RO = %0.R 1 = = %1...SP= %6, PC = %7 Контроль всех неразрешен- ных глобальных ссылок Определения данных • BYTE выр 1 [, выр 2]... .WORD выр 1 [, выр 2]... » л Генерирует последователь- ные байты данных в объект- ном модуле (DATA: .BYTE" D48, SAM) Генерирует последователь- - ные 16-разрядные данные в объектном модуле. В дирек- тивах .BYTE и .WORD дан- ные задаются произвольны- ми выражениями: А10: .WORD 177535 ,. +4, SAL; Генерация 16-разрядвого представления одного сим- вола в коде КОИ-7 (ASCII). Генерация 16-разрядного представления двух симво- лов в кодах КОИ-7 (ASCII): MOV # ” YE, RO
Продолжение табл. 6.6 Категория Формат Выполняемая функция Определения .ASCII | строка 1 | ... Директива размещает 7-би- Данных . ... 1 строка п | товые представления симво- лов, составляющих строки в объектном модуле: (BOF: .ASCII | HELLO | <15><12> | X? 1 Скобки (...) ограничивают выражения, не имеющие .ASCIZ (строка 1| ... ... | строка п| представления в символах КОИ-7 То же действие, что и .ASCH, но в конце строки автоматически генерируется байт 0 .RAD50I строка 11 ... ... [ строка и | Генерация данных в объект- ном модуле в упакованном формате Radix 50. В 16- разрядном слове 3 символа в коде Radix 50. Символы Коды Radix 50 (восьмеричные) Пробел 0 A—Z 1—32 $ .33 34 ‘R ССС 0—9 36—47 Формула для упаковки сим- волов (Cl, С2, СЗ): Код Radix 50 = ((Cl X 50) + -j- С2) + -50 -j- СЗ .RAD 501 АВ | (35); В одном 16-разрядном слове хранится 3255 Аргумент ССС преобразует- ся в формат 16-разрядного слова со значением Radix 50: MOV # 'RMAC, F3; (генерация кодов Ra- dix 50 для символов МАС в команде MOV) 200
Продолжение табл. 6.6 Категория Формат Выполняемая функция Управления числовыми кодами и преобразо- вания дан- ных .RADIX арг \ ~D число “ О число ~В число число. .FLT2 число, число Е± порядок [, ...] .FLT4 число, число Е± порядок I, ...] или .FLT2 число [, число ...] .FLT4 число [, число ...] "С число ~F число У называет используемую систему счисления в про- грамме до следующей ди- рективы. Radix. По умолча- нию арг = 8. . Возможные значения арг: 0, 2, 8,10 Десятичное число Восьмеричное » Двоичное ' » Временное преобразование в десятичное: (128. Эквива- лентно 200 (8)) Генерация чисел с плаваю- щей точкой в объектном мо- дуле Число размещается в 32 раз- рядах (.FLT2) или в 64 (.FLT4) Выполняет дополнение чис- ла ('С 151 эквивалентно 177626 (8)) Позволяет оперировать 16- разрядным числом с плаваю- щей точкой (А : MOV # ~ F3.7, R0) Управления Счетчиком .EVEN .ODD .BLKB выр .BLKW выр Выравнивает значение-счет- чика до четного Дополняет значение счетчи- ка до нечетного Выделение блока памяти в байтах (.BLKB) или в сло- вах (.BLKW) длиной, опре- 'деляемой значением выра- жения Ограничи- - вающие текст программы .END выр .EOT 1 Определяет логячеекий ко- нец программы Выражение определяет точ- ку запуска Определяет физический ко- нец ленты (игнорируется в ФОДОС) 201
Продолжение табл. 6.6 Категория Формат Выполняемая функция Определе- .LIMIT Резервирует 2 слова памя- ния границ программы ти, куда после загрузки по- мещаются начальный адрес памяти, занятой программой, и адрес начала свободной области памяти Секциони- .PSECT цмя, Директива управляет разме- рования арг 1 арг п Аргументы: RO/RW I/D GBL/LCL ABS/REL CON/OVR щением программы во время загрузки: имя—символиче- ское имя программной сек- ции Ключ защиты — RO — только чтение, RW — чтение-запись, | Секция содержит — I — инструкции, D — данные Определяет секцию как гло- бальную (GBL) или локаль- ную (LCL) в программе Перемещение — ABS — абсолютная секция REL — перемещаемая секция Признак распределения CON — все части все про- граммной секции размещаются в загрузочном модуле после- довательно, OVR — адрес за- грузки для всех частей этой секции, находящихся в раз- .ASECT .CSECT .CSECT имя ных модулях, будет один и тот же. Эквивалентно: .PSECT .ABS., RW, I, GBL, ABS, OVR Эквивалентно: .PSECT RW, I, LCL, REL, CON Эквивалентно: .PSECT имя RW, I, GBL, REL, OVR 202
Продолжение табл. 6.6 Категория Формат Выполняемая функция Объявления символов .GLOBL симв 1, симв 2, , симв N Определяет список глобаль- ных символов для связыва- ния отдельно транслируе- мых программ Условного ассембли- рования .IF усл, арг .ENDC .IFF, .IFT, .IFTF .IIF усл, аргумент, оператор Определяет блок программы, транслируемый по условию для списка аргументов Завершает директиву, IF и блок программы, трансли- руемый по условию Дополнительные директивы условного ассемблирования (между .IF и .ENDC) Директива непосредственной трансляции оператора по условию, налагаемому на аргумент Макрообра- ботки .MACRO имя список аргументов .ENDM .MEXIT -NARG симв. .NARG симв, (строка) .NTYPE симв., выражение Первая директива макро- определения Последняя директива макро- определения Завершение расширения текста Определение числа аргумен- тов в обрабатываемом вы- возе. Это значение присваи- вается символу (.NARG АВС) Определение числа символов в указанной (строке) Определение типа выраже- ния и присвоение значения типа символу (.NTYPE А, .ERROR выр. .PRINT выр. .IRP симв., (список аргументов) .IRPC симв., (строка) RI) Вывод текста, определяемо- го значением выражения Повторение блока програм- мы с подстановкой аргумен- тов из списка вместо сим- вола (формального пара- метра) Повторение блока програм- мы с подстановкой одного символа из 'строки вместо символа (формального пара- метра) t 203
Продолжение табл. 6.6 Категория Формат Выполняемая функция Макрообра- ботки .REPT выр .MCALL арг 1, арг 2 арг п Повторение блока програм- мы п раз, где п = выраже- ние Объявление макроимен, ис- пользуемых в программе из макробиблиотеки Директива ORG. Формат директивы: [метка :] ORG (выражение). Выражение в директиве определяет допустимый 16-битовый адрес, определяющий ячейку памяти, в которую будет загружаться первый байт следующей команды или байт данных. До новой директивы ORG команды и данные'размещаются в смежных ячейках памяти. Если в самом начале программы директива ORG отсутствует, то по умолчанию подразумевается наличие директивы с нулевым значе- нием выражения. Пример'. Метка Код Операнд Комментарий ORG 100Н ; ЗАДАЕТ АБСОЛЮТНЫЙ ; АДРЕС 100 Н LXI Н, AREA1 ; АДРЕС=100Н LXI D, AREA2 ; АДРЕС = 103 Н Директива ORG может выполнять функцию резервирования памя- ти, например, следующим образом: ORG Q + 40D. Директива END. Формат директивы: [метка:] END. Директива END информирует программу-ассемблер о достижении физического конца входной программы. Директива EQU. Формат директивы: (имя) EQU (выражение). При выполнении директивы EQU программа-ассемблер присваи- вает значение выражения символическому наименованию, нахо- дящемуся в поле метки. Когда наименование встречается в поле операнда, программа-ассемблер подставляет вместо него присвоеп- ное значение. Пример: Метка DATAM Код EQU Операнд Комментарий 15 ; ЗНАЧЕНИЕ DATAM=15 ANI DATAM -- MVI A, DATAM В командах ANI, MV1 вместо DATAM используется код 15D, 204
При программировании следует сгруппировать все директивы EQU в начале или конце программы. Директива EQU является удобным средством для быстрой модификации программ. Так, если по каким-либо причинам в программе приведенного выше примера нужно изменить значение DATAM, для этого достаточно модифици- ровать операнд одной директивы EQU и выполнить повторное ассемблирование программы. Директива SET. Формат директивы: (Имя) SET (выражение). Директива выполняет такое же действие, что н директива EQU. Однако в отличие от директивы EQU значение символического на- именования допускается изменять с помощью новой директивы - SET. Пример'. Метка Код Операнд Комментарий D1 SET ЮН ; ЗНАЧЕНИЕ DI = ЮН MVI В, D1 ; ЗАГРУЗКА 10 Н В РЕГИСТР В D1 SET 20 Н ; ЗНАЧЕНИЕ D1 = 20 Н ADI D1 ; СЛОЖЕНИЕ 20 Н С СОДЕРЖИМЫМ ; АККУМУЛЯТОРА Директива DB. Формат директивы: [метка:] DB ( список). Операнд директивы DB может быть последовательностью .выраже- ний, разделенных запятыми и имеющих 8-битовые значения, либо цепочкой символов, заключенных в апострофы. При выполнении директивы DB значения выражений нли коды символов запомина- ются в смежных ячейках (байтах) памяти, начинающихся после ячейки, занятой предыдущей командой. Призер: Метка Код Операнд Комментарий Y: DB —5, 7, 3, 21 ; ЗАПОМИНАЮТСЯ ЧЕТЫРЕ ; ЗНАЧЕНИЯ В СМЕЖНЫХ ; БАЙТАХ SYMB: DB 'NEW YEAR' ; ЗАПОМИНАЮТСЯ ВОСЕМЬ ; СИМВОЛОВ Директива DW. Формат директивы: [метка:] DW (список). Элементы списка размещаются в двухбайтовых словах памяти. В от- личие от DB вычисляются 16-битовые значения выражений. Директива DS. Формат директивы: [метка:] DS (выражение). Вычисленное значение выражения из поля операнда определяет число ячеек (байт) памяти, резервируемых для заполнения данных. Адрес следующего оператора равен сумме адреса оператора, нахо- дящегося перед директивой DS и значения выражения дирек- тивы DS, 205
Пример'. Метка Код Операнд Комментарий ARRAY: DS 64 ; РЕЗЕРВИРОВАНИЕ В ПАМЯТИ ; 64 БАЙТОВ Программирование на языке ассемблер микропроцессора К580ИК80. Структура данных. Под структурами данных понимают наборы определенным образом организованных данных. Програм- мисту необходимо знать наиболее распространенные структуры данных, представление их в памяти и способы их эффективного ис- пользования в прикладных программах. Массивы. Наиболее простой и распространенной структурой данных является одномерный массив. Он представляет собой набор элементов данных одинаковой длины, который размещается в обла- сти смежных ячеек памяти. Положение любого элемента в массиве характеризуется его порядковым номером, называемым индексом или смещением. Первый элемент массива определяется базовым (на- чальным) адресом. В микропроцессоре К580И-К80 для операций с массивами удобно применять косвенную адресацию, где функцию указателя выполняют регистры (Н, L). Пример: В программе вычисляется сумма 16-битовых элементов массива, представляющих целые без знака. Длина массива хранится в ячей- ке с адресом LENGT, а в качестве счетчика используется регистр В. Метка Код Операнд' Комментарий LDA LENGT ; УСТАНОВКА СЧЕТЧИКА MOV B, A LXI D, 0 ; НАЧАЛЬНОЕ ЗНАЧЕНИЕ ; СУММЫ = 0 LXI H, BASE ; УСТАНОВКА УКАЗАТЕЛЯ ADDW: MOV A, M ; СУММИРОВАНИЕ ADD E ; МЛАДШЕГО MOV E, 4 ; БАЙТА INX H ; УСТАНОВКА УКАЗАТЕЛЯ ; НА СТАРШИЙ БАЙТ MOV A, M ; СУММИРОВАНИЕ ADC D ; СТАРШЕГО БАЙТА MOV D, A ; (С УЧЕТОМ ПЕРЕНОСА) INX H ; УКАЗАТЕЛЬ НА СЛЕДУЮЩИЙ ЭЛЕМЕНТ DCR В ; ПРОВЕРКА JNZ ADDW ; ОКОНЧАНИЯ ЦИКЛА Сумма накапливается в регистрах (D, Е). Флажок пер.еноса из младших байт учитывается при сложении старших байт с помощью команды ADC. Команды IN Х и MOV не изменяют значение бита переноса. Иногда указатель и счетчик приходится хранить не в регистрах, а в ячейках памяти, например, РР и CNTR. В этом случае обраще- ния к элементу и модификация указателя выполняются следующей 206
г . ’ ’ последовательностью'команд: LHLD РР; MOV А, М; INX Н; SHLD РР. Уменьшение значения счетчика осуществляется через аккуму- - лятор: LDA CNTR; DCR A; STA CNTR. Стек. Стек представляет собой разновидность одномерного массива. Загрузка данных в стек и извлечение из стека осуществля- ется только с одного конца, называемого верхушкой (верхом) стека. В микропроцессоре имеется аппаратный указатель стека, и все команды, связанные с засылкой данных в стек и извлечением из стека, сопровождаются автоматической модификацией указателя стека SP. До использования стека необходимо командой LXISP загрузить указатель SP максимальным адресом памяти, выделен- ной для стека, иапример: LXI SP, STACK, где STACK — метка, определяющая в программе максимальный адрес области. Доступ к SP производится через регистры (Н, L). Если требует- ся запомнить содержимое SP в двух ячейках памяти, адрес первой из которых ADR1, должна быть выполнена следующая последова- тельность команд: LXI Н, 0; DAD SP; SHLD ADR1. Загрузка SP из указанных ячеек осуществляется двумя командами LHLD ADRI; SPHL. Пример: Метка Код Операнд Комментарий PUSH1; LHLD STACK ; ЗАГРУЗКА УКАЗАТЕЛЯ ; СТЕКА В (Н, L) DCX H ; УМЕНЬШЕНИЕ ЗНАЧЕНИЯ УКА- ; ЗАТЕЛЯ ; СТЕКА.НА 1 MOV M, A ; ЗАГРУЗКА В СТЕК SHLD STACK ; ЗАПОМИНАНИЕ ЗНАЧЕНИЯ ; УКАЗАТЕЛЯ СТЕКА ; ЗАГРУЗКА УКАЗАТЕЛЯ РОР1: LHLD STACK ; СТЕКА В (Н, L) ; ИЗВЛЕЧЕНИЕ ИЗ СТЕКА MOV A, M ; УВЕЛИЧЕНИЕ ЗНАЧЕНИЯ INX H ; УКАЗАТЕЛЯ НА Г SHLD STACK ; ЗАПОМИНАНИЕ ЗНАЧЕНИЯ : ; УКАЗАТЕЛЯ СТЕКА В примере приведены две программы: для записи в стек из аккуму- лятора (PUSH1) и извлечения из стека в аккумулятор (РОР1). Адрес верхушки стека хранится в двух ячейках памяти, помечен- ных меткой STACK. Таблицы. Таблицы представляют обобщенные одномерные мас- сивы, элементы которых могут иметь различную длину. Примене- ние таблиц позволяет ускорить и упростить преобразование кодов, вычисления, организовать вывод текстовой информации и т. д. В таблицах адресов элементами являются 16-битовые адреса ячеек памяти. Для ручного управления микропроцессорной систе- мой обычно применяется функциональная клавиатура. В зависимо- сти от типа клавиатуры код каждой клавиши представляется значе- нием, занимающим от 4 до 7 бит. При нажатии функциональной кла- виши система должна выполнить нек'оторую программу, определяе- 'Мую назначением клавиши. Применение таблицы адресов позволяет ускорить процесс поиска требуемой программы и сократить объем программы поиска. 20?
Пример: Метка Код Операнд Комментарий IN ' KBD ; ЗАПИСЬ КОДА КЛАВИШИ ; В АККУМУЛЯТОР ADD A ; УДВОЕНИЕ КОДА . MOV E, A ; ФОРМИРОВАНИЕ ИНДЕКСА В MVI D, 0 ; РЕГИСТРАХ (D, Е) LX1 H, TSTAD ; ЗАГРУЗКА НАЧАЛЬНОГО АДРЕСА ; ТАБЛИЦЫ РЕГИСТРЫ (Н, L) DAD D ; ИНДЕКСИРОВАНИЕ MOV E, M ; СЧИТЫВАНИЕ В РЕГИСТРЫ INX H ; (D, Е) НАЧАЛЬНОГО АДРЕСА MOV D, M ; ПРОГРАММЫ XCHG ; АДРЕС ПЕРЕХОДА В РЕГИСТРАХ ; (Н, L) PCHL ; ПЕРЕХОД К ФУНКЦИОНАЛЬНОЙ ; ПРОГРАММЕ В приведенной программе начальный адрес таблицы обозначен именем TSTAD. Коды клавиш вводятся командой IN через порт KBD. В программе коды удваиваются, так как элементы таблицы адресов занимают по две смежные ячейки памяти. Организация подпрограмм. Подпрограмма представляет собой некоторый модуль (сегмент) программы, который может вызывать- ся на исполнение любое число раз. Инициирование выполнения подпрограммы осуществляется путем указания ее имени в трех- байтовой команде вызова CALL. Имя подпрограммы должно нахо- диться в поле метки первой ее команды. При выполнении команды CALL текущее содержимое PC (адрес возврата) загружается в стек, а в PC загружается адрес перехода — второй и третий байты коман- ды CALL. После этого начинает выполняться первая команда под- программы, затем вторая и т. д. Заключительной командой каждой подпрограммы должна быть однобайтовая команда возврата RET, которая извлекает адрес возврата из стека и передает его в PC. Далее будет выполняться команда, расположенная в вызывающей программе сразу после команды CALL. Правильно составленная подпрограмма не должна изменять содержимое ни одного регистра, которец, после выполнения под- программы потребуется вызывающей программе. Содержимое ре- гистров, используемых подпрограммой, необходимо временно за- поминать, чтобы по завершении подпрограммы его можно было вос- становить без изменений. Обычно для запоминания содержимого регистров йсйользуется стек. Из-за специфики стека содержимое регистров восстанавливается в обратном порядке. Пример'. Метка Код Операнд Комментарий SUBR: PUSH PSW ; ЗАПОМИНАНИЕ СОДЕРЖИМОГО PUSH В ; РЕГИСТРОВ PUSH D ; В СТЕКЕ ; КОМАНДЫ ; ПОДПРОГРАММЫ 208
POP D ; ВОССТАНОВЛЕНИЕ ПРЕЖНЕГО POP В ; СОДЕРЖИМОГО POP PSW ; РЕГИСТРОВ RET ; ВОЗВРАТ Обмен данными между основной (вызывающей) программой и подпрограммой может осуществляться несколькими способами: через общие (глобальные) данные; через внутренние регистры; через специально выделенную область параметров; через область данных, размещенную после команды CALL; через стек. Программирование ввода-вывода. Для микропроцессорных си- стем разработано три основных режима ввода-вывода: программно- г управляемый-(нефорсированный) ввод-вывод; ввод-вывод по пре- рываниям (или форсированный); ввод-вывод в режиме прямого доступа. Программно-управляемый ввод-вывод означает, что все дей- ствия по обмену информацией инициируются прикладной програм- мой. Периферийным устройствам отводится пассивная роль сигна- лизации о своей готовности к обмену. Ввод-вывод по прерываниям, подразумевает, что действия по обмену информацией инициируют вами периферийные устройства, генерируя сигналы прерываний или запросов на обслуживание. В режиме прямого доступа к памяти на время передачи дей- ствия МП приостанавливаются, и он отключается от шин адреса и данных. Инициирование и управление обменом информацией между периферийными устройствами и системной памятью осущест- вляет контроллер прямого доступа в память. В микропроцессорных системах йрименяются два основных способа ввода-вывода: изолированный (или аккумуляторный) и отоб- раженный на память, отличающиеся адресацией и выбором портов ввода-вывода. Стандартный способ с изолированным вводом-выво- дом реализуется с точки зрения программирования командами ввода IN и вывода OUT, в которых второй байт (В2} представляет собой адрес порта ввода или вывода. При выполнении команды IN данные из адресуемого порта ввода загружаются в аккумулятор, команда OUT записывает содержимое аккумулятора в адресуемый порт вывода. При необходимости в МПС на базе МПК580ИК80 аппаратно может быть реализован ввод-вывод, отображенный иа память. . В этом случае порты ввода и вывода считаются ячейками адресного пространства памяти, и все команды с обращением к памяти, содер- жащие адреса портов, превращаются в команды ввода-вывода: команды загрузки (например, LDA в микроЭВМ «Электроника-60») .осуществляют ввод, а команды запоминания (например, .MOV в микроЭВМ «Электроника-60)» — вывод. Ассемблер AS М-86 Ассемблер ASM-86, применяемый в микропроцессоре К1810ВМ86 (INTEL 8086) [44], поставляется как кросс-ассемблер, предназначенный для выполнения под управлением ОС СР/М на микроЭВМ, реализованных на базе INTEL 8080 или Zilog Z80; как ассемблер резидентных систем, включенный в ОС СР/М-86 на мик- роЭВМ, реализованных на базе INTEL 8086 или'8088. Инструкции в ассемблере ASM-86 записываются в следующем формате; [метка:] 20Э
[префикс] мнемоника [операнд(ы)] ['.комментарий]. Управляющие директивы (табл. 6.7) имеют формат: [имя] директива операнд(ы) f;комментарий]. Имя директивы всегда используется с директивами размещения данных DB, DW, DD, RS. 6.7. Управляющие директивы ассемблера ASM-86 Мнемоника директивы Назначение CSEG DSEG SSEG ESEG ORG IF и END1F INCLUDE END EQU DB, DD, DW RS, RB, RW TITLE PAGESIZE PAGE WIDTH EJECT Размещение программы в кодовом сегменте (команд) » программы в сегменте данных » программы в сегменте стека » программы в дополнительном экс- трасегменте Установка счетчика смещения относительно те- кущего значения для обрабатываемого сег- мента Условная .трансляция' Включение внешнего текста (из указанного файла) в данный текст программы Конец исходного текста для ассемблирования Связывание некоторого значения с идентифи- катором Размещение одно-, двух- и четырехбайтовых данных в памяти Резервирование памяти в байтах или двухбай- товых словах Печать строчной константы в начале каждой страницы листинга Указание числа строк в странице листинга Число символов в строке печати Выделение начала страницы Директива заменяет form-feed (FF) символ в печатном файле правильным числом line-fids (LF) Блокирование и размещение печати листинга NOLIST LIST " В ассемблере MCS-86 имеются другие директивы: определения символов — EQU, LABEL, PURGE; резервирования памяти и оп- ределения данных — DB, DW, DD, R.ECORD; управления счет- чиком размещения и сегментного контроля—SEGMENT/ENDS, ORG, GROUP, ASSUME, PROC/ENDP; связывания программ NAME, PUBLIC, EXTRN, END. Микропроцессор 8086 имеет 14 16-разрядных регистров, во- семь из которых (АХ — DI) являются регистрами общего назначе- ния. Эти же регистры могут выполнять и специальные функции. В целях совместимости набор регистров микропроцессора 8086 включает в себя набор регистров микропроцессора 8080. Четыре регистра АХ, ВХ, СХ, DX — регистры данных. В командах, операндами которых являются байты, может быть указана -любая половина любого из четырех регистров данных, например, АН или AL. Другие четыре регистра SP, BP, SI, DI применяются для хранения 16-разрядных адресов, поэтому их назы- вают адресными, Адресные регистры BP, SI, DI используются в ка- 210
честве базовых или индексных регистров, a SP — в качестве ука- зателя стека. В качестве базового или индексного можно исполь- зовать и регистр ВХ. Помимо подразделения регистров иа регистры данных и адресные существует и более узкая их специализация. В большинстве команд указывается только одна часть адреса — 16- разрядное смещение в сегменте. Базовый адрес сегмента содержится в одном из четырех сегментных .регистров CS, DS, SS, ES. Функцию счетчика команд выполняет 16-разрядный указатель команд IP. Разряды состояния и разряды управления процессором объе- динены в 16-разрядяый регистр FLAGS — регистр флажков (рис. 6.9). Назначение разрядов регистра FLAGS следующее: CF — перенос, ZF — нулевой результат, SF — знак, OF — переполне- ние, AF — перепое при выполнении десятичного сложения или вы- читания, PF — четность, DF — применение автодекрементной адресации при выполнении операции обработки строк, IF — разре- шение прерывания на входе INTR, TF — управление прерывания- ми после каждой операции. Я Ю 9 8 7 6 9 2 О iff* F DF IF Г F SF ZFi Рис. 6.9. < Программирование на языке ассемблера ASM-86. Способы адресации в микропроцессоре К1810ВМ86 более развиты по сравне- нию с К580И80. Пистбайтовы'й способ адресации. В некоторых кЪмандах спо- соб адресации задается не в байте кода операции, а в постбайте. Структура постбайта следующая: mod reg r/m. Если в двухразряд- 76 4 3 2 1 0 ' ном поле mod указывается код 112, то операндом является содер- жимое регистра, номер которого задается в трехразрядном поле r/m. В противном случае в полях mod и r/m содержится информа- ция, позволяющая установить один из следующих способов адре- сации: абсолютная, косвенная регистровая, по базе, с индексиро- ванием или по базе с индексированием. Дополнительная адресная информация указывается в одном или двух байтах, которые непо- средственно следуют за постбайтом. Поле reg постбайта используется для адресации тогда, когда в команде задаются два операнда. В этом случае второй операнд всегда находится в регистре, номер которого указывается ’ в поле постбайта. В таких командах как ROL, ROR и других требуется только один операнд. Поле постбайта в этом случае употребляется совместно с байтом кода операнда для задания операции. Длинная абсолютная адресация. Данная адресация является разновидностью абсолютной адресации. Команда содержит. 16-раз- рядный базовый адрес сегмента, а также 16-разрядное’смещение (исполнительный адрес). Адресация используется в командах пере- хода и вызова подпрограмм. Адресация по базе. Исполнительный адрес операнда формирует- ся путём сложения 16-разрядного адреса, находящегося в указан- ном базовом регистре, и 8- нли 16-разрядного смещения, содержа- щегося в команде. Байты смещения располагаются непосредствен- но за постбайтом» 21*
Адресация по базе с индексированием. Исполнительный адрес формируется путем сложения базового'адреса и смещения, которые содержатся в регистрах. В качестве базовых регистров могут ис- пользоваться регистры ВХ или ВР, любой из регистров SI или DI может служить индексным регистром. Команды обработки строк. В микропроцессоре К1810ВМ86 имеется несколько команд, специально предназначенных для обра- ботки данных, представленных в виде блоков или строк. В них подразумевается использование индексных регистров SI и DI для указания исходной строки-операнда и для указания строки-резуль- тата соответственно. Строка-результат всегда размещается в до- полнительном сегменте с помощью регистра ES. По умолчанию исходная строка содержится в сегменте данных DS. Разряд DF ре- гистра FLAGS указывает автоинкрементный или автодекрементный способ' адресации. ' Перед командами обработки строк можно разместить один из префиксов, что обусловливает циклическое выполнение команды под управлением процессора (табл. 6.8). Если начальное значение регистра СХ равно 0, то команда (CMPS или SCAS) не выполняется ни разу. В противном случае команда повторно выполняется до тех пор, пока значение СХ не станет равным 0 или не осуществит- ся-окончание цикла по флажку ZF. 6.8. Префиксы команд обработки строк Мнемоника Операнды Выполняемое действие REP MOVS, MOVSB, MOVSW, STOS Выполнение команд-о'Перан- дов, пока СХ 0 В каждом цикле выполня- ется СХ: = СХ — 1 REPE/REPZ CMPS или SCAS Выполнение команд-операн- дов, пока ZF = 1 и СХ + 0 В каждом цикле выполня- ется СХ': = СХ — 1 и про- верка ZF REPNE/REPNZ CMPS или SCAS Выполнение команд-операн- дов, пока ZF = 0 и СХ Ф 0 Выполняются те же дейст- вия, что и в предыдущем случае, но выход из цикла, если ZF = 1 Пример'. В данном примере подпрограмма STSRCH устанавливает, вхо- дит ли заданная строка в буфер BUFFER. Вызывающая программа передает в подпрограмму базовый адрес и длину заданной строки. 212
; КОММЕНТАРИЙ: БАЗОВЫЙ АДРЕС СТРОКИ ПЕРЕДАЕТСЯ ; ЧЕРЕЗ РЕГИСТРЫ DS и ВХ, А ЕЕ ДЛИНА УКАЗЫВАЕТСЯ ; В РЕГИСТРЕ DX ; ЕСЛИ ВХОЖДЕНИЕ СТРОКИ НЕ ОБНАРУЖЕНО, ТО • УСТАНАВЛИВАЕТСЯ В РЕГИСТРЕ FLAGS: ZF =0, ИНАЧЕ ; ZF = 1 ; МЕСТО ВХОЖДЕНИЯ ОПРЕДЕЛЯЕТСЯ СОДЕРЖИМЫМ РЕГИСТРОВ ES И DI ZCODE SEGMENT ASSUME CS: ZCODE, ES : ZDATA, DS: ZSRC ; ВО ВРЕМЯ ВЫПОЛНЕ- ; НИЯ ПРОГРАММЫ СЕГ- ; МЕНТНЫЕ РЕГИСТРЫ ; CS, ES, DS ДОЛЖНЫ ; СОДЕРЖАТЬ БАЗОВЫЕ ; АДРЕСА СЕГМЕНТОВ: ; ZCODE, ZDATA, ZSRC STSRCH PROC FAR ; КЛЮЧЕВОЕ СЛОВО FAR ; УКАЗЫВАЕТ, ЧТО П/П ; STSRCH ВЫЗЫВАЕТСЯ ; ТОЛЬКО С ПОМОЩЬЮ ; МЕЖСЕГМЕНТНЫХ ; КОМАНД ВЫЗОВА П/П „ MOV АХ, SEG ; ЗАГРУЗКА РЕГИСТРОВ BUFFER MOV ES, АХ MOV DI, OFFSET BUFFER MOV AX, OFFSET ' BUFFER CHKSTR: SUB AX, DX ; DX СОДЕРЖИТ ДЛИНУ ; СОПОСТАВЛЯЕМОЙ ; СТРОКИ—ЭТО ПОСЛЕД- ; НИЙ ВОЗМОЖНЫЙ АД. ; РЕС В BUFFER ДЛЯ ; СОПОСТАВЛЕНИЯ CLD JMP SHORT, CHKLST MOV SI, ВХ MOV СХ, DX PUSH DI ; СОХРАНЕНИЕ ТЕКУЩЕ- ; ГО НАЧАЛЬНОГО АДРЕ- ; .СА В СТЕКЕ REPE CMPS BUFFER, ; ВЫПОЛНЕНИЕ КОМАН- STRING ; ДЫ CMPS, ПОКА ZF = 1 ; И СХ( ) ; ЕСЛИ ОПЕРАНДЫ РАВ- 213
POP DI JEQ FNDIT INC DI CHKLST: CMP DI, AX JBE CHKSTR NOTFND: FNDIT: RET STSRCH ENDP ZCODE ENDS 5 НЫ, TO ZF = 1 J ВОССТАНОВЛЕНИЕ HA- ; ЧАЛЬНОГО АДРЕСА, ZF ; HE ИЗМЕНЯЕТСЯ ; ПЕРЕХОД К FNDIT, ; ЕСЛИ ZF = 1 ‘ ; ПОПЫТКА ПОСЛЕДУЮ. ; ЩЕГО СРАВНЕНИЯ ; СРАВНЕНИЕ СОДЕРЖИ. ; МОГО DI С МАКСИМАЛЬ. ; НО ВОЗМОЖНЫМ АДРЕ. ; СОМ СРАВНЕНИЯ, КОТО. ; РЫЙ СОДЕРЖИТСЯ В АХ ; ЕСЛИ < ИЛИ =, ТО ; ПЕРЕХОД К ПРОДОЛ- ; ЖЕНИЮ СРАВНЕНИЯ ; СТРОК | ВОЗВРАТ ИЗ П/П Глава 7 ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ 7.1. УНИВЕРСАЛЬНЫЕ ПРОЦЕДУРНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ Программирование на языках высокого уровня упрощает и уско- ряет разработку прикладных и системных программ для мик- роЭВМ и МПС. Наибольшее распространение получили языки ПЛ/М (ПЛ/F), БЕЙСИК, Паскаль. Процедурно-ориентированными языками называются языки, в которых вычислительный процесс представлен последовательно- стью определенных процедур манипуляции с данными, не завися- щими от конкретной машины. Одним из направлений развития про- цедурно-ориентированных языков является создание универсаль- ных языков типа ПЛ/1, АЛГОЛ-68, АДА и др. Например, средства автоматизации разработки программ (САРП) для микроЭВМ семей- ства «Электроника С5» включают трансляторы для универсального языка ПЛ/1. Для таких языков, как ПЛ/М, БЕЙСИК, ФОРТРАН, разра- ботаны мощные кросс-трансляторы, которые позволяют получать программные модули, исполняемые на микроЭВМ или на програм- мируемых МП [26, 55, 58]. Трансляторы для языков Паскаль, МОДУЛА-2 реализованы на мини-ЭВМ, что значительно расширяет область использования языковых процессоров. Специально для МПС разработан язык ЭДИСОН [72], обеспечивающий распаралле- ливание процессов. 214
В области специализированных языков высокого уровня созданы такие проблемно ориентированные языки, как СПАЛТ, БАЙСЕПС, СТРАН, ОКТ, ПРССПРО/1800, ЗЕНИТ, [И, 52]. Представленные ниже языки программирования предназначе- ны для решения широкого круга задач. Язык ПЛ/М Язык ПЛ/М предназначен для алгоритмизации широкого клас- са задач, разработан фирмой «Intel» (США) и является близкой версией языка ПЛ/1. О разработке компилятора языка ПЛ/М со- общала фирма «Signetics Corporation» (США) [68, 69, 44]. Литера М указывает на то, что язык предназначен для программирования МП. Программы, записанные на языке ПЛ/М, состоят из'одного или нескольких блоков, называемых процедурами. Процедуры могут транслироваться отдельно или могут быть вложенными в другую процедуру и транслироваться с ней совместно. Процедуры и блоки содержат операторы. Язык ПЛ/М содержит развитые средства для управления вычислительным процессом и данными, причем хотя язык и оперирует абстрактными данными, по имеется возможность доступа к ячейкам памяти ЭВМ. 4 Основные элементы языка. Алфавит языка ПЛ/М состоит из букв: А, В, С, Д, Е, F, G, Н, I, J, К, L, М, N, О, Р, Q, R, S, Т, U, V, W, Z; цифр: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0; специальных знаков: П, = > •,/>(>).+. —; Идентификатор в языке ПЛ/М используется для именования пере- менных, процедур, макрокоманд, меток. Идентификатор может содержать до 31 знака, первый из которых должен быть буквой, а остальные — буквами или цифрами, например: ARRAY100, АВ, ТЕТА. Комментарии на языке ПЛ/М — это последовательность зна- ков, ограничиваемая слева парой знаков (^-, и справа — ^-). Комментарий можно размещать всюду, где может появляться знак пробела, например: А = В; (^-ОПЕРАТОР ПРИСВАИВАНИЯ ^-). Структура программы. Основными элементами программы являются операторы'. Операторы либо указывают выполняемое действие, либо определяют объекты, подлежащие обработке. Опе- раторы ограничиваются справа символом; и могут быть помещены меткой: М2 : IF А > В THEN GOTO М3; ELSE GOTO MIO; Программа ограничивается идентификатором EOF, обозначаю- щим конец файла. Операторы программы выполняются последова- тельно, если отсутствуют операторы IF н GOTO, их можно собирать в’ группы, ограниченные операторами DO и END и в блоки, огра- ниченные операторами BEGIN и END. Операторы в программе можно объединять в процедуры, которые могут получать управле- ние в любом месте программы. Процедуры и блоки могут содержать свои собственные локальные переменные, которые доступны только в данной процедуре или в блоке. Данные в ПЛ/М. Основной формой описания данных является оператор DECLARE, в котором указывается идентификатор и сово- купность описателей. Простые типы данных. К простым типам данных ПЛ/М отно- сятся численные постоянные, строковые постоянные и простые переменные(или просто переменные). 215
Переменная может быть одного из двух типов: BYTE или ADDRESS. 'Тип BYTE определяет 8-бнтовый (однобайтовый) объект. Тип каждой переменной должен быть формально объявлен в операторе описания. Например, DECLARE A BYTE, (В, С, D) ADDRESS; Числовые константы представлены двоичными, восьмеричными, десятичными или шестнадцатеричными числами. Основание системы счисления указывается одной из букв В, О, Q,- Н, D, следующей за числом: 10111В—двоичная постоянная, 177Q 1 1 восьмеричные постоянные 3537Q J 1A98FEH — шестнадцатеричная постоянная. Любое число, за которым не следует одна из букв В, О, Q или Н, считается десятичным: 55 330 D Строковые постоянные обозначают символами ПЛ/М, заклю- ченными внутри апострофов: 'SIGNAL', 'OUTRUT DATA'. Сложные типы данных. Массивы, так же как и переменные, должны быть объявлены в ПЛ-программе. Элементы массивов могут быть типа BYTE или ADD'RESS. Например, описание DECLARE А (200) BYTE,. В (100) ADDRESS; объявляет массив А, состоящий из 200 элементов типа BYTE и массив В — из 100 элементов типа ADDRESS. В программе на языке ПЛ/М могут быть объявлены только од- номерные массивы. Для обращения к элементам массива исполь- зуют индексированные переменные, например, В (I): = В (1) + + В (I). В приведенном примере выполняется обращение к элемен- там массива В: к первому и к »-му. Структуры в ПЛ/М позволяют организовать сложные объек- ты, состоящие из элементов различного типа. Например, объявле- ние DECLARE F STRUCTURE (L BYTE, M ADDRESS); опреде- ляет в программе объект F, который содержит два скалярных эле- мента: L типа BYTE и М типа ADDRESS. В ПЛ/М допустимо также указание массивов внутри структур и массивов структур. Для обращения к элементам структур используют составные'имена, например имя F.L задает' обращение к элементу L структуры F. В языке ПЛ/М имеется тип данных, называемых указателями, которые удобно использовать для организации списков. Указатели в программе связывают с некоторым другим типом данных. Пере- менные этого типа называются базированными, поскольку их раз- мещение определяется значением связанного с ними указателя (или базы)-. Следующие утверждения: ; DECLARE A BASED РР BYTE; DECLARE (В BASED Q) (200) ADDRESS; ' в ПЛ/М-программе объявляют базированную переменную А типа BYTE и базированный массив В(200) типа ADDRESS. Размещение этих данных определяется значением связанных с ними указате- лей: РР и Q. Операции. В языке ПЛ/М выражение состоит из основных элементов данных, комбинируемых с помощью знаков арифметических, логических операций и операций отношения. 216
Например: DELTA + В; С Х D - 4; Арифметические операции. В языке ПЛ/М имеется семь ариф- метических операций +, —, PLUS, MINUS, X, Л MOD, которые выполняют арифметические действия над величинами типа BYTE или ADDR ESS, Операции PLUS и MINUS действуют аналогично + и —, но учитывают текущее значение бита переноса. Результатом выполнения операции MOD является остаток от деления. Логические операции. Имеется четь^)е логических операции: NOT (ртрицание), AND (логическое И), OR (логическое ИЛИ), XOR (исключающее ИЛИ) над операндами типа BYTE иля ADDRESS, NOT — унарная операция. Операнд обрабатывает- ся таким образом, что каждый бит является дополнением соответ- ствующего бита операнда. Операции AND, OR, XOR являются двухместными. Они осуществляют поразрядное логическое умноже- ние, логическое сложение и исключающее ИЛИ, соответственно. Если оба операнда относятся к типу BYTE, то результат также по- лучается типа BYTE. Если хотя бы один операнд типа ADDRESS, то результат получается типа ADDRESS. В последнем случае опе- ранд типа BYTE до выполнения операции предварительно расши- ряется до 16 битов дополнением нулевых бит в старших разрядах. Например: NOT (10111011В) результат: 01000100В, (11011101В) AND (1100110011001Ю0В) результат: 0000000011001100В. Операции отношения. В ПЛ/М операции отношения следую- щие: <(меньше); > (больше); < = (меньше или равно); > = (больше или равно); < > (не paerjo); = (равно). Операции отно- шения — двухместные. Если операнды разного типа,-то для выпол- нения операции операнд-типа BYTE дополняется нулевыми битами до типа ADDRESS. Порядок выполнения операций. Операции выполняются в по- рядке убывания приоритета, а при равных приоритетах — слева направо в строке. Ниже приведены операции в порядке убывания приоритета. Операции, перечисленные в одной строке, имеют рав- ный приоритет: *, | , MOD +, —, PLUS, MINUS NOT AND OR, XOR Для’ изменения порядка выполнения операций применяют скобки: (А + В) 4 < = 177, Операция присваивания выполняется, если в программе ука- зан оператор присваивания, формат которого следующий: (список переменных) = (выражение); Список переменных -может быть представлен одной переменной. Вычисляется значение выражения справа от знака = и присваивается в качестве значения элементам списка слева от знака =, например: Z, О, Р, = Q + R (I);. Пере- менные Z, О, Р получают значение, равное сумме значений пере- менной Q и I-го элемента массива R. Внутри выражений язык ПЛ/М допускает встроенное Присваи- вание для запоминания промежуточных результатов, например: 217
A = A + (В: = С + D) — (E: = F/G); Приведенный оператор присваивания эквивалентен следующим трем операторам: А : = А + (С + D) - (F/G); В : = С + D; Е : = F/G; Для определения адреса памяти некоторой переменной исполь- зуют знак точки, например: . Z, . Q и т. д. Общая форма точечного оператора: • (переменная) • (константа) • (список констант) Точечный оператор позволяет использовать адрес некоторой области памяти для доступа к данным или для размещения бази- рованных данных. Псевдоперемениые INPUT и OUTPUT служат для указания операций ввода и вывода: INPUT ((число)) OUTPUT ((число)), где (число) — определяет логический номер устройства ввода или вывода. Например, утверждение OUTPUT (6) = Z; определяет вывод значения байтовой переменной Z на устройство 6. Имя псев- допеременной INPUT должно появляться справа от символа при- сваивания в выражении, а имя псевдопеременной OUTPUT — сле- ва от символа присваивания. Машинно-зависимые средства языка. Массив MEMORY (мас- сив типа BYTE) является массивом, длина которого не определена и который представляет свободную память. Обращения к MEMORY могут быть индексированными.’ Максимальный индекс зависит от конфигурации системы и от объема программы. Обращение, MEMORY — это адрес начала свободной области памяти. Переменная STACKPTR — переменная типа ADDRESS, обес- печивающая доступ к указателю стека микропроцессора. Процедуры CARRY, ZERO, SIGN и PARITY (все типа BYTE) возвращают логические величины аппаратно устанавливаемых флажков переноса, пуля, знака и четности, соответственно. Процедуры циклического сдвига с переносом SCL и SCR — встроенные процедуры, тип которых зависит от типа значения выра- жения, являющегося фактическим параметром. Вызов функций осуществляется следующим образом: ' SCL (пар 1, пар 2) SCR (пар 1, пар 2), где пар I — последовательность битов, предназначенная для вы- полнения сдвигов, пар 2 — счетчик сдвигов. Последовательность битов циклически сдвигается влево или вправо с учетом счетчика сдвигов. Управление последовательностью действий. Операторы GOTO изменяют последовательный порядок выполнения операторов, пере- давая управление в указанное место программы. Форма оператора следующая: GOTO (метка). Метка может быть константой-меткой цлн переменной-меткой. В первом случае, метка — это идентифи- катор или число, которые являются меткой помеченного оператора в программе или абсолютным адресом памяти, соответственно. Во 218
втором случае — это переменная, которая содержит вычисленный адрес памяти, которому передается управление. Оператор DO используют для организации простой ПО-груп- пы, DO-WHILE-группы, итеративной DO-группы и DO-CASE» группы. Простая DO-группа имеет форму: DO; (оператор 1); (оператор 2); (оператор END; Простая DO-группа служит для объединения последователь- ности операторов в одну программную единицу, которая может рас- сматриваться как один оператор, например: IF А<=В THEN DO; А:=В4-1; С: = E/F; GOTO Ml; END; ELSE DO; В: = A- 1; C: = E; END; DO-WHILE-группа имеет следующую форму: DO WHILE (выражение); (оператор 1); (оператор 2); (оператор л); END; Последовательность операторов выполняется до тех пор, пока результатом выражения не будет величина, крайний правый бит которой равен 0; тогда выполнение группы операторов пропускает- ся и управление передается следующему оператору. Напримео. при /=1 группа операторов будет выполняться 5 раз: DO WHILE I < = 5; М (I) = М (/) + М (/ + 1); / = / + 1; END; Общая форма итеративной DO-группы следующая: DO (переменная)= (выражение 1) ТО (выражение 2) BY (выражение 3) (оператор 1); (оператор 2); (оператор л); END; 219
Вычисляется выражение 1 и сравнивается с выражением 2, Если значение выражения 1 меньше или равно значению выраже- ния 2, то выполняются операторы в группе. Когда достигается one- : ратор END, то значение переменной увеличивается на величину, равную значению выражения 3, и проверка повторяется. Последо- вательность операторов в группе выполняется несколько раз до тех пор, пока значение выражения 1 не будет больше, чем значение выражения 2. DO-CASE-группа имеет следующую стандартную форму: DO CASE (выражение N); (оператор 1); (оператор 2}; (оператор п); END; Вычисляется выражение, следующее за ключевым словом CASE. Значение выражения N используется для выбора одного из операторов в группе. Так при N = 0 выполняется оператор 1, при N = 1 выполняется оператор 2 и т. д. Если значение N больше п-1, то не выполняется ни один оператор в группе. Любой оператор в группе выполняется не более одного раза, после чего управление передается за пределы DO-CASE-группы: DO CASE /4-1; А: = В 4- С; А: = В + C/D; END; Если / — 0, то будет выполнен оператор присваивания А = В + 4- C/D. 4 Оператор IF имеед следующий формат: IF (выражение) THEN (оператор 1) ELSE (оператор 2) Если в результате вычисления выражения полученное значение содержит 1 в младшем разряде, то выполняется оператор 1, иначе — оператор 2. Затем управление передается, следующему оператору, если только этот порядок не нарушается выполнением операторов 1 или 2 (например, выполнение оператора GOTO) IF А < В THEN GOTO М2; ELSE GOTO Ml; Вместо операторов 1 и 2 конструкция IF может содержать DO-группы, что, в целом, увеличивает мощность оператора. Операторы управления прерыванием. Имеется два оператора для управления механизмом прерывания: ENABLE и DISABLE. Оператор ENABLE приводит систему прерывания в состояние «разрешено», a DISABLE — «запрещено». Процедуры й функции. Объявление процедуры в ПЛ/М имеет следующий вид: (имя): PROCEDURE [((список параметров))] [(тип)] [(атрибуты)] •' (оператор 1); (оператор 2); (оператор л); END [(имя)]; 220
Тип процедуры (BYTE или ADDRESS) должен быть указан В том случае, если процедура является процедурой-функцией и возвращает значение в точку вызова. Процедура-функция возвра- щает управление вызываемой программе оператором RETURN (выражение), а процедура-подпрограмма — оператором RETURN. С процедурой могут быть связаны атрибуты, определяющие ее на- аначение н возможности. Например, атрибут INTERRUPT (п = = 0 — 7) указывает, что процедура предназначена для обработки прерываний. Процедура активизируется, когда прерывание посту- пает по каналу с кодом п. Атрибут REENTRANT указывает, что процедура является реентерабельной и допускает повторное вхож- дение до завершения ее выполнения. Пример. В данном примере объявлена процедура, выполняю- щая суммирование элементов массива с 0-го по п-й, , SUMMARRAY; PROCEDURE (PTR, N) BYTE REENTRANT; DECLARE PTR ADDRESS, (ARRAY BASED PTR) (N) BYTE, N BYTE; IF N = 0 THEN RETURN ARRAY (0); ELSE RETURN ARRAY (N) -f- SUMMARRAY (PTR, N — 1); END SUMMARRAY; Процедура-функция вызывается указателем функции: (имя) . [((список аргументов))], процедура-подпрограмма вызывается опе- ратором CALL (имя) [((список аргументов))]; Например, про- , цедура SUMMARRAY вызывается следующим образом: Z = * = SUMMARRAY (Q, 100);. Язык Модула-2 Модула-2 [15] предназначен для системного программирования Иа мини- ц микроЭВМ. Его предшественниками являются языки Паскаль [14, 55] и Модула [73]. От этих языков Модула-2 унасле- довал модульный принцип и последовательный строгий синтаксис. Это отражено как в структурах данных, так и в сложных управ- ляющих структурах. Язык является, в основном, машинно-независимым, за исклю- чением ограничений, накладываемых на длину слова. Машинно-зависимые объекты сосредоточивают в специальных модулях и их использование достаточно эффективно маскируется и отделяется. В этих случаях язык обеспечивает средства для «смяг- чения» ограничений на совместимость типов данных. Модула-2 со- держит значительное число стандартных модулей (так называемых -модулей нижнего уровня) для управления вводом-выводом, обра- ботки файлов, выделения памяти, диспетчеризации процессов и т. д. Концепция процессов и их синхронизация, предложенная в языке Модула, заменена нотацией сопрограмм в языке Модула-2. Модула-2 позволяет специфицировать интерфейсы между программ- ными модулями, которые могут проектироваться различными раз- работчиками. Для этого в языке предусмотрено разделение опре- деляющих и исполнительных модулей. 221
Алфавит языка. Алфавит языка включает большие и малые буквы латинского алфавита: от А до Z и от а до г, цифры: от 0 до 9 и'специальные символы: +, —, %-, Л &, V 1, (,), L), {,),' Т, | , = , <), : . Идентификаторы. Идентификаторы — последовательности букв и цифр: идент = буква {буква | цифра). Например: scan, Modula, First Symbol. Комментарии. Комментарии представляют собой любую после- довательность символов, размещаемую между любыми двумя лек- сическими символами языка (лексические символы языка —. это идентификаторы, числа, строки, операторы, разделители и ограни- чители). Комментарии заключаются в скобки (X и ^-). Резервируемые символы языка. Резервируемые символы язы- ка нельзя использовать в качестве идентификаторов. Резервируе- мые слова в языке Модула-2 составлены полностью из заглавных букв алфавита. Они используются для обозначения операторов, разделителей и ограничителей, указания стандартных идентифика- торов, например: IF THEN ELSE AND END ELS1F POINTER и т. д. Данные в языке Модула-2. Числа в языке могут быть представ- лены в двух основных формах: целые числа и вещественные. Целые числа представляют собой последовательности цифр. В этом случае числа являются десятичными. Если числа оканчи- ваются литерами В» Н или С, то это, соответственно, восьмеричные, шестнадцатеричные числа или последовательности литер, имею- щие 8-битовое внутреннее представление в вычислительном комп- лексе. Целые числа имеют тип INTEGER или тип CARDINAL. Вещественные числа всегда содержат десятичную точку, кроме того, они могут содержать десятичный порядок в форме: ”Е” [„+” I п—”] цифра {цифра}, например, 2567,-376В, 21EFH, АВЗС, 7.45, 7.21 ЗЕ-12, I.E4. Сроки в языке Модула-2 представлены последовательностями литер/заключенных в одиночные (апострофы) или двойные кавычки, т. е. строка = , ” , {литера алфавита) , ” , | , ” , {литера алфавита) ’ ” ’. Строка может состоять из одной литеры или нескольких и имеет, соответственно, тип CHAR или тип ARRAY [0 ... п — 1] OF CHAR, Объявления в программе. Каждый идентификатор в програм- ме, за исключением стандартных идентификаторов, должен иметь объявление. Считается, что стандартные идентификаторы уже предварительно объявлены'^ программе и имеют во всех ее частях фиксированный смысл. Объявления позволяют сопоставить неко- торому объекту имя и определить тип этого объекта: константа, тип, переменная, процедура, модуль. Идентификатор затем позво- ляет обращаться к связанному с ним объекту. Объявление констант связывает идентификатор с некоторой постоянной величиной и записывается в виде: идентификатор“= ” константное выражение, которое может содержать арифметические операторы и операторы отношений, а также идентификаторы, квалифицируемые идентификаторы, числа, строки, множества. Ква- лифицируемые идентификаторы записываются в виде: идентифика- тор {„,” идентификатор). 222
В качестве префикса они могут содержать ’имя модуля. Приве- дем примеры объявлений: N = 16 lit = N— 1 allset = {0 . . Size of Word) Объявление типов. Тип данных определяет множество значений, которые могут принимать переменные данного тийа. Объявление типа Связывает идентификатор с указанным типом: идентификатор „=” тип. В языке выделяют следующие типы: простой тип, массив, запись, множество, указатель, процедура. К п р ос тому типу относят: квалифицируемый иден- тификатор, перечисление, поддиапазонный тип. Примеры объявлений типов: color,= (red, green, blue) index = {1 ... 80} card = ARRAY index OF CHAR Базисные типы обозначаются стандартными идентификаторами: -INTEGER, CARDINAL, BOOLEAN, CHAR, REAL. Переменные типа INTEGER принимают целые значения в диапазоне (—32768, -Ь32767), переменные типа CARDINAL—значения в диапазоне (О, 65535), переменные типа BOOLEAN — значения TRUE или FALSE, переменные типа CHAR значения символов из множества символов ASCII (ISO), переменные типа REAL — значения вещест- венных чисел. Перечисление — это список идентификаторов, которые являются значениями для объявляемого типа данных, например, (red, yellow, green, blue) (monday, tuesday, Wednesday) Некоторый Тип может быть определен как поддиапазонный дру- гого типа, базисного или перечисляемого (за исклюйеинем типа REAL), указанием нижней и верхней границ диапазона. Примеры объявления поддиапазонного типа: - ’ int = {0 .. N — I] latch = ['А' ./О'] color = [red .. green] Массив представляет собой структуру, состоящую из компо- нентов, имеющих один и тот же тип, называемый компонентным. -Элементы массива определяются индексами, которые принадлежат к индексному типу. Массивный тип определяет одновременно ком- понентный и индексный типы, например: matr = ARRAY fl .. 10], (1 .. 20] OF REAL boolar = ARRAY [1 .. N] OF BOOLEAN Записи представляют структуры, состоящие нз фиксирован- ного числа компонентов, которые могут иметь различный тип. Каж- дое поле записи именуется и ему присваивается свой тип. Запись может содержать несколько изменяющихся секций. В этом случае первое поле такой секции служит меткой, Значение метки опреде- 223
1 ляет, какой вариант секции подразумевается в данном конкретном случае. Приведем примеры объявлений типов записи: 1. rec 1 = RECORD one: REAL; two: |red .. green]; threer—tNTEGER; END Тип rec 1 определяет запись, состоящую из трех фиксированных полей: one, two, three, вслед за которыми указан их тип. 2. гес 2 = RECORD а, Ь: ТО; CASE с : BOOLEAN OF TRUE: d : REAL; e: INTEGER | FALSE : f : Tl; g: T2 END; - b : k : REAL; CASE 1 : color OF red : mi CARDINAL | yellow : n : INTEGER | green : 0 : BOOLEAN END END В данном примере запись содержит фиксированные поля а, b (типа ТО), h, к (типа REAL) и два изменяемых поля. Типы изменя- емых полей определяются\ значением поля с типа BOOLEAN й поля 1 типа color, соответственно. Множества содержат все возможные значения некоторого, заданного типа. Тип должен быть либо поддиапазонный для целых величин от 0 floWordsize—1, либо поддиапазонный тип перечисляе- мого типа со значениями, не превышающими Wordsize ’(Wordsize для микроЭВМ «Электроника-60» имеет емкость 16 бит). Стандартный тип BITSET определяется как: BITSET = SET OF [0 .. Wordsize — 1). Примеры определения множественных типов:- digits = SET OF JO .. 9] chars = SET OF ['A' .. 'Z'] Переменные указательного типа могут ссылаться на другие переменные, имеющие некоторый тип Т. В этом случае необ- ходимо объявить в программе, что указательный тип Р может ссы- латься на переменные типа Т, например, pl = POINTER ТО Т. В программе объявлен тип pl. Переменные данного типа могут ссылаться на переменные типа Т. г- Переменные процедурного типа Т могут пониматься так, как если бы их значением является процедура Р. Типы фор- мальных параметров процедуры Р должны соответствовать тем, которые перечислены в списке формальных параметров Т. Р не долж- на объявляться локальной в теле другой процедуры и не может быть стандартной процедурой. Пример объявления процедурного типа: proc Тур == PROCEDURE (VAR х, у : REAL; VAR z : CARDINAL) 224
Стандартный тип PROC определяет процедурный тип без пара- метров: PROC = PROCEDURE. Объявление переменных записывается в виде: список иденти- фикаторов тип — и связывает их с идентификатором, определен- ным типом данных и структурой. Примеры объявлений переменных: х, у : CARDINAL ' г : REAL I, J ; BOOLEAN W : ARRAY [1.. 1 0] OF RECORD ch : CHAR; h : REAL; CASE о : [' A ' В ', 1 C1 ] OF ‘ A ': p, r: INTEGER | *B 1, k: CARDINAL | 'C':f:CHAR END END Объявление процедуры (функции) состоит из заголовка проце- дуры и блока, который является телом процедуры. Заголовок со- держит идентификатор процедуры и список формальных парамет- ров. Блок может содержать свои объявления (констант, типов, пере- менных, процедур и т. д.), которые являются локальными в блоке, и утверждения. Объявление процедуры выглядит следующим образом; PROCEDURE идентификатор [формальные параметры] " ; " {объявления} [BEGIN последовательность утверждений] END идентификатор После символа END повторяется идентификатор процедуры. Пример объявления процедуры: PROCEDURE Read (VAR х : CARDINAL); VAR i: CARDINAL; ch : CHAR; BEGIN i: = 0; REPEAT Read Char (ch); -UNTIL (ch > = 0 " & (ch < = 9 *); REPEAT i: = 1 0 i + (CARDINAL (ch) — CARDINAL (" 0 «); ReadChar (ch); UNTIL (ch < - 0 ") OR (ch > 9 «); x : =ri; END Read Объявление функции отличается тем, что последовательность утверждений должна содержать конструкцию RETURNy, где у возвращаемое значение. Кроме того, за списком формальных пара- метров размещается идентификатор типа-для значения, возвращае- мого функцией. Формальные параметры могут быть двух типов: параметры- аиачения и параметры-переменные. Параметры-переменные ука-
зываются в списке символом VAR и сопоставляются действитель- ным параметрам-переменным. Параметры-значения соответствуют некоторым локальным переменным, для которых вызывающая про- цедура формирует начальное значение. Модуль содержит набор объявлений и утверждений, располо- женных между символами MODULE и END. Заголовок модуля содержит его имя, а также может содержать списки экспортируемых и импортируемых объектов. В списках импорта указывают все идентификаторы объектов, которые объяв- лены вне модуля, но должны в нем использоваться. Списки экспор- та определяют идентификаторы объектов, объявленных в модуле и используемых вне данного модуля. Последовательность утверждений, которые представляют тело модуля (блок), выполняется, когда вызывается процедура, по отно- шению к которой модуль является локальным. Если в процедуре объявлено несколько модулей, то модули выполняются в той по- следовательности, в которой они размещаются в процедуре: MODULE идентификатор [приоритет] " {список импорта) {список экспорта) {объявления} [BEGIN последовательность утверждений] END идентификатор Приоритет записывается в виде [целое] и играет роль, когда реализуется мультипрограммное выполнение. Форматы импорти- руемого и экспортируемого списков следующие: [FROM идентификатор] IMPORT список идентификаторов EXPORT [QUALIFIED] список идентификаторов Символ QUALIFIED применяется, если идентификаторы из списка идентификаторов EXPORT должны вне данного модуля использоваться только с указанием префиксуемого имени модуля. Символ FROM указывает имя модуля, из которого получены объек- ты, перечисленные в списке IMPORT. В этом случае идентифика- торы из списка могут использоваться обычным образом, без пре- фиксов. Пример объявления модуля-. MODULE Lineinput; IMPORT inchr, outchr; EXPORT read, Newline, NewFile, eoln, eof, Ino; CONST LF = 12 c; CR = 15 c; FS = 34; VAR Ino: CARDINAL; (* число строк *) ch: CHAR; (* последний прочитанный символ *) eof, eoln: BOOLEAN; PROCEDURE Newfile; BEGIN IF NOT eof THEN REPEAT inchr (ch) UNTIL ch = FS; END; eof: = FALSE; eoln: = FALSE; Ino; = 0 END NewFile; 226
PROCEDURE NewLine; BEGIN IF NOT eoln THEN REPEAT inchr (ch) UNTIL ch = LF; ontchr (CR); 6utchr (LF) END; eoln: = FALSE; INC(lno) END NewLine; PROCEDURE read (VAR x.-CHAR); BEGIN LOOP inchr (ch); outchr (ch); IF ch > = - ' THEN x : = ch; EXIT . ELSIF ch: = LF THEN x : = eoln : = TRUE; EXIT ELSIF ch = FS THEN x : = " eoln : = TRUE; eof: = TRUE; EXIT END END END read; BEGIN eof: = TRUE; eoln : = TRUE END Lineinput Текст, поступающий на вход компилятора как единое целое, называется единицей компиляции. В Модула-2 различают 3 типа единиц компиляции: главные модули, определяющие, реализующие. Главный модуль содержит основную программу и состоит из так называемого программного модуля. В частности, главный мо- дуль не содержит списка EXPORT. Импортируемые объекты опре- деляются в других (отдельно скомпилированных) программных частях, которые делятся иа определяющие и реализующие модули. Определяющие модули (DEFINITION MODULE) специфици- руют имена и назначение объектов, доступных для пользователя, а также для модулей, которые используют (импортируют) эти объекты. Реализующие модули содержат локальные объекты и утвер- ждения, сведения о которых не нужны пользователю. Определяющие и реализующие модули проектируются попарно. Так, первые — мо- гут содержать экспортируемый список, константы, типы, объяв- ления переменных и спецификации заголовков процедур. Соответ- ствующие реализующие модули содержат полные объявления про- цедур и объявления некоторых других локальных объектов. Операции. Синтаксис выражений определяет последователь- ность операторов в соответствии с четырьмя их классами. Опера- ция NOT выполняется первой, затем выполняются операции типа умножения, сложения и самыми последними *— операторы отношений: выражение = простое-выражение [отношение простое-выражение]. простое-выражение = [”+”!”—”] {терм {операция-типа-сложения терм}; терм = фактор {операция-типа-умножения фактор} 8* 227
фактор = число | строка | множество | обозначение [действительные па* раметры] I " ("выражение" ) " I NOT фактор обозначение = квалифицируем ый-идентификатор идентификатор | "["спнсок-выражений"]" | " t "} действительные-параметры = "("[Список выражений]")*. Перечисленные правила определяют в качестве операндов ион- станты, числа, строки, множества и, так называемые, обозначения. Обозначение состоит из идентификатора, указывающего на кой* станту, переменную или процедуру, которую он изображает; этот идентификатор может быть квалифицирован идентификаторами мо- дулей. За ним могут размещаться селекторы, если изображаемый 7.1. Типы операций языка Модула-2 Класс Символ Операция Тип операндов Арифме- тические + X / DIV MOD Сложение Вычитание Умножение Деление веществен- ных Деление целых Остаток от деле- ния целых CARDINAL, IN- TEGER С..., г... С..„ I... REAL С..., I... С..., I... Логиче- ские OR AND NOT Логическое ИЛИ » И Отрицание BOOLEAN В... В... Операции над мно- жествами 1 + 1 * " i Объединение множеств Вычитание множеств Пересечениие мно- жеств Симметричная раз- ность множеств SET S... S... S... Операции отношений A |Vv' л' £ v л Равенство Неравенство Меньше Меньше или равно (включение множест- ва) Больше Больше или равно (включение множест- ва) Содержится (принадлежит мно- жеству) 228
объект является элементом какой-нибудь записи. Приведем при- меры . выражений: к 4~ m* р. z a [i]/t f. key р OR q zANDfORoANb NOTj (Q < = k) & (k < 100) nIN{0, 5 . . . 10, 15} В табл. 7.1 перечислены все типы операций языка Модула-2,, используемые для формирования выражений. Операции = и # применимы не только к обычным типам, но и к множествам и указателям. Выражение вида х INS должно со- держать элементе типа SET OF Т, где Т совместим с типом для х. Операция присваивания обозначается оператором «:=». Слева от символа «:=» размещается обозначение, а справа — выражение. Обозначение указывает переменную, тип которой согласуется с ти- пом выражения. Примеры присваивания значений: 1 : - к j: = l = q f: = log 2 (z + О) M [п]: =d/h-f- 0,23 Ввод-вывод. Определение ввода — вывода не содержится в языке Модула-2. Эти функции реализуются набором модулей, которые рекомендуется иметь'в любой реализации языка для обес- печения совместимости программ, проектируемых на различных вычислительных устройствах. Процедуры ввода-вывода содержатся в утилите INOUT, пред- назначенной для выполнения ввода-вывода на стандартных устрой- ствах ввода-вывода или последовательных файлах. Стандартными устройствами являются экран и клавиатура. Процедуры ввода-вы- вода могут быть связаны с файлами вызовом процедуры Open 10, которая запрашивает имя файла для чтения или записи. После вы- полнения Close 10 процедуры ввода-вывода вновь связываются со стандартными устройствами. Ниже приведен определяющий модуль, в котором содержатся спецификации на процедуры ввода-вывода, используемые в системе RT-11: DEFINITION MODULE InOut; FROM SYSTEM IMPORT WORD; EXPORT QUALIFIED Strleng, String, OpenlO, CloselO, Read, Readlnt, Write, Writelnt, WriteCard, WriteOct, WriteHex, Writein, WriteString, ShowString; CONST Strleng = 80; ТУРЕ String = ARRAY [O..StrLeng — 1] OF CHAR} ' PROCEDURE OpenlO; PROCEDUR E CloselO; PROCEDURE Read (VAR ch:CHAR); PROCEDURE Readlnt (VAR x : INTEGER; VAR next Chan CHAR; VAR IsNum;BOOLEAN); 229
PROCEDURE Write (ch: CHAR); PROCEDURE Writeint (x: INTEGER; n:CARDINAL); PROCEDURE WriteCard (x, n:CARDINAL); PROCEDURE WriteOct (w: WORD; n: CARDINAL); PROCEDURE WriteHex (w: WORD; n: CARDINAL); PROCEDURE Writein; PROCEDURE WriteString (s : String); PROCEDURE ShowString (s: String; cr: BOOLEAN); END InOut. Параметр cr = TRUE позволяет перевести строку при выводе на стандартное устройство. Процедура Readlnt читает литеру как десятичное целое в поле, определяемом параметром х; читает следующий символ в поле nextChar (если символ 0 с, то входной поток прочитан весь); IsNum— индицирует завершение операции чтения. Потоки. Модуль Streams позволяет определить абстрактное понятие последовательности и управлять последовательностью сим- волов и слов, называемых потоками, в терминах файлов, которые, в свою очередь, определяются модулем Files. Запись в поток прерывается выводом процедуры EndWrite. Если выполняется чтение, то обращение к процедуре EOS индици- рует конец операции или конец входного потока данных. Процеду- ры управления потоком следующие: PROCEDURE Connect (VARs : STPEAM; f : FILE; ws; BOOLEAN)} PROCEDURE Disconnect (VARs:STR EAM; closefile:BOOLEAN); PROCEDURE Reset (s: STREAM); PROCEDURE WriteWord (s: STREAM; w: WORD); PROCEDURE WriteChar (s:STREAM; ch:CHAR); PROCEDURE EndWrite (s : STREAM); PROCEDURE ReadWord (s:STREAM; VAR w:WORD); PROCEDURE ReadChar (s:STREAM; VAR ch:CHAR); PROCEDURE EOS (s:STREAM) : BOOLEAN. Файлы Модуль Files позволяет управлять файлами, расположенными на магнитных дисках. Каждый файл в системе RT-U получает зна- чение типа FILE, которое определяет номер канала (от 0 до 15). Файлы представляют собой блоки данных, расположенные на дис- ковых секторах. Каждый блок состоит из 512 символов. Файлы связываются с номерами каналов посредством вызова процедуры Lookup, например, PROCEDURE Lookup (LFILE; fn:Filename; VAR reply : INTEGER); где f — номер канала, fn — имя файла, reply: > = 0-длнна файла, < 0 = ошибка, —1-канал занят, —2-файл не найден. Имя файла в системе RT-11 содержит 3 первых символа, специфи- цирующих устройство, следующие 6 символов — действительное имя и последние 3 символа — так называемое расширение, папри- 230
мер: RK1 : FILE.DAT. Остальные процедуры модуля Files позво- ляют создавать, уничтожать, закрывать, переименовывать файлы, читать и записывать блоки данных. Управление последовательностью действий. Для организации циклов, ветвлений, выделения подалгоритмов язык Модуля-2 со- держит обширный набор средств для получения структурирован- ных программ. Особенностью языка является отсутствие утвержде- ния GOTO, вместо которого предлагаются такие мощные средства, как CASE, -, REPEAT-, FOR-, LOOP- и EJflT- утверждения. Утверждение IF имеет следующую форму: 1F выражение THEN последовательность-утверждений {ELSIF выражение THEN последовательность-утверждений} {ELSE последовательность-утверждений} END. Выражения должны быть типа BOOLEAN. Если используется конструкция ELSE, то связанная с ней последовательность утверж- дений выполняется в том случае, если все булевы выражения имеют значения FALSE. Связанная с THEN последовательность утверж- дений выполняется, если расположенное перед THEN выражение имеет значение TRUE. Рассмотрим пример: IF а > b THEN с: =d; а: =а + b ELSIF а > b THENd : = с; а: == а — 1 ELSE d: = с + 1 END Если, например, а = b = 0,5, то будет выполнено d : = с + 1. Утверждение CASE позволяет выбрать и выполнить последо- вательность утверждений в соответствии со зн-ачением выражения. CASE имеет вид: CASE выражение OF вариант {" | " вариант} [ELSE последовательность утверждений] END Тип выражения должен быть базисный (кроме REAL), перечис- ляемый либо поддиапазонпый, и все метки должны быть согласованы с данным типом. Вариант представляет конструкцию вида: список меток ® : * последовательность-утверждений. Пример-. CASE j OF 'А' : а : = a ANDb; х : = х + I, 'В': а : = a ORb; х : = у | 'С' : а : = NOTa; х : = z ELSE а : = NOTa; х : - у END Если j имеет значение 'D', то выполнится последовательность а : = NOTa; х : = у. Утверждение WHILE приводит к циклическому выполнению последовательности утверждений, если значение выражения после ключевого слова WHILE — TRUE. Значение выражения прове- ряется в начале выполнения утверждения WHILE и в конце, когда достигается ограничитель END : WHILE выражение DO последо- вательпость-операторов END, 231
Пример утверждения WHILE: WHILE (t # NIL) & (t f. key # i) DO t: = t f. left END Утверждение REPEAT. Форма утверждения следующая! REPEAT последовательность-инструкций UNTIL выражение. Последовательность инструкций выполняется циклически др тех пор, пока значение выражения после символа UNTIL не станет? TRUE. Например: REPEAT j : = j — 1 UNTIL j : = О Если начальное значение j = 5, то утверждение ]': = ]' — 1 будет выполнено 5 раз. Утверждение FOR имеет следующий формат: FOR идентификатор : = выражение 1 ТО выражение 2 {BY константа} DO последовательность-утверждений END Последовательность-утверждений выполняется циклически, по- ка значение переменной, идентификатор которой размещается пос- ле символа FOR, не превысит значения выражения 2. Начальное значение переменной, равное значению выражения 1 на каждом шаге выполнения цикла, увеличивается на 1 или на значение, опре- деляемое константой, если используется конструкция BY. Тип переменной — INTEGER или CARDINAL. Пример-. FOR 1 : =1 то 80 BY2j: = j + a [i] END. Утверждение LOOP позволяет циклически повторять после- довательность операторов до тех пор, пока не будет выполнен лю- бой из операторов, обеспечивающих выход из данной конструкции: LOOP последовательность-оператрров END. Пример: LOOP IF tlf. key > x THEN t2 : •= tlf. left; p : = TRUE ELSE t2 : = tlf. right; p : = FALSE END; IF t2 : = NIL THEN EXIT END tl : = t2 END Утверждение WITH специфицирует переменную типа запись И последовательность операторов для ее обработки: WITH десигна- тор DO последовательность-операторов END. Пример: WITH t f DO key : = 0; left: = NIL; right: = NIL END Квалификаторы идентификаторов полей могут быть опущены, если они относятся к той переменной, которая указана после сим- вола WITH. 232
Утверждения RETURN и EXIT. Утверждение EXIT служи? для прерывания циклической последовательности операторов. Утверждение RETURN (RETURN Е, Е — специфицирует вычислен- ное значение) размещается в теле процедуры (функции) и возвра- щает управление вызывающей программе. Операционная среда. Исполняющая система Модула-2 состоит из компилятора, редактора, отладчика, управляющей программы, включающей загрузчик [15]. Управляющая программа является резидентной. Она получает имя файла, который должен быть загружен, загружает его и пере- дает ему управление. После выполнения файла управление воз- вращается управляющей программе (ее имя MODULA в системе на базе PDP-11). 4 Компилятор также загружается посредством Управляющей программы (его имя СОМР). Он запрашивает имя файла, который должен компилироваться. Рекомендуемые расширения для имен файлов, содержащих программу: MOD — для исполняющих мо- дулей; DEF — для определяющих модулей, например, RR.MOD, SIMPLE.DEF и т. д. Компилятор генерирует на выходе листинг (имя файла имеет расширение LST) и объектный код (расширение LNK в случае, когда обработан-исполняющий модуль, и расширение SYM, когда обрабатывался определяющий модуль). Редактор (его имя LINK) объединяет все объектные модули, присваивает им общее имя и расширение LOD. Выходом редактора является образ машинного кода, который содержит машинные ко- манды и указания для загрузчика о размещении сегментов про- граммы. Управляющая система предоставляет большое число утилит, предназначенных для часто используемых операций: создания, чтения, записи, закрытия файлов, преобразования данных, управ- ления периферийными устройствами и т. д. Утилиты не являются частью определения языка и на каждой вычислительной установке имеют свои специфические особенности. Их состав определяется операционной системой, аппаратурой и классом решаемых задач,.. Некоторые утилиты содержат .проце- дуры для управления вводом-выводом (утилиты InOut, Streams, Files), другие — позволяют из программ пользователя выполнять загрузку задач, диспетчеризацию процессов, выделение и освобож- дение памяти по запросам из программ. Загрузчик Loader поставляет процедуру Call, которая предна- значена для загрузки модулей, вырабатываемых редактором. Пере- менная FirstFree, поставляемая модулем, определяет адрес верхуш- ки стека после загрузки программы. Спецификация заголовка про- цедуры следующая: PROCEDURE Call (fn: FileName; VAR LoadRes: LoadResultTypej VAR ExecutionRes: ErrorType); где fn — имя файла, который должен быть загружен, LoodRes— результат загрузки, ExecutionRes — результат выполнения, First- Free — адрес свободной области после загрузки. Стандартный модуль Storage поставляет процедуры ALLO- CATE, DEALLOCATE и SetMode для управления памятью. Про- граммист имеет возможность импортировать эти процедуры из других модулей, которые он может составить по своему усмотрению. 233
Спецификации заголовков стандартных процедур следующие: PROCEDURE ALLOCATE (VAR р : ADDRESS; SIZE : CARDINAL); PROCEDURE DEALLOCATE'(VAR'p : ADDRESS; SIZE : CARDINAL); PROCEDURE Set Mode (m : CARDINAL); Первые две процедуры выделяют и освобождают память, соот- ветственно (р — начальный адрес, SIZE — размер области). Третья процедура устанавливает реакцию на выполнение ALLOCATE. Если m= 1, то ALLOCATE выполняется аварийно; если m = 2, то ALLOCATE выполняется как пустой оператор, так как памяти недостаточно. Модуль ProcessSheduler, поставляющий процедуры для диспет- черизации процессов, базируется’ на концепциях сопрограмм и ис- пользует механизм создания процессов (NEWPROCESS) и их запуска (TRANSFER). Так же как и остальные модули, модуль ProcessSheduler может быть заменен пользовательским модулем, отвечающим более полно нуждам конкретной разработки. Средства, зависящие от аппаратуры. Модула-2 содержит средства, необходимые для организации так называемых операций нижнего уровня, которые оперируют объектами, определяемыми конкретной аппаратурой или реализацией. Такие операции реко- мендуется оформлять в модулях нижнего уровня и для доступа к конкретным типам и процедурам указывать имя модуля SYSTEM для списка IMPORT. Модуль SYSTEM передает типы: WORD, ADDR ESS, PROCESS, процедуры: NEWPROCESS, TRANSFER, IOTRANSFER и дру- гие, определяемые используемой операционной системой. Тип WORD совместим с любым типом, определенным в языке, который использует для размещения некоторого данного одно слово памяти; это — типы CARDINAL, INTEGER, BITSET и все ука- затели. Для данных типа WORD может быть применима только операция присваивания. Тип ADDRESS определяется как ADDRESS-POINTER ТО WORD. Пример использования типа ADDRESS: MODULE Storage; FROM SYSTEM IMPORT ADDRESS; EXPORT Allocate; VAR lastused : ADDRESS; PROCEDURE Allocate (VAR a : ADDRESS; n : CARDINAL); BEGIN a : = lastused; INC (lastused, n) END Allocate; BEGIN lastused : = 0 END storage Процедура Allocate позволяет выделить память под размещение некоторого объекта. Она возвращает начальный адрес размещения и запоминает следующий свободный адрес памяти. Для мультипрограммирования Модула-2 представляет некото- рые базисные средства, которые позволяют специфицировать квази- параллельные процессы. При этом термин «процесс» определяет по- нятие сопрограммы. 234
Новый процесс создается вызовом следующей процедуры: PROCEDURE NEWPROCESS (Р : PROC; А : ADDRESS; n: CARDINAL; VAR Pl : PROCESS), где P — имя процедуры, которая будет реализовать процесс; А — базовый адрес для размещения рабочей области процесса; п — размер этой области; Р1 — имя процесса, для которого Р явля- ется программой, а А — его адресом рабочей области. Передача управления между процессами' осуществляется вызовом процедуры: PROCEDURE TRANSFER (VAR Pl, P2 : PROCESS). Эффект вызова заключается в том, что текущий процесс приостанавливается, с ним связывается идентификатор Р1, и управление получает процесс Р2. Если процесс содержит обращение к периферийному устрой- ству, то управление процессором может быть передано другому про- цессу, пока идут операции управления устройствам (аппаратные). Обычно завершение операций с внешним устройством сигнализи- руется прерыванием работы процессора. Для работы с периферий- ными устройствами используется вызов процедуры: PROCEDURE IOTRANSFER (VAR Pl, Р2 : PROCESS; va : CARDINAL) По аналогии с процедурой TRANSFER вызов IOTRANSFER приостанавливает процесс, обратившийся к устройству va, и свя- зывает его с идентификатором Р1, затем запускает приостановлен- ный ранее процесс Р2. После завершения работы устройства запус- кается процесс, связанный с Р1, а прерванный процесс связывается с идентификатором Р2. Каждый модуль и каждое устройство имеет свой приоритетный уровень. Выполнение программы может быть прервано в том случае, если устройство, выдающее сигнал прерывания, имеет приоритет больший, чем приоритет модуля, содержащего выполняемое в дан- ный момент утверждение. Таким образом, приоритет позволяет за- щищать переменные, общие для нескольких процессов, и обеспе- чить более быстрое выполнение модулей, критических ко времени. Язык Паскаль Язык программирования Паскаль разработан на основе язы- ков АЛГОЛ-60 и АЛГОЛ-W [14, 27]. При создании языка были решены две основные задачи. Во-первых, разработан язык, ориен- тированный на обучение программированию как систематической дисциплине, основанной на ряде фундаментальных понятий, отра- женных в языке. Во-вторых, осуществлена реализация языка на- дежного и эффективного при его использовании в существующих вычислительных средах, в том числе и на микроЭВМ [55]. Паскаль нашел применение также и как язык программирования системного математического обеспечения ЭВМ. Язык Паскаль обладает возможностями структурирования программ и данных. Синтаксис языка прост — большинство опе- раторов и объявлений начинаются с ключевого слова. Программа имеет вид объявления процедуры без заголовка процедуры. Каж- дая переменная должна быть объявлена, т. е. указывается иденти- фикатор и тип переменной. Тип может быть указан либо в объяв- лении переменной, либо с помощью идентификатора типа. В послед- 235
нем случае идентификатор типа описывается в явном определении типа. Основной тип данных — скалярный. В отличие от определяе- мых скалярных типов, существуют четыре стандартных типа: буле- вый, целый, символьный и вещественный. Тип может быть также определен как поддиапазон скалярного типа указанием наименьше- го и наибольшего значений поддиапазона. . | Структурные типы данных определяются в результате объяв- ления типа компонентов и метода структурирования. В Паскале различают 4 базисных средства для структурирования: массив, запись, множество и файл. В работе [27] Вирт указывает дополни- тельно в качестве метода структуру класса и в качестве стандартно- го типа — текстовый. Переменные, указанные в соответствующих декларациях, яв- ляются статическими. Они существуют во время выполнения про- граммы, в которой они объявлены. В отличие от статических пере- менных специальными утверждениями могут быть созданы и унич- тожены во время выполнения программы динамические переменные, на которые обязательно должны ссылаться указательные переменные. Указательные переменные, в свою очередь, могут ссылаться на Дру- гие указательные переменные, которые также создаются динамиче- ски и таким образом образовывать сложные графовые структуры. Операции в Паскале делятся на группы: арифметические — сложения, вычитания, изменения знака, деления, определения ос- татка; булевы —’отрицания, дизъюнкции (ИЛИ), конъюнкции (И); операции над множествами — объединения, пересечения и разно- сти множеств; отношения — равенства, неравенства, порядка, при- надлежности множеству. Результаты операций отношений являют- ся булевыми. I Утверждения присваивания и процедур являются компонен- тами или строительными блоками для структурированных утвер- ждений, которые определяют последовательное, выборочное или повторяющееся выполнение компонентов. Обозначения и терминология. Синтаксические конструкции обозначаются английскими словами (в справочнике используется русская терминология), заключенными в угловые скобки (и). Возможное повторение' конструкции размещают в фигурных скобках {и}. Символы {и} нигде в языке не используются, кроме обозначения комментария, и могут размещаться между любыми двумя идентификаторами, числами или специальными символами. Символьные пары (X и X) используются как синонимы к символам {и}, соответственно. Таким образом, комментарий — это {< любая последователь- ность символов, не содержащая "}" >} или (>< (любая последова- тельность символов, не содержащая "&)" ^-). В любом другом контексте символы {и} так же, как и символы : : = н |, являются метасимволами и используются для формально- го представления синтаксиса языка в соответствии с общеприня- той формой Бэкуса-Йаура [27]. Словарь Паскаля. Словарь языка состоит из основных симво- лов, которые разделены на три группы: буквы, цифры и специальные символы. (буква) :: = A]B;C!D|EiF|G;H.I,J К IJ.4 N О P,Q К,S T|U|V| W[X| Y|Z^^;cid!e'J|g|hji|jlk1ljm1n',ojplqiri s;t;u;v;w|x;y,z 236
(цифра): : = 0|Р2|3'Л|5|6|7|8[9 (специальный символ) :: = +1 — | *|/| = |( )|(|)|( = | ) = |(|) [ 111 (I} 1: = I • I, I: I ; I ' I f |di v|mod|ni 1]in| or | and | not | if | then | else | case | of | repeat) until | while | do j for | to | downto |begin(end) with | goto | coust | var | type (array | record) set | file | function j procedure (label | packed | program Идентификаторы и ключевые слова. Идентификаторы в Паска- ле служат для обозначения констант, типов, переменных, процедур й функций. Каждый идентификатор должен быть связан с одним объектом в области известности, т. е. внутри процедуры или функ- ции, где он объявлен, например, (идентификатор):: = (буква) {(буква)|(цифра)}. Рис. 7.1. Ключевые слова в языке — резервные. Они не могут быть иден- тификаторами пользователя и служат для распознавания трансля- тором различных типов исполняемых утверждений языка и объяв- ления: if (если) — условный оператор for (для) — циклический оператор record (запись) — тип данных запись и т. д. Данные Паскаля. Логические (булевы) значения указываются идентификаторами true и false. Целые числа имеют десятичное представление: 100, 1 — 415 и т. д. Вещественные и целые числа можно изобразить синтакси- ческим графом (рис. 7.1). В соответствии с источником [14], для представления синтаксического графа приняты следующие обозна- чения: О —терминальный элемент, О —синтаксический класс; — определяет выбор следующего элемента графа для построе- ния вывода. Строки состоят из п символов в кавычках типа packed array [1 ...n] of char (см. далее): 'PASCAL', 'PACKED ARRAY' и т. д. Константы в Паскале могут получать имена. Это делает про- грамму более наглядной и облегчает ее понимание. Объявление константы описывается следующим образом: (объявление константы) :: = const (идентификатор) = (константа)| {(идентификатор) = (константа);} const pl — 3.14 const delta — 0,998 const stroka = 'string' и т, д. 237
Простые типы данных. Тип данных определяет множество вначений, которые могут приобретать переменные данного типа. Объявление типа связывает идентификатор типа с некоторым типом данных: (тип) :: = (простой тип)|(структурированный тип) | (указательный тип) (определение типа) :: = type (Идентификатор) = (тип); {(идентификатор) = (тип);} Синтаксический граф для построения простого типа можно представить в виде, изображенном на рис. 7.2. Основной тип данных Паскаля является скалярным типом. Он определяется простым указанием множества значений, например, type music = (С, D, Е, F, G, А, Н, #, bem, dim, 7, 6, 9); Boolean = (false, true) Рис. 7.2. Поддиапазонпый тип определяется для любого другого опре- деленного ранее ассоциативного скалярного типа: type months = (January, February, march april, may, june, july, august, September, October, november, december); {scalar type} autumn = September .. november; {subrange type} Поддиапазонный тип позволяет экономно расходовать память микроЭВМ и обеспечивает контроль данных в период выполнения программы. К простым типам данных относятся также стандартные типы: integer, real, Boolean и char • Структурные типы данных и указательный тип. Правила построения утверждений для указания структурных типов и указа- тельного типа можно представить в формализованном виде с помо- щью синтаксического графа (рис. 7.3). Структурными типами являются: массив, запись, множество, файл. Массив состоит из фиксированного числа компонентов оди- накового типа, называемого базисным, или компонентным типом. Определение массива специфицирует как компонентный, так и индексный тип. Последний необходим для именования элементов массива. Например, утверждение: type ZETA = array [l..n, l..m] of real определяет тип ZETA — массив с компонентами типа real (пит — синонимы некоторых констант). 238
Для именования некоторого массива в программе используются индексы, которые в общем случае могут быть выражениями. На- пример, если в программе объявлен некоторый массив А и пере- менные i и j: var i,j: integer; A: ZETA; то обращение к ij-му элементу массива А записывается в програм- ме обычным образом A [i, j}. Запись — это структура, состоящая из конечного числа компонентов различного типа, называемых полями. Объявление типа запись содержит идентификатор и тип для каждого поля. Запись может содержать переменные поля, называе- мые вариантами. В определенных ситуациях конкретный вариант выбирается с помощью указания имени действительного поля. Для этого используются метки случая, которые являются константами вариантного типа. Список поля в объявлении записи строится в соответствии со следующими правилами: (список поля) :: = (фиксированная часть) | (фиксированная часть); (вариантная часть)| (вариантная часть) (фиксированная часть) :: = (секция записи) { ; (секция записи)} (секция записи) : : = (идентификатор поля){, (идентификатор поля)}: (тип) I (пусто) (вариантная часть) :: = case (tag поле) (идентификатор типа) of (вариант) {; (вариант)} (вариант) : : = (список меток случая) : ((список поля))-| (пувто) (список меток случая) :: = (метка случая) {, (метка случая)} (метка случая) ::= (константа) (tag поле) i : =(идентификатор) : | (пусто) 239
Следующий пример содержит объявление записи alfa, содер- жащей фиксированную часть и переменное поле, определяемое двумя вариантами. Имеем: type decision = (little, middle, large); tp = record 1, m: real end; alfa = record i: packed array [1..10] of char; j, k : real case s : decision of little, middle: (z: integer; x: array [1..10] of char); large : (f: Boolean; d : tp) end; Переменная часть записи alfa имеет структуру z : integer; x: array, [1..10] of char, если поле s содержит значение little или middle и имеет структуру f : Boolean; d: record 1, m : real end, если поле s содержит значение large. Обращение к определенному полю достаточно просто. Если Q — имя некоторой переменной типа alfa, то обращение к полям описывается следующим образом: Q.i = 'toys'; Q.j = 12.7; • Q.s = middle; Q.z = 107; и т. д. Для обращения к полям записи также может быть использова- но утверждение языка with, которое позволяет эффективно обраба- тывать поля структурной переменной, специфицируемой утвержде- нием with. Например, with Q. tp do begin i — 'toys'; j » 12.7; z= 107; m = 63.8; end {with). Множество определяет множество всех подмножеств зна- чений базисного типа, включая пустое множество. Базисный тип должен быть скалярным или поддиапазонным: type (идентификатор) — set of (базисный тип); type days=(mon, tue, wdn, thr, fri, str, sun); week = set of days; Операции над множествами достаточно просты: var х: days; v, у : week; {Объявление переменных} v = [mon, tue]; {операции над множествами v и у} х = tue; у = v — [х]; {и скалярной переменной х} Файл определяет структуру, состоящую из последователь- ности компонентов одного типа, содержащихся вне программы иа некоторых носителях информации. Число компонентов называется 240
длиной файла. Файл, не содержащий компонентов, называется пус- тым. Объявление файлового типа осуществляется следующим обра- зом: (объявление файлового типа) :: = type (идентификатор) = file of (тип); Например, утверждения: type data = file of integer; var a : data; объявляют файл а типа integer. Файлы могут быть локальными в программе или процедуре или существовать вне программы. В последнем случае они являются внешними файлами и передаются программе как параметры. Указательный тип используется для именования переменных, которые создаются динамически.процедурой new, а именно: (объявление указательного типа) :: ~ type (идентификатор) «= f(идентификатор типа) Например, утверждение type link — f person; объявляет указа- тельный тип link, который связывается с ранее объявленным типом person. Последующее утверждение var р : link объявляет указа- тельную переменную р, которая является указателем на динамиче- ски создаваемые переменные типа person. Объявление и обозначение переменных. Объявления перемен- • ных состоят из списка идентификаторов, за которыми следует их тип (рис. 7.4). Например, утверждение var i, j : integer; f: f real; z : alfa; объявляет переменные i и j стандартного типа integer, указатель- ную переменную f, которая может ссылаться на динамически созда- иаемые и уничтожаемые данные типа real и переменную z типа alfa. Тип alfa должен быть предварительно объявлен утверждением type. На рис. 7.5 изображен синтаксический граф формирования обозначений переменных в целом, компонентных либо ссылочных переменных. Переменная в целом обозначается идентификатором и к ней ссы- лаются указанием ее идентификатора. К компонентной переменной ссылаются посредством указания имени переменной, за которым следует селектор, выделяющий компонент. Форма селектора зависит от структурного типа пере- менной: (компонентная переменная) :: = (индексированная переменная)! (указатель поля) |(буфер файла) Индексированная переменная ссылается к компоненту п-мер- ной массивной переменной с помощью наименования этой перемен- ной, за которым следует п индексных выражений, например, abc [i + j, k], z [monday, tuesday, Wednesday], Указатель поля ссылается к компоненту записи с помощью имени записи, за которым следует идентификатор поля. Например, ссылка к полям переменной ор типа alfa .(тип alfa был объявлен 241
в одном из предыдущих примеров) выглядит следующим образом! op [j], i — к элементу поля i, op. j — к полю j, op. f — к полю f, если при создании записи поле s содержало значение large. Буфер файла адресуется буферной переменной, за которой еле- дует символ « f » и которая определяет текущее положение файла. Это положение, в свою очередь, определяет единственный компо- нент, подлежащий обработке в настоящий момент времени. Этот Рис. 7.5. компонент называется компонентом файла. Например, если объяв- лена переменная а типа file, то ссылаться к буферу файла можно посредством указания идентификатора a f . Ссылочная переменная определяется указательной переменной, которая прикрепляется к некоторому заданному типу данных. На- пример, утверждение var р : f Т объявляет указательную пере- менную р типа Т. Ссылочная переменная создается в программе динамически и именуется идентификатором указательной перемен- ной, за которым следует символ " f ", например pf , kl f , next, kl f . k2 f . price. Операции. Композиция выражений в Паскале определяется правилом следования операций в соответствии с четырьмя их клас- сами. Первой всегда выполняется операция not, затем мультипли- кативные, аддитивные операции и последними — операции отноше- 242
ний. Последовательность операций одного типа выполняется в обыч- ном порядке, т. е. слева направо. Операция not определяет отрицание некоторого булева опе- ранда. Мультипликативные операции: X, /, div, mod, and обеспечи- вают, соответственно, выполнение операций умножения или пере- сечения множеств, деления с округлением, получение абсолютно- го значения, логическую операцию «И». Аддитивные операции: + , — , or обозначают, соответственно, операции сложения или объединения множеств, вычитания или вычитания множеств, логическое «ИЛИ». Операции отношений, применяемые в языке Паскаль, пред- ставлены в табл. 7.2. ,7.2. Операции отношений в Паскале Операция Тип операндов Результат С " .и А" II Любой скалярный или поддиапа- зонный тип Булево значение » > in Любой скалярный или поддиапа- зонный тип' и множества этих же типов Операции < >, <=,> = соответствуют сравнениям на равен- ство, на меньше или равно и на больше или равно, соответственно. Операции <= и > = могут также быть использованы для сравнения значений типа множеств и в этом случае обозначают про- верку на включение множеств. Если операнды р н q представляют булевы выражения, то запись р = q означает проверку на эквива- лентность, а р < = q означает импликацию, т. е. что р влечет q (так как в Паскале принято: false < true). Операции отношений ==, <>, <, <=, >, > — могут быть использованы для сравнения упакованных массивов с компонентами типа char (т. е. для сравнения строк — strings). В этом случае вы- полняется проверка соответствия следования сравниваемых компо- нентов, порядок которых определяется алфавитной последователь- ностью. Указатель функции определяет активизируемую в данном месте программы функцию. Он состоит из идентификатора функции и списка параметров, включающего переменные, выражения, про- цедуры и функции. "Выражения, включающие операцию not, операции типа умно- жения, сложения, сравнения и вызова функций, запишутся в виде sin (x-f- у)+ 0.12 not (х and у or z) (а + b) > = с + d а = b and z or a Оператор присваивания предназначен для замены текущего значения переменной новым, задаваемым выражением: (перемен- ная) : = (выражение), где : — обозначает операцию присваи- вания. Выражение состоит из операндов (констант или перемен- 243
I ных), операторов и указателей функций. Вычисление выражений должно подчиняться правилам следования операторов. Приведем пример утверждений присваивания: rl : = pi х/у sgrr : = sqr (г) z : = sin (а) 4- cos (b) Ввод-вывод. В языке Паскаль для описания в программе вво- да-вывода информации определены понятия входных и выходных файлов, которые ассоциируются с некоторыми входными и выход- ными устройствами (вторичной памятью или периферией). Базис- ные операторы для обработки входных и выходных файлов следую- щие: reset (f) — присваивает f f значение первого элемента файла f. Значение функции eof (f) равно false, если файл не пуст. Если файл пуст, то значение f f неопределено, а значение eof (f) равно true (eof (f) — функция, определяющая состояние файла). rewrite (f) — текущее значение файла замещается пустым фай- лом (не содержащим информации). Значение eof (f) равно true, get (f) — следующий компонент файла присваивается в каче- стве значения переменной f f . Если файл прочитан и следующего компонента не существует, то значение f f неопределено и значе- ние eof (f) становится равным true. put (f) — передается значение буферной переменной f f в файл f. Операция выполняется, если eof (f) равно true. После операции значение f f неопределено. Для объединения операций над файлом и буферной переменной в языке определены еще два оператора read и write. Их запись в программе эквивалентна выполнению следующих утверждений: read (f, х) эквивалентно х: = f f ; get (f) write (f, x) эквивалентно f f := x; put (f) Приведем примеры объявлений и операций над файлами: 1. var с : file of alfa; a: alfa; = a; ] эквивалентно write (c, a); c f , put(c); 2. var i: file of integer; a : integer; a: = itq get(i); J эквивалентно read(i, a); Файлы, компонентами которых являются литеры, называются текстовыми файлами. Стандартный тип text определяется следую- щим образом: type text = file of char; в программе некоторый тек- стовый файл может быть объявлен так: var d : text. В зависимости от реализации языка некоторые литеры вход- ного или выходного текстового файла могут играть служебную роль, например, указывать пропуск строк, пропуск литер и т. д. Неко- торые стандартные процедуры . позволяют генерировать служеб- 244
иие литеры или распознавать их: writein (х) — оканчивает теку- щую выводную запись текстового файла х (переводит каретку при печати), readin (х) — переходит к чтению с начала следующей стро- ки, eoln (х) — проверяет, встречен ли конец текущей строки (если да, то х f содержит пробел). Стандартными входным и выходным файлами являются файлы input и output. Эти имена можно не указывать в операторах ввода- вывода и не объявлять переменные input f и output: write (ch) эквивалентно write (output, ch) read (ch) эквивалентно read (input, ch) writein эквивалентно writein (output) и т. Д. Во многих реализациях языка, если вывод осуществляется иа печать, то первый символ строки используется.для управления ка- реткой (этот символ не печатается): пробел: пропуск одной строки и переход к началу следующей; 'О': пропуск двух £трок и переход к началу следующей; '1':переход к началу следующей страницы; не выполняется перевод строки (продолжение печати). Структура программы. Любая программа на языке Паскаль состоит из заголовка и блока; т. е.: (программа) :: = (заголовок программы) (блок) (блок):: = (объявление меток) (объявление констант) (объявление типов) • (объявление переменных) (объявление процедур и функций) (часть, содержащая утверждения) Заголовок программы содержит имя программы и список парамет- ров, с помощью которых программа связывается с внешней средой, т. е.: (заголовок программы) : ; — program (идентификатор) ((имя файла) {,.... (имя файла)}*); Пример заголовка программы: program рг (input, output); Заголовок программы и блок могут быть представлены синтаксиче- скими графами (рис. 7.6). Алгоритм построения графика функции реализует следующая программа [14]: f (х) = ехр (—х) X sin (2 pi х), program graph 1 (output); constd}= 0.625; {1/16, 16 строчек в интервал [х, x-f-l]} s = 32; {32 символа в интервале [у, у + 1]} h = 34; {положение оси х} с = 6.28318; {2 X pi} Jim = 32 var х, у : real; i, n : integer; begin for i: = о to lim do begin x : = d X i; У : = exp (—x) X- sin (с X- x); h : = round (s X- y) + h; •Здесь и в дальнейшем символы {и} охватывают необязательные н рекур- сивно повторяющиеся конструкции и являются метасимволами, т, е, не являются символами языка Паскаль. Исключение составляют тексты программ, где {н} охватывают строки комментария. 245
repeat write (”); n ; = n — 1 until n = 0; writein (’>(<’) end end Рис. 7.6. Объявления констант в программе делает ее более удобочитае- мой и служит целям документирования. Операторы в программе выполняются в порядке их следования. Эта последовательность может быть нарушена выполнением опера- торов безусловного и условного перехода, операторов цикла. Оператор безусловного перехода указывает, что дальнейшая обработка должна выполняться с оператора, помеченного некого- 246
рой меткой. Метка представляет собой целое без знака, которое может содержать не более 4 цифр, она должна быть описана в дек- ларативной части программы и отделяться символом от помечен- ной инструкции: procedure В; label 1,30; begin 1 : writein ('err 1'); go’o 1; goto 30; 30 : writein ('err2') end Составной оператор определяет, что его компонентные утверж- дения выполняются в порядке их записи в программе. Составной оператор ограничивается символами языка begin и end: program bd (input, output); var a, b : real; begin read (a, b); sum : = a -J- b; writeln (sum) end. Точки с запятой разделяют операторы языка. Перед ограничите- лем end точка с запятой не нужна. Операторов цикла в Паскале три-, while,— .repeat—, for — утверждения. Цикл с предусловием while имеет сле- дующую форму: while ('выражение) do (утверждение). Выражение, определяющее условие повторения, должно быть булевым. Утверж- дение, размещенное после ключевого слова do, повторяется до тех пор, пока значение выражения не станет false, например: while к < 0 do begin h : = h Ц- 1/к; к : = к— 1 end В данном примере в операторе while размещен составной опе- ратор, состоящий из двух операторов присваивания. Цикл с постусловием repeat’ имеет следующую форму: repeat (утверждение) { ; (утверждение)} until (выражение). Последовательность утверждений между символами repeat и until выполняется, по крайней мере, один раз. Условие повто- рения последовательности утверждений определяется значением булевого выражения. Если значение выражения — false, то после- довательность утверждений больше не повторяется, например: repeat р (h): = р (hh); hh: = h; h: = p (h — 3); until h < = 0;. Данное утверждение корректно, если исходное значение h больше 0. Допустима запись составного утверждения между символами repeat и until. 247
Цикл с параметром for содержит параметр цикла, значение которого перед каждым повторением цикла сравнивается с заранее указанным конечным значением. Имеются две основные формы утверждения: for (параметр цикла) := (начальное значение) {©(конечное значение) do (утверждение) или for (параметр цикла) := (начальное значение) downto (конечное значение) do (утверждение) Параметр цикла, начальное значение и конечное должны быть одного и того же скалярного типа (исключая тип real). В случае, если для конструкции to (downto) начальное значение больше (мень- ше), чем конечное значение, то оператор for не выполняется. Опе- ратор for формы: for v : = el to е2 do s эквивалентен последо- вательности утверждений: if el <= е2 then bedin v : = el; s; v : = succ (v); s; . ..; v: = e2; s end и оператор for формы: for v: = el downto e 2 do s эквивалентен последовательности утверждений: if el > = e2 then begin v : = el; s; v : = pred (v); s; ...; v : = e2; s end Здесь функции succ (v) и pred (v) определяют преемника и предшест- венника скалярной переменной v, соответственно. Оператор if указывает, что составное утверждение после символа then выпол- няется, если значение выражения el < = е2 (el >• = е2 для вто- рого случая) true. Приведем пример: for i: = 1 to 5000 do begin tk : = tk + 1/(2 Xi -1); zk : = zk — 1/2 X i end Если переменная i скалярного типа integer, то оператор for запи- сано корректно и значение i после каждого очередного выполнения составного утверждения увеличивается на 1. Таким образом будет вычислено: tk: = tk + 1/(2 Xil-1)+ 1/(2 X2-l)+- • - 4- 1/(2 X5000 - 1) и zk : = zk — 1/2 X — 1/2 X 2 — • • • — 1/2 X5000. Условные операторы выделяют единственное из входящих утверждений для выполнения. Оператор if имеет следующие две формы: if (выражение) then (утверждение) или if (выражение) then (утверждение) else (утверждение). Выражение должно быть булевым. Первая форма эквивалентна второй в случае, если альтернативным утверждением является пустое утверждение. Если значение выражения true, 248
то выполняется~'утверждение, расположенное после символа then, иначе — после символа else (или следующее утверждение для пер- вой формы if) if i= j then к : = true else к : = false k: =i=j Два приведенных утверждения эквивалентны. Предпочтительнее запись в программе второго из них, так как оно короче и выполняет- ся быстрее. Оператор варианта case состоит из выражения, игра- ющего роль селектора, и списка утверждений, помеченных констан- тами, имеющими тот же тип, что и селектор: case ( выражение) of (список меток) : (утверждение); (список меток): (утверждение); end Оператор case выбирает для выполнения то утверждение из списка, расположенного между символами of и end, перед которым - Метка совпадает со значением, представляющим результат вычисле- ния выражения, например; case ch of . 'a', 'b', 'с' : ch : = succ (ch); 'd', 'e' : ch : = pred (ch); 'f', 'g' : (null case} end Если переменная ch типа integer и ее значением является лите- ра 'Ь', то результатом выполнения утверждения case будет присва- ивание переменной ch значения 'с', так как succ ('b') = 'с'. Процедуры и функции. Любая процедура или функция должна быть объявлена до ее вызова. Процедуры получают управление в результате выполнения операторов вызова процедур. Функции получают управление в результате появления в программе указа- телей функции и возвращают значение в точку вызова. Объявление процедур. Головная часть объявления имеет следую- щую форму: procedure (идентификатор) ((секция формальных параметров) {; (секция формальных параметров)}); Секция формальных параметров содержит имена формальных параметров, за которыми указан их тип. Вслед за списком секций располагается декларативная часть, которая объявляет объекты, локальные к процедуре (т. е. объекты, недоступные другим процеду- рам, ие объявленным в данной процедуре и недоступные программе). Приведем пример: procedure minmax(varg: list; varj, k: integer); var i : 1 . . n; u, v : integer; begin j: = g*[l]; k: = j; i:=2; while i < n do begin u : = g [Ц; v: = g [i -j- 1]; if u > v then begin if u>k thenk: = u; if v < j then j: = v end else 249
begin if v > к then к: = v; if u < j then j: = u end; i : = i 4-2 end if i: = n then if g [n] > к then к: = g [n] else if g [n] < j then j: = g [n] end; {minmax} В данном примере переменные i, u, v являются локальными в про- цедуре minmax. Переменные g, j, к являются параметрами. Кон- кретные значения параметров (действительные параметры) пере- даются процедуре оператором вызова процедуры, например, min- max (a, min 1, max 1). Формальные и действительные параметры должны быть одного типа. Соответствие между формальными и действительными пара- метрами достигается в результате нх правильного расположения в соответствующих списках. Может быть указано 4 типа парамет- ров: параметры-значения, параметры-переменные, параметры-про- цедуры (действительный параметр является идентификатором про- цедуры) и параметры-функции (действительный параметр является идентификатором функции). Для указания формальных парамет- ров-переменных используется символ var,— параметров-процедур— символ procedure, — параметров-функций —символ function. Если эти символы отсутствуют, то формальный параметр является параметром-значением й соответствующий действительный параметр в вызове может быть произвольным выражением. Например: program z (output); var a, b : integer; procedure h (x: integer; var у : integer); begin x: = x 4-1; у : = у 4~ 1J writein (x, y) end; begin a : = 0; b : = 0; h (a, b); writein (a, b) end. В данном примере параметр х объявлен как параметр-значение. Вычисленное значение не возвращается в вызывающую программу. Поэтому результатом выполнения программы являются следующие две строки: 1 1 0 1 Объявление функций ничем не отличается от объявления про- цедур», за исключением того, что за списком секций располагается указатель типа возвращаемого значения: function/идентификатор) ((секция формальных параметров) {; (секция формальных параметров)}) :(тип результата); 250
Вслед за заголовком функции размещается декларативная часть, содержащая объявления всех локальных объектов. Приведем пример: program rl (output); var х, у, n:integer; function g (m, n : integer) : integer; begin if n = 0 then g: = m else g: = g (n, m mod n) end; {g} procedure t(a, b : integer); begin writein (a, b, g(a, b)) end; {t} begin t (18, 27); t (312, 2142) end. В данном примере указатель функции размещается в выражении в объявлении функции. Это приводит к рекурсивному вызову функ- ции g, что допустимо в языке Паскаль. Операционная среда. Компилятор с языка Паскаль сам представляет Паскаль-про- грамму (для версии Pascal 6000—3.4 [27]). Заголовок программы имеет вид: program PASCAL (input, output, Igo); где input, output,' Igo — это стандартные файлы INPUT, OUTPUT н LGO, содержащие по умолчанию исходный файл, листинг и объектный код. Компилятор с языка Паскаль и поддерживающие программы периода выполнения вырабатывают диагностические сообщения на двух этапах: во время выполнения программы, вследствие избыточ- ности описаний данных в программе, и во время компиляции. Последовательность опций, располагающихся в тексте програм- мы и записываемых в виде строк комментария с первым символом $, управляет процессом компиляции: {$ (последовательность оп- ций )(любой комментарий)}. Пример-. {$Т +, Р+}. Опции разделяются запятыми. Плюс (+) означает активизацию опции, а минус (—) — выключение. За опциями могут также распо- лагаться цифры. Всего опций 7:Т — контроль типов, границ масси- вов, выполнения операций и т. д.; Р — генерация кода, необходи- мого для выполнения дампа в случае аварийного завершения про- граммы; Хп — загрузка дескрипторов действительных параметров на регистры (0 < = п < =6, Х2 — загрузка на первые два регистра, ХЗ — загрузка па первые 3 регистра и т. д.); Е — сохра- нение имен программных модулей в объектном коде; L — вывод листинга; U — расширение числа литер в строке в исходном тексте программы (если U," то число литер 120); Вп — определяет размер буфера для файла (1 < — п < = 9, размер буфера равен s > > 128 * п). Язык ЭДИСОН Язык может быть использован для обучения принципам парал- лельного программирования и для проектирования надежных про- грамм, выполняемых в реальном времени на мультипроцессорных системах. 251
Компилятор, написанный на языке ЭДИСОН, является частью операционной системы, написанной также как и компилятор на языке ЭДИСОН [72]. В язык ЭДИСОН включена более развитая концепция процес- сов по сравнению с языком Модула. В нем отсутствуют средства опи- сания процессов как таковых (подобно описаниям подпрограмм или иным описаниям), имеется возможность указывать, что опре- деленные команды должны выполняться параллельно друг другу. Это делается с помощью специального параллельного оператора. Так как эти команды могут быть вызовами процедур, то вызванные процедуры выполняются параллельно и представляют собой под- процессы исходного процесса, который приостанавливается до тех пор, пока не завершится последняя параллельная команда. Под- процессы не могут возвращать значений, например, параллельная команда не может состоять из вызова функции. Динамический за- пуск процессов запрещен, отсутствуют и средства выбрасывания процессов, т. е. операторы досрочного завершения процесса или группы процессов извне, из других процессов. Именованные объек- ты программы группируются в блоки двух типов: процедуры й мо- дули. Блоки могут размещаться в пределах других блоков, форми- руясь в гнездованные формы. Процедура — это группа именованных объектов и утверждений, которые описывают преобразования над операндами фиксирован- ных типов. Операнды, называемые параметрами, могут изменять значения от одного вызова к другому. Параметрами могут быть переменные или другие процедуры. Объекты, объявленные в про- цедуре,— локальные и не могут использоваться вне процедуры. Модуль — это группа именованных объектов, которые распа- даются на две категории: локальные объекты, которые могут ис- пользоваться только в модуле; и экспортируемые объекты, которые могут быть использованы как в пределах модуля, так и в непосред- ственно окружающем блоке. Переменные, локальные в модуле, инициализируются до их использования экспортируемыми проце- дурами. Модуль может содержать утверждения, которые выполня- ются сразу после инициализации объектов, объявленных в модуле. Программа н выполнение. Программа на языке ЭДИСОН состоит из объявлений констант, типов и единственной полной процедуры. Выполнение программы инициализируется как единственный процесс. Пример: const last = nl = char (10) proc copier (proc read (var c: char) proc write (c: char)) module var slot : char; full : bool X proc send (c : char) begin when not full do slot: = c; full: = true end end • X-proc receive (var c : char) begin when full do c : = slot; full : = false end end begin full := false end proc producer var x : char begin read (x); while x ( ) last do - send (x); read (x) end; 252
send (x) end proc consumer var у: char begin receive (y); while у ( ) last do write (y); receive (y) end; - write (y); write (nl) end begin cobegin Г do producer also 2 do consumer end end Данная программа определяет два процесса: producer и con- sumer, выполняемых параллельно. Процессы обмениваются данными через общий буфер, образуемый модулем (moduli}. Модуль содер- жит две экспортируемые процедуры для посылки (send) и приема (receive) символа, доступные из процедур producer и consumer. Зна- чение переменной full в модуле — true, если буфер slot содержит очередной символ для пересылки и, — false, если символ был уже передан.' Тело процедуры copier, представляющее полную процедуру, состоит из параллельного оператора, имеющего структуру; cobegin константа процесса 1 do список утверждений also константа процесса 2 do список утверждений also end Тип и значение констант процессов системно зависимы. Они могут, например, использоваться для выделения памяти процессу. Синхронизирующее утверждение реализует механизм, который обеспечивает параллельным процессам, защищенный от вмешатель- ства других процессов, доступ к общим переменным. Процесс вы- полняет синхронизирующее утверждение в две фазы: синхронизи- рующая — процесс приостанавливается до тех пор, пока хотя бы один из процессов выполняет критическую фазу; критическая —• вначале вычисляются булевы выражения, содержащиеся в списке условных утверждений; если хотя бы одно из них принимает значе- ние true, то выполняется последовательность связанных с выраже- нием утверждений, иначе не выполняется ни одно из иих, и процесо вновь выполняет синхронизирующую фазу. Структура синхронизирующего утверждения следующая: when булевое выражение 1 do список утверждений else булевое выражение 2 do список утверждений else .............................................. end ..................................... 253
Пример-. when free do x : = 1; free : = false else x > 0 do x : = x + 1 end Процесс завершает выполнение утверждений when, если выпол- нит список утверждений х : = 1; free: — false или х: = х + 1, иначе он вновь переводится в синхронизирующую фазу. 7.2. ЯЗЫКИ МИКРОПРОГРАММИРОВАНИЯ К языкам микрэпрограммировання низкого уровня относятся мнемоязыки, микроассемблеры и блочные языки [6, 33, 57, 60]. В мнемоязыках в полях микрокоманд размещаются мнемонические обозначения. Таким образом, переход от мнемоязыка к мнемоко- дам осуществляется путем простой замены мнемоники двоичными кодами [6, 33]. Микроассемблеры обрабатывают не только мне- монические микрокоманды, по и управляющие операторы редакти- рования и размещения. В процессе ассемблирования выполняется контроль ошибок и вывод листинга, диагностических сообщений и объектного микрокода. Наиболее известные микроассемблеры, используемые в системах автоматизации микропрограммирования ЭВМ Spectra |70/45 [63], Symens System 4004/35 [64], для МП LX-1 (язык ML) и др. Блочные языки позволяют строить сети связанных между собой блоков. Каждый блок сети определяет микрокоманду, а связи между ними — возможные последовательности микрокоманд в микропро- грамме [57, 58, 60]. Анализ производительности микропрограммирования показы- вает, что языки микропрограммирования высокого уровня (ЯМПВУ) позволяют выполнять разработку микропрограмм в 2—3 раза быст- рее, по сравнению с микроассемблерами, и в 5—12 раз быстрее, по сравнению с микропрограммированием в двоичных кодах [52]. ЯМПВУ позволяют повысить общий логический уровень микро- программирования и дают мощные средства не только для разра- ботчиков МПС, но и для пользователей. ЯМПВУ похожи на обычные языки программирования по та- ким характеристикам, как блочная структура, определение струк- тур данных, составные управляющие структуры и т. д. Однако имеются и отличительные особенности, такие как средства описа- ния структуры элементов ЭВМ, связей между элементами, выпол- няемых микроопераций и взаимной синхронизации работы. Транс- ляция в ЯМПВУ обычно выполняется в несколько этапов [64, 65, 71]: с языка ЯМПВУ в язык микрокоманд, с языка микрокоманд в язык управляющих логических диаграмм, с языка управляющих логических диаграмм в микрокоды. Для микропрограммирования используют языки описания оборудования ЭВМ и специальные ЯМПВУ. Языки описания обору- дования обычно перекрывают несколько уровней описания ЭВМ. Основное их назначение — решение задач автоматизации проек- тирования и имитационного моделирования работы ЭВМ. В настоя- щее время разработаны метакомпиляторы с языков CDL, CASS- ANDRE, ISP, MPQS [64, 65, 71], которые по описанию структуры ЭВМ и порядку функционирования ее элементов вырабатывают микропрограммные модули. Однако практика показывает, что экс- плуатация таких систем достаточно сложна, так как требует слиш- 254
ком много затрат на описание структуры ЭВМ и микропрограммных алгоритмов. Следовательно, эксплуатация подобных систем поль- зователями затрудняется. Специальные ЯМПВУ делятся на машинно-зависимые и ма- шинно-независимые [63]. Машины о-з авнсимыеЯМПВУне содержат средств для описания структуры ЭВМ. К таким языкам относятся языки SIMPL , PUMPKIN, MPL [67]. Трансляторы машинно-зависимых ЯМПВУ вырабатывают высокоэффективные микропрограммные мо- дули, поскольку учитывают специфику конкретной аппаратуры. Вместе с тем в ЯМПВУ реализован высокий логический уровень. Например, язык SIMPL наследует синтаксис АЛГОЛа-60. В язык SIMPL введены элементы структурного программирования: от- сутствует оператор GOTO, для обеспечения ветвлений исполь- зован оператор CASE, введены средства пересылки данных. М а ш и н н о-н езависимые ЯМПВУ предоставляют пользователю и разработчику программируемых МП и микроЭВМ средства, независимые от аппаратуры, где будут использоваться микропрограммы. При разработке ЯМПВУ данного типа ориенти- руются на классы микроЭВМ и МП, которые имеют сходные харак- теристики. Это позволяет повысить эффективность выходных микропрограммных модулей, поскольку при реализации трансля- торов фиксируются возможности аппаратуры данного класса. При- мерами подобных языков, применяемых-для микропрограммирова- ния ЭВМ с сильно кодированными МК, являются модификации языков БЕЙСИК, ФОРТРАН и ПЛ/М [63]. Развитие машинно-не- зависимых ЯМПВУ не получило еще достаточно широкого распро- странения [52]. Глава 8 СРЕДСТВА ПРОЕКТИРОВАНИЯ И ОТЛАДКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 8.1. ОБЩИЕ СВЕДЕНИЯ Разработка ПО для МПС имеет свои особенности и отличается от аналогичных работ, проводимых для больших ЭВМ или мини-ЭВМ. Исходной информацией для проектирования их программного обес- печения служит функциональная схема алгоритма, полученная на этапе постановки задачи и выбора метода ее решения. Современные микроЭВМ, как правило, содержат необходимые системные про- граммы, автоматизирующие процесс разработки и отладки ПО пользователя. Ряд микроЭВМ, программно совместимых с ми- нн-ЭВМ, позволяет без значительных изменений использовать си- стемное программное обеспечение последних: трансляторы, редак- торы, отладчики, сервисные программы. К таким микроЭВМ относится, например, «Электроника-60», позволяющая использовать значительную часть компонентов ПО мини-ЭВМ СМ-3, СМ-4 прн условии использования внешней памяти на гибких дисках или на дисках с фиксированными и съемными кассетами. Проектирование специализированных устройств, создаваемых на основе МП, называемых микропроцессорными контроллерами 255
(MflK), встречает ряд трудностей. В частности, микропроцессор- прототип, служащий основой для создания МПК или другой МПС не располагает ОЗУ достаточной емкости, не имеет внешних быстро- действующих ЗУ и УУ внешней памятью для реализации мощных средств автоматизации программирования. Зачастую микропроцес- сор-прототип не имеет панели управления и индикации для выпол- нения отладки вручную. В этом случае для проектирования ис- пользуют кроссовые и резидентные системы автоматизации проек- тирования и отладки. При создании ПО с помощью кроссовых средств учитывают особенности использования памяти микроЭВМ. Так, программы и константы обычно размещают в ПЗУ или ППЗУ, а переменные параметры — в ОЗУ. Переменными параметрами являются дан- ные, поступающие от объекта и к объекту управления, промежу- точные результаты вычислений, а также та часть базы данных уп- равляющей программы, которая динамически изменяется в процес- се функционирования системы (списки задач, очереди запросов на ввод-вывод, различные флаги и семафоры синхронизации). Посто- янными параметрами являются, например, исходная неизменяю- щаяся информация об объекте управления, адреса регистров дан- ных и регистров состояний УВВ, имена задач, определенные в мо- мент запуска системы, и т. д. Наиболее мощными кросс-системами являются системы на базе БЭСМ-6, ЕС ЭВМ, М-4030, М-220, М-6000, СМ-3, СМ-4 (для отечественных микроЭВМ «Электроника С5», «Электроника НЦ», «Электроника К», В7, СМ-1800 и МП К580ИК80). Среди резидентных систем наиболее известны: ПЛОС для микро- ЭВМ на базе МП К580ИК80, ПЛОС (резидентная САРП) для мик- роЭВМ «Электроника С5», резидентное ПО для микроЭВМ серии «Электроника К» [10]. Известными системами указанного примене- ния за рубежом являются RMX-80, IS1S-1I [66], FDS11 (система на гибких дисках) для МП RCA COSMAC 1800 иа микроЭВМ CDP18S805V2. 8.2. ОСНОВНЫЕ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Выделяют следующие этапы проектирования управляющих си- стем, на основе микроЭВМ или МПК [52]: постановка задачи; выбор варианта системы; проектирование и автономная отладка программно-аппаратных средств; комплексная отладка, включаю- щая испытания макета МПС, полунатурные и натурные испытания; оформление технической документации и приемо-сдаточные ис- пытания. На этапе постановки задачи и выбора варианта системы задачи, решаемые по созданию аппаратных и программных средств, взаимосвязаны [52, 68]. На этапе проектирования и автономной отладки программно-аппаратных средств основные структурные ре- шения уже приняты, и работы по созданию аппаратного и програм- много обеспечения могут вестись независимо. Это положение учи- тывается при создании средств проектирования систем на основе МПК. Типичным примером является описываемая ниже микропро- цессорная лаборатория Tektronix 8002 [68]. На резидентных системах автономную отладку программ вы- полняют с помощью программ отладки. Обычно эти системы рабо- тают в интерактивном режиме. Аппаратура микроЭВМ обеспечи- вает реализацию ряда команд для организации «точек прерывания» - или «точек разрыва» в программах пользователя. Примерами рези- £56
2ентиых программ отладки являются описываемые ниже програм- Ы отладки в ПЛОС «Электроника-60», отладчик, входящий в состав Операционной системы ФОДОС, а также отладчик FDT для ФОР- ТРАН-программ. Резидентные системы обычно не обеспечивают моделирования интерфейсов и периферийных устройств. Кроссо- вые моделирующие программы лишены подобного недостатка. Они выполняют интерпретацию каждой команды МП или микроЭВМ, легко компонуются с программами пользователя, моделирующими внешние устройства. В разделе 8.3 описана кроссовая моделирую- щая программа для МП К580ИК80, входящая в состав системы автоматизированного производства программного обеспечения мик- ропроцессоров (САППРОМ). Кроссовая моделирующая программа ориентирована на работу в интерактивном н пакетном режи- мах [42]. Пакетный режим эффективно использует ресурсы кроссовой вычислительной системы, однако в целом является менее гибким по сравнению с интерактивным режимом. Интерактивный режим обеспечивает пользователя средствами для управления про- цессом отладки в зависимости от получаемых данных. Однако в в этом случае ресурсы кроссовой ЭВМ используются не полностью. На кроссовой ЭВМ имеется возможность использования пакетного режима с программным управлением процессом отладки. Такой ре- жим позволяет организовать автоматическое управление процессом отладки, промоделировать операции ввода-вывода и внешние пре- рывания. Для его организации пользователь составляет программу отладки на одном йз языков программирования, поддерживаемом операционной системой кроссовой ЭВМ. Доступ к моделируемым -объектам обеспечивается использованием стандартных идентифика- торов моделирующей программы и совместной компоновки про- граммы отладки с моделирующей программой. Например, для иден- тификации счетчика команд используется имяСС, для доступа к регистрам — массив REG и т. д. Управление моделирующей про- граммой осуществляется путем засылки директивы в 80-байтовое поле с именем CARD и последующего обращения к внешней проце- дуре ENTER. После выполнения директивы управление возвра- щается программе отладки. Это же поле может использоваться для размещения «ответов» программы моделирования. Таким образом, программа отладки получает возможность ведения отладки в зави- симости от поведения моделируемого объекта 152]. Наиболее трудоемким этапом является комплексная отладка аппаратного и программного обеспечения. Комплексная отладка требует создания макета МПК или макета системы с использова- нием микроЭВМ. В последнее время наиболее широкое распростра- нение получили резидентные САПР. Такие системы создаются на основе микроЭВМ, программно совместимых с МП. Ряд систем по- добного типа содержит специализированные процессоры для выпол- нения эмуляции команд микропроцессора-прототипа. Примерами подобных систем являются резидентная отладочная система MDS-ICE-80, реализованная фирмой «Intel» (США), а также микро- процессорная лаборатория Tektronix 8002, реализованная фир- мой «Tektronix» (США). Обычно подобные системы содержат допол- нительную память для размещения пользовательских программ, специализированный процессор для моделирования и сбора данных, аппаратуру и программы для. наполнения ППЗУ или ПЗУ. На этапе комплексной отладки программ могут быть полезны- ми процедуры трассировки и отладки, встраиваемые в увправляю- щие программы универсальных и специализированных микроЭВМ. 257 9 и-451
Примерами организации встроенных отладочных средств'являются процедуры трассировки, входящие в состав системы управления процессами в реальном времени (СУП РВ), реализованной на базе микроЭВМ «Электроника-60», и средства отладки Монитора микро- ЭВМ «ВЭФОРМИКА». 8.3. СРЕДСТВА ДИАГНОСТИКИ И ОТЛАДКИ В процессе проведения отладки решаются следующие задачи! обнаружение и диагностика ошибок, устранение ошибок н коррек- тировка программ. Все перечисленные задачи решаются автомати- зированно.На долю человека приходится основная часть работы по планированию отладки, обнаружению ошибок, анализу, принятию решений и подготовке исправлений в программах и документа- ции. Вычислительная система должна обеспечивать выполнение программ, выполнение заданий, на тестирование, информирование оператора о ходе вычислений, сбор и накопление результатов тес- тирования программы, сохранение и редактирование исходных программ и данных. Использование любого из методов отладки предполагает определение контрольных точек в программе или в комплексе программ, а также соответствующих наборов ис- ходных данных (параметров) и эталонных значений результатов выполнения программы в контрольных точках.В качестве резуль- татов могут использоваться как результаты обработки исходных данных, так и характеристики функционирования самой программы. Процесс отладки проводят, используя следующие методы [32, 43J: проверки соответствия программ системе формализованных пра- вил; отладки по частным детерминированным реализациям тестов; отладки по статистическим характеристикам реализации тестов; отладки по статистическим характеристикам процесса функциониро- вания программ. Наиболее эффективно реализуется метод отладки по частным детерминированным реализациям тестов при наличии программ отладки, работающих в интерактивном режиме. Пользователь имеет возможность оперативно, по оценке получаемых результатов в контрольных точках, переходить к локализации ошибок на от- дельных*участках программы. Средства трассировки резидентных систем отладки и средства сбора информации моделирующих про- грамм позволяют автоматизировать процесс сбора данных как при реализации «детерминированного тестирования», так и при прове- дении отладки по статистическим характеристикам реализации тес- тов и характеристикам процесса функционирования программ. Программа-отладчик операционной системы ФОДОС Программа-отладчик, входящая в состав операционной систе" мы ФОДОС, позволяет выполнять следующие виды работ во время Выполнения отлаживаемой программы: просмотр содержимого лю- бой ячейки и занесение данных в ячейки, прогон всей отлаживае- мой программы или ее части до назначенных точек останова, поко- мандиый режим выполнения программы, поиск заданной информа- ции в ячейках памяти. Отладчик компонуется с программой пользователя, обрабо- танной Ассемблером в единый загрузочный модуль. Если Отладчик размещается перед программой пользователя, то в результате за- 258
пуека программы он получает управление. Возможны н другие ва- рианты загрузки и запуска Отладчика. Если Отладчик распола- гается за программой пользователя, то необходимо выяснить адрес загрузки Отладчика из карты загрузки и передать ему управление либо назначить адрес запуска Компоновщику. Примеры запуска Отладчика Отладчик компонуется перед программой Запуск Отладчика .LINK/МАР: /DEBUG PR0GR1 ,R PROGR1 .LINK/MAP : TT : PROGR2, ODT/TRANSFER Назначение точки за- TRANSFER SYMBOL?О.ODT .R PROGR 2 .LINK/MAP : TT : PROGR3, ODT пуска при компоновке. Запуск отладчика Компоновка программы пользо- вателя и Отладчика. Из карты загрузки пользователь выясняет адрес загрузки От- ладчика и передаёт ему управление .GET PROGR8 I Загрузка модуля .START 4102 I Запуск Отладчика Программа пользователя и Отладчик могут быть обработаны Компоновщиком отдельно. Затем обе программы загружаются, н управление передается Отладчику: .LINK/MAP : ТТ : PROGR4 .LINK/МАР:TT:ODT/BOTTOM : 3200 .GET PROGR4 .GET ODT .START 3482 Раздельная компоновка Загрузка программы пользо- вателя и Отладчика. Запуск Отладчика В данном варианте компоновки программ пользователь должен контролировать нижнюю границу загрузки Отладчика таким об- разом, чтобы области размещения отлаживаемой программы и От- ладчика не пересекались. Точки (останова) разрыва устанавливаются Отладчиком в про- грамме пользователя при обработке команд «о; G» и «К; Р». При обработке данных команд Отладчик размещает в отлаживаемой программе по указанным адресам команду ВРТ и запоминает пре- дыдущее содержимое ячеек. Программа пользователя выполняется до тех пор, пока не будет достигнута точка разрыва. При обработ- ке команды ВРТ управление получает Отладчик, который восстана- вливает содержимое ячейки и ожидает ввода очередной команды пользователя. Если точка разрыва ие удаляется во время выполне- ния останова и подана команда для продолжения выполнения про- граммы пользователя, то Отладчик организует выполнение восста- новленной команды, восстанавливает точку разрыва н передает управление программе пользователя. Регистры перемещения. Восемь специальных ячеек Отладчика предназначены для запоминания величин перемещения модулей, из которых может состоять программа пользователя. Эти значения вводятся пользователем и предварительно должны быть опреде- лены из карты загрузки, выдаваемой Компоновщиком во время объединения модулей и выработки единого загрузочного модуля. 9* 269
8.1. Форматы представления адресных выражений Наименование Форма? Значение выражения Абсолютный к Значением адреса является чис- ло К с Значением адреса является содер- жимое регистра константы (обоз- начается символом Q Относительный п, К Адрес определяется суммой содер- жимого регистра перемещения (п = 0, 1, 2, ... 7) и К С, к Адрес определяется суммой содер- жимого регистра перемещения, определяемого значением в ре* гистре констант (С), и числа К п, С Адрес определяется суммой содер- жимого регистра перемещения (п —' 0, 1, 2, ... 7) и содержимого регистра констант С, с Адрес определяется суммой содер- жимого реги тра перемещения, определяемого значением в реги- стре констант (С), и значения в регистре констант 8.2. Сводная таблица команд Отладчика операционной системы ФОДОС Формат команды Выполняемое действие А/ А\ т 1 1 Открыть ячейку слова А » ячейку байта А » следующую ячейку » предыдущую ячейку Закрыть ячейку AV© Г Открыть ячейку по относительному адресу » ячейку по абсолютному адресу » ячейку по смещению Возврат к прерванной последовательности Ип/ as/ Открыть регистр общего назначения п » регистр состояния программы пользова- теля ах/ Доступ к внутренним регистрам (X = М, Р, С, R, F, В) К; NR Запись абсолютного значения К в N-й регистр пе- ремещения
Продолжение табл. 8.2 Формат команды Выполняемое действие N! Вычисление смещения программы относительно N-ro регистра перемещения NR Вычисление смещения содержимого открытой A; NB ячейки относительно N-ro регистра перемещения Задание N-й точки разрыва по адресу А (0 < N < ;NB ав/ A; Q к; Р ;kS Удаление N-й точки разрыва Определение 0-й точки разрыва Пуск программы Продолжение выполнения программы (к — число пропусков точки разрыва)' Указание режима одиночных команд (к-команд до ;S ам/ к; W разрыва) Выход из режима одиночных команд Открыть маску поиска Найти слово, которое содержит код в разрядах, А; Е ас/ к; С ;F ;1 определяемых маской Найти исполнительный адрес А Открыть регистр константы Записать значение к в регистр константы » значение регистра «С» в блок памяти » младший байт регистра «С» в блок па- мяти A1/L А| 0 Z; кА Вычислить смещение ячейки А относительно AI Преобразование к, байтов с адреса Z в коды сим- волов КОИ-7 X Преобразование кодов слова открытой ячейки в символы Radix-50 Формат представления адресных выражений. Пользователь может указывать адреса в командах Отладчика в абсолютном или относительном форматах (табл. 8.1). Например, если значением регистра перемещения 4 является число 550, а в регистре констант С хранится число 4, то значением выражения С, С будет число 554. Значением выражения 4, С будет также число 554. Команды Отладчика делятся иа следующие семь групп: откры- тия, закрытия и изменения содержимого ячеек; обращения к ре- гистрам программы пользователя; обращения к внутренним регист- рам; управления; поиска и записи; вычисления смещения; допол- нительные команды печати. Перечень команд приведен в табл. 8.2. Примеры работы с командами Отладчика ОС ФОДОС: команда «открыть ячейку слова» выводит содержимое указанной ячейки; 1002/013 776; команда «задать точку разрыва» позволяет назначить или изменить точку разрыва: 2200; ЗВ; Задана точка разрыва с но- мером 3 по адресу 2200. 261
Программа отладки перфолентой операционной системы микроЭВМ « Электроника-60 » Программа отладки предназначена для отладки программ ноль» зователя в формате загрузочных модулей путем прогонки их задав* ными участками и проверки на ожидаемые результаты в назначен- ных точках разрыва. Все определения и набор команд те же, что и в программе От- ладчик операционной системы ФОДОС. Отличия незначительны. Таи. отсутствуют определение- регистра констант и команды, ориентире» ванные на его использование, дополнительные команды печати. Пе- речень команд ПО приведен в табл. 8.3. .8.3. Полный перечень команд ПЛОС микроЭВМ «Электроника 60» Формат команды Назначение и наименование команды А/ Открыть ячейку слова А А\ » ячейку байта А J_ » следующую ячейку ( » предыдущую » 1 Закрыть ячейку а Открыть ячейку по абсолютному адресу, разме- щенному в открытой ячейке — Открыть ячейку по относительному адресу Содержимое трактуется как индексное слово > Открыть ячейку по смещению. Младший байт трактуется как смещение команды ветвления < Открыть ячейку, следующую за ячейкой, к кото- рой была подана команда «>», «Й>» или «—» Пп/ Открыть регистр общего назначения п (п — 0 Ч- 7) as/ » регистр состояния программы Ср/ » регистр приоритета A; NB Задать точку разрыва по адресу А с номером N ;NB Удалить N-ю точку разрыва ав/ Определить точку разрыва с номером 0 A; G Пуск программы с адреса А к; Р Продолжение выполнения программы (к — число пропусков точки разрыва) ;KS Указание режима одиночных команд ;S Выход из режима одиночных команд ам/ Открыть маску поиска К; W Найти слово, которое содержит код «К» в разря- дах, определяемых маской А; Е Найти исполнительный адрес A1/LA; 0 Вычислить смещение от ячейки AI до ячейки А (L — содержимое ячейки А1, печатается програм- мой Отладки) 262
Загрузка и запуск. Программа отладки находится иа перфо- ленте в виде объектного модуля. Загрузочный модуль программы отладки компонуется совместно с программой пользователя или отдельно. При совместной компоновке полученный загрузочный модуль вводится в память ЭВМ с помощью Абсолютного загрузчика и авто- матически запускается с адреса загрузки (метка O.ODT). При раздельной компоновке вначале загружается программа пользователя, а затем ПО, которая автоматически запускается с адреса загрузки. После получения управления Программа отладки печатает на терминале точку «.» и ждет ввода команд, а при поступлении непра- вильной команды печатает знак вопроса «?» и повторяет вывод точки г.» Средства отладки микроЭВМ «ВЭФОРМИКА» При поставке ПО на перфолентах средства отладки содержит системная программа Монитор. Программа предназначена для реа- лизации следующих функций: манипуляции содержимым памяти и регистров; чтения и подготовки перфолент; выполнения и отладки прикладных программ; организации работы с устройствами ввода-вывода. Программа Монитор- занимает объем 2 Кбайта и размещается в ОЗУ по адресам D700—DFOOH. Кроме того, первые 16 байтов ОЗУ Монитор использует для хранения данных. Поэтому програм- ма пользователя должна начинаться с адреса большего, чем ЮН. Загружается Монитор нажатием кнопки «Сброс». Число отладочных директив ограничено (табл. 8.4). 8.4. Сводная таблица директив отладки Монитора микроЭВМ «ВЭФОРМИКА» Формат директив Назначение и выполняемые действия Cal, a2, a3 Сравнение содержимого массива, разме- щенного с адреса al по а2, с содержи- мым массива с адреса аЗ Dal, а2 Распечатка содержимого памяти с адреса al по а2 Gal, а2, аЗ Пуск программы с адреса al до точки останова а2 или аЗ I al текст (ВШ) Ввод символьной информации в ОЗУ и размещение с адреса al 0 al Вывод символьной информации из ОЗУ, начиная с адреса al, до символа «ВШ» Sal, Pl, ... , PN Замена содержимого памяти с адреса al побайтно данными pi, f$2 pN X Проверка и модификация регистров, где X символы регистров: А, В, С, D, Е, Н, L,.P, S, Р, F, I Сравнение содержимого двух областей памяти. Формат коман- ды: Са1,а2, аЗ, гдеа1 —начальный адрес массива 1; а2 конечный адрес массива 1; аЗ — начальный адрес массива 2, 263
Происходит побайтовое сравнение содержимого массивов. При равенстве информации сообщение ие выводится, а в противном слу- чае рассматриваются адреса и содержимое массивов. Распечатка содержимого памяти. Формат команды: Dal, a2f где al —начальный адрес массива, а2 — конечный адрес массива. Выполняется распечатка содержимого массива в 16-ричном формате. Передача управления. Формат команды: Gal, a2, a3, где а2, аЗ — адреса, до которых должна выполняться программа, al — адрес запуска программы. . , При достижении команды по адресу а2 или аЗ состояние про- цессора сохраняется и оператор может проверить или изменить со- держимое регистров и памяти. Прн передаче управления по адресу al происходит восстановление состояния процессора, сохраняемого для момента последнего прерывания. Любую программу можно прервать и выйти в Монитор нажа- тием кнопки «Прерывание 0». Запуск программы с точки прерыва- ния выполняется по директиве G. Параметры al, a2 или часть из них могут быть не указаны. Ввод символьной информации. Формат команды lai. Текст (ВШ), где al — начальный адрес массива заполнения. В массив, начиная с адреса al, заносятся символы Текста. Вывод символьной информации. Формат команды О al, где al — начальный адрес массива символьной информации. На устройство печати последовательно выводятся символы из массива с начальным адресом al до первого символа «ВШ». Замена содержимого памяти. Формат команды: S al, pi, Р2, PN, где al — начальный адрес памяти, 0» — данные для заполне- ния памяти с адреса al. Заполняется массив данными 01, 02, ... и т. д. с адреса al побайтно. Проверка и модификация регистров. В ответ на ввод иденти- фикатора регистра Монитор распечатает его содержимое: А — регистр А (8 бит) В— «В С— « С D— регистр D (8 бит) Е— « Е Н— « Н « L — '« L « Р — счетчик команд (16 бит) SP — указатель стека « F — регистр условий (8 бит) I — регистр маски прерываний Для модификации содержимого регистра следует набрать на консоли новое значение регистра в виде совокупности 16-ричных цифр. Если нет необходимости модифицировать содержимое реги- стра, то оператор набирает «пробел» и вводит идентификатор следую- щего регистра. Для завершения директивы следует нажать два раза клавишу «ВК». В последнем случае будет выведено на печать содержимое всех регистров. 264
Системы отладки С0-01, С0-02, СО-ОЗ, СО-04 Системы отладки СО-01, СО-02, СО-ОЗ, СО-04 [48] предназна- чены для автоматизации проектирования программно-аппаратных микропроцессорных средств на основе набора БИС серии 580, для их тестирования, для подготовки ввода, обработки вывода и хра- нения данных на стандартных носителях, а также для использо- вания в инженерных и научных расчетах. Каждая модификация системы отладки является модульным микропроцессорным комплексом, состоящим из аппаратных и про- граммных средств. В качестве базовой микроЭВМ в системах от- ладки используется устройство вычислительное специализиро- ванное УВС-01, выполненное на основе микропроцессорного набора БИС серии КР580 и БИС ЗУ серии К565, К556. Проектирование (отладка) МПС состоит из двух этапов: разра- ботки (отладки) аппаратных средств и разработки (отладки) при- кладного ПО, причем оба этапа в основном независимы друг от дру- га и могут выполняться параллельно. На первом этапе основной задачей разработчика является оп- ределение состава и выбор оптимальной структуры проектируемой МПС, оперативной и постоянной памяти, определение каналов Ввода-вывода и интерфейсных карт сопряжения с аппаратурой, в которую встраивается МПС с учетом алгоритма ее функциониро- вания. Этап разработки (отладки) прикладного ПО производится в две стадии. Сначала разрабатывается структурная схема н алго- ритм функционирования устройства, при этом большинство функ- ций возлагается на программный уровень, а аппаратные средства сводятся к минимуму. Затем на одном нз входных языков: ассемб- лере или ПЛ/М реализуется алгоритм, причем реализация может быть осуществлена как самой системой отладки, так и с помощью кроссовых средств. Окончательная отладка программы выполняет- ся на системе отладки с подключением к ней разрабатываемой МПС и использованием реальных сигналов обмена между МПС и аппара- турой пользователя. Завершающим этапом разработки (отладки) МПС является запись отлаженных программ в постоянную память с помощью программирующего устройства, входящего в состав системы. На рис. 8.1 приведена упрощенная схема отладки проектируе- мой МПС. Программное обеспечение системы отладки состоит из рези- дентных и кроссовых средств. Резидентное ПО включает: монитор (хранится в ПЗУ УВС-01); ассемблер; редактор текстов; интерпретатор БЕЙСИК; компилятор; ПЛ/М; библиотеку подпрограмм; систему тестов. Кроссовое ПО для ЭВМ СМ-3, СМ-4 и М6000 включает: кросс- ассемблер и моделирующую программу. Память системы образована двумя модулями ОЗУ (объем 65536 байт), модулем ПЗУ (объем 4096 байт), в котором располо- жена управляющая программа МОНИТОР и «теневым» ПЗУ (объем 256 байт), в котором расположен программный, загрузчик си- стемы. В системах СО-ОЗ, СО-04 память расширена до 512 Кбайт уст- ройством внешней памяти (УВП-01). На УВП-01 поставлена дис- ковая операционная система ISIS-II. В системе отладки СО-04 устройство внутрисхемное эмулирующее (УВЗ-01) обеспечивает воз- 26а
Рис. 8.1.
Отлаженное устройство
можность отлаживать аппаратуру и программы е использованием не макетов устройств системы пользователя, а их модулей, с выпол- нением функций моделирования ресурсов и процессов отлаживае- мой системы. Эмулятор позволяет собирать для исследования сле- дующую информацию: содержимое регистров и управляющих вы- водов эмулируемого процессора; состояние процессора, информа- цию на шинах адреса и данных за последние 44 цикла эмуляции! содержимое ячеек памяти. В течение работы эмулятора-осуществ- ляется аппаратный контроль за состоянием узлов эмулятора и си- стемы пользователя. На кроссовой ЭВМ МПС представляется в виде некоторой мо- дели, реализуемой моделирующей программой, содержащей сле- дующие объекты: образ МП, включающий регистры и триггеры; образ слова состояния, указатель стека, счетчик команд; образ памяти микроЭВМ УВС-01. Для выполнения отладки программ разработан язык директив отладки, который насчитывает 24 директивы. Типы директив языка отладки моделирующей программы: загрузки-выполнения (позво- ляют вводить в образ памяти ЭВМ объектную программу и запус- кать процесс моделирования программы); изменения и индикации значений объектов модели (позволяют изменять и распечатывать значения образов регистров МП, состояния битов условий н т. п.); слежения за объектами модели (эта группа включает директивы, по которым при выполнении определенных условий распечатывается содержимое моделирующих регистров, указанных областей памяти, производится трассировка отдельных участков программы); пре- кращения процесса моделирования; сбора статистики и оценки па- раметров функционирования программ и др. -Основным достоинством кроссовых средств является то, что этап создания программы может быть выполнен до этапа создания аппаратуры или параллельно с ним, что сокращает общее время раз- работки системы. К недостаткам кроссовых средств следует отнести то, что про- граммное моделирование иногда не может полностью заменить отладку на самой МПС, так как при этом сложно до конца преду- смотреть реакции на внешние воздействия в реальной отладочной системе. Кроме этого, к недостаткам кроссовых программ следует отнести необходимость работы иа двух ЭВМ и в двух ОС. Отладка ПО с использованием резидентных системных про- грамм рекомендуется как основной метод отладки. Имея резидент- ное ПО, пользователь может с помощью редактора текстовой инфор- мации подготовить на микроЭВМ программу иа одном языке, от- транслировать ее с помощью макроассемблера и загрузить объект- ный модуль в память с помощью монитора. Затем, используя отла- дочные возможности монитора, программист добивается алгорит- мической правильности программ. Таким образом, весь технологи- ческий цикл подготовки прикладных программ производится на - СО. Монитор СО включает средства, облегчающие отладку програм- мы пользователя. Основные возможности монитора по отладке про- грамм сводятся к следующему: индикация и модификация содержи- мого памяти или содержимого регистров центрального процессора; выполнение программы с указанного адреса; остановка выполнения программы по достижению определенного адреса, определенной команды или при выполнении заданного условия. По желанию пользователя параллельно с выполнением про- граммы может производиться ее трассировка. 267
Система тестов СО обеспечивает проверку правильности функ- ционирования системы отладки в целом и отдельных отладочны» модулей, В случае неисправности выдается сообщение об ошибке, позволяющее определить характер неисправности. Процедуры трассировки в Управляющей программе для микроЭВМ « Электроника-60 * Процедуры трассировки предназначены для вывода информа- ции о состоянии задач пользователя в точках разрыва программ без остановки их выполнения, а также для организации периодическо- го сбора информации в указанных областях памяти и отображении этой информации на терминале. Средства трассировки включаются пользователем в СУП на этапе генерации ядра и мультипрограм- много пакета. 26b
Состав средств трассировки. Средства трассировки состоят из трех функциональных компонентов: программы инициализации трассировки; процедуры обработки запросов на трассировку; соб- ственно процедуры трассировки. Программа инициализации трассировки оформляется в виде задачи, входящей в состав мультипрограммного пакета. Она запра- шивает ввод с терминала исходной информации для организации трассировки. Обращение к терминалу выполняется через Суперви- зор ввода-вывода [40]. Как только в результате диалога с пользова- телем сформированы управляющие таблицы запросов на выполне- ние трассировки, программа инициализации выставляет запросы [62] на выполнение трассировки к УП. Пользователь может и не включать программу инициализации трассировки в свой пакет. В этом случае запросы на трассировку должны поступить из его про- грамм. Два остальных компонента, если необходимо проводить трас- сировку, должны быть обязательно включены в УП при ее генера- ции. Процедура обработки запросов на трассировку получает управление от обработчика запросов, обрабатывает управляющие таблицы запросов и формирует данные для работы двух процедур Восстановление команды в точке разрыва г-18- V-операция на семафоре защиты НО г-19 Восстановление регистров Восстановление регистров ГИ- Установка Т-разряда Выход из прерывания 1-12 г13 Выход из прерывания По команде RTT Прерывание по Т-разряду 14-------‘----- Сохранение регистров в стеке задачи Восстановление команды ВРТ в программе Рис. 8.2. трассировки. Первая из про- цедур трассировки получает управление в результате об- работки точки разрыва, орга- низованной в программе по- льзователя процедурной об- работки запросов на трасси- ровку. Вторая процедура трассировки включается пери- одически, в тот момент, ког- да исчерпывается очередной квант времени, назначенный в запросе. 269
Алгоритм, реализуемый процедурой трассировки в точках раз- рыва. Процедура трассировки располагает таблицей установленных точек разрыва. Таблица представлена смежными ячейками, в ко- торых располагаются команды, извлеченные из программ пользо- вателя процедурой обработки запросов на трассировку в момент обработки запроса на установку точки разрыва, и абсолютные адре- са этих команд. На место извлеченной команды процедурой обра- ботки запросов подставляется команда ВРТ (программное прерыва- ние). На рис. 8.2 показана структурная схема алгоритма, реали- зуемого процедурой трассировки в точках разрыва. Прерывания по команде ВРТ обрабатывает процедура трасси- ровки в точках разрыва. Состояние прерванной задачи запомина- ется и выполняется P-операция на системном семафоре. Р-опера- ция на семафоре защиты делается для защиты процедуры трасси- ровки, которая является в УП критическим ресурсом. Таким 270
образом, процедура трассировки в некоторый момент времени мо- жет обслуживать команду ВРТ только в одной задаче. Остальные задачи блокируются на семафоре защиты. P-операция на системном семафоре выполняется для синхронизации запросов к драйверу Ввода-вывода или к Супервизору ввода-вывода. Чтобы ускорить процесс обработки ВРТ-команды, приоритет текущей задачи повы- шается (блок 4). Если адрес команды ВРТ не содержится в табли- це установленных точек разрыва (блок 6), то процедура трассировки не реагирует на эту команду и обеспечивает выход из прерывания на следующую команду прерванной программы (блоки 16—20). При этом восстанавливаются состояния регистров, приоритет за- дачи и освобождаются критические ресурсы (V-операции). Если адрес команды ВРТ содержится в таблице установлен- ных точек разрыва (блок 6), то выполняется трассировка (вывод со- общения) и подготовляется выполнение команды, которая была за- менена кодом команды ВРТ (блоки 7—11). Выход из прерывания (блок 12) по команде RTT обеспечивает прерывание после выпол- нения восстановленной команды по Т-разряду. Процедура трасси- ровки получает управление (блок 13), запоминает состояние прер- ванной задачи, восстанавливает ВРТ-команду в программе (блоки 14, 15), освобождает критические ресурсы и возвращает управле- ние следующей команде прерванной задачи (блоки 16—20). Алгоритм процедуры трассировки по времени. Процедура трас- сировки по времени располагает счетчиком времени и адресом таб- лицы запроса. Счетчик времени содержит текущее значение вре- мени (число прерываний таймера), оставшегося до момента вывода трассы. Когда выводится сообщение (трасса) о состоянии указанных областей памяти, то значение счетчика восстанавливается из таб- лицы запроса. Процедура трассировки по времени так же как и про- цедура трассировки в точках разрыва имеет несколько входов (рис. 8.3). Процедура вызывается «службой времени» УП через точ- ку входа, соответствующую блоку 1. В это время система прерыва- ния закрыта. Если оказывается, что момент времени соответствует Рис. 8.3. 271
В.5. Директивы отладки в САППРОМ Группы Директива Назначение Загрузки-выпол- нения JLOAD GO Загружает скомпилирован- ную программу с указанно- го устройства Указывает начало интерпре- тации с заданного адреса Изменения и ин- дикации значе- ний объектов LET MEMORY CPU DISPLAY TIMER Устанавливает значение ре- гистров, таймера и тригге- ров процессора Записывает информацию в память Выводит на печать содер- жимое регистров и тригге- ров Выводит на печать содер- жимое областей памяти Выводит на печать текущее значение счетчика реального времени Слежения за объектами WATCH TRACE ' BRANCH Указывает области памяти для контроля Задает области трассировки программы Задает трассировку команд ветвления Прекращения моделирования PCAR ALTER/REFER AVALUE BVALUE INTERVAL Указывает список контроли- руемых адресов для прекра- щения моделирования по вы- полнению команды (PCAR) Указывает список контроли- руемых адресов для прекра- щения моделирования по за- писи (ALTER) и по чтению записи (REFER) Указывает останов по зна- чению типа адрес Указывает останов типа байт Указывает останов по вре- мени Сбора статистики STAT COUNT STAT GET Инициирует сбор статистики Выводит результаты сбора статистики 272
Продолжение табл. 8.5 . Группы Директива Назначение Отмены отладоч- ных функций CANCEL TTY RDR Отменяет отладочные функ- ции Переключает входной поток директив на устройство свя- зи с оператором Переключает входной поток директив на устройство вво- да с перфокарт Моделирования ввода-вывода и прерываний PORT GET RST Создает образ порта Моделирует сигнал преры- вания Управления таб- лицей символи- ческих имен ADD DELETE Включает символ в таблицу символических имен Удаляет символ из таблицы символических имен тому моменту, который назначен для вывода трассы, то создается временная задача с приоритетом, установленным при генерации (блоки 1—13). Эта задача управляется Диспетчером УП и выполняет вывод сообщения о состоянии заданных областей памяти (блоки 14^-22). Затем задача самоликвидируется, и в УП остаются только задачи пользователя. Создание временной задачи необходимо, что- бы синхронизировать доступ к критическому ресурсу: драйверу для вывода сообщений или к Супервизору ввода-вывода, поскольку Р- и V-операции могут выполняться только над объектами заданной структуры — дескрипторами задач. Кроссовая моделирующая программа для МП К580ИК80. Моделирующая программа (эмулятор) является ядром подсистемы отладки, входящей в состав САППРОМ [42] — систему автомати- зированного производства программного обеспечения микропро- цессоров. Эмулятор программно моделирует работу МП К580ИК80, а также выполняет заданные пользователем отладочные функции. Подсистема позволяет выполнять отладку в терминах исходного языка, на котором составлена программа, поскольку объектный модуль сопровождается таблицей символов, содержащей идентифи- каторы, используемые в исходной программе, и соответствующие им адреса моделируемой памяти. Процесс отладки в САППРОМ разбивается на отдельные шаги. На каждом шаге могут быть введены директивы отладки, которые задаются в следующем виде: (директива) :: = (имя директивы) (операнд);. Терминальные символы разделяются пробелами. От- ладка и исполнение программ осуществляются в интерактивном или в пакетном режимах. При интерактивном режиме директивы вводятся с консоли оператора. При пакетном режиме план отладки задается двумя способами: фиксированной последовательностью директив, подготовленной заранее и вводимой с устройства систем- ного ввода; с помощью программы отладки, составленной на одном из языков программирования инструментальной ЭВМ, Директивы отладки САППРОМ приведены в табл. 8.5, 273
8.4. ПРОГРАММНЫЕ И АППАРАТНЫЕ СРЕДСТВА ПРОЕКТИРОВАНИЯ СИСТЕМ НА ОСНОВЕ МИКРОПРОЦЕССОРОВ Программно-аппаратные средства для построения систем авто- матизации проектирования МПС можно разделить на две группы. Первая группа базируется на использовании больших или мини- ЭВМ, программно не совместимых с разрабатываемыми МПС. Вто- рая группа средств базируется на использовании мини- или микро- ЭВМ, программно совместимых с выбранным типом МП. В первом случае система автоматизации проектирования называется кроссо- вой или внешней, во втором — резидентной или внутренней [52]. Кроссовые системы предоставляют пользователю мощные ОС, большой объем памяти для выполнения моделирования и вычисле- ний, развитую периферию для ввода и вывода данных, документи- рования, средства для создания, хранения и доступа к наборам данных. Однако кроссовые системы не предоставляет средств для комплексной отладки ПО и аппаратуры МПС и устройств. Попытки решения этой задачи вызывают значительные трудности. Резидентные системы автоматизации проектирования свободны ог указанного недостатка. Однако в случае их использования проектировщики вынуждены идти иа затраты, связанные с приобре- тением САПР. Построение резидентных САПР МПС возможно раз- личными способами. На ранних этапах создания подобных систем базировались иа концепциях использования одной мини- или микроЭВМ для размещения системного ПО и отлаживаемых прог- грамм проектируемой системы [52, 42]. Таким системам свойствен- ны следующие недостатки: отсутствие средств для реализации ре- жимов отладки в реальном времени; общее поле памяти отладоч- ных и отлаживаемых программ, что затрудняет реализацию на- дежной защиты памяти; большие затраты, связанные с перестрой- кой ПО системы проектирования при изменении типа МП, исполь- зуемого при проектировании. В настоящее время все большее распространение получают системы, использующие аппаратуру для моделирования работы ми- кропроцессора-прототипа МП, используемого для построения неко- торой МПС. Впервые идея аппаратной эмуляции была реализована фирмой Intel. Системы, использующие аппаратную эмуляцию, в на- стоящее время поставляются на рынок фирмами, выпускающими МП, а также фирмами, занятыми разработкой МПС [68]. Резидентная отладочная система MDS-ICE-80 фирмы “Intel” Отладочная система MDS-ICE-80 представляет собой универ- сальную микроЭВМ, реализованную иа основе МП модели 8080А [66]. Помимо стандартной периферии, микроЭВМ содержит подси- стему моделирования — внутрисхемный эмулятор (ВСЭ) и ПО для выполнения отладки и моделирования. ВСЭ MDS-ICE-80 состоит из следующих блоков: компаратора, мультиплексора, ОЗУ для за- поминания отладочной трассы, ПЗУ, регистра управления, тай- мера, генератора, устройств управления шиной и эмуляцией, МП 8080, устройства управления шииой пользователя, схем со- пряжения и 40-контактного разъема. В режиме моделирования МП 8080 ВСЭ полностью заменяет микропроцессор-прототип. Через 274
схемы сопряжения и 40-коитактный разъем ВСЭ взаимодействует с памятью и внешними устройствами микропроцессора-прототипа. В режиме управления ВСЭ через регистр управления принимает команды от процессора системы MDS и выполняет эти команды и команды программы-монитора, размещенные в ПЗУ ВСЭ. Во вре- мя эмуляции в ОЗУ ВСЭ запоминается информация о состоянии магистралей, адреса, данных, МП ВСЭ в каждом такте. В любой момент времени сохраняется информация о последних 44 тактах, выполненных МП ВСЭ. Компаратор во время моделирования осу- ществляет сравнение адресов выполняемых, команд с заданными адресами в режиме управления или другие проверки, определяемые СО. Совпадение заданных кодов или сигналов приводит к переклю- чению режима функционирования МП ВСЭ — он переходит в режим управления. Микропроцессор MDS получает от МП ВСЭ информа- цию о трассе выполнения программы (последовательности состоя- ний на магистрали ВСЭ), а также о данных в ячейках и регист- рах микропроцессора-прототипа и МП ВСЭ. В процессе моделирования ВСЭ может использовать как память MDS, так и память микропроцессора-прототипа. Карта адресов ВСЭ содержит информацию о состоянии каждого сегмента адресуе- мой памяти микропроцессора-прототипа. Для каждого сегмента указывается, размещен он в микропроцессоре-прототипе или в MDS. Карта адресов загружается в режиме управления ВСЭ. В режиме эмуляции обращение к сегментам производится через блок управлений шиной пользователя. Попытки обращения к за- прещенным сегментам приводят к переводу ВСЭ в режим управле- ния; старшие четыре разряда адреса модифицируются и выполня- ется обращение к памяти MDS. Таким образом, вся память мик- ропроцессора-прототипа или ее часть может моделироваться памятью MDS. Общение пользователей с системой обеспечивают следующие директивы отладочной системы MDS : BASE — установка индика- ции; CALL — моделирование системы прерываний пользователя; CHANGE — изменение содержимого памяти и регистров; CON- TINUE — продолжение эмуляции с прерванной команды; DISP- LAY — отображение содержимого памяти регистров микропроцес- сора-прототипа и содержимого ОЗУ трассировки ВСЭ; EQUATE — пополнение таблицы символов и определение их значений; EXIT — завершение моделирования — передача управления монитору MDS; FILL — запись в область памяти заданного значения; GO — за- пуск моделирования;.ЕОАО — загрузка таблицы символов и объект- ных кодов с устройства ввода; MOVE — обмен информацией меж- ду полями памяти; RANGE — определение зоны трассировки с вы- водом значений регистров; SAVE — вывод таблицы символов и объ- ектных кодов; SEARCH — поиск ячеег? в памяти с указанным со- держимым; STEP — выполнение в режиме эмуляции заданного числа команд; TIMEOUT — установка или запрещение задержки в работе микропроцессора на 0,25 с; XFORM — установка карты адресов. Микропроцессорая лаборатория Tektronix 8002 Tektronix 8002 {68] предназначена для проектирования МПС и микроЭВМ, может использоваться с различными типами МП. На рис. 8.4 представлен технологический цикл разработки МПС с использованием микропроцессорной лаборатории. 275
Рис. 8.4. Исследование различных микропроцессоров. Tektronix 8002 обеспечивает моделирование нескольких типов различных МП. Может быть выполнено исследование и сравнение наборов инструк- ций и архитектурных особенностей, скорости обработки команд, возможности управления вводом-выводом. 276
Формулировка функций прототипа. Определяются функции, реализуемые проектируемой МПС. На основе информации о вы- бранном типе МП разрабатываются алгоритмы, реализующие эти функции, и определяются задачи, выполняемые программами и ап- паратурой. Спецификации на каждый из проектируемых компонен- тов документируются и хранятся на гибких дисках, которые под- держиваются системой Tektronix 8002. Проектирование программного обеспечения. Программы разра- батываются с использованием ассемблера Tektronix 8002. Файлы для редактирования, трансляции и отладки хранятся на гибких дисках. После устранения синтаксических ошибок и трасляции программные модули выполняются яа моделирующем процессоре. Программа может выполняться под управлением системы отладки. При этом обеспечивается пошаговое исполнение или выполнение команд блоками, прерывания в результате обработки событий, ввод и вывод данных в процессе отладки. Проектирование аппаратных компонентов. Как только разра- ботана очередная аппаратная цепочка, она подсоединяется к моде- лирующему процессору через микропроцессор-прототип. Для экс- периментов используются тестовые программы, хранящиеся иа гибких дисках. Сборка микропроцессорной системы. Как только все компонен- ты аппаратуры прототипа собраны, моделирующий процессор под- соединяется к выводам аппаратуры прототипа через выбранные управляющие разъемы. Программы загружаются в память Tek- tronix 8002, и начинается совместная отладка программ и аппа- ратуры. Отладочная система и анализатор функционирования в ре- альном времени используются для контроля совместной работы про- грамм и аппаратуры МПС. Активизация программируемой памяти и выпуск готовой си- стемы. По окончании тестирования работоспособности системы про- граммы пересылаются в аппаратуру, обеспечивающую заполнение программируемой памяти. Для управления этим процессом исполь- зуется специальная программирующая система. После заполнения памяти микропроцессор-прототип отсоединяется от Tektronix 8002 и программируемая память объединяется с логическими1 компонен- тами. Таким образом, МПС готова к эксплуатации. Аппаратные и программные компоненты микропроцессорной лаборатории Tektronix 8002. Tektronix 8002 содержит: три МП (си- стемный, ассемблерный и моделирующий), 16 Кбайт системной аппаратной памяти, 64 Кбайт оперативной памяти для размещения программ, управляющую шину для подключения прототипа, сис- тему программирования программируемой памяти, интерфейс RC-232-C с тремя портами ввода-вывода, гибкие диски, видеотерми- нал, устройство построчной печати. Системный микропроцессор выполняет: управление вводом- выводом, файлами (организация, хранение, загрузка пользователь- ских и системных программ и данных), редактирование текстовых файлов; отладку, которая заключается в выполнении отладочной программы и контроле моделирующего процессора посредством специальной аппаратуры; общий сервис такой, как обмен сообще- ниями между системными периферийными устройствами, контроль устройств и т. д., управление системой программирования постоян- ной программируемой памяти и контроль ее функционирования. Ассемблерный микропроцессор выполняет программу ассемб- лер. Все команды ввода-вывода обрабатываются системным процес- сором. 277
Моделирующий микропроцессор обеспечивает выполнение про- грамм, предназначенных для управления системами 8080, 6800, Z 80, 8085 и 9900. Системная аппаратная память (16 Кбайт) представляет собой динамическую память с произвольной выборкой. К ней имеет дос- туп только системный процессор. Память служит для размещения системных программ TEKDOS (дисковой операционной системы Tektronix). Оперативная память для размещения программ может наращи- ваться модулями по 16 Кбайт. Максимальный объем памяти — 64 Кбайта. Память используется для размещения программ пользова- теля во время выполнения моделирующим микропроцессором, а также как буфер во время редактирования. Управляющая шина для подключения прототипа состоит из кабеля, электрических схем, обеспечивающих интерфейс для раз- личных типов МП и 40-точечного разъема. Управляющая тина обеспечивает 3 режима работы системы во время моделирования: системный режим, если моделирующий процессор выполняет про- гонку программ, размещенных в оперативной памяти системы; частичную эмуляцию, если моделирующий процессор выполняет программы, размещенные в памяти программ системы и в памяти, микропроцессора-прототипа (все сигналы ввода-вывода и данные поставляет аппаратура прототипа); полную эмуляцию, если моде- лирующий процессор выполняет программы, полностью размещен- ные в памяти микропроцессора-прототипа (все управляющие сигналы ввода-вывода и данные обеспечивает аппаратура прото- типа).
СПИСОК ЛИТЕРАТУРЫ 1. Автоматизированные системы моделирования логических элементов — устройств цифровых вычйслительных машин /Л. П. Фельдман, А. К. Поляков, В. В. Лапко и др.— К.; Донецк: Вища шк. 1976.— 360 с. 2. Аналоговые и цифровые интегральные схемы / Под. ред. С. В. Якубовского.— М.: Сов. радио, 1979,— 336 с. 3. Артюхов В. Л., Копейкин Г. А., Шалыто А. А. Настраивае- мые модули для управляющих логических устройств.—Л.: Энер- гоиздат, 1981.— 168 с, 4. Балашов Е. П., Григорьев В. Л., Петров Г. А. Микро- и мини-ЭВМ.— Л.: Энергоатомиздат, 1984.— 376 с. 5. Балашов Е. П., Пузанков Д. В. Микропроцессоры и микро- процессорные системы.— М.1 Радио и связь, 1981.— 328 с. 6. Баранов С. И., Марин А. В. Языки микропрограмми- рования. // Зарубеж. радиоэлектроника.— 1977.— № 6.— С. 85—103. 7. Бедрековский М. А., Волга В. В., Кручинкии Н. С. Микро- процессоры,— М.: Радио и связь, 1981.—'96 с. 8. Бедрековский М. А., Кручинкии Н. С., Подолян В. А. Мик- ропроцессоры.— М.: Радио и связь, 1981.— 72 с. 9. Береза А. В., Париюк О. А., Тесленко А. К. Разработка программного обеспечения семейства унифицированных контрол- леров и микроЭВМ.— К.: О-во «Знание» УССР, 1980.— 25 с. 10. Березенко А. И., Корягин Л. Н., Назарьян А. Р. Микро- процессорные комплекты повышенного быстродействия.— М.: Ра- дио и связь, 1981.— 168 с. 11. Бигдай Л. К. Язык управления технологическими объек- тами типа теплоэнергоблока (СПАЛТ) D Тр. Всесоюз. конф, по программированию.— К.: — 1968.— С. 39—52. 12. Вёйцман К- Распределенные системы мини- и микроЭВМ.— М.: Финансы и статистика, 1983.— 382 с. 13. Викетрем К- Новые разработки операционных систем для микроЭВМ // Применение микропроцес. техники.— 1984.— Вып. 3 — С. 12—18. 14. Вирт Н. «Модула-2»: Языки программирования.— М.: На- ука, 1985.— С. 3—47. 15. Вирт Н. Язык программирования Паскаль/7 Алгоритмы и организация решения экономических задач.— М.: Статистика, 1974.—С. 38—67. 16. Возможности построения систем на базе микроЭВМ: Элек- троника-60 / В. Д. Борисенко, В. С. Лопатин, В. В. Талов и др. //Электрон, пром-сть.— 1979.— № 11.— С. 17—19. 17. Гафаров П. М. Архитектура однокристальной микроЭВМ /Под ред. А. А. Васенкова, Л. А. Федотова // Электрон, и полупро- водниковые приборы.— 1982.— Вып. 6.— С. 52—61. 18. Горн Л. С., Хазанов Б. И. Элементы микромощных цифро- вых устройств.— М.: Атомиздат, 1980.— 56 с, 279
19. Григорьев В. Л. Программное обеспечение микропроцес- сорных систем.— М.: Энергоатомиздат, 1983.— 208 с. 20. Гринкевич В. А., Данилов Г. А., Оболенский А. Е. БИС серии 583 и особенности построения микропроцессорных систем иа их основе: Приклад, информатика / Под ред. В. М. Савинкова.— М.: Финансы и статистика, 1982.— 199 с. 21. Грнс Д. Конструирование компиляторов для цифровых-' вычислительных машин.— М.: Мир, 1975.— 456 с. 22. Гришин Ю. П., Казаринов Ю. М., Катиков В. М. Микро- процессоры в радиотехнических системах.— М.: Радио и связь, 1982,— 280 с. 23. Дамке М. Операционные системы микроЭВМ.— М.: Фи- нансы и статистика, 1985.— 147 с. 24. Донован Дж." Системное программирование.— М.: Мир, 1975.— 340 с. 25. Иванов Ю. В., Маслеииоков Ю. А. Вопросы проектирова- ния систем автоматизации разработки программ для микроЭВМ //Управляющие системы и машины.— 1978.— Xs 5.— С. 39—40. 26. Измерение параметров цифровых интегральных микро- схем / Под ред. Д. Ю. Эйдукаса, Б. В. Орлова.— М.: Радио и связь, 1982.— 368 с. 27. Йенсен К-. Вирт Н. Паскаль: Руководство для пользова- теля и описание языка.— М.: Финансы и статистика, 1982.— 151 с. 28. Кан К- С. Принципы построения малой операционной си- стемы для микропроцессоров // Тр. Ин-та инженеров по электронике и радиоэлектронике.— 1978.— № 2.— С. 125—134, 29. Карпов В. Я. Алгоритмический язык ФОРТРАН.— M.I Наука, 1976.— 192 с. 30. Карцев М. А., Брин В. А. Вычислительные системы и син- хронная арифметика,— М.: Финансы и статистика, 1981.— 360 с, 31. Комплекс технических средств «Электроника МС0401»: Программное обеспечение. Операциоииая система ДОС. Руковод- ство программиста.— 265 с. 32. Липаев В. В. Проектирование математического обеспече- ния АСУ.— М.: Сов. радио, 1977.— 400 с. 33. Малиновский Б. И., Палагии А. В., Иванов В. А. Микро- программное управление И Управляющие системы и машины.— 1973,— № 1.— С. 3—9. 34. Микропроцессорные БИС и микроЭВМ: Построение и при- менение / А. А. Васенков, Н. М. Воробьев, В. Л. Дмхунян и др.— М.: Сов. радио, 1980.— 280 с. 35. Микропроцессорные комплекты интегральных схем: Со- став и структура / В. С. Борисов, А. А. Васенков, Б. М. Малаше- вйч и др.— М.: Радио и связь, 1982.192 с. 36. Микропроцессоры в энергетике / О. И. Башнин, В. В. Буе» вич,.В. Е. Каштелян и др.— Л.: Наука, 1982,— 191 с. 37. Микропроцессоры. Системы программирования и отладки /В. А. Мясников, М. Б. Игнатьев, А. А. Кочкин и др.— М.: Энерго- атомиздат, 1985.— 272 с. 38. МикроЭВМ «Электроника С5» и их применение / М. П. Галь- перин, В. Я. Кузнецов, Ю. А. Маслеиииков и др.— М.: Сов. ра- дио, 1980.— 160 с. 39. Овечкин Ю. А. Микроэлектроника.— М.: Радио и связь, 1982.— 288 с. 40. Операционная система управления процессами для микро- ЭВМ «Электроиика-60» / Г. Г. Бондарович, А. В. Олехнович, 280
г. t I в. в . 'Плотников и др.//Электронная техника. Сер. Экономика ? и системы упр.— 1982.— Вып. 4.— С. 20—23. i ! 41. Основы построения технических средств ЕС ЭВМ на ин- । тегральных микросхемах / Под ред. Б. Н. Файзулаева.— М.: Радио । и связь, 1981.— 288 с. I 42. О средствах создания МО микропроцессорных систем I /Я- И. Барсук, А. Н. Колесников, Г. И. Корниенко и др. // Кн- | бернетика.— 1979.— № 4.— С. 41—46. f 43. Отладка систем управляющих алгоритмов ЦВМ реального времени / Под ред. В. В. Липаева — М.: Сов. радио, 1974.—328 с, 44. Погорелый С. Д., Слободянюк Т. Ф. Программное обеспече- ние микропроцессорных систем: Справочник.— К.: Техн1ка, 1985.— 240 с. 45. Полупроводниковые запоминающие устройства и их при- менение / Под ред. А. Ю. Гордонова.— М.: Радио и связь, 1981.— 344 с. j 46. Савченко А. М. Элементная база персональных ЭВМ [ //Зарубеж. электрон, технйка — 1985.— Вып. 5.— С. 3—45. 47. Салтыков А. И., Макаренко Г. И. Программирование на языке ФОРТРАН.— М.: Наука, 1976.— 256 с. i 48. Системы отладки СО-01, СО-02, СО-ОЗ, СО-04. Техническое , -.описание и инструкция по эксплуатации. 1982.— 168 с. л 49. Соботка 3., Стары Я- Микропроцессорные системы.— М.: Энергоиздат, 1981.— 494 с. 50. Соучек Б. Микропроцессоры и микроЭВМ,— М.: Сов. ра- I дио, 1979,— 517 с. I 51. Справочник по интегральным микросхемам / Под ред. i Б. В. Тарабрина.—ГМ.: Энергии, 1980.— 816 с. 52. Справочник" по цифровой вычислительной технике: Про- । грам. обеспечение / Под ред. Б. Н. Малиновского.— К.: Техн1ка, 1981.— 207 с. 53. Таиеибаум. Многоуровневая организация ЭВМ.— М.: I Мир, 1982,— 547 с. 54. Титце У., Шенк К. Полупроводниковая схемотехника.— М.: Мир. 1982,— 512 с. 55. Уокерли Дж. Архитектура и программирование микро- ЭВМ.—М.: Мир, 1984.— 2 т. 56. Фортран ЕС ЭВМ.— М.: Статистика, 1978.— 400 с. 57. Хассов С. Микропрограммное управление.— М.: Мир, 1974— 477 с. 58. Хилбурн Дж., Джулич П. МикроЭВМ н микропроцессоры.— М.: Мир, 1979.— 464 с. 59. Хьюз Дж., Мичтом Дж. Структурный подход к программи- рованию.— М.: Мир, 1980.— 278 с. 60. Чу Я. Организация ЭВМ и микропрограммирование.— М.: Мир, 1975— 592 с. 61. Шоу А. Логическое проектирование операционных си- стем— М.: Мир, 1981.— 360 с. 62. Экхауз Р., Моррис Л. Мини-ЭВМ: Орг. д программирова- ние.— М.: Финансы и статистика, 1983.— 359 с. 63. Agravala А. К., Rautcher Т. G. Microprogramming Perspe- ctive and Status// 1ЦЕЕ Trans.— 1974.— № 8.— p. 817—837. 64. Ancean F. CASSANDRE: A Language to desribe Digital Systems Applicatiln to Logic Design//Software Engineering, 1970.— Vol. 1—P. 179—204. 65. Brendt H. Trend in Microprogramming Language Design //Infotech State of the Art Report, 1975— P. 241—259. 281
66. ISIS-II. User’s Guide // Santa Clara, Intel Corporation.— 1979.— P. 3—53. 67. Hansen P. B. Edison — a Multiprocessor Language // Soft- ware]— Practice and Experience.— 1981.—№4.— P. 325—361. 68. Lane C., Ito M. R. MPL-85. A High Level Microprogram- ming. Language Compiler. COMPCON 75, 11-th IEEE Trans, on Computers, 1975.— 500 p. 69. Lenk D. Handbook of Microprocessors: Microcomputers and Minicomputers. Prentice — Hall, 1979.— 404 p. 70. Sammet J. Programming Languages: History and Future //Comm. ACM.— 1972,—№ 7.—P. 601—610. 71. Shultz D. The Intel Fortran-80-compiler for the 8080 and 8085 // SIGPLAN Notices.— 1979,— № 4,— P. 64—76. 72. Siewiorek D. Introducing ISP // Computer.— 1974.— № 12,— p. 215—222. 73. Wirth N. Modula: a Language for Modular Multiprogram- ming//Software— Practice and Experience.— 1977.— № 1.— P. 3—35.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Автомат цифровой 11 Адаптер магистральный 1883ВА4 145 Адресация 8 Ассемблер 167, 197, 209 Ассемблирование условное 179 Блок внутренних регистров 5 т- интерфейса 5 ---- 1802ВВ2 144 микропрограммного управ- ления 581ИК2-133 ---- 584ВУ1 76 ---- 589ИК01 95 — обмена. 1802ВВ1 143 — приоритетного прерывания 589ИК14 104 Блокировка 9 Быстродействие ИМС 11 Ветвление команды 8 Выражение абсолютное 173 — внешнее 173 — глобальное 173 — комплексное перемещаемое 173 — перемещаемое 173 Генератор адресов 583ИК1 58 — тактовый 536ГГ1 128 Дескриптор задачи 170 Дешифратор кода операции 7 Директивы ассемблера 197 — кодовых макросов 192 — макроассемблера 196 — оператора 157 — условной трансляции 181 Загрузчик аппаратный 151 — начальный 151 Задач взаимная защита 150 —взаимодействие 150 — синхронизация 150 Идентификатор 215 Интерфейс внешний 7 — внутренний 7 — периферийных устройств 580ИК55 16 — последовательный 536ИК4 129 — связи 580ИК51 14 Канал прямого доступа 8 Кодовые макросы 130 Команды арифметические 8 — вспомогательные 8 — логические 8 — пересылки 8 Комментарии 215 Коммутатор магистральный 583ХЛ1 63 Компонент ИМС 10 Компоновщик 154 Контроллер ввода-вывода 8 — прерываний 580ИК59 17 — прямого доступа 580ИК57 16 — состояний 584ВГ1 86 КорпусЛДМС 10 Коэффициент объединения по входу И --------выходу 11 — разветвления 11 Кросс-транслятор 147 Логика отрицательная 11 — положительная 11 Макроассемблер 172, 195 Макрокоманда 157, 183 — системная 194 Макроопределение 182 Макропериода операторы 186 — переменные 186 Макросредства языка 182 Матрица программируемая ло- гическая 9 Микропрограммирование двух- уровневое 9 Микропроцессор 5 — ассемблерный 277 — коммутационный 583КП1 60 — логический 583ВМ1 53 — многокристальиый 7 — моделирующий 278 — модульный 5 — однокристальный 5 --1801ВМ1 142 ----1810ВМ86 144 — прототип 274 — системный 277 — специализированный 5 — универсальный 5 283
Микросхема интегральная 10 МикроЭВМ однокристальная 1801ВЕ1 141 Модуль 167, 226, 252 — загрузочный 167 — объектный 167 Мощность потребляемая fl Набор микропроцессорный 5 Номеронабиратель 145ИК8 124 Обмен данными 8 Обозначения ИМС условные 11 Оверлейная структура 151 Операционная система (ОС) 148 — базовая 164 —диалоговая 164 — дисковая (ДОС) 148, 150 — для управления в реальном времени 148 — общего назначения 148 — перфоленточная 166, 171 — специального назначения 148 Операционная среда 233, 251 Отладка автономная 257 — комплексная 257 Отладочная система 274 Память двусторонняя (актив- ная) 9 — программируемая 278 — системная аппаратная 278 — управляющая 587РП1 140 — 1883РТ1 145 Параметры действительные 250 — фактические 183 — формальные 183, 250 Приемопередатчик магистраль- ный 583КП2 63 Приоритетный уровень 235 Программы диск-резидентные 150 — обрабатывающие 147 — управляющие 147, 153, 168 Программное обеспечение крос- совое 146 — — резидентное 146 — —системное 146 ------ специальное 146 Процедура (ы) 220, 225, 252 — трассировки в точках раз- рыва 270 — трассировки по времени 271 Процессор 145ИП11 124 — 582ИК1 134 — 582ИК2 134 — 584ВМ1 68 Расширитель арифметический 587ИКЗ 140 ------ 1802ВР1 142 —1883ВР2 145 Реализация схемно-технологи- ческая 10 Регистр адреса микрокоманд 10 — буферный 536ИР1 130 ------ 589ИР12 109 — индексный 6 — команд 7 — общего назначения 6 ------ 1802ИР1 142 — прямого доступа 7 — результата 7, — состояния 7 — стека 6 ' — указателя стека 7 Семафоры защиты 150, 170 Серия ИМС 10 Сигналы управляющие внутрен- ние 7 Синтаксический граф 237 Синтаксические конструкции 236 Синхронизация по доступу 273 Синхронизирующее утвержде- ние 253 Сопрограммы 234 Способ адресации абсолютный 176 — —автодекрементный 174 ----автоинкрементный 174 ----дуальный 177 ----индексный 174 ----косвенный регистровый 173 ----непосредственный 175 ----относительный 176 ----регистровый 173 — — стековый 176 Степень интеграции 10 Структура данных запись 239 ------------массив 206, 216, 238 ------ стек 207 ------таблицы 207 Схема комбинационная 11 — ускоренного переноса 589ИК03 103 Счетчик команд 7 Таймер 536ИК5 130 — программируемый 580ИК53 15 Трассировка 267 Типы данных 215, 238 — базисные 223 284
— простые 215 — скалярные 236 — сложные 216 — структурные 236, 238 — указательные 241 Точки разрыва (останова) 167 259 Умножитель однотактный 587ИКЗ 140 — последовательный 583ВС2 45 ----- 1802ВР2 142 Устройство арифметическое 587ИК2 139 ----1802ВС1 142 — — 1883ИА0 145 — арифметико-логическое 5 ---- 536ИК1- 129 ----536ИК9 130 — ввода-вывода 8 — запоминающее микропро- грамм 7 — — оперативное 5 —-----586РУ1 138 ---- полупостояиное 5 — — постоянное 5 ------ 586РЕ1 1-37 ------1801РЕ1 142 — микропрограммного управ- ления 536ИК6 130 •— многофункциональное 589ХЛ4 109 — обмена информацией 587ИК1 139 • — периферийное 7 — управления 7 ----145ХК4 128 ----АЦП 536ИК6 130 — — вводом-выводом 536ИКЗ 129 ------586ИК2 136 Файл 240 Формат абсолютный двоичный 154, 168 — загрузочного модуля 154 — перемещаемый 154 Формирователи шинные 589АП16 99 --589АП26 99 Функции переключательные 11 Шина адреса 7 — данных 7 — общая 6 — управления 7 Шифратор клавиатуры 536ИВ1 129' Элемент ИМС 10 Элемент процессорный 581ИК1 132 —центральный 580ИК80 17 ------583ВС1 44 ------ 586ИК1 134 ------ 589ИК02 91 Эмулятор 267 Ядро ОС 150, 153, 164 Язык внешний 146 — внутренний 146 — директив 164 — макро 185 — микропрограммирова- ния 254 — программирования проб- лемно-ориентированный .— процедурно-ориентиро- ванный 214 Языковый процессор 147
ОГЛАВЛЕНИЕ Стр. Предисловие ........................................ 3 ЧАСТЬ I. АППАРАТНЫЕ СРЕДСТВА МИКРОПРОЦЕССОР- НЫХ СИСТЕМ..............................................5 Глава 1. Микропроцессорный набор серии 580 ...... 14 1.1. Состав микросхем серии 580 ..................... 14 1.2. Система команд микросхемы ИК-80................. 20 1.3. Выполнение команд в микропроцессоре серии 580 ... 20 Глава 2. Микропроцессорные наборы серии 583 и 584 ... 44 2.1. Центральный процессорный элемент ВС1 серии 583 . . 44 2.2. Логический микропроцессор ВМ1 серии 583 .... j 53 2.3. Структура и функции других микросхем серии 583 . . 58 2.4. Процессор ВМ1 серии 584 ......................... 67 2.5. Микропрограммное управление в микросхемах серии 584 76 2.6. Контроллер состояний ВГ1 серии 584 .............. 86 Глава 3. (Микропроцессорный набор серии 589 .......... 91 3.1. Состав, структура и функции микросхем серии 589 . . 91 3.2. Особенности организации микроЭВМ на основе микросхем серии 589 .............,............................ 112 Глава 4. Микропроцессорные наборы серий 145, 536, 581, 582, 586—588, 1800—1802, 1804, 1810, 1883 ....... 124 4.1. Микропроцессорные наборы серий 145, 536, 581 для спе- циализированных микроЭВМ .............................124 4.2. Назначение и структура микросхем серий 582, 586—588 . 134 4.3. Микропроцессорные серии 1800—1802, 1804, 1810, 1883 141 ЧАСТЬ II. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ МИКРОПРОЦЕС- СОРОВ И МИКРОЭВМ .....................................146 Классификация ПО по средствам реализации............146 Классификация ПО по целевому назначению системы про- граммирования и уровню входного языка . . . . . . 147 Глава 5. Операционные системы микроЭВМ 148 5.1. Общие сведения ..................................148 5.2. Дисковые операционные системы общего назначения . . 148 Фоновая-основная дисковая операционная система реального времени (ФОДОС) ....................................150 Дисковая операционная система вычислительного комплекса «Экран» (ДОС/F).....................................153 Дисковая операционная система для «Электроники К.1-10» . 157 Операционная система СР/М............................. 164 Операционная система UNIX...........................164 5.3. Перфоленточные операционные системы..............166 Перфоленточная операционная система микроЭВМ «Электро- ника-60» ...........................................166 Управляющая программа для микроЭВМ «Электроннка-60» 168 Перфоленточная операционная система для микроЭВМ «ВЭФОРМИКА» ...................................... 171 286
Глава 6. Ассемблеры микропроцессоров и микроЭВМ . ... 172 6.1. Форматы операторов ................................172 Основные способы адресации ...........................173 Символические имена ..................................179 6.2. Условное ассемблирование...........................179 Условное ассемблирование в ассемблере для микроЭВМ «Электроника-60» в ОС ФОДОС......................... 180 Условное ассемблирование в AL/F.......................182 6.3. Макросредства ассемблеров..........................182 Макросредства языка ассемблера на микроЭВМ «Электро- ника-60» в ОС ФОДОС...................................182 Макросредства ассемблера микроЭВМ «ВЭФОРМИКА» в опе- рационной системе ДОС/F ..............................185 Механизм кодовых макросов ASM-86......................190 Макропроцессоры, независимые от входного языка . . . 192 6.4. Программирование на Ассемблере................... 195 Макроассемблер микроЭВМ «Электроника-60»..............195 Ассемблер К580 197 Ассемблер ASM-86 .................................... 209 Глава 7. Языки программирования высокого уровня . . . 214 7.1. Универсальные процедурно-ориентированные языки . . 214 Язык ПЛ/М.............................................215 Язык Модула-2.........................................221 Язык Паскаль..........................................235 Язык ЭДИСОН...........................................251 7.2. Языки микропрограммирования........................254 Глава 8. Средства проектирования и отладки программного обеспечения ........................................... 255 8.1. Общие сведения ....................................255 8.2. Основные этапы разработки программного обеспечения . 256 8.3. Средства диагностики и отладки.....................258 Программа-отладчик операционной системы ФОДОС . . 258 Программа отладки перфолентной операционной системы мик- роЭВМ «Электроника-60»................................262 Средства отладки микроЭВМ «ВЭФОРМИКА».................263 Системы отладки СО-01, СО-02, СО-ОЗ, СО-04 265 Процедуры трассировки в Управляющей программе для микроЭВМ «Электроника-60».............................268 8.4. Программные и аппаратные средства проектирования систем на основе , микро процессоров....................274 Резидентная отладочная система MDS-ICE-80 фирмы «Intel» 274 Микропроцессорная лаборатория Tektronix 8002 , . . 275 Список литературы.......................................279 Предметный указатель................................ , 283
Справочник специалиста Александр Артемьевич Молчанов, д-р техн, иауя Виктор Иванович Корнейчук, канд. техн, наук Владимир Петрович Тарасенко, каид. техи. наук Дмитрий Алексеевич Россошинский, канд. техн, иауи * « Справочник по микропроцессорным устройствам Редакторы И. М. Корнильева, Е. К. Артеменко Оформление художника Л. А. Дикарева Художественный редактор В. С. Шапошников Технический редактор С. В. Иванус Корректор Г. А. Высоцкая Информ, бланк № 2523 Сдано в набор 16.10.86. Подписано в печать 01,04.87. БФ 31386. Форма* 84 X 108/32. Бумага типогр. 3. Гарн. лит. Печ. выс. Усл. печ. л. 15.1S. Усл. кр.-отт. 15,33. Уч.-изд. л. 20,23. Тираж 80 000 экз. Зак. 6-451. Цена 1 р. 20 к. Издательство «Текн1ка>, 252601, Киев, 1, Крещатик, 5 Книжная фабрика нм. М. В. Фрунзе, 310057, Харьков-57, Донец-3ахаржев« ского, 6/8.