/
Author: Соучек Б.
Tags: компьютерные технологии вычислительная техника микропроцессоры электроника электротехника эвм микро эвм
Year: 1979
Text
МИКРОПРОЦЕССОРЫ И МИКРО - э
MICROPROCESSORS AND MICROCOMPUTERS BRANKO SOUCEK Professor State University of New York, Stony Brook, New York Institute Ruder BoSkovid, Zagreb A WILEY-INTERSCIENCE PUBLICATION JOHN WILEY AND SONS NEW YORK. LONDON. SYDNEY, TORON IO, 1976.
Б, СОУ ЧЕ К МИКРОПРОЦЕССОРЫ И МИКРО-ЭВМ Перевод с английского под редакцией проф. А. И. ПЕТРЕНКО МОСКВА «СОВЕТСКОЕ РАДИО» 1979
ББК 32.97. С54 УДК 681 325.5—181 48 Соучек Б. Микропроцессоры и микро-ЭВМ: Пер. с англ. / Под ред. А. И. Петренко. — М : Сов. радио, 1979, 520 с. — Пер. изд.: В. Soucek. Microprocessors and Microcomputers, США, 1976. В книге приведены общие принципы построения микро- процессорных систем. Изложены основы программирования и организации интерфейса, описаны базовые микропроцессор- ные наборы БИС и примеры построения микро-ЭВМ на их основе. Даны наборы команд микропроцессоров и примеры программирования некоторых задач. Предназначается для инженеров, работающих в области создания микропроцессорных систем, а также для студентов специальностей «Вычислительная техника», «Информационно- измерительная техника» Табл. 202, рис. 218, библ. 46 назв. Редакция кибернетической литературы „ 30502-070 C"046(0iT-79 55-80 2405000000 © John Wiley & Sons, Inc., 1976 © Перевод на русский язык и предисловие. Издательство «Советское радио», 1979 г.
ПРЕДИСЛОВИЕ РЕДАКТОРА ПЕРЕВОДА Умелое использование электронно-вычислительной техники — одна из важнейших задач происходящей сейчас научно-технической революции. Боль- шие перспективы открывает создание новых, более совершенных и экономич- ных ЭВМ. Одна из наиболее впечатляющих разработок — микро-ЭВМ на базе микропроцессорных комплектов БИС. Ее широкое применение обещает революционизировать производство, транспорт, научные исследования. По своему воздействию микропроцессорные БИС, по-видимому, смогут успешно соперничать со своими прославленными предшественниками — электрон- ной лампой, транзистором и интегральной логической схемой. В отличие от обычных вычислительных машин микро-ЭВМ целиком вы- полняется по интегральной технологии на миниатюрном кристалле, который легко встраивается в станок, электрическую пишущую машинку, электрон- ные весы, кассовый аппарат, кухонную печь со сверхвысокочастотным нагре- вом, в автомобиль, в светофор, в сложный научный прибор и во многие дру- гие устройства, возможности которых могут быть существенно расширены благодаря применению такого «электронного мозга». В настоящее время центр тяжести применения микро-ЭВМ смещен в об- ласть аппаратуры для обработки данных, включая терминалы и другое внеш- нее оборудование ЭВМ. Изменения в архитектуре ЭВМ позволяют создать на базе микропроцессоров матричные структуры, которые по своей произво- дительности превышают развитые модели ЭВМ IBM 370, но значительно де- шевле и меньше по габаритам и массе. Свойства микропроцессорных БИС успешно используются при разработке следующих поколений,ЭВМ, отличаю- щихся параллельностью обработки данных, программируемостью структуры, конструктивной однородностью и низкой стоимостью. Обладая огромными вычислительными возможностями, микро-ЭВМ при крупносерийном производстве базовой конфигурации имеет низкую стоимость и малые габариты. Меняя программу, одну и ту же стандарт- ную микро ЭВМ можно использовать во многих устройствах. Это позволяет сэкономить значительные средства, так как подобный прибор способен заме- нить до 200 индивидуальных логических микросхем. Таким образом, микропроцессор — одно из тех удачных изобретений, которые одновременно уменьшают затраты на производство и стоимость вы- пускаемых изделий и расширяют возможности их применения. Для разработчиков цифровых схем и систем появление микро-ЭВМ означало изменения в методах использования электроники. Оказалось воз- можным многие системы с фиксированной (неизменной) логической структу- рой заменить микро-ЭВМ, способными хранить нужные программы в микро- схеме памяти. В результате в области конструирования цифровых систем вре- менно возникла ситуация как бы морального износа профессии, поскольку инженеры, наиболее опытные в этих вопросах, обычно почти или совсем не имеют опыта в области микропроцессоров и их применения. Стремясь запол- нить образовавшийся вакуум, ряд американских университетов организовал ускоренные курсы как для студентов, так и для инженеров. Многие специа- листы справедливо полагают, что широкое распространение микропроцессо- ров и микро-ЭВМ начнется только тогда, когда промышленность и наука по- лучат достаточное количество должным образом подготовленных специа- листов. Одним из известных пособий для таких курсов является книга профес- сора Нью-Йоркского университета Б. Соучека «Микропроцессоры и микро- 5
ЭВМ», в которой изложены основные вопросы построения микропроцессоров, их программирования и построения систем обработки данных на их основе, перевод которой на русский язык предлагается советскому читателю. Книга написана как учебник для студентов, материал четко систематизирован и хо- рошо иллюстрирован и отличается простотой изложения. Благодаря боль- шой информации о конкретных широко распространенных в США микропро- цессорах, она может быть использована и в качестве справочника инжене- рами, работающими в области создания микропроцессорных систем. Книга состоит из трех частей. В первой части «Программирование микро- процессоров и техника интерфейса» автор излагает общие вопросы програм- мирования микропроцессоров, описывает их системы команд, интерфейс и организацию связи с внешними устройствами. Вторая часть посвящена подробному описанию микропроцессорных на- боров БИС США 4004/4040, 8008/8080, МСОМ-8, М6800, PPS-4, PPS-8, IMP 4/8/16. В этой части дается описание БИС каждого набора, структур- ного построения микро-ЭВМ, системы команд и системы прерывания. Третья часть посвящена описанию микро-ЭВМ LSI-11, F8, SMS, 3000, IM6100. Книга переведена в полном объеме, хотя материал ее первой части тесно связан со вступительными главами другой известной книги Б. Соучека «Мини- ЭВМ», перевод которой на русский язык осуществлен издательством «Мир» в 1976 г. Но без этой части понимать основные разделы данной книги было бы значительно труднее, а использовать в работе — весьма неудобно. Широкое развитие микропроцессорных БИС и применение их в различ- ных областях техники привело к появлению новых терминов, изменению привычных понятий и перенесению терминологии из одной области техники в другую. Это требует осторожности во введении новых терминов. В этой свя- зи при переводе книги сохранены новые английские термины в области мик- ропроцессорной техники. Порт (Port) — микроэлектронные аппаратурные средства обмена дан- ными в системах Intel, F8. Микрошина (Microbus) — архитектура микро-ЭВМ на основе внутрен- них шин. Адаптер внешнего интерфейса (Peripheral Interface Adapter) — микро- электронные аппаратные средства интерфейса внешних устройств. Устройство ввода — вывода (GPI/0 — General Purpose 1/0 Device)— микросхема вынесенного интерфейса в системе PPS-4. Параллельный контроллер данных (PDC — Parallel Data Controller) — микросхема интерфейса для байтового обмена в системе PPS-8. Последовательный контроллер данных (SDC — Serial Data Controller)— микросхема для обмена последовательными кодами в системе PPS4. Контроллер ПДП (DMAC— Direct Memory Access Controller) —конт- роллер непосредственного доступа к памяти (в канале прямого доступа КПДП) в системе PPS-8. Интерфейс памяти (MI — Memory Interface) — аппаратурные средства сопряжения памяти в системе F8. Микроконтроллер (Micro Controller) — контроллер в микроэлектрон- ном исполнении. Вектор интерфейса (Interface Vector — IV) — аппаратурные средства обмена в микроконтроллере SMS. Байт вектора интерфейса (Byte IV) — 8-битовый регистр объекта в век- торе интерфейса микроконтроллера SMS. Как недостаток можно отметить, что в переводимой книге практически отсутствует описание средств автоматизации программирования микропро- цессоров (кросс или резидентных) и наладочных системных средств типа сис- темы Intellect. Тем не менее можно не сомневаться в полезности и свое- временности издания перевода книги Б. Соучека для широкого ознакомле- ния читателей с основами микропроцессорной техники. Перевод книги выполнен В. Г. Артюховым, А. А. Будняком и А. И. Пет- ренко. А. И. Петренко 6
Моей матери ПРЕДИСЛОВИЕ АВТОРА Массовое производство дешевых и высокопроизводительных микропро- цессоров явилось большим событием как в области электроники, так и в об- ласти вычислительной техники. На начальной стадии микропроцессоры использовались для замены цифровых систем и электромеханических логи- ческих устройств. В дальнейшем они вступили в соревнование с мини-ЭВМ и обычными ЭВМ. В этой книге даются основы программирования и техники сопряжения, общие для всех микропроцессоров, а затем подробно описываются широко распространенные семейства микропроцессоров. Можно надеяться, что эта книга будет полезной для инженеров и научных работников во многих об- ластях техники. Книга писалась как учебник для студентов и как справочник для инже- неров и научных сотрудников. Изложение по возможности выдерживалось одинаковым с упором на описание функций и построение систем. Минималь- ный запас необходимых знаний из смежных областей предполагался на уров- не студентов старших курсов, хотя многие фундаментальные вещи рассмот- рены заново. Книга делится на три части. В первой части рассматривается програм- мирование микропроцессоров и техника интерфейса. Объяснены цифровые коды, логическое построение систем, структура микропроцессора, програм- мирование в машинных кодах, программирование на Ассемблере и языках высокого уровня и Макроязыке. Затем рассматриваются техника сопряже- ния и виды обмена при вводе—выводе, непосредственного доступа в память, прерывания, компоненты интерфейса и соответствующие микросхемы. Этот материал даст необходимые практические знания для конструирования и использования микропроцессоров в специализированных системах. Вторая часть посвящена детальному описанию представительного семей- ства современных микропроцессоров. Эта часть начинается с описания прос- того 4-битового микропроцессора, который обеспечивает прекрасную за- мену цифровых систем и электромеханических логических элементов. Даль- ше описываются различные 8-битовые микропроцессоры, а также новые мощ- ные 16-битовые микропроцессоры. Для каждого микропроцессорного набора дано подробное описание имеющихся микросхем, шин ввода—вывода, системы команд и способов адресации. Приводятся примеры программирования и схем сопряжения. Третья часть посвящена новым микропроцессорам и специализирован- ным микросистемам. Рассмотрена замена мощных мини-ЭВМ микропроцес- сорными системами. Описаны новейшие микропроцессоры, память и микросхемы ввода — вывода, пригодные для широкого применения. Обсуждаются также высоко- скоростные микропроцессорные контроллеры. Представлены биполярные БИС, на базе которых просто конструируются микропрограммные централь- ные процессоры и контроллеры. Изложение сопровождается большим числом рисунков, примеров и библиографией. Большинство глав содержат задачи. Примеры и задачи отобраны как практические задания для студентов и для инженеров, самостоятельно ос- ваивающих область микропроцессорной техники. 7
Первые главы книги ориентированы на уровень начинающих специалис- тов, а затем материал книги систематически и постепенно вводит читателя в область сложных устройств сопряжения, программирования и техники применения микропроцессоров. Бранко Соучек Стоун Брук, Нью-Йорк, 1975 Я благодарю за постоянную стимулирующую поддержку многих моих учителей и коллег. Я выражаю признательность проф. Л. Брауну, проф. Г. Корну и Д. Шефлеру за полезные обсуждения материала книги. Я благо- дарен за помощь, полученную от следующих специалистов и лекторов по вычислительной технике: С. Брэнана, д-ра Д. Колинса, В. Канинхэма, Д. Димлера, Е. Гарена, М. Лемса, М. Роземблюма, Н. Сливяновски, М. Сми- та и Д. Виларда. При написании этой книги возникла необходимость в использовании не- которых данных из руководств, выпускаемых фирмами — производителями вычислительной техники. Мне хотелось бы поблагодарить следующие компа- нии за предоставленное мне разрешение использовать материалы из своих публикаций: Digital Equipment Corporation, Fairhild Camera and Instruments Co., Integrated Computer Systems, Intel Corporation, Intersil Inc., Motorola Semiconductor Products, Inc., National Semiconductor Corporation, Pro — Log Corporation, Rockwell International Corporation, Scientific Micro Systems, Software Research Corporation.
Часть I ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ И ТЕХНИКА ИНТЕРФЕЙСА Системы счисления и цифровые коды. Логические операции, цифровые элемен- ты и микросхемы. Основные команды микро-ЭВМ. Программирование микропроцессов. Сопряжение микропроцессоров с дру- гими устройствами. Глава 1 СИСТЕМЫ СЧИСЛЕНИЯ И ЦИФРОВЫЕ КОДЫ Эта глава является введением в системы счисления и цифровые коды. Основное внимание уделено двоичным кодам, наиболее широко используе- мым в вычислительной технике. Рассмотрены арифметические операции с двоичными числами. Дано сравнение различных кодов для кодирования ин- формации. Описаны восьмеричные и шестнадцатеричные системы счисления, кото- рые широко используются во время подготовки программ для микропроцес- соров и микро-ЭВМ. Рассмотрен код Грея, пригодный для применения в преобразователях положения. Определен алфавит кода информационного обмена ASCII. 1.1. ДЕСЯТИЧНАЯ И ДВОИЧНАЯ СИСТЕМЫ СЧИСЛЕНИЯ Определения. Основным требованием к ЭВМ является обеспе- чение возможности кодирования и хранения чисел, представленных определенным образом, а также выполнения операций над ними. Числа могут быть записаны в различных системах счисления. С раннего детства большинство людей учится представлять величи- ны в десятичной системе счисления. В этой системе принят счет десятками, и она получила развитие, вероятно, потому, что чело- век имеет 10 пальцев. Основанием этой системы счисления явля- ется число 10, так как используется 10 основных цифр (десять паль- цев). Основными цифрами являются 0, 1,2, 3, 4, 5, 6, 7, 8, 9. Раз- мещая эти цифры на различных позициях или придавая им различ- 9
ный вес, можно выразить числа, большие чем 10. Можно постро- ить систему счисления и с произвольным основанием В общем случае число (N)b представляется в позиционной записи как (N)b = (PnPn~i ... Р.Р0. где Ъ—основание системы счисления, представляющее собой це- лое положительное фиксированное число. Позиционные цифры Р/ являются целыми числами, такими что 0 < Pt < b — 1, i = ... — 2, —1, 0, 1, 2..п. Значимость каждой позиции в числе известна как его позиционный Разрядный) коэффициент или вес. Например: 346 = 3 х 100 = 300 4 х 10 = 40 6x1 =6 34? В простейшем случае для десятичной системы счисления табли- ца весов имеет вид ... ЮЧОЧОЧО*. 10"“\!0~2. В общем случае для системы счисления с основанием Ь последо- вательности разрядов слева направо соответствуют веса ...b3feW>, Ь’Ч-2... Символ «,» называется запятой системы счисления. Часть чис- ла., расположенная справа от запятой, является дробной частью, а слева от нее — целой частью. В десятичной системе счисления запятая системы счисления называется десятичной запятой. Вычислительные машины могут быть построены на базе любой системы счисления. Однако во всех современных ЭВМ использует- ся двоичная (основание 2) система счисления. Почему эта система счисления нашла применение? Это объясняется тем, что значи- тельно легче различить два состояния, чем десять. Большинство физических величин имеют только два состояния: лампочка вклю- чена или выключена; выключатель включен или выключен; материал намагничен или размагничен; направление тока положи- тельно «ли отрицательно; отверстия на перфоленте или перфо- карте пробиты или нет и т. д. .Значительно легче и надежнее могут быть выполнены цифровые схемы, которые должны различать одно из двух состояний (двоичный 0 или двоичная 1), чем те, кото- рые должны различать одно из 10 состояний (от десятичного 0 до S). Основанием двоичной системы счисления является число 2. Запятая системы счисления может быть названа двоичной запятой. ’ ю
Таблица 1.1 Нахождение десятичного энвивилента. Зля двоичного числа 2* 2s 2г 2Т 'Я Таблица весоВ 10 10 1 Двоичное число I-----------7 х ------------О X ------------7 х О х -----------------1-х Разрядный коэффициент- 7-7 2 = О k - 4 3 = О 16 = 16 ДДеятечное число —21 Возможны только две цифры 0 и I. Веса разрядов слева направо имеют последовательность, называемую таблицей весов: 2®2*2*2% г^г^З"3... Таблица 1.2 Сравнение деся- тичной и двоичной форм числа Десятич- ная форма Двоичрач форма 0 0 1 1 2 10 3 11 4 100 5 101 6 но 7 111 8 1000 9 1001 10 1010 Эта таблица используется для перевода двоичных чисел в бо- лее привычную десятичную систему счисления. В качестве приме- ра найдем десятичный эквивалент двоичного числа 10101 (табл. 1.1). Для сравнения десятичной и двоичной систем счисления исполь- зуем процесс счета, В десятичной системе при счете цифры опре- деленного разряда возрастают в порядке О, 1, 2,_г 8, 9. При до- стижении величины 0(10) в этом разряде происходит перенос 1 в разряд слева. Так как в двоичной системе используются только две цифры, определенные разряды числа могут изменяться только в пределах двух значений> после чего возникает перенос 1 в раз- ряд слева. Последовательность чисел в двоич- ной системе счисления при счете до десяти да- на в табл. 1.2. Существуют специальные термины, широко используемые в вычислительной технике, такие как «бит», «байт» и «слово-». Бит. Двоичный разряд обычно называют битом. Таким образом, число 1010 является 4-битовым двоичным числом, а 101—3-битовым числом и т. д. Крайний слева бит числа назы- вается старшим разрядом (он имеет наибольший вес), крайний справа — младшим разрядом (он имеет наименьший вес). Двоичное число, со- стоящее из 16 бит, представлено на рис. 1.1. Байт. Эволюция вычислительной и инфор- мационной техники вызвала появление 8-бито- вой единицы для обмена информацией между устройствами. Такая 8-битовая единица носит название байт. Многие новые типы цифровых ЭВМ и дискретных систем управления исполь- 11
зуюг числа из 8, 16, 24 или 32 бит (1, 2, 3 или 4 байт). Двоичное число, состоящее из 2 байт, показано на рис. 1.1. Слово. ЭВМ содержит большое количество ячеек или регистров для хранения двоичной информации. Большинство регистров в су- ществующих машинах имеют одинаковую длину п. Каждый регистр используется для хранения п бит двоичной информации. Инфор- мация, хранимая в одном регистре, называется словом. Слово 16-би- товой ЭВМ представлено на рис. 1.1. Перевод десятичного числа в двоичное. Десятичные числа мо- гут иметь целую и дробную части. Каждая часть должна быть пере- ведена в двоичный эквивалент отдельно. Полное представление двоичного числа получается путем объединения этих двух частей и указания места двоичной запятой. Обычно используются два метода для перевода десятичных чисел в двоичный эквивалент: метод вычитания и метод деления — умножения. Метод вычитания [4]. Вычтем число, соответствующее наи- большей возможной степени числа два, их исходного десятичного числа и запишем 1 в соответствующий разряд формируемого дво- ичного числа. Продолжим эту процедуру до тех пор, пока деся- тичное число не уменьшиться до 0. Если после предыдущего вычитания следующая степень от числа 2 не вычитается, записы- ваем 0 в соответствующий разряд. Примером преобразования цело- го десятичного числа в двоичный эквивалент является следующая процедура: 53 2s 2* 2* 2г 21 2° - 32 -*-2s_1 1.0 1 0 1 ~И I - 16 24 I 3 - 4 -*22------------------- Г - Г -*2" О Следовательно, (53)10 = (110101)2.j ”.
Преобразование десятичного дробного числа принимает вид 0,5625 2~1 2~3 Г* 0,5 2*1 ; 0 . 0 1 0 0,0625 0,0625 .. I о, о Метод деления. Для перевода десятичного целого числа в дво- ичный эквивалент используем деление на два. Разделим десятич- ное число на 2. Если есть остаток, запишем 1 в младший двоичный разряд. Если остатка нет, то в младший двоичный разряд запишем 0. Разделим частичный остаток после первого деления на 2 и пов- торим процесс. Продолжаем его до тех пор, пока результат не уменьшится до 0 [4]. Например:, 2 21 2 26 г /з 2 ~ 1 3 2 ~ Остаток \ 1 — (53)ю = (110101)2 1 о ^1 Метод умножения. Если необходимо преобразовать десятичное дробное число в двоичный эквивалент, то используют метод последо- вательных умножений на два. Если первый результат меньше еди- ницы, то старший двоичный разряд эквивалента является нулем; если результат больше или равен единице, то старший двоичный разряд равен единице. Следующий разряд получаем в соответствии с тем же правилом, действующим в этом случае только на дробную часть результата, полученного на предыдущем шаге. Процедура пов- торяется до получения заданной степени точности. Например: Перенос 0,5625 х 2 = 1,125а -> 1 0,1250 х 2 = 0,2500 -> 0 0,250 х2=0,5 -> 0 0,5 х 2=1,0 1 0,0 х 2 = 0,0 0 Следовательно, (О,5625)1о = (0,10010)2. 13
1.2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С ДВОИЧНЫМИ ЧИСЛАМИ Сложение. Двоичное сложение выполняется по тем же прави- лам, что и десятичное, за исключением того, что перенос в сле- дующий разряд производится после того, как сумма достигнет не 10, а 2(1 4- 1). Например: 11-«-переносы 1О1=51о Ш=710 4-010 = 210 4-101 =510 111=710 1100 = 12,0 Рассмотрим второй пример (сложение чисел 111 и 101). В млад- шем разряде 14-1 = 0 и образуется единица переноса. Во втором разряде 1 4- 1 = 0 и появляется новая единица переноса. В третьем разряде 1 4- 1 = 0 с переносом плюс предыдущий перенос или 14-14-1 = 11. Полученный результат 1100 (десятичное 12) является правильным для сложения чисел 5 и 7 (7 4- 5 = 12). Сложение двоичных чисел в цифровых машинах выполняется в специальном блоке, называемом сумматором. Вычитание. Двоичные числа можно непосредственно вычитать таким же образом, как и десятичные. Можно разработать машину, которая включала бы оба блока— и вычитатель, и сумматор. Но конструкторы ЭВМ не поступают подобным образом. Следует под- черкнуть, что если нужно выполнить операцию вычитания, доста- точно заменить знак вычитаемого, а дальше действовать как и при операции сложения. Необходимо лишь найти подходящий способ для представления отрицательных чисел. Для того чтобы понять, как отрицательные числа могут быть представлены в ЭВМ, рассмо- трим механический регистр, работающий как счетчик расстояния, пройденного автомобилем. Если счетчик вращается в прямом на- правлении, он выполняет сложение. Если же он вращается в об- ратном направлении, то выполняет вычитание. Примером последо- вательности состояний 5-разрядного счетчика, вращающегося в об- ратном направлении, является [4] 00004 00003 00002 00001 00000 99999 99998 99997 14
Должно быть ясно, что число 99997 соответствует — 3. Для про, верки этого выполним сложение . 00004 + 99997 100001 Если пренебречь единицей переноса из старшего разряда, то полу- чим правильный результат операции вычитания: 4 — 3 = 1. Число 99997 в этом примере называется десятичным дополнением числа 3. Таким образом, в десятичной системе счисления отрица- тельные числа могут быть представлены в форме десятичного до- полнения, а отрицательный знак можно опустить. В ЭВМ таким же образом двоичное дополнение двоичного числа используется для представления отрицательного числа и выполне- ния двоичного вычитания. Двоичное дополнение числа определяется как то число, кото- рое, будучи прибавлено к первоначальному числу, в сумме с ним даст 1. Например, двоичное число 010 ПО НО НО имеет двоичное дополнение, равное 101 001 001 010, что подтверждается следую- щим примером: 010 НО НО НО 101 001 001 010 1 000 000 000 000 Чтобы получить двоичное дополнение числа (дополнительный код), необходимо выполнить следующие два этапа: 1. Получить обратный код, который образуется инвертирова- нием каждого бита: 010 НО НО НО Число 101 001 001 001 Обратный код 2. Образовать дополнительный код, который равен обратному коду плюс 1 младшего разряда: 101 001 001 001 Обратный код +1 Слагаемое 1 101 001 001 010 Дополнительный код Примеры вычитания чисел: 7—3 = 4 ООН 310 1100 Обратный код числа 3 । 1101 Дополнительный коД числа 3 + 0И1 710 1 0100 410 12—5 = 7 0101 510 1010 . 1011 + 1100 1210 1 0111 710 15
Умножение. При двоичном умножении частичное произведение сдвигается на один разряд влево для обработки каждого последую- щего разряда множителя. Если множитель равен 0, то частичное произведение равно 0; если множитель равен 1, то частичное про- изведение равно множимому. Примеры: 5 х 3=15 5 х 5 = 25 5 х 10 = 50 Ю1 510 Ю1 510 101 Зад н з10 101 510 1010 ю10 101 101 000 101 000 101 1111 1510 101 11001 2510 000 101 110010 5010 Деление. Используя правила двоичного вычитания и умножения, можно представить двоичное деление в том же виде, что и десятич- ное. Примеры: 18 : 2 = 9 10 : 5 = 2 14 : 4 = 3,5 1001 910 10 21о 11,1 3,51о 2,0 10) 10010 181о 510 101) 1010 Ют 410100)1110,0 14м 10 101 100 00 000 ПО 00 000 100 01 0 100 00 100 10 0 10 0 1.3. ВОСЬМЕРИЧНЫЙ, ДВОИЧНО-ДЕСЯТИЧНЫЙ КОДЫ И КОД ГРЕЯ Восьмеричная система счисления. Для представления числа в двоичной системе необходимо использовать значительно больше разрядов, чем в десятичной системе. Например, (35)1О — (100011)2. Человеку очень легко ошибиться при чтении и написании больших двоичных чисел. Для облегчения записи двоичных чисел может быть использована восьмеричная система. Основанием восьмеричной системы является число 8, и используются цифры от 0 до 7. После- довательность восьмеричных чисел при счете до 10 приведена в табл. 1.3. Так как основанием восьмеричной системы является 8 = 2s, то для перевода двоичных чисел в восьмеричные необхо- ходимо разделить двоичные числа на 3-битовые группы. Эти 3-би- товые группы можно представить одной восьмеричной цифрой, используя таблицу эквивалентности кодов (табл. 1.3). Например: 16
110101111001 ПО 101 111 001 6 5 7 1 Двоичное число 3-битовые группы Восьмеричные эквиваленты каждой группы Отсюда (ПО 101 111 001)2 = (6571)8. Перевод десятичного числа в восьмеричный эквивалент и ариф- метические операции с восьмеричными числами выполняются по тем же правилам, что и для двоичных чисел. Важно отметить, что ЭВМ не работают в восьмеричной системе счисления. Они работают в двоичной системе счисления, а восьме- ричное представление используется человеком для того, чтобы из- бежать чтения и записи больших двоичных чисел. Двоично-десятичные числа. Очевидно, что самой удобной систе- мой для человека является десятичная система счисления. Следо- вательно, многие устройства ввода-вывода будут работать так, что со стороны ЭВМ они будут осуществлять прием — выдачу двоичного числа, а со стороны оператора — прием — выдачу десятичного числа. Для этого преобразования кодов требуется или дополни- тельное электронное оборудование, или машинное время. Объем требуемых преобразований может быть минимизирован путем при- менения гибридного представления, называемого двоично-десятич- ным представлением (BCD). Этот код ориентирован на десятичное основание системы счис- ления и может быть непосредственно преобразован в десятичные числа. В то же время в нем для записи чисел используются только двоичные цифры 0 и 1. Двоично-десятичный код образуется заменой каждого десятичного разряда в десятичном числе 4-битовым дво- ичным представлением этого разряда. Например, 610 представляет- Таблица 1.3 Сравнение десятичных, двоич- ных и восьмеричных кодов Десятич- ные Двоичные Восьме- ричные 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 по 6 7 111 7 8 1000 10 9 1001 11 10 1010 12 Таблица 1.4 Сравнение десятичных, двоичных, и двоично- десятичных кодов Десятич- ные Двоичные Двоично- десятич- ные 0 0 0000 1 01 0001 2 10 0010 3 11 ООП 4 100 0100 5 101 0101 6 ПО оно 7 111 0111 8 1000 1000 9 1001 1001 17
ся как ОНО. Следовательно, целые числа от 0 до 9 представляются, как показано в табл. 1.4. Другими словами, двоично-десятичное представление десятич- ных чисел образуется прямой заменой цифр их двоично-десятичными эквивалентами. Например: ОНО ООН 0100 0111 6 3 4 7 Пример. Перевести двоично-десятичное число 0101 0111 (десятично© число 57) в двоичный эквивалент Веса (8421) X 10 (8421) X 1 0101 0111 Для упрощения умножения выразим весовой коэффициент 10 в виде 8+2. Поэтому двоично-десятичное число 0101 0111 эквивалентно (0101) X (8 + 2) + (0111) X 1 В результате двоичного суммирования и умножения получим 0111 х 1 0101 X 2 + 0101 х8 0111001 Это двоичный эквивалент десятичного числа 57, что и следовало ожидать. Таким образом, схемы для двоичного сложения можно исполь- зовать для перевода двоично-десятичных кодов в двоичные коды. Два двоично-десятичных разряда часто используют для коди- рования букв и символов наряду с кодированием чисел. Например, составим двузначные числа 00, 01, 02, ..., 09 для представления чисел 0, 1, 2, ..., 9. Остальные двузначные числа, от 10 до 99, могут быть использованы для представления А, В, ..., Y, Z и дру- гих символов (таких, как +, —, ?). Используя сначала десятичные представления для букв и символов, а затем двоично-десятич- ное кодирование десятичных чисел, любое число, букву или сим- вол можно легко выразить в двоичном представлении в цифровой системе. Двоично-десятичная система с избытком 3. Двоично-десятич- ное представление с избытком 3 иногда применяется в ЭВМ и ча- стично в электронных табулирующих машинах для упрощения формирования дополнения до девяти. Каждая цифра образуется прибавлением к ней числа 3 и последующим 4-битовым двоичным представлением. Последовательность кодов с избытком 3 и их дополнений до девяти показана в табл. 1.5. Заметим, что дополнения до девяти получаются путем замены единиц на нули и наоборот. Шестнадцатеричный код. Это расширение обычного двоично- десятичного представления, использующего дополнительные 6 сим- волов 4-битовых групп, которые недопустимы в двоично-десятич- ной системе. Поэтому мы должны будем привыкнуть к шестнадца- 18
Таблица 1.5 Двоичнддеся’Гйчные коды «с избытком 3> Десятичный код Код с из- бытком 3 Дополнение до 9 кода с избытком 3 Десятичный код Код с из- бытком 3 Дополнение до 9 кода с избытком 3 0 ООП 1100 5 1000 0111 1 0100 1011 6 1001 ОНО 2 0101 1010 7 1010 0101 оно 1001 8 1011 0100 4 0111 1000 9 1100 ООП теричной системе счисления и введению 6 новых цифровых симво- лов. Обычная схема счета в шестнадцатеричной системе следую- щая: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F, где символы А—F представляют кодовые 4-битовые группы от 1010 до 1111 (десятичные значения 10—15). Шестнадцатеричные числа представлены в табл. 1.6. Код Грея. Двоичные коды очень удобны для выполнения вы- числений, но они создают серьезные осложнения в применениях, где используются переходы между двумя соседними значениями. Примером может служить система управления углом поворота вала или линейных перемещений стержня. Два соседних кодовых со- стояния датчика положения, кодирующего в двоичном коде,могут отличаться во многих разрядах. Например, позиции 7 и 8 будут иметь коды 0111 и 1000. Часто при переходе от одной позиции к другой возникает кратковременная неопределенность в значениях кода. В результате система может выдавать выходные коды 1010, Таблица 1.6 Шестнадцатеричный код и код Грея в сравнении с другими кодами Десятич НЫЙ код Двоичный код Код Грея Шестнад- цатерич- ный кол Десятич- ный код Двоичный код Кед Грея Шестнад- цатерич- ный код 0 0000 0 0 8 1000 1100 8 1 0001 01 1 9 1001 1101 9 2 0010 11 2 10 1010 1111 А 3 ООП 10 3 11 1011 * 1110 В 4 0100 по 4 12 1100 1010 С 5 0101 111 5 13 1101 1011 D 6 оно 101 6 14 1110 1001 Е 7 0111 100 7 15 1111 1000 F 1?
0101, 1100 и т. д. Они сильно отличаются как от старого значения 0111, так и от нового 1000. Цифровая система управления будет интерпретировать такую переходную информацию, как позицион- ная погрешность, и будет вырабатывать управляющий сигнал для корректировки позиции. Переходная погрешность может быть уменьшена следующим пу- тем. Код для двух соседних позиций должен отличаться только на 1 бит. Так как все другие биты неизменны во время перехода, вы- ходной сигнал в переходный момент может представляться только старым или новым значением кода. Поэтому неопределенность уменьшается до значения кода в предыдущей или новой позиции и никаких других кодов не возникает, как это случается при дво- ичном кодировании. Код Грея является одним из группы кодов, известных как реф- лексные двоичные коды, и отлично удовлетворяет требованиям к датчикам положения. Код Грея похож на двоичный код тем, что он имеет такую же разрядность и такой же старший разряд. Главное его отличие от двоичного кода состоит в том, что два со- седних числа в коде Грея отличаются только одним битом (табл. 1.6)< 1.4. ФОРМАТ ДАННЫХ ЭВМ предназначена для работы с двоичной информацией, ко- торую удобно представить состоянием электронных компонентов и элементов памяти. Числа с фиксированной и плавающей запятой, алфавитно-цифровые кодовые комбинации и машинные команды могут быть представлены двоичной информацией. Числа с фиксированной запятой. В большинстве ЭВМ приме- няются дополнительные коды чисел. В этих случаях машинное слово используется для представления как положительных, так и отрицательных чисел. Старший разряд является знаковым разрядом. Число 0 в знаковом разряде означает положительные числа; 1 используется для обозначения отрицательных чисел. Остальные разряды слова используются для представления модуля числа: для положительного значения они соответствуют записи пря- мого кода числа; для отрицательного значения — записи его допол- нительного кода. Поэтому если машинное слово имеет п бит, п — 1 бит используется для представления модуля числа, которое может быть любым положительным числом между 0 и 2П~1. Например, для 12-разрядной ЭВМ: Положительные числа: 000 000 000 000 010 000 000 000 001 110 000 0000 000 010 210 011 111 111 111 211 — 1 = 20471о 20
Отрицательные числа: 111 111 Ill 111 —l10 111 111 111 110 —210 100 000 000 001 — (211 — 1) = — 2O47lo 100 000 000 000 — 211 = — 2048lo Таким образом, ЭВМ с 12-битовым словом может непосредствен- но представлять числа между — 2О481о и + 2О471о. Для представле- ния больших значений могут быть использованы два машинных слова, или число может быть представлено в форме с плавающей запятой. Числа с плавающей запятой. При записи в форме с плавающей запятой число делится на две части, называемые мантиссой (циф- ровая часть) и порядком (по некоторому основанию). В десятичной системе счисления, например, число 15 можно записать следую- щими способами: Мантисса 0,15 Порядок X 102 1,5 X 101 15,0 X 10° 150,0 X 10-1 1500,0 X 10-2 Числа с плавающей запятой представлены в ЭВМ, как и в выше- указанном примере. Однако поскольку ЭВМ работает с двоичной информацией, то и мантиссу, и порядок представляют как двоич- ные числа. Так как и мантисса, и порядок могут быть положитель- ными или отрицательными числами, то два разряда отводятся для знаков. Представление чисел с фиксированной и плавающей за- пятой для 36-разрядного слова показано на рис. 1.2. В малых ЭВМ Число [ / | Ъб | в а) Зоил порядка | Порядок Мантисса LL 7 7 [ 27 I | S) Знак мантиссы Символ Символ Символ Символ Символ Символ L в | в б в | в 5 в) Рис. 1.2. Форматы слов: л — с фиксированной запятой; б — с плавающей запятой; в — алфавитно-цифровые символы 21
для представления чисел с плавающей запятой используют не- сколько слов. Алфавитно-цифровая информация. Когда необходимо при вы- числениях использовать буквенные и знаковые символы, для пред- ставления этих кодовых комбинаций используются двоичные коды. В английском алфавите имеется 26 букв и 10 цифр. Если использо- вать 6 разрядов для каждой кодовой комбинации, допускающих в общем случае 64 кодовые комбинации, то можно еще закодировать многие другие специальные символы. Часто на практике исполь- зуется код ASCII (являющийся сокращением стандартного для США кода информационного обмена). В коде ASCII для представ- ления чисел и символов может использоваться 6,7 или 8 разрядов. Таблица 1.7 Стандартный код ASCII Символ 8-битовый код 6-битовый код Символ 8-битовый код 6-битовый код А 301 01 1 241 41 в 302 02 242 42 с 303 03 # 243 43 D 304 04 $ 244 44 Е 305 05 % 245 45 F 306 06 & 246 46 G 307 07 247 47 Н 310 10 ( 250 50 I 311 11 ) 251 51 J 312 12 * 252 52 К 313 13 253 53 L 314 14 / 254 54 М 315 15 —. 255 55 N 316 16 - 256 56 О 317 17 / 257 57 Р 320 20 272 72 Q 321 21 273 73 R 322 22 274 74 S 323 23 =s 275 75 Т 324 24 276 76 и 325 25 р 277 77 V 326 26 @ 300 W 327 27 [ 333 33 X 330 30 334 34 Y 331 31 ] 335 35 Z 332 32 t 336 36 0 260 60 ч— 337 37 1 261 61 Возврат на шаг 200 2 262 62 Перевод строки 212 3 263 63 Возврат каретки 215 4 264 64 Пробел 240 40 5 265 65 Вычеркивание 377 6 266 66 Пусто 000 7 267 67 Звонок 207 8 270 70 Табуляция 211 9 271 71 Формат 214 22
Таблица 1.8. Сравнение двоично-десятичных и ASCH кодов для символов Символ Двоично-деся- тичный код Код ASCII Символ Двоично-деся- тичный код Код ASCII (Пробел) 20 040 А 61 : 101 1 52 041 В 62 102 # 13 043 С ; 63 103 53 044 D 64 > 104 % 34 045 Е 65 : 105 & 60 046 F 66 106 14 047 G 67 107 ( 34 050 Н 70 НО ) 74 051 I 71 111 * 54 052 J 41 112 + 60 053 К 42 ИЗ / 33 054 L 43 114 —- 40 055 М 44 115 73 .056 N 45 116 / 21 057 О 46 117 Р 47 120 0 12 060 Q 50 121 1 01 061 R 51 122 2 02 062 S 22 123 3 03 063 Т 23 124 4 04 064 и 24 125 5 05 065 V 25 126 6 06 066 W 26 127 7 07 067 X 27 130 8 10 070 Y 30 131 9 11 071 Z 31 132 • 15 072 [ 75 133 56 073 36 134 76 074 1 55 135 13 075 16 076 72 077 @ 14 100 В табл. 1.7 приведены 6- и 8-битовые коды ASCII. Биты группи- руются в 3-битовые группы с представлением каждой группы вось- меричным кодом. В табл. 1.8 приведены 7-битовый код ASCH и двоично-десятичный код. Шесть 6-битовых кодовых комбинаций, объединенных в одно 36-битовое машинное слово, показаны на Рис. 1.2, в. Задачи. 1. Выполните двоичное сложение: а) ЮНО б) 100 в) 10ПШ1 г) ЦЦ + 101 +10 + I 101 —------ ---- ------------- +1000 23
д) 1011011 е) 11011011 ж) 1111111 з) 1000001 1110011 11011011 lllllli 1000001 + 1100 + ИОНОН + НИШ 4- 1000001 2. Найдите обратный и дополнительный коды следующих двоичных чисел: а) 011 100 НО 010 е) 000 000 000 111 б) 010 111 ОН 111 ж) 100 000 000 000 в) 000 000 000 001 з) 100 000 000 001 г) 111 111 111 111 и) 000 000 000 000 д) 111 111 111 НО к) 000 100 100 100 3. Переведите следующие десятичные числа в двоичную форму: 5, 3, 1000, 2047, 409, 33, 65ГД, 7, 1500. 4. Найдите двоичный эквивалент для десятичных чисел из задания 3, если эти числа отрицательные. Используйте слово размером 12 бит. 5. Выполните операцию вычитания, используя дополнительные коды: а) 10111 б) 1011101 в) 11011011011 г) 11111111 — 11 —101 — 100000 — 100001 Б. Перемножьте числа из задания 5. 7. Разделите числа из задания 5. СПИСОК ЛИТЕРАТУРЫ 1. Ware W. Н. Digital Computer Technology and Design, v. 1, Wiley, New York, 1963. 2. Chu Y. Digital Computer Design Fundamentals, McGraw-Hill, New York, 1962. 3. Flores I. The Logic of Computer Arithmetic, Prentice-Hall, Englewood Cliffs, N. J., 196?. 4. Introduction to Programming, Digital Equipment Corporation, Maynard Mass , 1969. Глава 2 ЛОГИЧЕСКИЕ ОПЕРАЦИИ, ЦИФРОВЫЕ ЭЛЕМЕНТЫ И МИКРОСХЕМЫ Во второй главе рассматриваются логические операции и реализующие их цифровые схемы. В начале главы вводятся определения двоичных перемен- ных, а затем описываются основные логические операции. Принципы кон- струирования цифровых систем излагаются при описании базовых логических схем, основных функциональных схем, примеров проектирования цифровых систем, вопросов проектирования цифровой системы с помощью ЭВМ. Глава заканчивается описанием организации цифровых ЭВМ, запоминающих уст- ройств и устройства ввода — вывода. Описываются микропроцессорные кри- сталлы и память пассивного и оперативного типа. 24
2.1. ОСНОВНЫЕ ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ Числовые данные и машинные команды представлены в ЭВМ в двоичной системе счисления. Двоичный сигнал может принимать значения 1 или 0 и может рассматриваться как особый вид перемен- ной величины (рис. 2.1, а). Двоичная переменная может быть пред* ставлена буквой. Обозначим ее, например, А. Для того чтобы раз- личать возможные состояния 1 и 0, можно использовать обозна- чения А и А, где А называется инверсией переменной А или ее от- рицанием. Для решения различных задач в ЭВМ используются логические операции с двоичными переменными. Эти операции изучаются в специальном разделе математики, который называется булевой ал- геброй. Обобщенная логическая система с входными двоичными пере- менными Д, В ..., N показана на рис. 2.1, б. Соотношения буле- вой алгебры могут быть использованы для отыскания выходных сигналов системы. Связь между входными и выходными величинами логической системы можно также выразить таблицей истинности. Таблица истинности состоит из двух частей. Первая часть относится ко входным величинам и содержит полный перечень всех возможных комбинаций входных величин Д, S, ..., N. Вторая часть этой таб- лицы определяет выходные состояния как функцию от комбинаций входных величин. Все логические системы можно расчленить на ряд основных ло- гических схем, описанных ниже. Инвертор — это одновходовая схема, которая формирует вы- ходной сигнал в виде инверсии входного сигнала. Поэтому, если на входе 0, выход схемы равен 1; если на входе 1, на выходе 0. Таблица истинности инвертора и его условное обозначение на структурных схемах показаны на рис. 2.2. Схема И имеет два или более входов. Простая схема с двумя ключами, которая иллюстрирует функцию И, представлена на рис. 2.3, а. Если ключ А замкнут, переменная А имеет значение 1. Если ключ А разомкнут, переменная А имеет значение 0. Ток может протекать через схему только в том случае, если оба ключа замкнуты (на выходе будет 1 только тогда, когда обе перемен- А (логическая 1) А (логический О) и) Рис. 2.1. Двоичная переменная 25
4 А Рис. 2.2. Инвертор ные А я В будут равны 1). Опе- рацию И часто обозначают как # А • В. Поэтому операция И для трех переменных А, В и С обо- значается А • В • С. Условное обозначение схемы И показано на рис. 2.3, б, а таблица истинности для нее — на рис. 2.3, в. Схема ИЛИ имеет два или более входов. Простая схема с дву- мя ключами, иллюстрирующая операцию ИЛИ, показана на рис. 2.4, а. Ток в схеме протекает, если любой из ключей А я В замкнут. Эта логическая операция обозначается знаком плюс между переменными. Таблица истинности и условное обозначение схемы для данного случая приведены на рис. 2.4, б, в. Рис. 2 3 Схема И А - в А-В 0 Z7 0 0 1 0 1 1 1 0 0 В) Три основные схемы: инвертор, И, ИЛИ, составляют функцио- нально полную систему для проектирования ЭВМ. С помощью этих схем можно реализовать любую сложную функцию. Ряд таких функций, которые часто используются, будут описаны далее. Схема ИЛИ—НЕ является комбинацией схемы ИЛИ и ин- вертора. Таблица истинности этой схемы, две структурные схемы и условное обозначение показаны на рис. 2.5. Выходная перемен- ная схемы может быть описана как А + В. Его можно интерпре- тировать как результат выполнения вначале функции ИЛИ (А + В) с последующим инвертированием. Из-за инверсии выходная часть таблицы истинности для схемы ИЛИ—НЕ является точно противо- положной выходной части таблицы истинности схемы ИЛИ. Таб- Рис. 2.4. Схема ИЛИ 26
лица истинности скемы ИЛИ—НЕ состоит из таблицы истинности для ИЛИ и инвертора, как показано на рис. 2.5, а. Можно также выполнить операцию ИЛИ—НЕ путе^м комбина- ции других логических функций (рис. 2.5, б). Эта схема состоит из инверторов и схемы И, но нетрудно заметить, что ее таблица истинности дает те же выходные сигналы, что и схема рис. 2.5, а. Во второй схеме выход может быть выражен как А • В и интерпре- тироваться как результат первоначального инвертирования пере- менных Л, В и затем выполнения функции И. Очевидно, что А + В = А - В. (2.1) Равенство (2.1) можно записать в более общем виде, который известен как теорема де Моргана и представляет фундаменталь- ную теорему булевой алгебры: f (Лх> Л2,= / (Л, А2, +). (2.2) Теорема устанавливает, что отрицание логической функции образуется отрицанием каждой из переменных и взаимной заме- ной операций ИЛИ и И. Условное обозначение схемы ИЛИ—НЕ приведено на рис. 2.5, в. Схема И—НЕ является комбинацией схемы И и инвертора. Таблица истинности и две структурные схемы для реализации опе- рации И—НЕ показаны на рис. 2.6, а, б. На первой структурной схеме_ операция И—НЕ выражается как А • В, а на второй — как А + В. Этот результат является другим примером исполь- зования теоремы де Моргана (2.2). А • В = Л + В. (2.3) 27
Рис. 2 6. Схема И—НЕ Условное обозначение схемы, реализующей операцию И—НЕ, приведено на рис. 2.6, в. Исключающее ИЛИ (сумма по модулю 2). Схема Исключающее ИЛИ выполняет операцию суммирования по модулю 2. Исключаю- щее ИЛИ аналогично ИЛИ с той разницей, что одно из условий для А и В исключается; если переменные А и В находятся в состоя- нии 1, то на выходе схемы формируется 0, а не 1. Таблица истинности и структурная схема, выходной сигнал которой описывается выражением Q = (А + В) • (4 • В), (2.4) приведены на рис. 2.7. Операции инвертирования, ИЛИ, И, ИЛИ—НЕ, И—НЕ и Ис- ключающее ИЛИ можно применять к двоичным числам. Двоичное число в вычислительной машине занимает ряд разря- дов. Каждый разряд можно рассматривать как одну двоичную пере- менную. Так как логические операции можно выполнить с двумя 28
Логическою I Логический Л — 1 Рис. 2.8. Синхроимпульсы двоичными числами, каждую пару разрядов можно рассматривать как две двоичные переменные. Например: Л12 А2 А1 4=1010001 10010 В = 011101011011 в и BzBt Результаты А-В = 0 01000010010 Д+В=111101111011 А-В = 1 1 0 1 1 1 1 0 1 1 0 1 Л+В=000010000100 (Л+В)(Л-В) = 1.1 0 10 110 10 0 1 Первое число Второе число И ИЛИ И-НЕ ИЛИ-НЕ Исключающее ИЛИ Синхронизация. Таблицы истинности логических схем показы- вают установившееся состояние входных и- выходных величин. Однако когда в качестве входных сигналов используются электри- ческие импульсы, то необходимо некоторое время для того, чтобы выходные величины достигли уровня установившегося состояния из-за внутренних задержек в схемах. Задержка одной схемы обыч- но мала — около нескольких наносекунд (10-9 с). В ЭВМ двоич- ные сигналы проходят через множество схем и задержка может стать значительной. В этом случае необходимо выделить отрезок времени (такт) на каждый шаг операции. Если операция заверша- ется раньше, чем закончится тактовое время, машина ожидает его окончания. В результате скорость выполнения операции несколько снижается, но достигается высокая надежность, так как обеспече- на синхронизация между многими параллельно выполняющимися операциями. Синхронизация устройств ЭВМ обеспечивается с по- мощью специального генератора. В качестве такого генератора обычно служит генератор, работающий в автоколебательном ре- жиме и формирующий импульсы стабильной частоты (рис. 2.8). Два уровня импульсов соответствуют двум логическим состоя- ниям двоичных переменных 0 и 1. Почти все операции в машине синхронизируются посредством этих импульсов. Однако обмен ин- формацией по каналам ввода—вывода между ЭВМ и внешними устройствами обычно осуществляется асинхронно. 29
2.2. ТРИГГЕР Основными активными элементами в ЭВМ являются триггеры, используемые в качестве двоичных элементов памяти, каждый из которых способен хранить бит информации. Принцип устройства, имеющего два устойчивых состоя- ния, поясняется на рис. 2.9. Схема имеет два входа: установки и сброса. Первоначально на обоих входах действует сигнал 0. Если на вход установки приходит сигнал 1,то сигнал на прямом (единичном) выходе схемы переходит в состояние 1. Даже тогда, когда снимается сигнал со входа установки, схема остается в этом состоянии благодаря внутренней обратной связи. Триггер, состоящий из схем ИЛИ и инверторов с обратными связями, которые удерживают схему в устойчивых состояниях, по- казан на рис. 2.9, а. Если на вход сброса подать сигнал 1, то схема переходит в противоположное устойчивое состояние и на прямом (единичном) выходе триггера будет 0. Те же обратные свя- зи будут удерживать схему в новом состоянии и после снятия входного сигнала с этого входа. На рис. 2.9, б показано соотно- шение входных и выходных переменных, а на рис. 2.9, в приве- дено условное изображение триггера. Триггер можно легко построить из инверторов и схем ИЛИ, как показано на рис. 2.9. Однако поскольку триггеры используются очень часто, они выполняются как самостоятельные стандартные элементы. Известно несколько вариантов триггеров, которые раз- личаются организацией входных цепей. Услншп&м —** —* Рис. 2.9. Триггер 30
Уста- новка л 3 Q С R Очистка a) Рис. 2.10. /?5-триггер: a — условное обозначение; б — временные диаграммы: в — вре- менные диаграммы двухтактно* го /^-триггера RS-триггер. Этот триггер спроектирован, специально для ра- боты с синхронизацией. Его условное обозначение показано на рис. 2.10* а, Входы S (установка) и R (сброс) используются для подачи сигналов, определяющих последующее состояние триггера, однако сигналы, приложенные к этим входам, оказывают воздей- ствие на триггер только в моменты стробирования (опроса) их синхроимпульсами С. Процесс стробирования показан на рис. 2.10, б. Синхроимпульсы стробируют одновременно входы S и R. Если на входе R будет единица, то синхроимпульс переводит триггер в нулевое состояние (сброс). Если S = 1, то синхроимпульс- переключит триггер в состояние 1 (установка). Входные единичные сигналы S и R не должны появляться одновременно, так как со- стояние триггера будет устанавливаться произвольно. /?3-триггер имеет два дополнительных входа: предустановки и очистки, кото- рые не стробируются синхроимпульсами. На этих входах обычно находятся единичные сигналы. Если на вход очистки подать нуле- вой сигнал, триггер устанавливается в нулевое состояние. При по- даче нулевого сигнала на вход предустановки, триггер перебрасы- вается в единичное состояние независимо от синхроимпульса. Двухтактный RS-триггер, Два /?5-триггера выполняются обыч- но на одном кристалле. Фронт синхроимпульса опрашивает входы и S, и информация запоминается в первом триггере. Спад синхро- импульсов передает информацию во второй триггер, выходы кото- рого являются и выходами двухтактного триггера. Временная диа- грамма для него показана на рис. 2.10, в. Триггер со счетным входом (Т-триггер), В этом триггере име- ется только один вход. Импульс, поступающий на входную шину, изменяет состояние схемы. Если триггер находится в состоянии 31
Рис. 2.11. Счетный триггер (Т-триггер) 1, то оно становится нулевым. Если триггер был в нулевом состоя- нии, то оно становится единичным. Следовательно, выходной сиг- нал повторяется после каждых двух сигналов на входе (счетный режим, пересчет на два). Соответствующая временная диаграмма и условное обозначение Т-триггера приведены на рис. 2.11, а и б соответственно. JK-триггер — это триггер со счетным входом, предназначен- ный для работы в режиме синхронизации. Его условное обоз- начение приведено на рис. 2.12, а. Синхроимпульс опрашивает J и К входы. Если J — то синхроимпульс переключает триггер в состояние 1 (установка). Если только К. = 1, то синхроимпульс перебрасывает триггер в нулевое состояние (сброс). Если входы J и К равны 1, то синхроимпульс изменяет состояние триггера на противоположное. Временная диаграмма приведена на рис. 2.12, б. В //(-триггере также могут быть дополнительные входы установки в 1 и 0 (предустановки и очистки). Двухтактный JK-триггер. Два //(-триггера соединены вме- сте. Выходной сигнал триггера задерживается на длительность синхроимпульса. Временная диаграмма показана на рис. 2.12, в. 8 Уста- новкап 1 О С К Очистка а) R Рис. 2.12. УК-триггер: а — условное обозначение: б —* временная диаграмма: в — вре- менная диаграмма двухтактного /^-триггера 32
с Р Ряс. 2.13. D-триггер? а — условное обозначение; б — временные диаграммы работы D-триггер — это RS-триггер с одним входом данных (D). Фронт синхроимпульса опрашивает вход данных. Если D = 1, то синхроимпульс переключит триггер в состояние 1. Если D = О, синхроимпульс перебросит триггер в состояние 0. Условное обозначение и временная диаграмма D-триггера пока- зана на рис. 2.13, а и б соответственно. D-триггер также приме- няется с установочными (в 0 и 1) дополнительными входами. Запоминающая ключевая схема выполняет функции цифровой схемы квантования и запоминания. Она имеет два входа: данных (D) и синхроимпульсов (С). Информация, поступающая на вход данных (D), передается на выход Q, когда на входе С действует единичный сигнал. Когда на входе С сигнал изменяется на нуле- вой, информация, поступившая на вход данных D, сохраняется на выходе Q. Следовательно, спадом синхроимпульса осуществляет- ся запоминние входной информации. Условное обозначение схе- мы и ее временные диаграммы показаны на рис. 2.14, а и б соот- ветственно. Отметим следующие особенности подключения триггеров. Если входы триггеров R, S, J, К, D, вход синхроимпульсов и установоч- ные входы не подключены, то сигналы на них будут воспринимать- ся как единичные. Заземление входа предустановки переводит триг- гер в состояние 1. Заземление йхода очистки переводит триггер в состояние 0. На входах R и S должны быть всегда противополож- ные сигналы. Выходы J и К, если на оба поданы сигналы высокого уровня (1), нуждаются в синхронизации для работы триггера в счетном режиме. С ——г ГТ1----пгю Рис. 2.14. Запоминающая ключевая схема 2 Зак. 1088
Основные типы триггеров срабатывают по фронту синхроимпуль- са. Двухтактные триггеры из-за передачи информации от первого ко второму триггеру вырабатывают выходной сигнал по спаду син- хроимпульса. Те входы, которые переключают триггер нулевым сигналом (предустановки, очистки, синхроимпульса для двухтактных триг- геров), обозначаются на структурных схемах с горизонтальной чертой сверху. 23. ОСНОВНЫЕ ФУНКЦИОНАЛЬНЫЕ УЗЛЫ Различные блоки и устройства ЭВМ можно построить из типо- вых элементов ограниченной номенклатуры: триггеров, схем И, ИЛИ и инверторов. При помощи комбинаций этих базовых логиче- ских схем можно построить регистры для хранения и сдвига ин- формации, счетчики, сумматоры, селекторы, дешифраторы, блоки памяти и т. д. Регистр. Триггер можно использовать для хранения одного бита информации. Двоичные числа в общем случае содержат п бит, поэтому необходимо устройство, обеспечивающее хранение п бит. Его можно построить, объединив п /?Х-триггеров. Такая схема на- зывается n-битовым или n-разрядным регистром (рис. 2.15, о). Входы R и S используются для параллельного ввода л-битовой информации. Так как на входы R и S должны всегда поступать про- тивоположные сигналы, то на входе каждого триггера исполь- зуется вспомогательный инвертор. Регистры можно построить, используя отдельные триггеры, но они также выпускаются в виде стандартных блоков в интегральном исполнении. На рис. 2.15, 6 А в с л J±LL с •—> Регистр tttt ABU Рис. 2.15. Регистр 34
/tyMjvwKHbtS ДЖ СМигоЙый <'.С Пшедо&а- Рега^Р <<— вчиоткя тельный вхл$ | j * * /№раллея&ный 8хад §) Рис. 2 16. Сдвиговый регистр п п п п п п Рис 2*Л Двоичны# счетчик 9» 35
показано условное обозначение 4-битового интегрального регистра с параллельными входами и выходами. Сдвиговый регистр. Сдвиг числа по разрядам является одной из основных операций в ЭВМ. Сдвиговый регистр — это схема, которая способна сдвигать свое содержимое без изменения последо- вательности битов. Можно обеспечить сдвиг вправо, влево и сдвиг на один, два или любое число разрядов. На рис. 2.16, а приведена структурная схема 4-битового регистра, в котором выполняется сдвиг вправо на один разряд. Условное обозначение регистра дано на рис. 2.16, б. Сдвиговый регистр состоит из двухтактных RS- триггеров. Двоичное число вводится в сдвиговый регистр через входы предустановки. Каждый синхроимпульс сдвигает число на один разряд вправо. На рис. 2.16, в приведен пример сдвига числа 1101, хранящегося в сдвиговом регистре, после 1, 2, 3, 4 тактов сдвига. После первого сдвига самый правый (крайний справа) бит первоначальной информации сдвигается из регистра и теряется. Крайний левый бит станет равным нулю, так как на его вход не подается никакой информации. Операция сдвига на один разряд проходит следующие стадии. Фронт синхроимпульса опрашивает входы А и А и записывает информацию в триггере В. Таким же образом будут происходить сдвиги из В в С, из С в D. Спад синхро- импульса передает информацию на выходы двухтактных тригге- ров, подготавливая ее для выполнения следующего сдвига. Сдвиговые регистры можно построить, используя отдельные триггеры, но они также выпускаются в виде стандартных интеграль- ных схем. Двоичный счетчик. Счетчик — это триггерный регистр, храня- щий двоичные числа. Однако, когда на входе счетчика появляется импульс, счетчик должен увеличить хранящееся число на 1. 4-би- товый счетчик представлен на рис. 2.17, а. Он образован из четы- рех двухтактных JK-триггеров. Общая шина очистки может ис- пользоваться для установки счетчика в исходное нулевое положе- ние. Если К импульсов поступают на вход счетчика, то состояния четырех разрядов счетчика будут представлять двоичное число К. Спад первого импульса установит триггер А в состояние 1. На вы- ходе счетчика после первого импульса образуется число 0001. Спад второго импульса переведет триггер А в состояние 0. Отри- цательный перепад напряжения на выходе А установит триггер В в состояние 1. На выходе счетчика после второго импульса образует- ся число 0010. На рис. 2.17, б показано условное обозначение счетчика, а на рис. 2.17, в даны временные диаграммы его работы для нескольких входных импульсов. Двоичные счетчики можно построить, используя отдельные триг- геры, но возможна их реализация в виде стандартных интегральных схем. Таблица истинности для двоичного счетчика приведена на рис. 2.18, б. Десятичный счгтчик. Другим стандартным интегральным бло- ком является десятичный (декадный) счетчик. Он имеет счетный 36
лоси Рис. 2.18. Десятичный счетчик: а — условное обозначение; б — таблица состояний Очистка ьый 1 млулье Выход двоич- ного счетчика Выход двоич- но-десятично о счетчика (BCD код) D СВ А D С В А 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 2 0 0 10 0 0 10 3 0 0 11 0 0 11 4 0 10 0 0 10 0 5 0 10 1 0 10 1 6 0 110 0 110 7 0 111 0 111 8 10 0 0 10 0 0 9 10 0 1 10 0 1 10 10 10 0 0 0 0 И 10 11 0 0 0 1 12 110 0 0 0 10 б) вход, вход установки в 0 и 4-битовый выход (рис. 2.18, а). Этот счетчик выдает результат в двоично-десятичной форме (BCD). Эго достигается благодаря наличию обратных связей между двоичными триггерами (рис. 2.18, б). Отметим различия между двоичной последовательностью и двоично-десятичной последовательностью сигналов. Обе последовательности одинаковы для отсчетов О, 1, 9. После 9 отсчетов двоичная последовательность продол- жается, в то время как двоично-десятичная прекращается. Таким образом, на выходе двоично-десятичного счетчика каждая деся- тичная цифра представляется четырьмя двоичными разря- дами. Полный сумматор. Суммирование выполняется намного сложнее, чем процедуры, описанные выше, из-за необходимости учитывать перенос. Сложение для (п + 1)-го разряда осуществляется над цифрами слагаемых Ап + 1 и Вп + 1 с учетом переноса Сп спра- ва. Результатом является цифра суммы в разряде п и возможная единица, которую необходимо перенести влево (перенос Сп + г). Полные однобитовые сумматоры выпускаются в виде типовых ин- тегральных микросхем. На рис. 2.19 показано условное обозна- чение одно- и четырехбитового полных сумматоров. Однобито- вый сумматор имеет входы для (п + 1)-го разряда числа А и (я + 1)-го разряда числа В и переноса Сп. Он обеспечивает выходы для суммы 2 (прямой) и 2 (инверсный) и переноса Сп+1 Для последующего бита слева. Четырехбитовый сумматор имеет входы Аи А А 3, Ait Blt Bit В3, Bt п входы переноса из предыдущего разряда Сп. Он обеспечи- вает выходы 2n 2г, 2 з, 24 и перенос в следующий разряд Сп + 4. 37
Рис. 2.19. Полный сумматор Селектор (переключатель). Во время работы ЭВМ необходимо время от времени отключать отдельные блоки машины и связывать их с другими блоками. Эту операцию выполняет селектор. Каждый блок для селектирования должен иметь собственный номер или номер (адрес) устройства. На рис. 2.20, а представлен 4-битовый селектор, с помощью ко- торого можно выбирать до 24 = 16 различных адресов устройств. Этот селектор имеет четыре управляющих входа Л, В, С, D. Если управляющие входы находятся, скажем, в состоянии 0010, то се- лектор откроет вентиль между входом с номером 0010 (2) и выходом с номером 0010. Другие 15 вентилей останутся закрытыми, так как их номера (адреса) отличаются от селектируемого 0010. Этот селек- тор можно использовать для выбора одного из 16 различных ис- точников информации и подключения его к одному из 16 различ- а — условное обозначение; б — структурная схема 2-битового селектора 38
СтроЗ Рис. 2 21. Дешифратор: а — условное обозначение; б — структурная схема 2-битового дешифратора ных ее приемников. Он может также подключать один из 16 источ- ников к одному общему потребителю или используется для связи од- ного общего источника с одним из 16 различных потребителей. На рис. 2.20, б приведена структурная схема 2-битового селектора. Адрес 01 будет выбираться, если А находится в состоянии 1, а В — в состоянии 0 (В = 1). Следовательно, входы В и А используются для включения вентиля с номером 01. Аналогично можно опреде- лить цепи включения остальных вентилей. Селекторы можно построить, используя отдельные вентили, но они также выпускаются в виде стандартных интегральных микро- схем. Такой селектор имеет дополнительный стробируемый вход, связанный с вентилями И. В исходном состоянии вход строба обычно находится под низким потенциалом (0) и поддерживает все выходы на нулевом уровне (0). Когда сигнал строба становится рав- ным единице, на селектируемом выходе устанавливается высокий уровень. Выходы всех вентилей И могут объединяться с помощью схемы ИЛИ в одну общую выходную шину. Дешифратор. Цифровая информация может быть закодирована различными способами. Одним из них является двоичная последо- вательность шестнадцати чисел, скажем 0, 1, ...» 15, которые мо- гут быть представлены четырьмя двоичными знаками А, В, С, D. Если эти разряды находятся в состоянии ООН, то они представ- ляют двоичный код числа 3. 4-битовый дешифратор является прибо- ром с четырьмя входами А, В, С, D и 16 выходами (рис. 2.21, а). Если входы находятся в состоянии ООН, то только на выходе с но- мером 3 потенциал будет высоким, а на всех остальных выходах — низким. На рис 2.21, б приведена структурная схема 2-битового дешифратора. Если на входах АВ находятся сигналы 11, нижняя схема И вырабатывает выходной сигнал. Это происходит всегда, »
когда на входах вентилей конкретной схемы И будут все единич- ные сигналы. Аналогично можно определить цепи включения других венти- лей. Зная таблицу истинности между входными и выходными сиг- налами, можно построить требуемый дешифратор из набора отдель- ных схем. Выпускаются также стандартные дешифраторы в инте- гральном исполнении (с 4 входами и 10 выходами, с 4 входами и 16 выходами, двоично-десятичный для управления семисег- ментным цифровым индикатором и т. д.). 2.4. ПРОЕКТИРОВАНИЕ ЦИФРОВОЙ СИСТЕМЫ Теоремы. Цифровую систему можно определить двумя спосо- бами: с помощью таблицы истинности или логических равенств. Оба способа применяются для проектирования системы, исполь- зующей основные стандартные элементы. В ряде случаев, как отмечалось ранее, одни и те же операции над числами можно выполнять, используя различные комбинации логических элементов. На рис. 2.5 представлены две различные схемы, реализующие одну и ту же функцию ИЛИ—НЕ, на рис. 2.6— схемы, воспроизводящие одну и ту же функцию И—НЕ. Если сис- тема имеет более двух входов и выполняет более сложные функции, она обычно может быть реализована многими различными комбина- циями логических элементов. Разработчик цифровых систем должен решить две задачи: 1. Определить связи входов и выходов схем и найти структуру системы в заданном классе базовых элементов, которая будет вы- полнять требуемые функции системы. 2. Решить задачу минимизации, т. е. выбрать структуру систе- мы, состоящую из минимального числа базовых элементов. Минимизация может оказаться очень трудоемкой процедурой, особенно при проектировании сложной системы. Существует целый ряд методов минимизации. Минимизация особенно важна, если цифровая система производится серийно, когда желательно обес- печить использование минимального количества элементов. Мини- мизация числа элементов уменьшает стоимость и повышает быстро- действие и надежность разрабатываемой системы. Лабораторные цифровые системы обычно просты и не выпускаются в больших ко- личествах. Минимизация может быть выполнена с помощью основ- ных теорем булевой алгебры (табл. 2.1). Наиболее важные теоремы, вошедшие в эту таблицу, можно до- казать, используя таблицу истинности основных логических схем. Здесь А, В и С — двоичные переменные. Левая часть таблицы со- держит теоремы для операций ИЛИ (+). В правой половине табли- цы собраны соответствующие теоремы для операций И(-). Рассмотрим первую теорему для операции ИЛИ: А + 0 = А. 40
Таблица 2.1 Таблица основных теорем булевой алгебры Номер теоремы Дизъюнктивная форма Конъюнктивная форма 1 Л4-о=д Л 1 = Л 2 Д+В=В+Л АВ = ВА 3 Л4-ВС = (Л4-В)(Л4-С) А(В+С)=АВ + Ав 4 Д + Л"е=1 Л-Л=0 5 Л4-Л = Л Л-Л=Л 6 Л 4-1 = 1 Л-0 = 0 7 1=0 8 Л4-ЛВ = Л Л(Л4-В) = Л 9 Л=л 10 Л-|-(В4-С) = (Л4-В)4-С Л(ВС) = (ЛВ)С = ЛВ<5 11 Л4-ЛВ = Л4-В Л(Л4-В) = Л-В 12 Л4-В = Л-В Л“б = Л4-В 13 Л В 4- Л С4- ВС = Л В 4- АС (Л4-В)(Л4-С)(В4-С) = = (Л4-В)(Л4-С) Эта теорема утверждает, что если схема ИЛИ имеет два входа, на одном из которых постоянно действует логический 0, то на ее выходе всегда повторяется значение переменной, поступающей на второй вход. Эта теорема очевидна из определения функции ИЛИ: если в схеме, указанной на рис. 2.4, а, ключ В разомкнут все вре- мя (В = 0), то выходной сигнал равен А. Рассмотрим первую теорему для операции И: А - 1 - А. Эта теорема утверждает, что если схема И имеет два входа, на один из ^которых постоянно воздействует логическая единица, то выход- ной сигнал всегда будет повторять переменную, поступающую на второй вход. Эта теорема очевидна из определения функции И: если в схеме, указанной на рис. 2.3, а, ключ В замкнут все время (Я = 1), то выходной сигнал равен А, Так же можно проанализировать другие теоремы. Эти теоремы и теорема де Моргана (2.2) представляют основу для проектирования Цифровой системы. 41
Пример 1. Проектирование однобитового полного сумматора. Структур- ная схема сумматора показана на рис. 2.19. Сумматор имеет входы для одно- битовой переменной А, однобитовой переменной В и для переноса Сп. В нем формируется значение однобитовых суммы и переноса Сп-н- Следуя основ- ному принципу сложения двоичных чисел, составим таблицу истинности для сумматора, приведенную на рис. 2.22, а. Сложение может быть рассмотрено для двух различных случаев: а) полусумматор: перенос Сп = 0 (т. е. сложение в младшем бите двоич- ного числа), б) полный сумматор: Сп может принимать значения либо 0, либо 1 (т. е. все возможные биты двоичного числа). Рассмотрим вначале случай а), который представлен первыми четырьмя строками таблицы на рис. 2.22, а. Устройство, которое выполняет операцию сложения однобитовых двоич- ных чисел, называется полусумматором. Такое устройство имеет два входа А и В и два выхода, один называется выходом суммы, а другой — выходом пе- реноса. В соответствии с правилами сложения двоичных чисел и табл. 2.1 на выходе суммы будет 1, если единице равна любая переменная А или В, но не тогда, когда и А и В равны единице одновременно: S == А . В + А .В. (2.5) Это булево уравнение читается так: В равно А и не В или не Л и В. Ут- верждается, что 5=1, когда Л = 1 и В — 0 или когда А — 0 и В = 1. а) Рис. 2.22. Однобитовый сумматор: □ — таблица истинности; б — две схемные реализации 42
Переменная на выходе переноса равна 1, если обе входные переменные рав- ны 1: Свых — А » В. (2 «6) Это уравнение читается так: С равно А и В. Схемная реализация этих двух выражений показана на рис. 2.22, б. Попытаемся минимизировать число базовых элементов в схеме полусум- матора. Полусумматор состоит из двух частей, соответствующих выражениям. (2.5) и (2.6). Можно попробовать преобразовать выражение (2.5) так, ч^ббы оно содержало выражение (2.6). В результате полусумматор будет состоять только из одной части: 5 = АВ + АВ S = АА + АВ + АВ + ВВ S = Л (Л + В) + (В (Л + В)) S = (Л + В) > (Л + В) S = (Л + В) . (ЛТВ) Начало Теорема 4, слева (табл. 2.1) Теорема 3, справа Теорема 3, справа Теорема де Моргана S = (Л + В) * (Л . В). (2.7) Теперь мы можем реализовать соотношение (2.7) для 5 и соотношение (2.6) для Свых. Схемные реализации этих двух выражений показаны на рис. 2.22, в. Цифровые схемы, представленные на рис. 2.22, бив, выполняют одну и ту же функцию — обе являются полусумматорами. Однако первая схема состоит из шести основных элементов, тогда как во вторую схему вхо- дит только четыре таких элемента. В качестве другого примера преобразования булевых выражений возь- мем за исходное выражение (2.7) и попытаемся получить его эквивалент в виде выражения (! >): S = (Л -|- В) . (Л . В} 5 = (Л + В) j (Л + В)_ S = Л (Л + В) + В (А + В) S = АА + АВ + ЛВ + ВВ S = АВ + АВ Начало Теорема де Моргана Теорема 3, справа Теорема 3, справа Теорема 4, слева Нет установившихся правил, какую теорему использовать при преобра- зовании логических выражений и в каком порядке. Лучшим учителем яв- ляется практический опыт Обычно стремятся преобразовать булевы выра- жения к одной из двух форм: А(Л,В, С, ...) =(Л . в...) + (В . С...) + ( ) + ( ), (2.8) f2 (Л, В. С, ...) = (Л + В ...) . (В + D+ ...) . ( ) . ( ). (2.9) Функция fi описывает систему, состоящую из многих частей ( ), ко- торые объединены операцией ИЛИ (+), функция /2 ~ систему, состоящую из многих частей ( ), которые объединены операцией И (.). Как показано в первом примере, мы преобразуем функцию fi в ее экви- валент /2 [уравнение (2.5) в (2.7)]. Вначале используем теорему 4, а затем теорему 3. Эта теорема имеет специальное название — распределительный за- кон. Она обычно полезна при выполнении описанной процедуры преобразо- вания выражения типа /\ в выражение типа f2. Во втором примере мы преобразовали логическое выражение из вида ВИД /х, применив вначале теорему де Моргана, а затем распределительный nnu°H Под°бные преобразования логического выражения полезно выполнять Р решении практических задач. 43
В качестве следующего примера спроектируем схему полного сумматора, который имеет два входа Л и В и вход переноса Свх. Работа полного сумматора поясняется таблицей, приведенной на рис. 2.22, а. Значение суммы в полном сумматоре можно получить при выполнении следующих условий, указанных в этой таблице, которые обеспечивают появление 1 на выходе схемы: А * В • Свх, А • В • Свх, А • В • Свх, А • В • СВх- Так как при каждом из этих условий формируется 1 на выходе, их можно объединить операцией ИЛИ. В результате получим S = А > В . Свх + А . В • Свх + Л . В . Свх + А . В . Свх. (2.10) Тем же способом можно получить выражение для единицы переноса Свых: Свых — А • В • Свх + А • В • Свх + А • В . Свх + А • В • СВх- (2.11) Эти два выражения можно минимизировать до получения формы S = (Si + Свх) . (Si . Свх), (210 а) Свых = Ci . С2, (2.11а) где _______ S1 = (Л + В) , (А > В); (2.12) Ci = А - В\ (2.13) С2 — Sx • Свх» (2 14) Нетрудно заметить, что соотношения (2.10а) и (2.12) описывают работу полусумматора и идентичны по форме. Соотношения (2.13) и (2.14) описывают формирование переноса в полусумматоре и также идентичны по форме. По- этому два полусумматора и схема ИЛИ, описанная соотношением (2.11а), реализуют полный однобитовый сумматор, как показано на рис. 2.22, г. Выход Si первого полусумматора называют частичной суммой Значения Si приведены в таблице истинности на рис. 2.22, а. Проектируя полный сумматор, были рассмотрены основные этапы про- ектирования цифровых систем. Большинство лабораторных цифровых уст- ройств проще, чем сумматор, поэтому их схемы могут быть синтезированы по простейшим булевым теоремам или прямо по таблице истинности с исполь- зованием основных логических элементов. Пример 2. Проектирование цифровой схемы сравнения (компаратора). Цифровая схема сравнения — это схема, с помощью которой сравниваются два n-битовых числа А и В. Если два числа идентичны, выход схемы срав- нения равен 1. Если же они различны, на выходе схемы сравнени появ- ляется 0. Вначале составим схему сравнения для однобитовых переменных А и В. Единичный сигнал на выходе будет появляться р том случае, если обе переменные А и В равны 1 или обе равны 0: Q = А . В+ А. В. (2.15) На рис. 2.23, а показана схемная реализация выражения (2.15). Эта схема является схемой типа /х, определяемой выражением (2.8) В качестве упраж- нения преобразуем ее в схему типа /2> определяемую выражениехм (2.9): Q-AB+A-B <2-=(Л+в)-(Л+В) Q~(AB)-(A + B) Q~CTB)-(A + B) Начало Теорема де Моргана Теорема де Моргана (2-16) 44
Рис 2 23 Цифровая схема сравнения Выражение (2.16) является инверсией выражения (2.4), описывающего схему Исключающее ИЛИ. На рис. 2.23, б изображена схемная реализация выражения (2.16), использующая стандартный элемент Исключающее ИЛИ Это схема однобитового сравнения. Для сравнения двух n-битовых чисел необходимо использовать п таких схем. Единица на выходе образуется только тогда, когда на выходах Q2, ..., Qn всех п схем имеются единицы: Q = Qi • Q2... Qn- (2.17) На рис. 2.23, в приведена схемная реализация n-битовой схемы сравне- ния, соответствующая выражению (2.17) (схема типа /2)- Как и раньше, рассмотрим эквивалентное преобразование этой схемы к виду типа Д. Теорема де Моргана дает: Q = Qi • Q3... Qn = Qi + Q2 +Q3+ .* Qn- (2.18) Схемное воплощение выражения (2.18) показано на рис. 2.23, г. Это n-битовая схема сравнения, построенная на типовых логических элементах. Пример 3. Преобразователь последовательного кода в параллельный. Существуют два типа цифровых устройств, различающихся параллельной или последовательной формой представления двоичных чисел. До сих пор мы рас- сматривали устройства параллельного действия. В таких устройствах каж- дый разряд двоичного числа представлен электрическим сигналом, поступаю- щим на отдельный вход одновременно с сигналами других разрядов на других входах. В устройствах последовательного действия входные импульсы (или состояния, характеризуемые отсутствием импульсов) поступают последо- вательно, один за другим, и информация, отображаемая этой последователь- ностью импульсов, может быть передана с одной точки пространства в дру- гую по единственной линии связи (в простейшем случае необходим один ин- формационный и один земляной провод). На рис. 2.24. а показан последовательный код двоичного числа 1010. теперь покажем, как можно спроектировать схему для преобразования па- раллельного кода в последовательный. Схема должна иметь 22 = 4 входа ^параллельный код) и один выход. Эту схему можно построить из одного двух- итового счетчика (рис. 2.17) и одного двухбитового селектора (рис. 2.20). 45
Полностью схема приведена на рис. 2.24, б. Параллельный информационный код постоянно воздействует на входы схемы: синхроимпульсы, поступающие на счетчик, переводят его в последовательные состояния О, 1» 2» 3. В резуль- тате счетчик последовательно подключает вентили 0, 1, 2 и 3. Поэтому вна- чале опрашивается первый бит 0, вследствие чего на выходе появляется ко- довый сигнал: импульс (или отсутствие импульса). Аналогично формируются сигналы битов 1, 2 и 3. На рис. 2.24, а изображен последовательный код сформированного выходного сигнала. Далее рассмотрим схему преобразователя 2-битового последовательного кода в параллельный. Схема имеет один вход для последовательного кода и 22=4 выхода. Эта схема во многом аналогична предыдущей и представлена на рис. 2.24, в. Автоматизация проектирования цифровых систем на ЭВМ. Про- цесс проектирования цифровой системы сводится к выполнению определенного набора правил. Эти правила.можно запрограммиро- вать на ЭВМ. Сейчас уже имеются программы, используемые на различных стадиях проектирования цифровых систем и устройств. Минимизация. Входом в программы минимизации является таблица истинности. Программа находит логическое выражение и тип решения (описывающего выход) в виде уравнений (2.8). На современном уровне автоматизации проектирования имеются про- граммы, оперирующие с выражениями, содержащими до 11 входных переменных (например, программы LOGMIN, фирмы Tymshare Inc, TRUMIN, фирмы Brookhaven 21 22 г3 National Laboratory). Рис. 2.24. Преобразователи кодов: а — последовательное представление информации: б — схемная реализация преобразова- ния параллельного кода в последовательный^ в —- схемная реализация обратного пре- оор&зовзния 46
tt) BLKDES: 1, CLK, 50, Т TIME BLK TYP STATE BLKDES: 2, RST, 1, 1, F, —8 BLK DES: 3, RST, 1, —2, F, —8 1 8 INV T BLK DES: 4, RST, 1, —8, F, —8 50 1 CLK T BLK DES: 5, RST, 1, -4, F. —8 51 2 RST T BLK DES: 6, AND, 1, 3, 5 100 1 CLK F BLK DES: 7, SS, 1, 10, 6 150 1 CLK T BLK DES: 8, INV, 1, 7 151 2 RST F ELK DES: END 152 3 RST T 200 1 CLK F 250 1 CLK T 251 2 RST T 300 1 CLK F 350 1 CLK T 351 2 RST F 352 3 RST F 353 4 RST T 400 1 CLK F 450 1 CLK T Рис. 2.25. Моделирование десятично- 451 2 RST T 500 1 CLK F го счетчика 500 - STOP AT TIME LIMIT a — схема; б — входное описание; в — рас- . печатка результата &) Моделирование. При проектировании цифровой системы целесооб- разно проанализировать ее работу перед построением макета. Про- граммы моделирования позволяют определить состав системы по блокам, состояние каждого блока, соединения между блоками и за- держки распространения сигналов в блоках. Программа отражает состояние каждого блока как функцию времени. Рис. 2.25 иллюстри- рует моделирование десятичного счетчика. На рис. 2.25, а изо- бражен счетчик, схема которого выбрана разработчиком (4 триг- гера; после десяти отсчетов благодаря обратной связи счетчик сбрасывается в нуль; CLK — генератор синхроимпульсов; RST — триггер; R = 1 — сброс; S = 1 — установка; Т =* 1 — инверти- рует состояние триггера; SS — одновибратор; —О------инверсия). 47
На рис. 2.25, б приведены входные данные для программы; F и Т означают ЛОЖНО или ИСТИННО соответственно. Каждая строка входного описания определяет один из восьми блоков. Программа воспринимает эту информацию следующим образом. Блок 1. Генератор синхроимпульсов; период следования импульсов равен 50 ед. времени; Т — ИСТИННО при t = 0. Блок 2. RST-триггер; задержка равна 1 ед. времени; на вход Т поступают счетные импульсы блока 1; на входе S значение ЛОЖНО, по входу R триггер управляется инвертированными сиг- налами с выхода блока 8. Блок 6. Вентиль И; задержка равна 1 ед. времени; входы связаны с блоками 3 и 5. Блок 7. Одновибратор; задержка равна 1 ед. времени; дли- тельность импульса равна 10 ед. времени; запускается сигналами от блока 6. Блок 8. Инвертор; задержка равна 1 ед. времени; вход от блока 7. Результаты работы программы для первых десяти периодов син- хроимпульсов представлены на рис. 2.25, в. Можно проследить за изменением состояния каждого блока во времени. Это пример ра- боты программы LOGSIM, фирмы Tymshare Inc. Генерация таблицы истинности. Составляется входное описа- ние требуемой системы. Программа формирует таблицу истинно- сти. Программы моделирования могут использоваться в диалоговом режиме и легко осваиваются разработчиками, не имеющими спе- циальной подготовки в области программирования. Эти програм- мы оказывают существенную помощь в проектировании цифровых систем. 25. ИНТЕГРАЛЬНЫЕ ЛОГИЧЕСКИЕ СХЕМЫ Типовые логические схемы и триггеры построены на транзисто- рах, диодах и резисторах в дискретном или интегральном испол- нении. Они группируются в следующие классы: TTL — транзисторно-транзисторная логика; RTL — резистивно-транзисторная логика; DTL — диодно-транзисторная логика. В обычном дискретном исполнении TTL-логика не нашла ши- рокого применения, просто потому, что транзисторы являются более дорогими компонентами, чем диоды или резисторы. В интег- ральных схемах, наоборот, реализация транзисторов более простая и дешевая в технологическом отношении, чем реализация резисто- ров. В результате TTL-схемы стали наиболее распространенным типом интегральных логических элементов. На основании теоре- мы де Моргана (2.2) очевидно, что операция ИЛИ может быть вы- полнена с помощью схемы И—НЕ. Точно так же операция И может быть выполнена с помощью схемы ИЛИ—НЕ. Логические 48
Рис. 2.26. Положительная и отрицательная логика: Н — высокий уровень, L — низ- кий уровень схемы, реализующие операции И и ИЛИ, иногда называют поло- жительной логикой, а логические схемы И—НЕ и ИЛИ—НЕ — отрицательной логикой. Элементы И—НЕ и ИЛИ—НЕ потреб- ляют меньшую мощность, в результате большинство TTL-схем являются схемами И—НЕ и ИЛИ—НЕ. Чтобы различать элементы отрицательной и положительной логики, используют маленькие кружки в условных обозначениях (рис. 2.26). Эти кружки символизируют операцию инвертирования. Если кружок изображен на стороне выхода элемента, то он указы- вает инвертирование выходных сигналов. В качестве примера срав- ним таблицу истинности для элемента И (рис. 2.26, а—в) с табли- цей истинности для элемента И—НЕ (рис. 2.26, а—ё). Если кружок изображен на стороне входа, он соответствует ин- вертированию входных сигналов перед выполнением над ними ос- новных логических операций. В качестве примера укажем, что схема ИЛИ (рис. 2.26, б—д) со входами Д, В вырабатывает тот же выходной сигнал, что и схема ИЛИ на рис. 2.26, б—е для сигналов Д, В. Можно перефразировать это утверждение. Схема ИЛИ (рис. 2.26, б—д) формирует высокий выходной сигнал Я(1), если на одном или более входах имеется сигнал высокого уровня. 49
Схема на рис. 2.26, б—д формирует высокий выходной сигнал Н (1), если на одном или более входах действует низкий уро- вень (0). На рис. 2.26 систематизированы варианты реализации функций И и ИЛИ, и их таблицы истинности для случая двух переменных. Логические элементы иногда выпускаются в виде модификации «с открытым коллектором». Это означает, что в схеме отсутствует резистивная’связь между выходом схемы и шиной питания. Разра- ботчик может соединить выходы двух или более схем параллельно и через общий резистор подключить их к источнику питания. Та- ким путем можно реализовать схему о большей нагрузочной спо- собностью. Транзисторы в логических ехемах не являются идеальными клю- чами. В результате каждая логическая схема представляет опреде- ленную нагрузку для элемента, к выходу которого она подключе- на. Эта нагрузка определяет значение коэффициента объединения по входу. Каждый логический элемент может управлять только конечным числом других элементов, подключенных к его выходу. Эта управляющая способность характеризуется коэффициентом разветвления по выходу. Значения этих коэффициентов опреде- ляются величинами протекающих токов. Поставщики типовых логических схем снабжают разработчиков информацией о нагрузрчных свойствах своих изделий. Для ти- повых элементов И—НЕ коэффициент объединения по входу может составлять 1, а коэффицинт разветвления по выходу 10. Это озна- чает, что такой элемент И—НЕ может управлять десятью анало- гичными элементами одновременно. Выпускаемые интегральные схемы характеризуются разным быстродействием. Так как различные блоки систем обработки ин- формации допускают разное быстродействие, то представляется воз- можным улучшить показатели системы, уменьшить потребляемую мощность и снизить общую стоимость путем использования в од- ной и той же системе логических элементов различных типов. Однако при этом необходимо проверить совместимость выбранных типов элементов (по логическим уровням и нагрузочной способно- сти). 2.6. СТРУКТУРА ЭВМ Организация вычислительного процесса. Наиболее совершенной из разработанных цифровых систем является ЭВМ с хранимой программой. Гипотетический вычислитель, который демонстрирует логику и методику программирования, впервые был предложен Тьюрингом. Современные ЭВМ, созданные для широкого и разно- образного применения, во многом отличаются одна от другой. Однако при решении задач все современные ЭВМ выполняют одни и те же основные функции: ввод информации., хранение, арифмети- ческое и логическое преобразование, вывод информации и, наконец, 50
Ячейка О а) Рис. 2.27. Структурная схема ЭВМ (а), организация памяти (6) Ячейки Я I 11 7 г И 11 5шпй управления работой входящих в ЭВМ устройств. Структурная схема ЭВМ показана на рис. 2.27, а. Устройства ввода. Используются для ввода данных, необхо- димых для вычислительного процесса, а также для ввода програм- мы, определяющей алгоритм обработки этих данных. Требования к устройствам ввода изменяются от машины к машине. Стандарт- ными устройствами ввода являются: клавиатура, считывающие устройства с перфолент и перфокарт. Ввод информации также мо- жет осуществляться с магнитных лент, с магнитных дисков или ба- рабанов, с экрана дисплея. Каналы непосредственного ввода данных используются для приема данных, когда ЭВМ работает в измери- тельных или управляющих системах. Устройства вывода. Результаты работы ЭВМ выдаются поль- зователю через устройство вывода. Общепринятыми устройствами вывода являются: телетайп, ленточный или карточный перфоратор, печатающее устройство (АЦПУ) и графопостроитель. Вывод может осуществляться также на магнитные ленты, диски, барабаны. Если необходим быстрый вывод результатов, то используются дисплеи. Когда ЭВМ применяется в измерительных или управляющих систе- мах, то каналы вывода данных могут быть использованы для ини- циации, управления или прекращения физического процесса (на- пример, для регулирования электрического напряжения). Запоминающие устройства хранят данные, необходимые для вычислений, промежуточные результаты вычислений и конечные результаты перед выводом. Они также содержат команды, управ- ляющие действиями вычислительной машины над данными. ЭВМ неотступно следует командам, выполняя в точности то, что ей предписано. Арифметическое устройство фактически выполняет вычисле- ния и расчеты. Это устройство может получать числа и выполнять над ними арифметические или логические операции, такие, как 51
сложение, вычитание, умножение, деление, операции И, ИЛИ. Ариф- метическое устройство должно иметь регистры для хранения чис- ловой информации. Количество этих регистров зависит от специфи- ки машины. Главный регистр называется аккумулятором или на- капливающим сумматором. В начале вычисления этот сумматор содержит один из операндов. В конце вычисления он обычно со- держит результат. Устройство управления. Все операции ЭВМ должны быть син- хронизированы и выполняться в соответствии с командами про- граммы. Имеется сравнительно небольшой набор операций, кото- рые может выполнить ЭВМ. Устройство управления является орга- низующим или направляющим устройством. Оно получает команду из памяти и решает, как и когда выполнить соответствующие опе- рации. Оно знает, когда заканчивается такт работы каждого уст- ройства, и сообщает, что ему необходимо делать дальше. Запоминающее устройство. Память ЭВМ содержит большое количество ячеек памяти или элементов памяти. Каждая ячейка используется для хранения п битов двоичной информации. Ин- формация, хранящаяся в одной ячейке памяти, называется также словом. Число используемых битов п определяет размер слова и обычно зависит от точности, с которой в машине представляется число. Всегда можно достигнуть необходимой точности путем ис- пользования для представления числа более чем одного слова. Однако всегда лучше выбирать ЭВМ с длиной слова, соответствую- щей требованиям по точности для конкретного ее применения. Длина слова изменяется от машины к машине. Для малых ЭВМ характерна длина слова от 4 до 16 бит. Большие машины оперируют с более длинными словами. Память может состоять из нескольких тысяч ячеек или слов. В малых ЭВМ память может наращиваться блоками памяти по 4096 слов (4К слов). Следовательно, объем памяти может быть равен 4096, 8192 или 12288 и т. д. слов. Современные большие ЭВМ имеют память объемом в десятки тысяч слов. Память можно уподобить населенному пункту, состоящему из множества домов. Каждый дом соответствует одной ячейке памяти и храпит одно слово или одну единицу информации. Он имеет свой собственный адрес, по которому его распознают. Поле памяти, состоящее из множества ячеек, изображено на рис. 2.27, б. Каждая ячейка постоянно связана с собственным но- мером, называемым ее адресом. Обращение к необходимой ячейке осуществляется при помощи адреса ячейки. Таким образом, чтобы извлечь нужную информацию из памяти, необходимо знать адрес ячейки, по которому эта информация хранится. В каждый момент времени можно обратиться только к одной ячейке. Наиболее простым способом построения памяти является ис- пользование полупроводниковых триггерных регистров. Каждый n-битовый регистр может быть использован для хранения одного слова памяти. Такая регистровая память выполняется для слу- 52
№ ДУ Рис. 2.28. Петля гистерезиса ферро- магнитного материала (а), намагни- чивание ферритовых сердечников (5) чаев, где необходимо ограниченное количество слов или ячеек. Память больших машин для хранения двоичной информации обыч- но реализуется с применением магнитных материалов. Так как в ЭВ/Ч вся информация представлена в двоичной форме, удобно хранить ее на ферромагнитных материалах. Петля гистерезиса ферромагнитного материала представлена на рис. 2.28, а. Если материал первоначально был намагничен до состояния WS, то требуется намагничивающая сила Fd для изме- нения полярности намагниченности, т. е. для перехода в состояние SA/. Когда намагничивающая сила снимается, магнитное состояние изменяется по петле гистерезиса из точки d в точку е. Материал остается намагниченным до состояния SAZ, которое сохраняется. Используется несколько типов памяти на магнитных материалах: на ферритовых сердечниках, магнитных барабанах, магнитных дисках и магнитных лентах. Ферритовая память, В большинстве случаев память ЭВМ со- стоит из большого количества маленьких магнитных сердечников, которые могут иметь два разнополярных состояния намагничен- ности: NS или SAL Каждый сердечник используется для хранения бита информа- ции. Прошив токоведущими проводами сердечники и изменив на- правление тока, можно изменить направление намагниченности сердечников (рис. 2.28, б). Так как масса сердечника очень мала (диаметр порядка 0,8 мм), то для изменения его состояния необ- ходимы малая намагничивающая сила и малое время переключения (сотни наносекунд). После прекращения тока магнитное состоя- ние сохраняется неограниченно долго. Поэтому сердечник явля- ется элементом с двумя состояниями и используется в качестве ос- новного элемента хранения одного бита информации. Для хранения n-битового слова требуется п сердечников. За- пись или считывание информации в виде слов производится парал- лельно по всем п сердечникам. Время, неоходимое для на- хождения и пересылки информации, называют временем обращения 53
к памяти. Время обращения в новых моделях ферритовой памяти очень мало — менее 1 мкс. ЭВМ может обращаться к любой ячей- ке памяти на сердечниках в любое время, возможен также произ- вольный порядок перехода от одного адреса к другому. Очевидно, что память на ферритовых сердечникам является памятью с произ- вольной выборкой. Из-за легкого и быстрого обращения к хранимой информации ферритовая память используется для хранения программ и данных, к которым необходим частый доступ во время вычислений. Память на магнитном барабане. В запоминающем устройстве на магнитном барабане слой магнитного материала нанесен на поверхность цилиндрического барабана, который вращается с боль- шой скоростью (рис. 2.29). Поверхность барабана разделена на строки и дорожки. На каждой дорожке расположены две головки: записи и считывания. Во время вращения барабана с постоянной скоростью вокруг своей оси строки последовательно проходят под двумя комплектами головок. Процессы считывания и записи долж- ны быть синхронизированы с вращением барабана. Время обраще- ния к какой-либо строке зависит от положения этой строки отно- сительно блока головок в момент поступления запроса от ЭВМ. Время обращения к строке колеблется от 0 до времени, необходи- мого на полный оборот барабана. Среднее значение времени обра- щения равно времени полуоборота, которое обычно составляет от 2 до 10 мс. Информация на барабане размещена в виде зон. Зоной является группа слов, последовательно записанных на поверх- ности барабана. Обмен информацией с зоной записи между ЭВМ и барабаном может осуществляться с достаточно большой скоростью. Для на- хождения начала записи необходимо время, измеряемое миллисе- кундами, но после этого передача записи происходит в течение не- скольких микросекунд. Накопитель на барабанах можно использовать для хранения про- грамм перед их выполнением и хранения большого количества данных. Барабаны для малых машин обычно имеют около 128 до- Рис. 2.29. Запоминающее устройство на магнитном барабане рож ек и емкость около четверти миллиона слов. Память на магнитных дисках. Это запоминающее устройство состоит из ря- да тонких дисков, покры- тых магнитным материа- лом (рис. 2.30). Обычно имеется свой блок головок записи — считывания на каждую поверхность диска. Блок головок размещен на специальном рычаге, имею- щем возможность переме- 54
Рис. 2.30. Запоминающее устрой- ство на магнитных дисках Рис. 2.31. Запоминающее устрой- ство на магнитной ленте щаться относительно диска так, чтобы обеспечивался доступ го- ловок к любому месту на его поверхности. Время обращения со- стоит из времени установки блока головок в нужное место, кото- рое достигает 100 мс, и запаздывания от вращения диска, кото- рое может быть равно 10 мс. Обычно магнитные диски используют- ся в качестве вспомогательной внешней памяти. Данные хранятся на дисках в виде зон, что обеспечивает высокий темп обмена ин- формацией между диском и ферритовой памятью. Накопители на магнитной ленте (НМЛ). Когда требуется сохранить большие количества данных, в ЭВМ обычно используют магнитную ленту. Лента позволяет хранить любое необходимое количество данных, так как ее всегда можно склеить или добавить новую кассету. На рис. 2.31 схематически изображено устройство накопителя на магнитной ленте. Чтобы считать нужную часть ин- формации, ленту необходимо привести в движение и перемотать. Для этого потребуется несколько секунд или даже минут в за- висимости от скорости движения ленты. Однако непрерывная передача информации с найденной зоны может происходить с вы- сокой скоростью — около 0,5 млн. битов в секунду. Накопители на магнитных лентах применяются в качестве вспомогательной внеш- ней памяти и для ввода—вывода большого количества информации. Устройства ввода—вывода. Существует в принципе два раз- личных вида связи с ЭВМ: между ЭВМ и пользователем и между ЭВМ и другим электронным устройством. Здесь будет рассмотре- на связь с пользователем. Широко используются перфокарты, перфоленты и вывод на печать, но техника их ввода—вывода для всех ЭВМ различна. Процесс ввода информации осуществляется в два этапа. Вна- чале проводится перфорация карт или лент на специальных кла- вишных устройствах, не связанных с ЭВМ. Подготовленные таким образом карты или ленты считываются в ЭВМ с помощью механиче- ских устройств ввода. 55
Процесс вывода происходит в обратном направлении. Внача- ле электромеханические устройства вывода ЭВМ перфорируют пер- фоленту или карты. Затем эти карты или лента считываются вспомо- гательными устройствами, не связанными с ЭВМ, и произвэдится распечатка информации. Наиболее широко используемым устройством для связи с поль- зователем мини-ЭВМ является телетайп. Он состоит из клавиату- ры, печатающего механизма, устройства считывания с перфолен- ты и ленточного перфоратора. Телетайп можно использовать для ввода информации в ЭВМ через клавиатуру или устройство считы- вания с перфоленты и для получения выводимой из ЭВМ информа- ции — через печатающее устройство или ленточный перфоратор. Перфокарты. Ввод с перфокарт — наиболее широко исполь- зуемый способ ввода. Пробивка карт осуществляется цифровыми устройствами. Каждая изображенная позиция на карте является потенциальной пробивкой, которая или пробита, или нет. На стан- дартных картах IBM позиции размещаются по 80 колонкам и 12 строкам. Обычно одна колонка содержит пробитый код для одной цифры, буквы или символа. Для удобства обращения с перфокар- той сверху над колонкой напечатан тот символ, код которого со- держится в данной колонке. Пример перфокарты показан на рис. 2.32. Перфолента, как и перфокарты, использует отверстия (про- бивки) для кодирования информации. Перфолента обычно имеет 8 дорожек, как показано на рис. 2.33, но иногда встречаются лен- ты с 5, 6 или 7 дорожками. Двоичный код на ленте зависит от осо- бенностей перфорирующего механизма. Наиболее часто исполь- зуется код, который представлен в табл. 1.7. Восемь пробивок (перфораций) объединяются в группы 2 + 3 + 3, каждая из групп используется для представления одной восьмеричной цифры. Обра- тите внимание, что в качестве кода самих восьмеричных цифр от 0 до 7 используется сумма соответствующей цифры и числа 2608. /♦LacALCSMij.cstraAjCSMSB / II I 1111 III I I I I и.................... з|зазН1зза|1зззз||ззззззз 1 1 3 3 3 1 3 1 1 3 2 Ш 1 3 2 3 1 ззззззззз221з11ззз1зззтзз1ззззззз |4 4 4 <<4<|<<<<<|44<<4|< < 4 4 4 << 4 4 4 <44< < 4 4 4 <K44< 4 4 4 4 < 4 44 <44<<44<<<4<< <4<4<<<<4< <<4 4 Н5 5ИИ53НЗЗИНИНННИИ$ЗИННИИИИНИИ$ННИПНИКИПНИИ 5 S 5 1 7317 H7 777 7 777777 77 77 ПП71ПН7 7177 7т7Н71ПНП1П71НиН НН Н17НШ 7171 I 04S«IIIIBH0tlll3|Hllltlllll||lllllllll<lll|IKI I Hill I И IHH<I<H<II mil HI» I Н1ПН11ННИ8НВН|ННИННННИИННН9И9МИНННННПНННННПН I tl « S* J i » n ч о и • » n и Я »» мп и а» HW И n M MMII « <1 M «« IIII и ИЯ Я И И !5 Я ЯМЯ U ti q u ИИНП И Н5» H » 4__________ ^IMIWI_______________________ „ ............ ... Рис. 2.32. Перфокарта 56
Рис. 2.33. Перфолента Печатающее устройство. Если необходимо вывести на печать большое количество данных, то самым удобным является построч- но печатающее устройство (АЦПУ), так как оно печатает резуль- таты с большой скоростью. Это устройство печатает полную стро- ку из 60 или более символов одновременно и работает со скоростью до 1000 строк в минуту. Существуют и другие, реже используемые средства ввода—вывода, а также разрабатываются новые устрой- ства. 2.7. МИКРОПРОЦЕССОР И ПОЛУПРОВОДНИКОВАЯ ПАМЯТЬ Цифровые БИС. Микропроцессоры являются новыми полупро- водниковыми компонентами. Каждый полупроводниковый кри- сталл эквивалентен одному из основных блоков вычислительной системы. Соединив несколько больших интегральных схем (БИС), можно построить любую микро-ЭВМ. Несмотря на малые размеры и дешевизну такие ЭВМ обладают достаточной вычислительной мощ- ностью. Применение микропроцессоров можно разделить на две кате- гории: 1. Микропроцессоры, облегчающие проектирование цифровых ло* гических схем. Вместо проектирования цифровой логической схемы разработчик может взять стандартный микропроцессор массового производства и запрограммировать его на решение требуемой за- дачи. 2. Микро-ЭВМ, заменяющие мини-ЭВМ. Во многих случаях вычислительные возможности мини-ЭВМ являются избыточными для конкретной задачи. Необходимый объем вычислений могут вы- полнить простые и недорогие микро-ЭВМ. Микропроцессоры уже нашли применение во многих областях: — микро-ЭВМ, — канал ввода—вывода для больших ЭВМ, — внешние устройства ЭВМ, — распределенные сети ЭВМ, — передача данных, — управление складским учетом и распределением, — управление механизмами, — научное приборостроение, —- автомобильные и авиационные контроллеры, биомедицинские системы, 57
— оптические распознающие системы (читающие автоматы). — товары широкого потребления, — калькуляторы, — автоматизированное диагностическое оборудование, — робототехника. Структурная схема базовой микровычислительной системы, связанной с типовым набором внешних устройств, приведена на рис. 2.34. Основными устройствами системы являются: централь- ный процессор, программируемая память, память с произвольной выборкой текущих данных, устройства ввода—вывода и генератор синхроимпульсов. Каждое из этих устройств реализовано в виде цифровой БИС. В настоящее время для изготовления микропроцессоров ис- пользуются три основных технологии: биполярная, МОП и И2Л. По биполярной или ТТЛ-технологии изготовляются микросхе- мы, состоящие из биполярных транзисторов. Биполярные БИС характеризуются большим быстродействием и задержкой в пере- даче сигналов величиной в несколько наносекунд. Однако характе- ристики плотности компоновки и потребляемой мощности таких БИС не очень хороши. Для биполярных микропроцессоров время цикла команды составляет около 0,1 — 1 мкс. По МОП-технологии изготовляются микросхемы, состоящие из полевых транзисторов. Плотность компоновки элементов высокая, но задержка в передаче сигналов очень большая (может составлять доли микросекунды). Для МОП-микропронессоров характерно вре- мя цикла команды 2—20 мкс. Микросхемы, изготовленные по интегрально-инжекционной тех- нологии (И2Л), характеризуются большой плотностью компонов- Рис. 2.34. Структурная схема типовой микро-ЭВМ 58
ки МОП-микросхем и высоким быстродействием биполярных микро- схем. Поэтому на смену МОП- и биполярной технологии приходит И2Л технология, призванная сыграть ключевую роль в техноло- гии изготовления микропроцессоров. Полупроводниковая память с произвольной выборкой (ЗУПВ). Биполярная и МОП-технология применяются сейчас при изготовлении памяти. ЭВМ может обращаться к любой ячейке полупроводниковой па- мяти в любое время. Очевидно, что полупроводниковая память, как и ферритовая, является запоминающим устройством с произвольной выборкой (ЗУПВ). ЭВМ может осуществлять операции считывания и записи данных в такую память. Для хранения каждого бита ин- формации используется один триггер, построенный по схеме рис. 2.9. Такая память называется статической: бит информации хранится в памяти до тех пор, пока включены источники питания. Когда источники отключаются, содержимое ячеек памяти теряется. Поэтому полупроводниковая память представляет собой разрушае- мый тип памяти. Память с произвольной выборкой можно сделать неразрушаемой, если использовать автономные источники питания. Некоторые разновидности МОП-памяти используют конденса- торные накапливающие ячейки. Здесь данные сохраняются в виде заряда на емкостях в МОП-транзисторах. Для сохранения запи- санных данных конденсатор может подзаряжаться с некоторой ча- стотой. Такая память называется динамической. Главным преиму- ществом динамической памяти является очень малое потребление энергии (мкВт/бит). Память с произвольной выборкой используется в микропроцес- сорах для хранения данных. Выпускаются микросхемы памяти с объемом 256, 1024 или 4096 бит. Полупроводниковая постоянная память (ПЗУ). В микропроцес- сорных системах программа обычно хранится отдельно от данных. Во многих случаях используется одна программа, поэтому она должна храниться в используемом для этой цели постоянном запо- минающем устройстве (ПЗУ). Обычно микропроцессор считыва- ет команды программы и организует их выполнение, но не записы- вает новую информацию в память программы. Программа является неизменной. Постоянная память имеет много преимуществ по сравнению с па- мятью с произвольной выборкой: — чрезвычайно большой объем памяти (2048 X 8) одной БИС при стоимости 28 долл.; — низкая стоимость, — малая потребляемая мощность, — малое время обращения (35—1200 нс), — неразрушаемое хранение. Упрощенная схема построения ПЗУ приведена на рис. 2.35. Запись 1 эквивалентна подсоединению соответствующей инфор- мационной шины к диоду, а запись 0 — отсутствию такого соеди- 59
нения. Для того чтобы считать слово на шине X, достаточно на нее подать напряжение, соответствующее 1; выходные шины вос- произведут хранимую комбинацию битов. Информация в ПЗУ является постоянной и неизменной. Обыч- но ток большой силы используется для того, чтобы пережечь тонкую металлическую перемычку с диодами (рис. 2.35, а). Поль- зователь разрабатывает комбинации битов для требуемой програм- мы и посылает эту информацию производителю для изготовления необходимой маски ПЗУ, а так как стоимость такой маски высокая (около 1000 долл.), то ПЗУ обычно используется при многосерий- ном производстве. Некоторые ПЗУ используют электрическое поле или электро- магнитное излучение для инжекции зарядов в окисную ловушку над входной областью МОП-транзисторов, образующих матрицу (рис. 2.35, б). Такая память, которую можно перепрограммировать, используя специальное оборудование, известна как перепрограм- мируемое постоянное запоминающее устройство (ППЗУ). Основными характеристиками ППЗУ являются малое время подготовки к использованию в системе и дорогое программирую- щее оборудование. Перепрограммируемые ППЗУ используются в малосерийном производстве. Программируемые логические матрицы (ПЛМ). В ПЗУ и ЗУПВ встроенные адресные селекторы используются для обращения к одной из многих ячеек памяти. Например, 12-битовые адресные входные коды будут содержать все адреса от 0 до 212 = 4096. Дру- гими словами, если ПЗУ имеет 12-битовый адресный вход, оно мо- жет содержать 4096 слов. слаба X Линия, сноби 1 Линия, ело ба 2 Лит! бит2} Выходы а) Рис. 2.35. Принцип построения ПЗУ: а — программирование ПЗУ с помощью маски: б — перепрограммируемое ПЗУ 60
В некоторых случаях используются не все входные адреса. Рассмотрим случай использования ПЗУ для преобразования ин- формации с перфокарт в коды системы ASCII (см. гл. 1). На перфо- карте имеется 12 строк, а код ASCII явлется 8-битовым кодом. Та- кое преобразование осуществляется ПЗУ с 12-битовой адресной шиной и 8-битовой длиной слова, содержащим 212 = 4096 X 8 = = 32768 бит. Однако известно, что 12 бит на перфокартах не ис- пользуются для представления всех 4096 различных кодовых ком- бинаций. Обычно требуется только 96 комбинаций. Вместо ПЗУ можно использовать программируемую логическую матрицу (ПЛМ). В этом случае разработчик определяет карту рас- пределения битов не только для каждого слова, ко и для адресов этих слов. Поэтому нет необходимости выделять ячейки памяти для тех адресов, которые не рассматриваются как входные данные. В этом примере преобразования кода перфокарт в код ASCII до- статочно использовать для 96 слов ПЛМ, имеющую 12 входных и 8 выходных шик. Адрес каждого из 96 слов, выбранных разработ- чиком, будет соответствовать значению кода перфокарты. Логические схемы с тремя состояниями. В некоторых микро- процессорных БИС на выходах используются логические схемы с тремя состояниями. Схема, которая управляет данной линией, под- держивает ее в одном из трех состояний: — логическая единица (истинно), — логический нуль (ложно), — отключено или состояние большого сопротивления. В состоянии большого сопротивления линия.доступна для дру- гих устройств, которые могут использовать ее для передачи ин- формации без воздействия на источник, возбуждающий эту линию. Задачи 1. На выходах двух триггеров имеются значения переменных А, А и В, В. Составьте схему для реализации функции Q = А + В Используйте только схемы И — НЕ и ИЛИ — НЕ. 2. На выходах двух триггеров имеются значения переменных А, А и В, В- Составьте схему для реализации функции Q = А * В Используйте только схемы И — НЕ и ИЛИ - НЕ, З. ^На выходах четырех триггеров имеются значения переменных А, А, В, В, С, С, D, D. Составьте схему для реализации функции ф=Л+В+С+ + D. Используйте только схемы И — НЕ и ИЛИ — НЕ, имеющие по два входа каждая. 4. На выходах четырех триггеров имеются переменные Л, Л, В, В. С, С Составьте схему для реализации функции Q — Л • В • С • D. Исполь- зуйте только схемы И — НЕ, ИЛИ — НЕ, с двумя входами каждая. 5. Докажите 13 теорем табл. 2.1. После доказательства первой теоремы используйте ее для доказательства следующей и т. д. Используйте теорему де Моргана. 6. Найдите сумму результатов (2.8) следующих функций: а) (АС + В) • (CD + D), б) (АС + D) . (В + СЕ). 7. Составьте схему из двух регистров по 6 бит каждый, в которой каж Дый синхроимпульс вызывает обмен содержимых регистров.
8*. Четырех битовый двоичный, реверсивный счетчик считает следующим образом; 0,15, 14, 11, 2V Е 0. Составьте таблицу истинности для четырех разрядов счетчика А, В, Сг D и разработайте схему счетчика, используя двухтактные триггеры. СПИСОК ШТЕРАТУРЫ 1. Millman J., Taub И. Pulse, Digital and SwFtchhig Waveforms, McGraw* НД New Yorkr I965v 2. McCluskey E- J. latxodiic.ti.orr to tire Theory of Switching Circutts, McGraw* Hill, New York, 1965. 3. HfTT F. J., Peterson G. R. Introduction to Switching Theory and Logical Design, WTley, New York, 1968. 4. Shra?l Computer Handbook, Digital Equipment Corporation, Maynard, Mass., K97Q. Глава J ОСНОВНЫЕ КОМАНДЫ МИКРОПРОЦЕССОРОВ Данная глава знакомит читателей с командам» макропроцессоров По- казано, что команды, обычно используемые в малых ЭВМ, предназначенных для научных целей, могут быть разделены на следующие классы? команды пересылки еловг команды арифметических и логических операций, команды управления, команды обращения к регистрам и команды ввода—вывода. Даны определения и примеры использования основных команд. Описаны различ- ные способы адресации^ 11. ВВЕДЕНИЕ Каждое устройство, созданное человеком, предназначено для выполнения какой-либо- определенной работы: генерирования энер* гни, измерения температуры, преобразования напряжения и т, д. Универсальная цифровая вычислительная машина может вы- полнять различные задания, но для этого она должна пройти этап «обучениях т. е. ее надо научить, как решать данную задачу. Чело- век обучает машину посредством программирования. Программа для машины состоит из ряда команд. Каждая команда предписы- вает машине выполнение одной из предусмотренных в ней операций. Количества выполняемых элементарных операций зависят ст ма- шины. Очень малые цифровые машины имеют всего восемь элемен- тарных команд. Большие машины характеризуются набором до сотни различных команд. Каждая основная команда может выпол- нять одну операцию, такую как «сложить»* «умножить», «запомнить». Чтобы уметь программировать на цифровой машине, необязательно детально знать внутреннюю электрическую струк- туру машины. Однако необходимо знакомство с ее логической органи- 62
flpospavrwtm/ счетчик (PC) Регистр сСязи CL) (Ю Аюфлдргялюр (А) Рис. 3.1. Основные части ЭВМ задней и понимание назначения блоков машины, которые до- ступны программисту. Логиче- ская организация машины и те ее части, которые непосредственно связаны с программированием, в упрощенной ф°рме показаны на рис. 3.1. Это память, про- граммный счетчик, регистр свя- зи и аккумулятор. Память. Главная память состоит из большого числа слов или ячеек. Каждая ячейка памяти характеризуется адресом. Если память содержит 4096 слов, то адресами будут 0, 1, ..., 4095. Одно слово или ячейка может использоваться для запоминания одного двоичного чис- ла (данной величины) или одной команды программы, зако- дированной в двоичном коде. Пользователь должен определить, какая область памяти будет использоваться для данных я ка- кая для программы. Команды исходной программы запоминаются в соседних ячейках памяти. Машина считывает одну команду из памяти и выполняет соответствующую ей операцию. Затем она считывает следующую команду из последующей ячейки и выполняет следующую операцию и т. д. Здесь мы будем рассматривать па- мять, состоящую из 4096 слов по 12 бит. Программный счетчик. Этот регистр используется для органи- зации обращения к ячейкам памяти, в которых хранится програм- ма. В конце каждого цикла программный счетчик указывает адрес ячейки памяти, содержащей следующую команду программы. Обычно команды заносятся в последовательные ячейки. Когда одна команда оканчивается, содержимое программного счетчика увели- чивается на 1 и автоматически указывается адрес следующей коман- ды. В некоторых случаях содержимое программного счетчика может быть изменено самой программой. Таким образам осуществляется передача управления другой части программы. Здесь мы будем рас- сматривать 12-разрядный программный счетчик, который может формировать адреса любого из 4096 слов памяти. Аккумулятор. Аккумулятор (накапливающий сумматор) явля- ется основной частью арифметического устройства машины. Он состоит из ряда триггеров и может хранить одно слово двоичной информации. К нему добавляются электронные узлы для выполне- ния арифметических и логических операций под воздействием устройства управления. Машина может выполнять арифметиче- скую или логическую операцию только над двумя операндами одно- временно. Обычно первый операнд извлекается из ячейки памяти определенной командой, в то время как второй находится в аккуму- ляторе. Результат операции чаще всего остается в аккумуляторе. Машина может проверить результат в аккумуляторе. В зависи- мости от результата проверки она может принимать различные ре- 63
шения. Здесь мы будем рассматривать 12-разрядный аккумулятор. •> Всякий раз, когда при операции двоичного сложения возникает переполнение в старшем разряде, перенос теряется. Однако его , можно записать в одноразрядный регистр связи. Регистр связи. Регистр связи — это одноразрядный регистр, выступающий в качестве продолжения аккумулятора и заполняю- щийся при его переполнении. Этот регистр также используется для соединения в петлю самого старшего и самого младшего раз- рядов аккумулятора, что необходимо для циклического сдвига информации вправо или влево в соответствии с программой. Со- стояние регистра связи может проверяться для принятия решений. I Пример. Задание» которое нужно запрограммировать для машины* должно быть разбито на элементарные шаги, описываемые системой ее команд Малая машина при выполнении арифметической операции обычно оперирует только с двумя операндами. Первый операнд заносится в аккумулятор, вто- рой запоминается в памяти машины. Команда должна определять адрес ячейки памяти, где находится операнд. Имеются следующие команда: —CLEAR (ОЧИСТИТЬ). Этой командой производится установка акку- мулятора в нуль. — ADD (СЛОЖИТЬ) 100. По этой команде содержимое ячейки с номе- ром 100 складывается с содержимым аккумулятора и результат остается в ак- кумуляторе. Программа для вычисления суммы 77+22+15 = 114 приведена в табл.3.1. Программа и числовые данные должны быть записаны в память машины. Произвольно примем, что программа занесена в ячейки, начиная с 200-й, дан- ные — в ячейки, начиная с 300-й, а результат записывается в ячейку 400. Команда и данные должны быть закодированы в двоичной форме, однако в гэтом примере для простоты будем использовать символические обозначения команд. Для выполнения программы необходимо установить программный счетчик для чтения первой команды, записанной в ячейке 200 Команда CLEAR устанавливает аккумулятор в нуль. По выполнении этой команды содержимое программного счетчика увеличится на 1, и следующая команда будет считываться из ячейки 201. Эта команда, ADD 300, складывает содер- Программа вычисления суммы чисел Таблица 3.1 Ячейка Содержимое Комментарии 200 CLEAR Аккумулятор содержит 0000 201 ADD 300 Аккумулятор содержит 77 202 ADD 301 Аккумулятор содержит 99 203 ADD 302 Аккумулятор содержит 114 204 HALT 300 77 301 22 400 15 64
г ж и мое ячейки 300 с содержимым аккумулятора По окончании выполнения команды в аккумуляторе содержится число 77. Содержимое программного счетчика вновь увеличивается на 1, и следующая команда читается из ячейки 202. Эта команда, ADD 301, прибавляет содержимое ячейки 301 ксодержимо- му аккумулятора и оставляет результат в аккумуляторе По окончании вы- полнения команды в аккумуляторе содержится сумма 77+22 = 99. Следую- щая команда — ADD 302. Она складывает содержимое ячейки 302 с содер- жимым аккумулятора. В результате в аккумуляторе образуется число 99 + 4- 15 = 114 Последняя команда HALT останавливает программный счетчик, фикси- руя окончание выполнения программы. 3.2. КОДИРОВАНИЕ ПРОГРАММЫ Все операции в цифровой машине выполняются в двоичной си- стеме счисления, поэтому каждый элемент информации, заносимый в память машины, должен быть представлен в двоичной форме. Команды, из которых состоит программа, тоже представляются в двоичной форме. Однако при написании программы команды могут быть записаны в любой другой форме. В общем случае программа может кодироваться четырьмя способами: в двоичной, восьмерич- ной, шестнадцатеричной и в символической или мнемонической форме. Двоичное кодирование. Двоичная форма команды является един- ственной, которую понимает машина. Каждой машине присуща система команд в двоичном коде, которая понятна ей. Для каждой команды машина содержит цепи, которые выполняют операцию, определяемую командой. Двоичная форма команды идентична дво- ичной форме данных. Машина не может отличить команду от дан- ных. Программист указывает машине, какую двоичную запись по- нимать как команду или как числовые данные. Содержимое части памяти машины показано в табл. 3.2. Ле- вый столбец - -это адреса ячеек в двоичной форме. Правый столбец представляет содержимое ячеек в двоичной форме. Каждая ячей- ка или слово имеет 12 разрядов. В данном примере первые 3 стар- ших разряда команды указывают машине, что делать. Например, код 001 обозначает операцию сложения. Остальные 9 разрядов команды представляют адрес ячейки, содержащей операнд. Если программный счетчик указывает ячейку 000000000100, то будет выполняться команда 001000000111. Эта команда осущест- вляет сложение содержимого ячейки памяти 000000111 с содержи- мым аккумулятора. Это означает, что число 101010101010 будет прибавлено к содержимому аккумулятора. Восьмеричное кодирование. Из рассмотрения предыдущего при- мера ясно, что записывать программу в двоичном коде очень неудоб- но и утомительно, если учесть, что средняя по сложности програм- ма состоит из нескольких сотен или тысяч нулей и единиц. При этом реальную помощь может оказать восьмеричная система счисления. Восьмеричные числа служат для представления двоичных чисел, используемых в машине. В табл. 3.3 показана та же программа, 3 Зак. Ю88 65
Таблица 3.2 Пример двоичного кодирования содержимого памяти Ячейка Содержимое 000000000100 001000000111 000000000101 000000000000 OOOOOOQOOHQ 000000000000 000000000111 101010101010 Таблица 3.3 Пример восьмеричного кодирования содержимого памяти Ячейка Содержимое 0004 1007 0005 0000 0006 0000 0007 5252 что и в табл. 3.2, только закодированная в восьмеричной системе. Для программиста восьмеричное кодирование более удобно, чем двоичное. На примере небольшой программы, закодированной в восьме- ричной форме и представленной в табл. 3.4, покажем, что машина не может различить числа и команду. Предположим, что начальное значение аккумулятора равно нулю и что программный счетчик указывает ячейку 0031. Первая команда 1032 будет складывать содержимое ячейки 0032 с содержимым аккумулятора. Содержимое этой ячейки 1040 будет понято как число и прибавится к содержи- мому аккумулятора. Содержимое программного счетчика увеличит- ся на 1, и выберется следующая команда из ячейки 0032. Содержи- мое этой ячейки 1040 теперь понимается как команда: машинная команда 1040 будет складывать содержимое ячейки 0040 с имею- щимся числом в аккумуляторе. После выполнения двух команд в ак- кумуляторе число станет равно 11408. Таким образом, приведенная программа использует двоичную информацию 1040 сначала как двоичное число, а затем как команду. Мнемоническое кодирование. Восьмеричное кодирование имеет очевидные преимущества перед двоичным. Однако для более длин- ных программ и оно неудобно. Программист должен выучить наи- зусть восьмеричные коды всех команд, использующихся в данной машине. Машина может иметь около сотни различных команд, по- этому запомнить около сотни различных восьмеричных кодов за- труднительно. Чтобы упростить процесс написания, отладки и чте- ния программы, предложен мнемонический или символический код. Основные его принципы следующие. Каждая команда машины представляется простым трех- или четырехбуквенным мнемоническим символом. Мнемонические сим- волы значительно легче связать с машинными операциями, так как . их можно выбрать таким образом, чтобы они напоминали название команды. Фактически мы уже использовали определенный вид сим- волических команд в малой программе, приведенной в табл. 3.1. Каждая машина имеет фиксированный набор символических команд. В табл. 3.5 показана машинная команда в трех формах: дво- 66
Таблица 3.4 Пример программы в восьмеричном коде Таблица 3.5 Запись команды в различных формах Ячейка Содержимое Операция Адрес Форма 0031 1032 001 000 000 111 Двоичная 0032 1040 • 1 0 0 7 Восьмерич- • ная TAD 7 Символиче- 0040 0100 ская ичной, восьмеричной и символической. Эта же команда использо- валась в табл. 3.2 и 3.3. Она входит в систему команд мини-ЭВМ PDP-8. Двоичный код 001 в этой машине используется для обозна- чения операции сложения в двоичном дополнительном коде. Здесь этой команде дано символическое имя TAD. Намного легче запом- нить, что двоичное сложение в дополнительном коде (Two's comple- ment ADdition) кодируется TAD, чем запомнить двоичный код 001. Хотя символическое кодирование очень удобно для програм- миста, оно не может быть понято машиной. Единственным языком, понятным машине, является язык двоичных кодов. Следователь- но, необходимо транслировать символическую программу в ее двоичный эквивалент. Это можно сделать вручную, используя таблицы соответствия системы команд для данной машины. Каждая мнемоническая команда может быть заменена ее двоичным эквива- лентом. На практике эта трансляция осуществляется специальной ма- шинной программой, которая называется ассемблером. Используя двоичный код для представления отдельных символов, программист может занести алфавит мнемонических команд в память машины. Ассемблер сравнивает каждую мнемоническую команду со спискохМ команд и заменяет ее двоичным эквивалентом. Этот процесс преоб- разования называется программной трансляцией. Шестнадцатеричное кодирование и ручная трансляция. Шестнад- цатеричное кодирование преследует ту же цель, что и восьмерич- ное, и используется для более короткой ручной записи двоичных чисел (табл. 1.6). Так как 4 двоичных разряда представляются одной шестнадцатеричной буквой, то 8 двоичных разрядов представляют- ся двумя шестнадцатеричными буквами и т. д. Несколько сравни- тельных примеров двоичного и шестнадцатеричного кодов приведе- ны ниже. 3* 67
Двоичные коды Шестнадцатеричные символы 0000 ООП 1110 0000 1111 1111 1111 0000 0101 0 ЗЕ OFF F05 Рассмотрим пример программы для выполнения операции сло- жения числа, записанного в регистрах с номерами АВ89, с числом записанным в регистрах 4523, используя микропроцессор 4004. Необходимые для этого команды приведены в табл. 3.6. Программа запоминается в ячейках с адресами от 0 до D. В ко- лонке «команда» представлены шестнадцатеричные коды команд. В колонке «символический код» представлены мнемонические коды тех же команд, например, мнемоническая команда CLC (CLEAR Таблица 36 Пример программы выполнения операции сложения с повышенной точностью в кодах микропроцессора Intel 4004 Адрес Команда Наименование Символический код Операнд Комментарии 0 F1 (ADD) CLC Сложить содержимое регистров АВ89 и 4523 1 2 3 А9 83 ВЗ LD ADD ХСН 9 3 3 Сложить содержимое регистров 9 и 3 4 5 6 А8 82 В2 LD ADD ХСН 8 2 2 Сложить содержимое регистров 8 и 2 и прибавить перенос 1 8 9 АВ 85 В5 LD ADD ХСН В 5 5 Сложить содержимое регистров В и 5 и прибавить перенос А В С АА 84 В4 LD ADD ХСН А 4 4 Сложить содержимое регистров А и 4 и прибавить перенос D СО BBL 0 Возврат 68
CARRY—ОЧИСТИТЬ ПЕРЕНОС) имеет шестнадцатеричный код F1. Для коротких программ, таких как рассмотренная, трансляция из мнемонического (символического) кода в шестнадцатеричный код может быть проведена вручную с использованием списков ко- манд для данной машины. Для более длинных программ трансля- цию выполняет ассемблер. В этом примере приведенные ниже команды означают: CLC (ОЧИСТИТЬ ПЕРЕНОС) = F1 ADD3 (СЛОЖИТЬ содержимое регистра 3 с содержимым ак- кумулятора) = 83 LD8 (ЗАГРУЗИТЬ содержимое регистра 8 в аккумулятор) = А8. Более подробно программа описана в гл. 6. Ясно, что символи- ческое кодирование программисту ближе, чем шестнадцатеричное кодирование, так как символический код команды связан по смыслу с названием выполняемой операции. Поэтому символическое коди- рование используется в случае ручной трансляции. Программист сначала пишет программу в символической форме и только затем привлекает списки команд для преобразования символического кода в шестнадцатеричный. Результирующая шестнадцатеричная программа может быть непосредственно введена в память микро- процессора. Она будет размещена в порядке, необходимом для ее выполнения. Структурная схема программы. Первым шагом в написании про- граммы является составление ее структурной схемы. Структурная схема может использоваться для изображения структуры програм- мы» для определения всех вариантов вычислений и для нахождения различных путей, которые приведут к каждому возможному ре- зультату. Структурная схема дает возможность разбить рассматри- ваемую задачу на отдельные логические блоки, а также вносить в эти блоки те или иные изменения перед написанием программы. Когда логические блоки четко определены структурной схемой, можно легко осуществить программирование, записывая команду за командой. Структурная схема представляет собой набор блоков и линий. Блоки бывают различной формы в зависимости от действий, кото- рые необходимо выполнить в программе. Прямоугольник с одним входом и одним выходом означает блок обработки. Ромб означает точку ветвления программы. Более детальное описание символов структурной схемы дано в приложении 1. Линии используются для соединения блоков и для указания последовательности операций. Неразветвленная программа является простейшим случаем, когда блоки обработки реализуются последовательно без изменения по- рядка следования. Структурная схема полезна не только при написании програм- мы, но и при отладке уже написанной программы. С ее помощью так- же намного проще объяснить кому-либо содержание программы, чем с помощью Длинного списка команд. 69
Предположим, что необходимо написать программу для опре- деления наибольшего из трех чисел U, V и Z. Первым шагом явля- ется составление структурной схемы, как показано на рис. 3.2. Вторым шагом — последовательное описание командами каждого блока структурной схемы. Обозначения. При программировании на ЭВМ необходимо обращаться к ячейкам памяти и аккумулятору, а также учитывать состояния регистра связи и программного счетчика В дальнейшем по мере возможности будем использовать следующие общие обозначения (следуя Флоресу [1]): А — аккумулятор; L — регистр связи; PC — программный счетчик; М — ячейка операнда, число, использующееся вместо операнда в коман- де, эффективный адрес; / — адрес ячейки, из которой была считана команда. Для объяснения смысла команд будут использоваться символы: ( ) Символ в круглых скобках определяет содержимое ячейки, заданной символом. Например, (121) означает содержимое ячейки памяти 121; (Л) означает содержимое аккумулятора. ( ] Символ в квадратных скобках означает ячейку, в которой находится символ, стоящий внутри скобок. Например, [7] означает ячейку, где нахо- дится число 7. Обозначения ( ) и [ ] имеют противоположный смысл. Так, если (121) = 7, то [7] = 121. -* Одиночная стрелка определяет операцию перезаписи и используется для описания передачи данных от источника к приемнику. Так, (121) -+ А оз- начает, что содержимое ячейки 121 переписывается в регистр А. Операция перезаписи данных оставляет содержимое источника неизменным. На- чальное содержимое приемника теряется и заменяется содержимым источника. => Двойная стрелка используется для обозначения последовательности команд в программе. Обычно после того как ЭВМ извлекла команду из Рис. 3.2. Структурная схема программы определения наибольшего из чисел 70
ячейки 7, следующую команду она извлечет из ячейки 7+1, что можно по- казать как =>7+1. Однако, если программа имеет ветвления, может осуществляться переход от ячейки 7 к ячейке Л4, что будет показано как => М src _ Адрес источника; __ Адрес приемника; д Булева функция И; V Булева функция ИЛИ; у Булева функция Исключающее ИЛИ, ~ Двоичное дополнение; t Элемент информации (байт, слово) извлекается из стека. Содержимое стека перемещается на одну позицию вверх; 4 Элемент информации заносится в стек. Содержимое стека перемещается на одну позицию вниз. 3.3. КЛАССИФИКАЦИЯ КОМАНД ЭВМ способна понимать и выполнять точно определенный для нее набор команд. При составлении программы программист огра- ничен этими командами. Количество и тип команд изменяются в зависимости от возможностей и назначения ЭВМ. Команды можно разделить на группы в зависимости от того, к ка- ким блокам машины обращается команда или на какие блоки ссы- лается. Имеется три типа команд: — обращения к памяти (адресные); — обращенья к регистрам (регистровые или безадресные); — ввода—вывода. Команды обращения к памяти предписывают машине произво- дить действия с содержимым указанной ячейки памяти. Адрес ячей- ки памяти задает машине команда. Например, команда ADD300 из табл. 3.1 является командой обращения к памяти. Она предписы- вает машине обращение по адресу 300 и использование содержимого этой ячейки в качестве первого операнда. Второй операнд находит- ся в аккумуляторе. Эти два операнда суммируются. Команда обращения к регистру, иногда называемая микроко- мандой управления, выполняет различные действия без ссылок на ячейку памяти. Например, к этому типу команд относится коман- да CLEAR из табл. 3.1. Она предписывает машине очистить акку- мулятор. Эта команда имеет дело только с одним операндом, а именно с числом, записанным в аккумуляторе. Команды ввода—вывода осуществляют обмен данными между машиной и внешними устройствами, такими как внешняя память (на дисках, магнитной ленте, магнитном барабане), печатающими и перфорирующими устройствами, дисплеем и мультиплексорами данных. Организация пересылок вход—выход является наиболее трудной частью работы программиста и требует понимания как спо- собов программирования, так и логической организации машины. Другой способ разделения команд на группы основан на учете основных функций» выполняемых командой. 71
Выделяют пять типов команд: — пересылок данных, арифметические и логические; — управления; — обращения к подпрограмме; — микроопераций; — ввода—вывода. Команды пересылок данных или передачи слов связаны с об?ле- ном информацией между внутренней памятью и рабочим регистром (аккумулятором). Команда должна определять направление обме- на, источник данных и/или приемник (место назначения) данных. Арифметические и логические команды определяют операции над двумя операндами. Команда должна определять действие, источник и приемник. Источник содержит первый операнд, приемник — второй операнд. После операции содержимое источника не изменя- ется, а в приемнике хранится результат операции. Команды управления связаны с принятием решения. Они могут проверить результат вычисления в любой точке программы. В этой точке программа может иметь несколько ветвлений. На основе этой проверки команда управления выберет соответствующую ветвь выполняемой програм лы. Команды обращения к подпрограмме используются для орга- низации взаимосвязей основной программы с подпрограммами и возвращения на основную программу. Команды микроопераций оперируют с одним операндом. В ма- лых машинах этот операнд обычно находится в аккумуляторе. Следовательно, команды микроопераций могут использоваться, например, для очистки, образования дополнения, сдвига числа, находящегося в аккумуляторе. Команды ввода—вывода осуществляют передачу данных в ма- шину и из машины. 3.4. БАЗОВАЯ СИСТЕМА МАШИННЫХ КОМАНД Цифровые машины существенно различаются по возможностям, размерам и стоимости. Некоторые машины могут выполнять очень ограниченное число основных операций, в то время как другие могут выполнять сотни различных операций. Теоретически для решения конкретной задачи может использоваться любая машина. Малая машина будет решать задачу путем выполнения большого числа очень простых операций, что может потребовать большого интервала времени для получения решения. Большая ЭВМ, спо- собная выполнять множество операций, может решить ту же за- дачу значительно быстрее. Экспериментальным путем определяют, какие именно основные операции должна выполнять машина, чтобы обеспечить разумный компромисс между стоимостью машины и ее полезностью. В этом параграфе рассмотрены простая гипотетиче- ская машина и ее основные операции. Подобные машины сущест- вуют и являются очень полезными для выполнения простых работ. 12
Естественно, что начинать изучение машин целесообразно с такой машины низкого уровня. Машина, которая будет рассматриваться, является быстродействующей машиной общего назначения, рабо- тающей с 12-разрядными словами. Это одноадресная параллельная машина, использующая двоичную дополнительную арифметику. В этом параграфе определен основной набор команд машины за исключением команд ввода-вывода, которые будут рассмотрены ниже. При построении машины за прототип выбраны широко исполь- зуемая ЭВМ PDP-8 и микропроцессор IM 6100. Машина исполь- зуется для объяснения машинных команд, основ программирования и связи с интерфейсом. Детальное описание PDP-8 и IM 6100 дано в гл. 16. Команды обработки данных: арифметические и логические. Ма- лые машины имеют как минимум одну команду для пересылки дан- ных, одну команду для арифметических операций и как минимум одну команду для логических операций. Наиболее распространен- ными командами являются STORE (ЗАПОМНИТЬ), ADD (СЛО- ЖИТЬ) и AND (ЛОГИЧЕСКОЕ И). STORE М. Это команда пересылки данных. Она заносит со- держимое аккумулятора в ячейку памяти М. Содержимое аккуму- лятора не изменяется. Аккумулятор является источником, а ячей- ка памяти — приемником. В сжатой форме алгоритм выполнения команды имеет вид (Л) -> М. Пример в табл. 3.7 показывает содержимое аккумулятора, ре- гистра связи и ячейки 57 до и после выполнения команды STORE 57. Обратите внимание на следующее: 1. Состояние аккумулятора и регистра связи не изменяется. 2. Начальное содержимое адресуемой ячейки заменяется со- держимым аккумулятора. ADD М. Это арифметическая команда. Она выполняет двоич- ное сложение содержимого источника (определенной ячейки памя- ти М) и аккумулятора. Результат остается в аккумуляторе. Если произойдет переполнение аккумулятора, то заполняется регистр связи. В сжатой форме алгоритм можно записать как (А) + (А1) -> А. Содержимое аккумулятора, регистра связи и ячейки 47 до и пос- ле выполнения команды ADD 47 показано в табл. 3.8. Следует обратить внимание на то, что слово в адресуемой ячейке не изме- няется. AND М. Это логическая команда. Она выполняет над каждым разрядом содержимого аккумулятора и содержимого ячейки памяти М булеву операцию И. Результат остается в аккумуляторе. В сжа- той форме это имеет вид (М) А (А) А. 73
Таблица 3.7 Выполнение команды STORE 57 Регистр связи Аккумулятор Ячейка 57 До 0 4567 1234 После 0 4567 4567 Таблица 3.8 Выполнение команды ADD 47 Регистр связи Аккумулятор Ячейка 47 До 0 1234 1122 После 0 2356 1122 Содержимое регистра связи, аккумулятора и ячейки 52 до и после выполнения команды AND 52 показано в табл. 3.9. Чтобы показать операцию над каждым разрядом, числа представлены в двоичной форме. Обратите внимание на следующее: 1. Содержимое адресуемой ячейки не изменяется. 2. Состояние регистра связи не изменяется. Команды управления. Разнообразные задачи в практике на- учных исследований значительно сложнее, чем простые непосред- ственные вычисления. Научные программы, как правило, состоят из многих ветвей и точек принятия решения. Вычислительный про- цесс по программе будет продолжаться в том или ином направле- нии в зависимости от результата, полученного перед точкой приня- тия решения. Принятие решения и ветвление выполняются коман- дами управления, которые составляют основу современной ЭВМ. Основными командами управления являются: HALT (ОСТАНО- ВИТЬ), JUMP (БЕЗУСЛОВНАЯ ПЕРЕДАЧА УПРАВЛЕНИЯ), SKIPIF (УСЛОВНАЯ ПЕРЕДАЧА УПРАВЛЕНИЯ) и ISZ (ПРИРАЩЕНИЕ И ПЕРЕХОД, ЕСЛИ НУЛЬ). HALT. Простейшей командой управления является команда HALT. Эта команда предписывает машине прекратить увеличение содержимого программного счетчика. Она часто используется, ког- да программист хочет ненадолго остановить машину, чтобы прове- рить полученные результаты. После этого программист решает про- должить вычисления дальше или внести некоторые изменения в программу, или изменить данные. Если программист хочет про- должить вычисления, он нажимает кнопку START на пульте уп- равления. Таблица 3.9 Таблица 3 10 Выполнение команды AND М Пример программы с командой JUMP Регистр связи Аккумулятор Ячейка 52 Ячейка Содержимое До 0 101010101010 111111000000 100 JUMP 145 После 0 101010000000 111111000000 145 ADD 150 74
JUMP M. Команда JUMP связана с программным счетчиком. Она заносит адресную часть команды М в программный счетчик. Следовательно, следующая команда программы будет считываться из ячейки М. В сжатой форме это имеет вид =>М. Пример программы, приведенной в табл. 3.10, иллюстрирует операцию безусловной передачи управления. Выполнение команды из ячейки 100 (JUMP 145) приводит к переходу программы на ко- манду из ячейки 145, минуя ячейки 101—144. После выполнения команды из ячейки 100 программный счетчик будет указывать на команду в ячейке 145 и программа будет продолжаться с этой точки. Обратите внимание на то, что команда безусловной передачи управления не изменяет содержимого аккумулятора, регистра свя- зи и ячеек памяти. Команда SKIP (ПРОПУСК ПО УСЛОВИЮ) проверяет вы- полнение некоторого условия в машине. Если условие выполняется, то команда, следующая за SKIP, пропускается. Если условие не выполняется, выполняется команда, следующая за SKIP. Обычно в машине имеется несколько разновидностей команды SKIP. SKIPP (ПРОПУСК ПО ПЛЮСУ).Пропуск производится в слу- чае, когда содержимое аккумулятора положительно. Это означает, что если команда перехода SKIP находится в ячейке I, то выпол- няется следующая команда из ячейки /4-2, если (Д) положитель- но, иначе — команда из ячейки /4-1: (Д) = 4- => / 4- 2, (Д) =# 4- => / 4~ Ь SKIPZ (ПРОПУСК ПО НУЛЮ). Пропуск очередной команды производится, если в аккумуляторе нуль, т. е. (Д) = 0 => / 4- 2, (Д) Ф 0 => / 4- 1. SKIPL (ПРОПУСК ПО ПЕРЕПОЛНЕНИЮ). Пропуск коман- ды производится, если содержимое регистра связи равно 1: (L) = 1 => / 4- 2, (L)^ 1 => / 4- 1. SKIPN (ПРОПУСК ПО МИНУСУ). Пропуск команды про- изводится, если (Д) — отрицательное число; (Д) = -=>/ + 2, (Д)^=-=>/ 4- 1. SKIP (БЕЗУСЛОВНЫЙ ПРОПУСК). Следующая команда всегда пропускается: =>/4-2. 75
Пример в табл. 3.11 иллюстрирует операцию условного пере- хода: если содержимое ячейки 150 равно 0, то прибавить к нему 10, иначе — продолжить программу с ячейки 106. Обратите внимание на то, что команда SKIP не изменяет состояния аккумулятора, ре- гистра или какой-либо из ячеек памяти. ISZ М. Команда ПРИРАЩЕНИЕ И ПЕРЕХОД, ЕСЛИ 0 выполняет две операции: она прибавляет к содержимому ячейки памяти (М) единицу и затем проверяет результат сложения. Если результат нулевой, следующая команда пропускается. Если ре- зультат не равен 0, выполняется следующая команда: (М) 4- 1 -> М, (М) = 0 => / + 2, (М) #= 0 => 7 4- 1. Пример в табл. 3.12 иллюстрирует выполнение операции ISZ. Она состоит в умножении 10 X 2 путем сложения 10 4- 10. Ячейка 150 содержит первое число 10. Ячейка 151 содержит число —2 и используется в качестве счетчика. Программа имеет форму петли; каждое прохождение выполняет одно сложение. При первом про- хождении команда ISZ 151 увеличивает содержимое ячейки с 7776 (десятичное — 2) до 7777 (десятичное — 1), а затем программа вы- полняет следующую команду JUMP 100. При втором прохождении команда ISZ 151 увеличивает содержимое ячейки 151 от 7777 до 0000. Как следствие, команда JUMP 100 пропускается и программа переходит к команде HALT. Обратите внимание на следующее: 1. Команда 1SZ не изменяет содержимого аккумулятора или ре- гистра связи. 2. Команда ISZ увеличивает содержимое определенной ячейки памяти и затем сравнивает его с нулем. Таблица 3.11 Таблица 3.12 Пример команды с условной передачей Программа с командой ISZ М управления Ячейка Содержимое 100 CLEAR 101 ADD 150 102 SKIPZ 103 JUMP 106 104 ADD 151 105 STORE 150 106 150 1234 151 0010 —>100 1-й проход I 101 !—102 103 Ячейка 150 151 Содержимое ADD ISZ JUMP HALT 0010 7776 150 ж 12-й ПР°- , f ХОД 76
Таблица 3.13 Программа обращения к подпрограмме Ячейка Содержимое Комментарии 100 JMS 150 Эта команда записывает 101 в ячейку 150 150 и передает управление ячейке 151 После выполнения JMS 150 эта ячейка со- 151 152 CLEAR держит 101 170 JUMP 1 150 Эта команда находит адрес возврата (101), записанный в ячейке 150, и передает управ- ление основной программе 3. Если команда ISZ используется для организации fe-кратного цикла, то k должно находиться в ячейке-счетчике. Команды обращения к подпрограмме. В большой программе одна и та же последовательность команд часто необходима в нескольких различных местах. Например, последовательность для вычисления квадратного корня необходима во многих частях программы вычис- ления площадей. Вместо того чтобы писать одну и ту же последова- тельность команд каждый раз, когда это необходимо, используется команда JMS (ПЕРЕХОД НА ПОДПРОГРАММУ). Последовательность команд может быть записана как подпро- грамма и размещена отдельно от основной программы. Каждый раз, когда нужна подпрограмма, будет использоваться команда JMS. Эта команда обеспечивает связь основной программы и подпрограм- мы. Например, предположим, что нужно совершить переход на под- программу, которая размещается в ячейках 150—170, когда основ- ная программа достигает ячейки 100 (табл. 3.13). Программный счетчик хранит адрес следующей команды, кото- рую надо будет выполнять. Перед выполнением JMS 150 програм- мный счетчик содержит адрес 100. Во время выполнения команды JMS 150 он увеличивает свое содержимое, указывая следующий ад- рес — 101. Команда JMS 150 считывает содержимое программного счетчика и записывает его в первую ячейку подпрограммы. Следова- тельно, в этот момент ячейка 150 будет содержать число 101. При выполнении подпрограммы первая ячейка (150) будет использовать- ся в качестве указателя для возвращения на основную программу. Далее команда JMS 150 заносит в программный счетчик адрес 151. Следовательно, управление программой передается второй ячейке подпрограммы. Последняя команда подпрограммы обеспечивает возвращение на основную программу. Она находит адрес 101, записанный в ячейке 150, и передает управление ячейке 101. Эта команда использует кос- венную адресацию, которая будет рассмотрена ниже. 77
Я.Передт» (/ляавленод — юо 101 101 ♦ • 150 151 « JUS 750 I Затюкать адрес возврата / ячейке 101 170 Л йойпроераяяа I JUMP 1150 — 3. Найта аОрве возврата и возвратиться к основной программе (с адресом 151) Рис. 3.3. Связь программы с подпрограммой Описанные выше три стадии выполнения программы JMS 150 показаны на рис. 3.3. Команды микрооперации. Эта группа команд оперирует только с одним операндом. После выполнения операции операнд находит- ся там же, где он находился до операции. Общей формой команд микроопераций является OPR dst. В малой машине приемником обычно является аккумулятор, поэтому в команде он не определяется. Для некоторых команд при- емником может быть регистр связи, в этом случае L добавляется к OPR: Приемник = аккумулятор Приемник = L OPR OPRL Основными командами микроопераций являются: CLEAR (ОЧИСТИТЬ), INCR (УВЕЛИЧИТЬ), COMPL (ИНВЕРТИРОВАТЬ КОД), ROTL (ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО) и ROTR (ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО). Команда CLEAR устанавливает аккумулятор в нуль: 0-> А. Команда CLEARL устанавливает регистр связи в нуль: 0->£. Команда INCR прибавляет к содержимому аккумулятора I: (А) + I - А. Команда COMPL инвертирует содержимое аккумулятора: (А)->А. Команда COMPEL инвертирует содержимое регистра связи: (Г) -* L. 73
Списокосновныхкоманд ЭВМ Таблица 3 14 Тип Мнемоника Описание Краткая запись Обмена Арифметические Логические STORE М ADD М AND М Записать (А) в M; A—без изменений Прибавить (Af) к А; результат в А (М) И А; результат в А (А)-М (М) + (А)-А (М)А (А)-»А Управления HALT JUMP М skipp SKIPZ SKIPN SKIPL SKIP ISZ M Останов Безусловный переход на М Пропуск при положительном результате Пропуск по нулю аккумулятора Пропуск при отрицательном результате Пропуск по регистру связи Безусловный пропуск ( Увеличение (М); пропуск по нулю =>М (А) = +=>1 + 2; (А)++=>1+1 (А)=0=>1+2; (А)+0=>1 + 1 (А) = —=>1 + 2; (А)+—=>1 + 1 (L)=l=>I+2; (L) = 0=>I+l =>l + 2; (M)+l-M (М) = 0=>1+2; (М)+0=>Т +1 Обращения к под- программе JMS M Переход на подпрограмму» сохранить содер- жимое программного счетчика (PC) (РС)-М;=>М+1 Регистровых пере- сылок CLEAR CLEARL COMPL COMPLL INCR ROTL ROTR Очистить А Очистить регистр связи Инвертирование А Инвертирование L Увеличение А на 1 Циклический сдвиг А и L влево на 1 бит Циклический сдвиг А и L вправо на 1 бит 0-А 0-L (А)—А (L)—L (А)+1-* А Ввода—вывода CLEARO2 SKIPO2 READO2 WRITEO2 GOO2 Сбросить флажок устройства (02) Пропуск по флажку устройства (02) Ввод информации из устройства (02) в А Вывод информации цз А в устройство (02) Возбуждение выхода селектора (02) 0-F02 (F02) = 1=>1 + 2; (F02)=0=>1 + 1 (02)->А (А)-02
Рис. 3.4. Циклический сдвиг влево Регистр сОязи Аккумулятор До О 101100000010 После 1 011000000100 Команда ROTL замыкает аккумулятор и регистр связи с коль- цо и сдвигает все разряды кольца на один разряд влево. Выполне- ние этой операции отображено на рис. 3.4 Рис. 3.5. Циклический сдвиг вправо Регистр сОязи Аккумулятор До О 1O1111OOOOO1 После 1 010111100000 Команда ROTR замыкает аккумулятор и регистр связи в коль- цо и сдвигает все разряды кольца на один разряд вправо. Выполне- ние этой операции отображено на рис. 3.5. Все основные команды машины приведены в табл. 3.14. 3.5. ОСНОВНЫЕ ТИПЫ АДРЕСАЦИИ Все команды, использующие адрес памяти, имеют общее назва- ние— команды обращения к памяти. Основной формой записи, ко- торая использовалась до сих пор. является следующая: OPR М. Фактически каждая команда обращения к памяти в ма- лых машинах состоит из трех частей (полей): КОп, А/П (OPR, D/tag), где КОп (OPR) — код операции; A (D) — адрес операнда или смещение; П (tag) — признак адресации. Код операции OPR указывает машине, что делать. Адрес D со- держит информацию о том, где находится операнд. Признаки адре- сации указывают машине, как вычислить реальный, или исполни- тельный, адрес по адресу, записанному в команде. Исполнительный адрес — это адрес, который использует команда при выполнении операции. Для большинства команд исполнительным является ад- рес, содержащийся в операнде. Для команды безусловного перехода (БП) исполнительным является адрес, к которому переходит управ- ление программой. 80
Sum стрдничнои Sum носденной адресации ч / адресации 1 1 1 1 1 1 1 1 1 1 v у а у_____________А Sod даты операции приз пан од Адресная часть команды Рис. 3.6. Формат слова адресных команд Во многих случаях исполнительный адрес совпадает с адресом D. Фактически в примерах, приводимых до сих пор, исполнительный адрес идентичен D. Имеются различные способы адресации в зависимости от приз- наков адресации. Пример 12-разрядной команды машины (3 разряда используются для кода операции, 2 разряда являются разрядами признака и 7 разрядов используются для адреса) показан на рис. 3.6. Правый из разрядов признака называется разрядом адресации страницы. Левый из разрядов признака называется разрядом кос- венной адресации. Следовательно, два разряда признака могут оп- ределять четыре способа адресации: 00 — прямая адресация, 01 — странично-относительная адресация, 10—косвенная адресация, 11—странично-относительная косвенная адресация. В каждом случае исполнительный адрес вычисляется по адресу D, но с использованием различных правил. Следовательно, в об- щем М, исполнительный адрес = F (D), где F определяется разрядами признака адреса. Прямая адресация. Если оба разряда признака нулевые, то ад- рес D непосредственно используется как адрес памяти. Пример по- казан в табл. 3.15. М, исполнительный адрес = D. Таблица 3.15 Пример прямей адресации Ячейка Содержимое Аккумулятор 10 ADD 20 1234 20 1234 1 Г ° г
Прямая адресация является простейшим способом адресации, но она имеет очевидный недостаток — в примере рис. 3.6 адрес имеет всего 7 разрядов. Используя 7 разрядов, непосредственно адресовать можно всего 27 = 12810 = 2008 ячеек памяти. Для адресации боль- шего количества ячеек памяти потребуется более длинное слово. В малых машинах, которые должны быть простыми и дешевыми, для устранения этого недостатка используются другие методы адреса- ции. Странично-относительная адресация. Чтобы более эффективно использовать имеющиеся разряды адреса операнда, в малых маши- нах используется деление памяти на блоки или страницы. В данном примере машины с 7 разрядами адреса каждая страница будет иметь 12810 =« 2008 ячеек. Адрес операнда теперь может использо- ваться для адресации любой ячейки данной страницы относитель- но начального адреса страницы. Адрес начала страницы является базовым адресом, к которому должен прибавиться адрес D. Страни- цы можно выбрать следующим образом: Ячейки памяти Страница 0 0—177 Страница 1 200—377 Страница 2 400—577 Исполнительный адрес определяется следующим образом: М, исполнительный адрес = начальный адрес текущей страницы + D. Пример в табл. 3.16 показывает суть страничной адресации. Если команда ADD 20 находится в ячейке 201, машина будет вопринимать ее как сложение с содержимым ячейки 20 относительно 200. Если эта же инструкция ADD 20 находится в ячейке 406, машина будет понимать ее как сложение с содержимым ячейки 20, номер которой определяется относительно 400. В обоих случаях заполняется раз- ряд страницы в команде для указания страничной адресации. Если разряд страницы равен нулю, машина будет использовать адрес операнда D для прямой адресации ячеек 0—177, т. е. будет адресовать нулевую страницу. Следовательно, разряд страницы ука- зывает машине, адресовать ли ту же страницу, на которой записана сама команда, или нулевую страницу (0—177). Для адресации другой области памяти используется косвенная адресация. Косвенная адресация. При косвенной адресации адресная часть команды указывает ячейку, в которой хранится адрес операнда, а не сам операнд. При косвенной адресации косвенный адрес (указатель адреса) — это адрес ячейки, которая содержит нужный (исполни- тельный) адрес. 82
Таблица 3.16 Пример страиично-отнасительяой адресации Таблица 3.17а 200 CLEAR 201 ADD 20 Страница 1 220 377 400 405 406 Страница 2 420 577 Ячейка Содержимое 0000 1234 1234 CLEAR ADD 20 7654 0000 7654 Прямая адресация Ячейка Содержимое Аккуму- лятор 30 500 0000 100 ADD30 0500 500 7771 Таблица 3.176 Косвенная адресация Содержимое Аккуму- лятор 30 100 500 500 ADD I 30 7771 0000 7771 Для указания косвенной адресации используется разряд кос- венной адресации в слове команды. При написании мнемонической программы для обозначения косвенной адресации используется спе- циальная буква. Здесь мы будем использовать букву I. На протяже- нии составления программы присутствие I будет означать установку разряда косвенной адресации команды в 1. Примеры в табл. 3.17 показывают различие между прямой и косвенной адресацией. Первый пример иллюстрирует прямую адресацию. В команде ADD 30 число 30 является исполнительным адресом. Следователь- но, содержимое ячейки 30 складывается с содержимым аккуму- лятора. Во втором примере используется косвенная адресация. В коман- де ADD I 30 число 30 является указателем адреса. Оно указывает на ячейку 30, содержащую исполнительный адрес 500. Как следствие, содержимое ячейки с исполнительным адресом 500 суммируется с содержимым аккумулятора. Следовательно, исполнительным адре- сом является содержимое ячейки, указанное адресной частью ко- манды D: М, исполнительный адрес = (D). 83
Имеется много применений косвенной адресации при получении данных, их сортировке и восстановлении. В малых машинах косвен- ная адресация также обеспечивает возвращение на основную про- грамму из подпрограммы, как показано в табл. 3.13. Команда JMS 150 запишет адрес возврата 101 в ячейку 150. Первая команда под- программы находится в ячейке 151. Последней командой подпро- граммы является JUMP I 150. Указатель адреса 150 содержит адрес возврата 101. Следовательно, эта команда вызовет переход на ячейку 101, т. е. возвращение к основной программе. Странично-относительная косвенная адресация. Если в обоих разрядах признаков адресации содержатся единицы, то использует- ся комбинация странично-относительной и косвенной адресации. В этом случае исполнительный адрес вычисляется за два шага. Страничная адресация: адрес 1 = начальный адрес текущей страницы + D. Косвенная адресация: М, исполнительный адрес = (адрес 1). Несколько примеров приведено в табл. 3.18. Команда ADD 1 20, находящаяся в ячейке 210: адрес 1=2004-20=220, исполнительный адрес = (220) = 300. Следовательно, данные из ячейки 300 суммируются с содержимым аккумулятора. Команда ADD I 20, находящаяся в ячейке 400: адрес 1 = 400 4- 20 = 420, исполнительный адрес = (420) = 500. Следовательно, содержимое ячейки 500 суммируется с содержимым аккумулятора. Таблица 3.18 Пример странично-относительной косвенной адресации Ячейка Содержимое Аккумуля- тор Ячейка Содержимое Аккумуля* тор 200 201 CLEAR 0000 300 1234 210 ADD 1 20 1234 400 CLEAR 0000 220 300 405 ADD I 20 7654 420 500 500 7654 81
Задачи 1. Найдите содержимое аккумулятора и ячеек 55, 56 и 57 после выполне- ния следующей программы: Ячейка Содержимое Ячейка Содержимое 50 CLEAR 54 HALT 51 ADD 55 55 1234 52 ADD 56 56 1100 53 • STORE 57 57 0000 2. Определите содержимое аккумулятора и ячеек 55, 56 и 57 после выпол- нения программы из задачи 1, если команду ADD 56 заменить на AND 56. 3. Напишите программу для инвертирования содержимого ячейки 200. Программа должна начинаться с ячейки 300. 4. Напишите программу для пересылки данных из ячейки 150 в ячейку 151. Программа должна начинаться с ячейки НО. 5. Определите содержимое аккумулятора и ячеек 55, 56 и 57 после вы- полнения следующей программы: Ячейка Содержимое Ячейка Содержимое 50 CLEAR 55 60 51 ! ADD I 55 56 61 52 •* ADD I 56 57 0000 53 Г STORE 57 60 10 54 HALT 61 25 62 0000 6. Найдите содержимое аккумулятора после выполнения следущей про- граммы: Ячейка Содержимое Ячейка Содержимое 200 377 ADD 20 220 0012 400 ADD 20 HALT 320 7000 CLEAR 420 1200 7. Напишите программу для сложения трех чисел, находящихся в ячей- ках 300, 310 и 1000. Программа должна начинаться с ячейки 200. 8. Напишите программу для выделения старшего разряда содержимого ячейки 300. Занесите этот разряд в ячейку 301. Используйте команды цикл- ческого сдвига и условного перехода. 9. Решите задачу 8, используя команду AND. 10. Выполните логическую операцию ИЛИ над содержимым ячеек 200 в 201 и занесите результат в ячейку 202. Используйте теорему де Моргана. 85
СПИСОК ЛИТЕРАТУРЫ 1. Flores I. Computer Programming, Prentice-Hall, Englewood Cliffs N. 1966. 2. Introduction to Programming, Digital Equipment Corporation, Maynard, Mass., 1969. 3. Leeds H. D., Weinberg G. M. Computer Programming Fundamentals,Mo Graw-Hill, New York, 1966. Глава 4 ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ В главе 4 описаны основные процедуры программирования. Рассмотре- но программирование операций управления циклами и подпрограммами, ариф- метических и логических операций. Приводится программирование этих one* раций в символических кодах, а затем на языке ФОРТРАН. Таким образом, читатель изучает символическое кодирование и смысл операций, а вместе с этим и программирование на алгоритмическом языке. Для каждой операции приводится несколько примеров небольших программ. Так как микропро- цессоры заменяют проектируемые цифровые схемы, то программирование становится главным инструментом разработчиков систем. Описаны общие способы программирования микропроцессоров и мини-ЭВМ. 4.1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ Рассмотрев команды машины, можно отметить, что ЭВМ может выполнять такие операции, как внутренние пересылки данных, арифметические и логические действия, принимать решение на ос- новании полученных результатов и осуществлять передачу данных во внешние устройства и прием данных из них. Машина может вы- полнять каждую из этих операций, но программист должен решить, какое именно задание дать машине, и он осуществляет это, состав- ляя программу. Программа представляет собой список команд, необходимых для получения решения данной задачи. Каждая команда программы ини- циирует определенный блок машины и организует выполнение не- большой простой операции. Малая машина характеризуется неболь- шим количеством простых команд. Программируемая задача долж- на быть разбита на очень малые элементарные шаги, которые могли бы выражаться через набор команд машины. Способность выполнять вычисления в виде элементарных шагов требует от программиста конкретизации процедуры вычислений в мельчайших деталях. Каждый шаг команды должен быть определен с предельной точно- стью. Машина будет относиться к командам, как исполнительный секретарь, и будет точно выполнять все, что ей приказали. Так как набор встроенных в машину операций достаточно мал, то даже относительно простое вычисление будет состоять из ряда 86
шагов. Совершенно ясно, что программа может состоять из сотен и даже тысяч команд. Задача программиста может быть разбита на следующие этапы: очень точное определение программируемой за- дачи, определение наиболее эффективного метода решения, состав- ление структурной схемы программы, написание программы коман- да за командой, проверка программы. Когда программа написана, ее надо ввести в память машины. Машина считывает команду из памяти и выполняет операцию. За- тем она считывает следующую команду, выполняет другую опера- цию и т. д. до тех пор, пока программа не закончится. Входная и объектная программы. Напомним, что машина ра- ботает в двоичной системе счисления и понимает только информа- цию, закодированную в двоичной форме. Следовательно, команда, заносимая в память машины, также является частью двоичной ин- формации, состоящей из единиц и нулей. Если бы программист пи- сал программу, состоящую из сотен команд, используя двоичное ко- дирование, это заняло бы слишком много времени и усилий. Поэто- му предложены другие способы написания программ. Обычно для программирования используются два языка: — язык источника, используемый программистом, или выходной язык; — язык, используемый машиной, или объектный язык. Объект- ный язык также называется машинным, или конечным языком. Входной язык состоит из четко определенного набора символи- ческих команд. Каждая команда имеет мнемонический код, напоми- нающий программисту операцию, которую надо выполнить. Напри- мер, символический код операции ADD может использоваться для обозначения операции сложения. Использовать другие коды для этой же операции не разрешается. Поэтому такие коды, как ADDIT или SUM, не будут иметь смысла для этого входного языка. Для каждой команды машины входной язык будет иметь один и только один символический код. Объектный язык является языком нулей и единиц, он использу- ется самой машиной. Это единственный язык, который может пони- мать машина. Программист пишет программу на мнемоническом входном язы- ке. Машина понимает только двоичный объектный язык. Поэтому необходима трансляция для преобразования каждой символичес- кой команды в ее двоичный эквивалент. Трансляция выполняется таким же образом, как и перевод с одного языка на другой; она ос- новывается на использовании словаря. В словаре (списке) имеются все операторы на входном языке и соответствующие двоичные коды на машинном языке. Трансляция проста в силу следующих причин: для данной команды имеется толь- ко один код на входном языке и один код на объектном языке. Одна строка программы содержит один оператор, который не зависит от предыдущей и от последующей строк. 87
Строку списка операторов можно представить, например, сле- дующим образом: ADD = 001 Это означает, что операция сложения кодируется на входном языке как ADD и она должна транслироваться на конечный язык как 001. Процедура написания программы очевидна: 1. Программист пишет программу, используя мнемонические операторы на входном языке. 2. Секретарь, не имеющий знаний по программированию и ма- тематическому анализу, берет список и переводит каждую входную строку в соответствующую объектную строку. 3. Полученная объектная программа загружается в ЭВМ, кото- рая затем выполняет вычисления. Мы видим, что процедура трансляции сугубо автоматическая и четко формализуема. Следовательно, работу секретаря можно по- ручить ЭВМ, проинструктировав ее. Для этого необходимо разра- ботать программу, которая может выполнять трансляцию. Такая программа называется ассемблером. Сегодня для каждой ЭВМ име- ется такая программа. Для выполнения трансляции ассемблер имеет список-словарь. Ассемблер, загруженный в ЭВМ, будет считывать входную програм- му и транслировать каждый мнемонический оператор в ее двоичный эквивалент конечной программы. Символические адреса. Во всех приведенных примерах исполь- зовались двоичные или восьмеричные адреса для ячеек памяти. Для более длинных программ такая процедура является непрактич- ной, так как программист должен помнить восьмеричные адреса каждой ячейки и способы их использования. Для упрощения про- цесса написания, отладки и чтения программы вводятся мнемони- ческие обозначения адресов. Программист может присваивать ячей- кам символические имена, а ассемблер будет определять для них действительные адреса. Программист может произвольно выбирать символические имена, помня лишь об ограничениях ассемблера. Первым ограничением является количество букв, используемых в имени. Если ассемблер позволяет использовать, скажем, 5 букв, он не будет воспринимать дополнительные буквы в именах. Вторым ограничением является то, что первой в имени должна быть буква (A..,Z). Второй может быть как буква, так и цифра (0...9). Имена ячеек выбираются так, чтобы они указывали операнд, находящий- ся в ячейке. Например, можно использовать следующие символичес- кие имена: VOLTAGE (НАПРЯЖЕНИЕ), RESULT (РЕЗУЛЬТАТ), XS, SIGN (ЗНАК), WEIGT (ВЕС) и другие. Символические имена адресов становятся частью входной про- граммы. На этапе трансляции ассемблер заменяет каждый символи- ческий адрес двоичным адресом. Для этой цели ассемблер строит список для трансляции адресов. Первой строкой списка является 88
Mrf мерсщии h# о&ъек/пыж (мшмюаМ языке Л?.1/ оперсирш на иыо&ном cwrfo,'и ческой языке А$С0ЛКМ7Ж6Ш (Моечный а&рес СмМслическое к&рес pi». 4 1. Команды на машинном и символическом языках первый символический адрес, используемый в программе, и двоич- ный адрес первой свободной ячейки памяти машины. Предположим, что первое символическое имя ячейки VOLTAGE и первая свобод- ная ячейка памяти имеет адрес 234. Тогда первая строка списка ад- ресов будет иметь вид VOLTAGE = 234 Таким же образом ассемблер присваивает двоичный адрес каждому символическому адресу. Обратите внимание на то, что ассемблер использует два списка; — список фиксированных команд, который является частью ас- семблера; — список адресов, который строится ассемблером на этапе транс- ляции программы. Пример команды на входном языке, написанной программистом, и ее двоичный эквивалент на обьектном языке, как она записывается в ЭВМ, показан на рис. 4.1. Последующие примеры иллюстрируют удобство символической адресации. Напишем программу для выполнения вычисления 22+35—13=44. Произвольно решаем использовать адрес 100 в ка- честве начальной точки программы; адреса 150, 151, 152 —для дан- ных, а адрес 153 —для результата. Набор элементарных операторов, определенный ранее, содержит команду ADD, которую можно использовать для выполнения опе- рации + 35. Однако операцию вычитания нельзя выполнить непо- средственно, так как базовый набор команд не содержит команды вычитания. Для этой цели используется дополнительная двоичная арифметика. Используя соответствующее представление отрица- тельного числа, вычитание можно выполнить через сложение: X — Y = X + (— Y). Соответствующим представлением отрица- тельного числа является его двоичный дополнительный код. Программа для рассматриваемого примера приведена в табл. 4.1. Теперь напишем эту же программу, используя символические адреса. Выберем имена X, Y и Z для ячеек, содержащих данные, и 89
имя RES для ячейки, содержащей результат. Начало програм- мы обозначим как START. Программа показана в табл. 4.2. Адресация, используемая в табл. 4.1, называется абсолютной адресацией, и адресация, используемая в табл. 4.2,— символичес- кой. Принципы трансляции. Принципы трансляции и выполнения программы показаны на рис. 4.2, а и б соответственно. Для трансля- ции и выполнения программы необходимо выполнить следующие этапы: 1. Загрузить ассемблер в ЭВМ, причем список фиксированных операторов составляет часть ассемблера. Ассемблер резервирует ячейки в начале свободной области памяти для списка адресов. 2. Задать ассемблеру адрес первой ячейки памяти, используе- мой в программе. Ассемблер строит список адресов относительно этого адреса. 3. Установить входную программу в считывающее устройство и запустить ЭВМ. Ассемблер считает исходную программу, трансли- рует ее и выведет конечную программу. На протяжении этапа транс- ляции ассемблер также проверяет наличие некоторых формальных ошибок в программе и отмечает строки с ошибками. Ошибки могут проявиться вследствие использования запрещенного кода команды, использования одного символического имени для различных адре- сов, отсутствия символического имени адреса и т. д. 4. Если в результате трансляции ошибок не обнаружено, то ассемблер больше не нужен. Полученную объектную программу, а также данные необходимо загрузить в ЭВМ. ЭВМ выполнит про- грамму и выдаст результат. Таблица 4.1 Таблица 4.2 Программа для выполнения операций с использованием абсолютных адресов Программа для выполнения арифметической операции 22+35—13 с использованием символических адресов Адрес Содержимое к Адрес Содержимое 100 CLEAR START CLEAR 150 < 151 i 153 153 ADD COMPL INCR ADD ADD STORE HALT 22 35 13 0 152 150 151 153 ЯГО 04 РЗ ADD Z COMPL INCR ADD X ADD У STORE RES HALT § 'J 90
Трансляция Ассемблер Фиксированный опасен команд Вход: Одла онто опасна адресов Выход: Врограмма на символическом язь/не Радочая одласп/о Одъекпгная программа на маигинном языке Вычисления ЭВМ В) Рис. 4.2. Принцип работы ассемблера и выполнения программы Языки более высокого уровня и компилятор ФОРТРАНА. Ас- семблер транслирует символическую входную программу в двоично- кодированную объектную программу. Если использовать ассемблер для трансляции программы, приведенной в табл. 4.2 и состоящей из 12 строк, то в результате получим объектную программу, состоя- щую из 12 двоичных слов. Важно отметить, что ассемблер будет транслировать символическую входную команду в машинную дво- ичную команду. Поэтому символический язык, хотя и является бо- лее удобным для программиста, чем язык двоичных кодов, все еще выражает задачу через набор элементарных команд. Во многих применениях могут использоваться более совершен- ные языки, а именно проблемно-ориентированные языки, которые позволяют программисту использовать более сложные операторы, чем элементарные машинные команды. Наиболее важными являются три языка: КОБОЛ (COmmon Business-Oriented Language) — для экономи- ческих расчетов; АЛГОЛ (AlGebraic-Oriented Language)—для алгебраических расчетов; ФОРТРАН (FORmula TRANslation language) — для трансля- ции формул. Л1
Так как наиболее распространенным, особенно в программирова- нии научных и технических задач, является язык ФОРТРАН, то в дальнейшем он используется наряду с символическим языком. Про- грамма, написанная на языке ФОРТРАН, также должна трансли- роваться в эквивалентную программу на машинном языке. Программа для трансляции языка ФОРТРАН в язык машинных кодов называется компилятором. Компилятор может формировать много строк машинных кодов для одной строки, написанной на ФОРТРАНе. Например, задача, приведенная в табл. 4.2, выража- ется на ФОРТРАНе одной строкой: RES == X + Y — Z Программист напишет только эту формулу. Компилятор тран- слирует ее в определенное число строк машинных кодов. Из этого примера видно, что написать программу на ФОРТРАНе намного легче, чем кодировать алгоритм решения этой же задачи на символи- ческом языке. К сожалению, это не всегда возможно, кроме того, здесь есть свои недостатки Не вникая в детали, укажем лишь сле- дующее. Компилятор с ФОРТРАНа — более сложный, чем символичес- кий ассемблер, он транслирует операторы программы в объект- ную программу общего назначения, которая организует проверку всех видов ограничений, диапазонов изменения чисел и переполне- ний; она может использовать функции, вычисляемые подпрограмма- ми, и т. д. Следовательно, программа будет занимать большую часть памяти и будет состоять из большого количества команд, она потре- бует больше времени для получения результата, чем символическая программа, составленная для частного применения. Вторым недостатком являются ограничения на ввод — вывод ин- формации. ФОРТРАН очень удобен для программирования процедур ввода — вывода при наличии стандартного внешнего оборудования, такого как накопители на магнитной ленте, телетайпы или печатаю- щие устройства. Однако, будучи предназначенным для определен- ного вида оборудования, он не может использоваться для програм- мирования обмена со специальными устройствами, имеющимися у пользователя, такими как измерительная и управляющая аппара- тура. Таким образом, главными ограничениями для использова- ния ФОРТРАНа для программирования задач измерения и управле- ния являются: невысокое быстродействие, низкая эффективность ис- пользования памяти, а также ограничения на тип внешнего обору- дования для ввода — вывода. С другой стороны, для целей вычислений и моделирования, где указанные факторы не играют главной роли, ФОРТРАН очень удо- бен. Он позволяет описать задачу, используя несколько операторов более высокого уровня, что занимает значительно меньше времени, чем расчленение задачи на большое количество элементарных ма- шинных операций. 92
ФОРТРАН особенно полезен при вычислении арифметрических выражений. Элементарные арифметические операции сложения, вычитания, умножения, деления и возведения в степень записыва- ются, как и в алгебре, т. е. между рассматриваемыми переменными проставляется соответствующий знак: + , —, *, /, ** Например, оператором на ФОРТРАНе для вычисления уравне- ния Y = (Л + В) * (С — D)/ (Е — F) является само это уравнение. Освоить ФОРТРАН можно без изучения принципов организации и работы ЭВМ. Символических языков имеется столько же, сколько типов ЭВМ. Каждая машина имеет свой собственный символический язык, со- стоящий из команд данной ЭВМ. С другой стороны, операторы ФОРТРАНа являются общими, и с небольшими ограничениями прак- тически одно и то же выражение может использоваться для програм- мирования любой ЭВМ. В следующих параграфах рассмотрены основы техники прог- раммирования, при этом большое внимание уделяется принципам программирования, чем частным случаям применения конкретной ЭВМ или языка программирования. Приводятся примеры программ на символическом языке с использованием базовых команд ЭВМ, а затем для сравнения приводятся программы решения тех же задач на языке ФОРТРАН. 4.2. ОПЕРАЦИИ УПРАВЛЕНИЯ Одной из наиболее характерных черт, которые отличают цифро- вую машину от настольного калькулятора, является возможность программирования процедуры принятия решений. Можно привести примеры полезных программ, в которых нет арифметических опера- ций или операций ввода — вывода и т. п. С другой стороны, прак- тически каждая программа должна содержать команды по принятию как минимум нескольких решений. Если бы их не было, то програм- ма состояла бы из ряда команд, которые выполнялись бы последова- тельно в порядке занесения их в память. Возможность принятия ре- шения позволяет написать программу, состоящую из ряда ветвей, каждая из которых выполняется, если данное условие удовлетворя- ется. Поэтому программа выглядит скорее как дерево с большим ко- личеством ветвей и циклов, чем как строгая последовательность ко- манд. Предположим, что машина управляет экспериментом, в котором температура является критической переменной. Данные о темпера- туре ЭВМ может получить от цифрового вольтметра. Можно напи- сать программу для сравнения температуры Т с заранее определен- 93
ной величиной 7'0. Возможны три исхода? Т < 70, Т = То> Г > То. Программа должна иметь три различные ветви и решить, какую из ветвей программ выполнять. Должна быть также-общая управляющая программа, которая сшивала бы отдельные части и команды программы в единое целое. При написании управляющей программы надо решить три за- дачи: обозначения, проверки, ветвления Обозначения (метки).Решения всегда имеют более чем одни ис- ход. В общем, для каждой ветви может оказаться необходимым пи- сать отдельную программу. Каждая ветвь программы должна иметь свою метку или обозначение, по которому к ней организуется обращение. При символическом кодировании обозначением или мет- кой фактически является символический адрес начала ветви про- граммы. Примеры обозначений: MAX, MIN, EQU, A, L, Х7. Проверка. Программа может принимать решение и разветвлять- ся, используя специальный набор команд. Это команды управления. Они не оперируют с данными и не передают их, а просто проверяют некоторое условие или результат в ЭВМ и управляют машиной. В малых машинах команды управления бычно проверяют содержи- мое аккумулятора или регистра связи. Такими командами являются: SKIPN, SKIPZ, SKIPL. Ветвление. Когда проверка заканчивается, программа должна выбрать одну из нескольких возможных ветвей в зависимости от результата проверки. Говоря на языке машинного программирова- ния, программный счетчик должен быть установлен так, чтобы ука- зывать начальный адрес необходимой ветви программьь Для выбора направления программы используется такая команда, как JUMP. Важно заметить, что в некоторых машинах и языках встречаются случаи, когда проверка и ветвление объединяются в один шаг и вы- полняются одной командой или одним программирующим операто- ром. Простые решения. Пример. Проверить ячейку памяти 7. Если (7) == 0, занести (X) в RES. Если (Г) =# 0, занести (У) в RES. Структурная схема программы показана на рис. 4.3, а в табл. 4.3— сама программа Следует обратить внимание на следующее- 1. Программа разделена на четыре блока, обозначенных. START (H/v ЧАЛО), TEST (ПРОВЕРКА), YES (ДА)е NO (НЕТ), Блоки START v OUT можно исключить из программы, не нарушая ее. Мы использовали эти обо- значения только для более простой организации ссылок на эти блоки в тексте программы. Обозначения YES и NO используются для идентификации двуу возможных ветвей программы. 2. Команда SKIPZ используется для проверки и принятия решения. 3. Направленность программы при ветвлении выбирается с помощые команды JUMP. Пример. Определить, является ли (Г) положительным, отрицательным или равным нулю числом. Если (7) > 0, записать 1 в ячейку APOS; если (7)= «= 0, записать 1 в AZER; если (Т) < 0, записать 1 в ANEG. Структурная схема показан а на рис. 4.4, а в табл. 4.4 — сама программа. 94
Таблица 4.3 Программа с проверкой условия (Д)=0 Рис. 4.3. Структурная схема программы для проверки условия (А)=0 Адрес г одержимое START CLEAR ADD T TEST SKIPZ JUMP NO YES CLEAR ADD X STORE RES JUMP OUT NO CLEAR ADD Y STORE RES OUT HALT T 1177 X 1 Y 0 RES 0 В этом примере следует обратить внимание на следующее: 1. Используются только те обозначения, которые абсолютно необходимы для кодирования. 2. Используются две управляющие команды: SKIPZ и SKIP N, которые разделяют программу на три ветви. Пример. Три числа содержатся в ячейках X, Y и Z соответственно. Раз- местить их в порядке возрастания в ячейках OUT1, OUT2 и OUT3. Структур- ная схема программы показана на рис. 4.5, а в табл.4.5 — сама программа. Таблица 4.4 Пример программы с проверками условий (4) = 0, (Д)<0, (И)>0 Адрес Содержимое TEST2 POSIT OUT Т ANEG APOS A2ER CLEAR ADD SKIPN JUMP ISZ JUMP SKIPZ JUMP ISZ JUMP ISZ HALT 1234 T TEST2 ANEG OUT POSIT AZER OUT APOS Рис. 4.4. Структурная схема программы с провер- кой условий (А)=0, (А)>0 и (А)<0 95
Начало Рис. 4.5. Структурная схема программы сортировки трех чисел Таблица 4.5 Программа для сортировки чисел в порядке возрастания Адре- Содержимое Адрес ( одержимое START CLEAR POINT CLEAR ADD Y ADD OUT2 COMPb COMPL [NCR INCR ADD X ADD Z skipp SKIPP JUMP NEG1 JUMP NEG2 CLEAR CLEAR ADD Y ADD Z STORE OUT1 STORE OUT3 CLEAR HALT ADD X NEG! CLEAR STORE OUT2 ADD X 96
Продолжение Адрес Содержимое Адре< Содержимое STORE OUT! HALT CLEAR NEG3 CLEAR ADD Y ADD OUT1 STORE OUT2 STORE TEMP JUMP POINT CLEAR MEG2 CLEAR ADD OUT2 ADD OUT2 STORE OUT1 STORE OUT3 CLEAR CLEAR ADD TEMP ADD Z STORE OUT2 STORE OUT2 HALT CLEAR X 5 ADD OUT1 Y 7 COMPL Z 3 I NCR OUT I J ADD OUT2 OUT2 0 SKIPP OUT3 0 JUMP NEG3 Этот пример показывает, насколько необходима структурная схема про- граммы. Хотя программа относительно проста, все же было бы тяжело про- граммировать ее, не разбив на отдельные блоки. Структурная схема ука- зывает, какие операции надо выполнить в каждом блоке, а также взаимосвязь между блоками. 4.3. ОПЕРАЦИИ УПРАВЛЕНИЯ НА ФОРТРАНЕ Главными формальными отличиями символического кодирова- ния и кодирования на ФОРТРАНе являются следующие: — при символическом кодировании программа состоит из от- дельных команд. При отсутствии специальных оговорок управле- ние всегда передается от предыдущей команды к последующей; — в ФОРТРАНе программа состоит из операторов. Каждый оператор является строкой программы. При отсутствии специаль- ных оговорок управление всегда передается от предыдущего опера- тора к последующему; — при символическом кодировании используется восьмеричное представление данных и адресов. В ФОРТРАНе используется деся- тичная система счисления. При написании команд управления на ФОРТРАНе мы снова стал- киваемся с задачами обозначений, проверок и ветвления. Обозначения (метки). В ФОРТРАНе каждый оператор может быть обозначен числом, записанным слева от выра.жения. Напри- мер, 71 Z = X + Y 4 Зя I 683 97
Число 71 является номером этого оператора. Применять это чис- ло для нумерации другого оператора в этой же программе запреща- ется. Номер оператора в ФОРТРАНе не означает адреса ячейки па- мяти; его единственным назначением является идентификация опе- ратора при передаче ему управления. Проверка. В языке ФОРТРАН имеется один условный оператор IF, который одновременно используется для проверки и для ветв- ления программы. Этот оператор проверяет, является ли данная ве- личина нулевой, меньше нуля или больше нуля, и в зависимости от этого выбирается одна из трех ветвей. Например, оператор IF (Y) II, 12, 71 проверяет переменную Y и передает управление одному из опера- торов: 11, 12 или 71. Если Y < 0, то следующим является оператор 11; Если Y = 0, то следующим является оператор 12; Если Y > 0, то следующим является оператор 71. Ветвление. В ФОРТРАНе имеется один оператор безусловного перехода GO ТО. Если в некоторой точке программы желательно передать управление оператору 71, нужно написать GO ТО 71 Повторим примеры, показанные на рис. 4.3, 4,4 и 4.5, используя ФОРТРАН. Пример. Написать задачу рис. 4.3 на языке ФОРТРАН. Решение приве- дено в табл. 4.6. Отметим следующие обстоятельства: 1. Номера директив 5, 10, G4, 20 и 75 соответствуют блокам START, TEST, YES, NO и OUT. Обозначения 5 и 64 могут быть исключены из про- граммы, так как переход к выполнению этих операторов осуществляется естественным образом при выполнении предыдущего оператора. Обозначения 10, 20 и 75 являются необходимыми, так как они используются в операторах передачи управления IF (Т) 10, 20, 10 и GO ТО 75. 2. Оператор RES—Y означает, что прежнее значение переменной RES должно быть заменено новым значением переменной У. 3. Программа оканчивается оператором STOP. Пример. Написать программу на ФОРТРАНе для примера рис. 4.4. Ре- шение приведено в табл. 4.7. Отметим следующее: 1. Для разветвления программы на три ветви достаточно одного опера- тора IF.' 2. Оператор ANEG -- ANEG + 1 означает, что значение переменной ANEG дожно изменяться с приращением, равным 1. Пример. Написать программу на ФОТРАНе для примера рис.4.5. Решение приведено в табл. 4.8. Первый оператор IF выполняет проверку разности между содержимым X и V, как определено выражением X—Y, Вычисляемые операторы IF и GO ТО. В общем случае можно в оператор IF включить любое арифметическое выражение. Например, оператор IF (X + Y — 2 *Z) 1, 2, 36 во
Таблица 4.8 Программа сортировки чисел на ФОРТРАНе Таблица 4.6 Программа с проверкой ус- ловия (А)=0 на ФОРТРАНе 5 IF (Т) 10, 20, 10 10 RES — Y 64 GO ТО 75 20 RES=X 75 STOP Таблица 4.7 Программа с проверкой условий (А) = 0, (А)<0 и (А)>0 на ФОРТРАНе IF (T) 1, 2, 3 1 ANEG=ANEG+1 GO TO 4 2 AZER=AZER+1 GO TO 4 3 APOS=APOS-)-l 4 STOP IF (X—Y) 10, 10, 11 10 OUT1=X OUT2=Y GO ТО 12 И OUT2 = X OUT1=Y 12 IF (Z —OUT2) 20, 20, £1 20 OUT3 = OUT2 OUT2 = Z IF(OUT2—OUT1) 30, 30, 81 30 TEMP = OUT 1 OUT1=OUT2 OUT2 = TEMP GO TO 31 21 OUT3 = Z 31 STOP проверяет результат выражения (X + Y — 2 * Z). В соответствии с результатом, который может быть отрицательным, нулевым или положительным, оператор IF передает управление операторам 1,2 или 36 соответственно. Некоторое отличие имеет обобщенная форма оператора GO ТО: GO ТО (7, 2, 36, 14), М Этот оператор передает управление оператору 7, если М = 1, оператору 2, если М = 2, оператору 36, если М = 3, или операто- ру 14, если М = 4. Переменная М должна быть определена в дру- гом операторе, предшествующем GO ТО. 4.4. циклы Цикл программы — это набор команд, которые выполняются пов- торно. Организация циклов является одним из наиболее мощных инструментов при программировании. Цикл используется, если необходимо выполнить одну и ту же задачу, но для разных наборов данных. В этом случае объем программы значительно уменьшается по сравнению со случаем, если бы ее пришлось писать для каждого набора данных. Г)дтл₽“Ле₽‘ Сложить 100 чисел, находящихся в ячейках от DATA до A1A-J-143 включительно. Здесь имеется в виду десятичное число Ю010. дреса же написаны в восьмеричной системе: 100io=144s.
Таблица 4.9 Программа сложения 100 чисел стократным повторением Адрес Содержимое ADD DATA RES DATA DATA4-143 CLEAR ADD DAT A 4-1 ADD DATA-l-2 ADD DAT A 4-143 STORE RES HALT 0 Эта задача может быть реше- на простым повторением команды сложения 100 раз, как показано в табл. 4.9. Совершенно ясно, что такое программирование неэффек- тивно. Мы повторяем ту же опе- рацию 100 раз, в результате полу- чаем 100 идентичных команд. Ес- ли бы нужно было сложить, ска- жем, 10 000 данных, то програм- ма содержала бы 10 000 команд, что привело бы к неэффективному использованию памяти. Та же задача может быть ре- шена более компактным спосо- бом — при написании программы в форме цикла, как показано в табл. 4.10 и на рис. 4.6. Сделаем замечания по при- меру. Программа разделяется на че- тыре блока, каждый из которых выполняет свою задачу. Это за- дачи начальной установки, обра- ботки, изменения массива данных, проверки н ветвления. Начальная установка — это часть программы до цикла. Она под- готавливает параметры цикла. В данном примере программа устанав- ливает счетчик, который будет использоваться для подсчета количе- ства циклов; в частности, в ячейку COUNT заносится число 100. Программа также устанавливает счетчик данных на первое число из массива данных, которые будут использованы при циклических вычислениях. Другими словами, мы устанавливаем указатель на на- чало массива данных; содержимое ячейки ADATA пересылается в ячейку POINT, которая является указателем цикла. Содержимое этой ячейки представляет собой первый адрес списка DATA Обработка — рабочая часть циклической программы, выполняю- щая основную операцию. В данном примере основную операцию вы- полняет команда ADD I POINT; на f-м цикле опа выбирает содер- жимое i-й ячейки списка DATA и складывает его с содержимым ак- кумулятора. Обработка представляет собой процедуру, которую должна выполнять машина, и включает операции внутри цикла, ко- торые выполняются повторно. Решение остальных трех задач долж- но обеспечить выполнение операций обработки нужное число раз над нужными данными. Изменение массива данных. Цикл обычно выполняет операции над массивом данных. Операция сначала выполняется над первым числом массива. На втором проходе операция должна выполняться над вторым числом массива и т. д. В нашем примере массив косвен- но адресуется с помощью ячейки — указателя POINT. При каж- дом проходе цикла команда ISZ POINT прибавляет к содержимому ячейки POINT единицу. Следовательно, при первом проходе сбраба- юо
тывается содержимое ячейки DATA, при втором — DATA + 1 и т. д. Команда используется только для увеличения содержимого указателя. Эта команда не передает управления, так как указатель никогда не достигнет нуля. В рассматриваемом примере шаг про- движения по массиву равен единице. В общем, элементы массива могут увеличиваться на шаг, отличный от единицы. Проверка и ветвление. Цикл должен повториться определенное число раз, а затем программа должна выйти из цикла. В приведен- ном примере программа просто подсчитывает количество проходов по циклу. Число проходов 100 хранит ячейка COUNT. Команда ISZ COUNT прибавляет единицу к содержимому этой ячейки при каждом проходе цикла. После сотого прохода цикла программы со- держимое ячейки COUNT становится равным нулю и программа про- пускает команду JUMP. Следовательно, программа на каждом про- ходе выполняет команду JUMP и переходит на повторение цикла. На сотом шаге программа выполняет команду STORE RES. В этом примере выход из цикла достигается благодаря проверке количества операций над данными. Существуют и другие условия, по которым может осуществляться выход из цикла. Структурная схема циклической программы. Индексация. Цик- лы обычно организуют для обработки списков данных. Они выпол- Таблица 4.10 Та же программа сложения с использованием цикла Адрес Содержимое ADATA POINT CONST COUNT data CLEAR ADD CONST STORE COUNT CLEAR ADD ADATA STORE POINT CLEAR ADD I POINT ISZ POINT ISZ COUNT JUMP.—3 STORE RES HALT DATA n 7634 Начало Honea Рис. 4.6. Циклическая программа сум- мирования чисел
н яют одну и ту же операцию над первым элементом списка, затем над вторым, над i -м и т. д. Следовательно, на 4-м проходе программа вы- бирает 4-й элемент из списка данных Di и выполняет операцию F (Pi)- При графическом изображении цикла очень важно указать рас- положение данных. Структурная схема программы сложения эле- ментов массива данных, использующая индекс i для определения позиции данных, показана на рис. 4.7. При первом проходе i = 1 и операция выполняется над элементом 4 = 1; при втором проходе операция выполняется над элементом 4=2 и т. д. Индекс i указывает, какой набор данных надо использовать. Третий блок этой структур- нои схемы указывает, что на каждом шаге мы переходим к следую- щему элементу массива данных. Последний блок представляет собой проверку конца массива обрабатываемых данных. Операции с массивами данных с индексами называются индек- сацией. В цикле выполняется определенное число проходов. На 4-м проходе операция выполняется над 4-м членом массива, а затем индекс 4 изменяется на один шаг. Величина шага обычно равна 1, но может быть 2 (если выбирать каждый второй элемент),— 1 (обра- ботка массива в обратном порядке ) и т. п. В примере, приведенном в табл. 4.10, индекс изменяется коман- дой ISZ POINT. Конец программы определяется той же командой. Во многих ЭВМ имеются специальные встроенные средства для индексации — обычно используется так называемый индексный ре- гистр., Кроме прямой и косвенной адресации, в таких ЭВМ возможен индексный способ адресации. В этом случае испол- нительный адрес является суммой адрес- ной части команды и числа в индексном регистре. Каждый раз при выполнении индекси- руемой команды содержимое индексного регистра автоматически увеличивается (или уменьшается). Вследствие этого програм- мирование циклов и операций с массивами значительно упрощается. Машина может иметь более одного индексного регистра, что облегчает написание программ с исполь- зованием более одного индекса. Такая опе- рация имеет общую форму: Xi = F(Yj). Рис. 4.7. Структурная схема циклической про- граммы Использование индексных регистров и примеры программ с индексной адресацией будут рассмотрены ниже. Определение окончания цикла по счет- чику. Наиболее распространенным спосо- бом определения окончания цикла явля- 102
Таблица 4.11 Начало Программа сложения элементов двух массивов Адрес Содержимое Адрес Содержимое CLEAR HALT AX X ADD CONST AY Y STORE COUNT AZ Z CLEAR PX . ADD AX PY __ STORE PX PZ — CLEAR COUNT ADD AY CONST 7634 STORE PY X 3 CLEAR X+l 5 ADD AZ X + 2 7 STORE PZ CLEAR ADD I PX Y 6 ADD I PY Y +1 0 STORE I PZ Y + 2 4 ISZ PX • ISZ PY Z 0 ISZ PZ z+l 0 ISZ COUNT Z + 2 0 JUMP. —10 Конец Рис. 4.8. Окончание цик- ла по счетчику ется подсчет количества проходов по циклу. Этот способ исполь- зован и в примере рис. 4.6. Он может применяться, если одна и та же операция выполняется над всеми элементами массива, длина которого известна. Пример. Выполнить действие Zt = Xi + У\-. Структурная схема показа- на на рис. 4.8, а в табл< 4.11 — программа для массива, содержащего 100 эле- ментов. На структурной схеме показаны только основные операции без под- робностей. Так, например, начальная установка показана как 1 -> I. Это оз- начает, что создаются условия для выборки первого элемента из массивов X и У- Фактически в программе начальная установка выполняется первыми 12 командами. Для выхода из цикла используется подсчет числа проходов. Выход из цикла по условию. В некоторых случаях цикл может быть окончен до того, как все элементы массива будут обработаны. Такая ситуация возникает при необходимости найти в массиве кон- кретную величину. В этом случае цикл используется до тех пор, по- ка не реализовано определенное условие. Пример. Найти в массиве, содержащем 100 элементов, первое число, рав- ное нулю. Соответствующая программа приведена в табл. 4.12, а ее структур- ная схехма — на рис. 4.9. Следует обратить внимание на следующее. Есть два способа выхода из цикла: нормальный и условный. Нормальный выход используется, если обрабатываются все эле- 103
менты массива и ни один из них не равен нулю. Условный выход из цикла реализуется тогда, когда программа находит, что один из эле- ментов равен нулю. Если условие выполняется, то нет необходимо- сти обрабатывать массив дальше. Модификация адреса. Во всех примерах, приведенных выше, для выборки определенного элемента массива использовалась кос- венная адресация через ячейку-указатель. Просмотр всего массива обеспечивался увеличением содержимого ячейки-указателя. Другим способом просмотра массива является модификация ад- реса: адресная часть команды изменяется каждый раз, когда про- грамма выполняет проход по циклу. Самым простым способом яв- ляется увеличение содержимого ячейки, содержащей команду об- работки. Повторим пример (табл. 4.10), используя этот способ. Программа должна сложить 100 чисел, находящихся в ячейках от DATA до DATA + 143. Программа приведена в табл. 4.13. Команда обработки, находящаяся в ячейке PROC, изменяется для выполнения модификации программы: команда ISZ PROC прибавляет 1 к содержимому ячейки PROC при каждом проходе по циклу. Следовательно, на 1-, 2-, i-м проходе в ячейке PROC содер- жится ADD DATA, ADD DATA + 1, ADD DATA + i. В этом примере модификация адреса выполняется с помощью команды ISZ. В ЭВМ, содержащих индексный регистр, модификация адреса может быть выполнена более изящно при использовании индексной адресации, как будет показано ниже. Рис. 4.9. Окончание цикла по выпол- нению условия 104 Адрес Таблица 4.12 Программа почска первого нулевого элемент^ в массиве ^одержимое CONST COUNT АХ POINT X CLEAR ADD CONST STORE COUNT CLEAR ADD AX STORE POINT CLEAR ADD I POINT SKIPZ SKIP HALT ISZ POINT ISZ COUNT JUMP. —7 HALT 7634 X
Таблица 4.13 Программа сложения 100 чисел с использованием модификации адреса Адрес Содержимое Адрес Содержимое PROC CLEAR ADD CONST STORE COUNT I CLEAR I ADD DATA ISZ PROC i i CONST COUNT I DATA ISZ COUNT JUMP PROC HALT 7634 4.5. ЦИКЛЫ В ФОРТРАНЕ Массивы в ФОРТРАНе. Оператор DIMENSION. Язык ФОРТРАН очень удобен при работе с массивами. Обработка масси- вов может осуществляться с помощью операторов, которые мы уже изучили. Кроме того, следует ознакомиться с оператором для распределения памяти DIMENSION. Оператор DIMENSION — это команда компилятора, а не ма- шины. Она используется для резервирования памяти под массив. Так, чтобы зарезервировать область памяти для массива X длиной 100 элементов, запишем оператор DIMENSION X (100) Чтобы зарезервировать место для массива X длиной 100 эле- ментов и для массива Y длиной 56 элементов, запишем оператор DIMENSION X (100), Y (56) Этот оператор также может использоваться для переменной более чем с одним индексом. Так, чтобы зарезервировать область памяти для двумерного массива Хо размерностью 10x36 элемен- тов, запишем DIMENSION X (10, 36) Рассмотрим несколько примеров программирования циклов и обработки массивов на языке ФОРТРАН. Таблица 4.14 Сложение в цикле на ФОРТРАНе 1 DIMENSION DATA (100) 3 RES=0 5 ?1S1+’1ES+DATA (1) 6 IF(I—100) 4, 4 7 7 STOP Пример. Написать на ФОРТРА- Не программу, решающую задачу рис. 4.7. Программа показана в табл 4.14. Обратите внимание на следую- щее. 1. Оператор 1 указывает компи- лятору на необходимость зарезерви- ровать память для 100 элементов DATA. 2. Оператор 2 присваивает ин- дексу массива значение 1. 105
Таблица 4.15 Окончание работы в цикле по счетчику на ФОРТРАНе DIMENSION Х(100), Y(100), Z(100) 1 = 1 3 Z(I) = X(I) + Y(I) 1 = 1 + 1 IF(I-IOO) 3, 3, 4 4 STOP Таблица 4 16 Окончание работы по условию на ФОРТРАНе DIMENSION X(100) 1 = 1 5 IF(X(I)) 10, 20, 10 10 1 = 1 + 1 IF(I —100) 5, 5, 20 20 IO=I STOP 3. Оператор 3 устанавливает начальное значение результата, равное 0. 4. Программа выполняется циклически, на каждом цикле она прибав- ляет один элемент массива к содержимому RES. 5. Индекс цикла увеличивается на 1 на каждой итерации. 6. Когда индекс достигает 1=100, оператор IF выводит программу из цикла и она останавливается. 7. Не все операторы должны иметь номера. Можно исключить номера ди- ректив 1, 2, 3, 5 и 6. Пример. Написать на ФОРТРАНе программу для задачи, представленной на рис. 4.8. Программа дана в табл. 4.15. Пример. Написать на ФОРТРАНе программу для задачи, представленной на рис. 4.9. Программа приведена в табл. 4.16. Организация счетчика в ФОРТРАНе. Оператор DO. Рассмотрен- ные примеры программ на ФОРТРАНе содержат циклы со счет- чиком. Все эти задачи программировались с использованием изу- ченных ранее операторов. Так как циклы со счетчиком встреча- ются очень часто, то в языке ФОРТРАН имеется специальный оператор для их организации — оператор DO. Например, DO 4 I - 1,20 Этот оператор описывает несколько основных операций, необ- ходимых для программирования цикла. 1. Он устанавливает начальный индекс цикла I. В приведенном примере первым значением индекса будет значение 1. 2. Оператор DO находится вне цикла. Операторы, образующие цикл, следуют за ним. Последний оператор указывается в операто- ре DO. В данном примере оператор 4 является последним операто- ром цикла. 3. Как указано в операторе DO, цикл в данном примере выполня- ется 20 раз. Каждый раз значе- ние индекса I увеличивается на единицу и обрабатывается i-й элемент массива. После того как число проходов по циклу достигнет значения, определяе- мого оператором DO, цикл оканчивается и программа вы- ходит из цикла. Таблица 4.17 Программа на ФОРТРАНе с использованием оператора DO по структурной схеме рис. 4.7 DIMENSION DATA (100) RES = 0 DO 5 1 = 1, 100 5 RES = RES + DATA(I) STOP 106
Таблица 4.18 Таблица 4.19 Программа на ФОРТРАНе с использованием оператора DO по структурной схеме рис. 4.8 Программа на ФОРТРАНе с использованием оператора DO по структурной схеме рис. 4.9 DIMENS1O.N Х(100), Y(100), Z1100) DO 3 1 = 1, 100 3 Z(I) = X(I)4-Y(I) STOP DIMENSION Х(100) DO 10 1 = 1. 100 IF(X(I)> 10, 20, 10 10 CONTINUE 20 IO=I STOP Пример 1. Написать программу решения задачи, показанной на рис.4.7, используя оператор DO. Программа приведена в табл 4.17. Оператор 5 вы- полняется 100 раз, каждый раз при Z, увеличенном на единицу; Первый проход RES = RES + DATA (1) Второй проход RES = RES + DATA (2) f-й проход RES = RES + DATA (r) 100-й проход RES = RES + DATA (100) Пример 2. Составить программу для задачи, показанной на рис. 4.8, ис- пользуя оператор DO. Программа дана в табл. 4.18. Пример 3. Написать программу для решения задачи, показанной на рис. 4.9, используя оператор DO. Программа приведена в табл. 4.19. Последний пример несколько отличается от предыдущих, так как программа имеет две ветви, как показано на рис. 4.9. Если внут- ри цикла имеется несколько ветвей, они должны быть объединены в один оператор, указанный в операторе DO. Для этой цели в ФОРТРАНе используется фиктивный оператор CONTINUE. Этот оператор не представляет выполнение операции, а используется только как соединяющая точка. В рассматриваемом примере послед- ним оператором в цикле является оператор 10 CONTINUE Этот оператор указывает, что в цикле достигнут последний опера- тор и теперь следует совершить следующий проход через цикл. 4.6. ПОДПРОГРАММЫ Все возрастающее применение ЭВМ сопровождается созданием большого количества различных программ. Написание программ за- нимает много времени. Поэтому нужно создать возможность для их использования. Программы способны решать различные задачи при неограничен- ном числе вариантов значений параметров и операций. Следователь- но, имеется крайне небольшая вероятность того, что удастся цели- ком использовать чью-то программу, за исключением случаев точно таких же применений, в которых ее использовал автор. К счастью, 107
современные программы составляются в модульной форме. Вполне возможно, что некоторые модули могут использоваться при реше- нии различных задач. Модульность достигается использованием подпрограмм при на- писании программ. Подпрограмма является частью программы и сама решает некоторую базовую операцию. Она может состоять из нескольких команд, поможет быть и довольно длинной программой. Основным достоинством подпрограммы является возможность ее использования в различных местах одной и той же программы или в различных программах. Подпрограммой может воспользоваться и тот программист, который сам не в силах ее составить. Предположим, что необходимо вычислить значение синусоидаль- ной функции для различных параметров в нескольких местах про- граммы. Синусоидальная функция относится к классу элементар- ных функций, но с помощью машинных команд программировать ее не так уже просто. Наиболее часто синусоидальная функция вычис- ляется через степенной ряд. Так как эта функция часто использует- ся, можно воспользоваться уже составленной программой для ее вычисления. В настоящее время имеются библиотеки программ, соз- даются организации, собирающие программы из многих источников и представляющие их пользователям. Программа оформляется в виде независимого блока или подпро- граммы. Для нее определено, как вводить параметр и как вывести результат из программы. Пользователь может скопировать подпро- грамму и использовать ее в своей программе, даже не имея пред- ставления, как составлена подпрограмма. При использовании малой ЭВМ для лабораторных применений со временем накапливается некоторый фонд разработанных программ. Очень полезно с самого начала разбить программы на подпрограммы и создать свою собственную библиотеку подпрограмм, полезных для частных применений. Для составления новых программ можно ис- пользовать подпрограммы, уже имеющиеся в библиотеке. Так как подпрограмма может использоваться спустя некоторое время и даже другим человеком, очень важно обеспечить четкое опи- сание и определение подпрограммы и. если необходимо, начертить ее структурную схему. Открытая подпрограмма. Подпрограммы, как отмечалось, могут быть полезными и как части общей программы. Предположим, что в различных местах программы необходимо вычислить значение не- которой функции. Можно написать подпрограмму вычисления этой функции и каждый раз, когда в программе необходимо ее вычислять, включать этот набор команд подпрограммы вместо того, чтобы со- ставлять подпрограмму заново. Возможно, что при каждом включении подпрограмма должна не- много модифицироваться, чтобы удовлетворять требованиям в кон- кретном месте программы. Следовательно, подпрограмма должна быть открытой для таких изменений, и поэтому такой вид подпро- граммы называется открытой подпрограммой. 108
Таблица 420 Таблица 4.21 чисел Подпрограмма усреднения двух чисел Программа нахождения среднего двух с использованием подпрограммы CLEAR CLEARL ADD XI CLEAR CLEARL ADD XI i CLEAR CLEARL ADD i Yl ' CLEAR CLEARL ADD Zl ADD X2 ADD Y2 ADD Z2 ADD Х2 ROTR ROTR STORE 8 XA ROTR STORE YA ROTR STORE ZA Пример. Найти среднее значение чисел XI и Х2 и занести его в ХА; пос- ле этого выполнить ту же операцию с Yl, Y2 и YА, затем с Zl, Z2 и Z3. В этой программе одна и та же функция усреднения необходима в трех местах. Сначала подпрограмма составляется для одного применения. Эта под- программа показана в табл. 4.20. Она выполняет операцию (XI + Х2)/2. Вспомним, что деление на два эквивалентно сдвигу двоичного числа на один разряд. Это достигается командой, которая сдвигает содержимое аккумля- тора(Х/ + Х2) на один разряд вправо. Имея подпрограмму, можно написать основную программу (табл. 4.21). При этом набор команд подпрограммы ис- пользуется трижды путем изменения адресов. Макрокоманды. Процедура, показанная в табл. 4.20 и 4.21. может быть автоматизирована. Имеется способ указать ассемблеру о необходимости ввода подпрограммы в нужное место программы. Любая программа состоит из машинных команд, каждая из кото- рых выполняет отдельную операцию. Современный ассемблер позво- ляет определить всю подпрограмму с помощью новых вводимых нами команд. Так, в примере в табл. 4.21 можно ввести новую команду, скажем AVERG, которая заменяет пять машинных команд подпро- граммы, приведенной в табл. 4.20. Такая команда называется мак- рокомандой (MACRO). Для определения макрокоманд в ассемблере используются две специальные команды. В табл. 4.22 показано, как эти команды используются для определения операции AVERG (ус- реднение). Команды MACRO и ENDMACRO указывают ассемблеру, что подпрограмма между ними определяется как новая команда, названная AVERG. Теперь можно использовать эту новую команду в основной программе. Та же программа, что и в табл. 4.21, написанная с использова- нием макрокоманды, показана в табл. 4.23. В процессе трансляции ассемблер распознает AVERG как макрокоманду и отыщет то место, где она была определена. Он заменяет макрокоманду AVERG под- программой, которая показана в табл. 4.22. Кроме того, он вводит параметры, как указано в табл. 4.23. Обратите внимание на то, что в табл. 4.22 и 4.23 показаны программы в том виде, как они будут записаны программистом. Ассемблер преобразует программу к виду, показанному в табл. 4.21, и транслирует каждую команду в двоич- .109
Таблица 4.22 Таблица 423 Использование макрокоманд при решении той же задачи усреднения Вид таблицы 4.21 при исполь- зовании макрокоманд Адрес Содержимое AVERG MACRO FIRST, SEC CLEAR CLEARL ADD FIRST ADD SEC ROTR ENDMACRO AVERG XI, Х2 STORE ХА AVERG YI, Y2 STORE YA AVERG Zl, Z2 STORE ZA Пример, Открытая подпрограмма для умножения на число три. Под- программа показана в табл. 4.24. Умножение на 3 = 2 + 1 выполняется за 2 шага. Вначале содержимое аккумулятора сдвигается на один разряд влево, а затеям к нему прибавляется множимое. В табл. 4.25 показана основная программа, в которой умножение на 3 вы- полняется в трех местах с переменными X, Y и Z соответственно. Как и в пре- дыдущем примере, ассемблер распознает макрокоманду TIMES3. Он вклю- чает подпрограмму, показанную в табл. 4.24, в основную программу каждый раз, когда встречается макрокоманда TIMES3. Обратите внимание на jo, что псевдокоманды MACRO и ENDMACRO, используемые здесь, имеют разные имена для разных ЭВМ. Однако они всег- да используются для определения тела подпрограммы MACRO. Закрытая подпрограмма. Макрокоманды могут значительно уп- ростить процедуру написания программы и сэкономить время про- граммиста, но они отнюдь не улучшают эффективности использова- ния памяти машины. В программе записываются макрокоманды, но ассемблер вводит в программу все ее команды. Следовательно, ес- ли задача выполняется, скажем, три раза, как в примере в табл. 4.21 или 4.23, то один и тот же набор команд три раза вводится в про- грамму. Таблица 4.24 Подпрограмма умножения на 3 Таблица 4.25 Пример программы с использованием подпрограммы умножения на 3 Адрес Содержимое CLEAR ADD X TIMES3 STORE Y3 TIMES3 MACRO STORE TEMP CLEARL ROTL ADD TEMP ENDMACRO TIMES3 STORE ХЗ CLEAR ADD Y CLEAR ADD Z TIMES3 STORE Z3 110
huh зло Киг'ЕЦ d) Рис. 4 10. Подпрограммы: U — Olhjzbliavl, б — KihpbJicOl Имеется другой путь написания подпрограмм вне основной про- граммы. Подпрограмма пишется в общем виде, так что может ис- пользоваться в любом месте, где она необходима. Так как подпро- грамма является закрытым блоком, она называется закрытой под- программой. Принципиальное отличие в использовании открытых и закрытых подпрограмм показано на рис. 4.10. Подпрограммы изоб- ражены в виде блоков. Открытая подпрограмма вводится в основную программу в тех местах, где она необходима и где происходит обращение к ней. За- крытая подпрограмма запоминается отдельно от основной програм- мы и пишется только один раз. Основная программа, когда это необ- ходимо, передает управление подпрограмме. После ее выполнения управление передается основной программе. Переход к подпрограмме выполняется специальной командой JMS, описанной ранее. Команда JMS автоматически запоминает адрес следующей команды в ячейке, которой передается управление при входе в подпрограмму (первой ячейке подпрограммы), обеспе- чивая таким образом условия для возвращения к основной про- грамме. Возврат можно осуществить, используя команду JMS с косвен- ной адресацией через первую ячейку подпрограммы. Пример. Закрытая подпрограмма для умножения содержимого сумма- тора на 3. Основная программа и подпрограмма показаны в табл.4.26. Сделаем следующие замечания: 1. Первая ячейка подпрограммы используется как адресная для коман- ды JMS. Команда JMS запомнит в ней адрес возврата. Предположим, что команда JMS находится в ячейке 50. Тогда адрес 51 запишется командой JMS в ячейку TIMES3. 2. * Команды, образующие тело подпрограммы, те же, что и в случае от- крытой подпрограммы. 3. Последняя команда подпрограммы JUMP I T1MES3 передает управле- ние основной программе — в данном случае ячейке 51. 111
Таблица 4.26 Программа умножения (А) на 3 с использованием закрытой подпрограммы Адрес Содержимое Комментарии 50 51 64 65 71 72 ITMES3 CLEAR ADD X JMS TIMES3 STORE ХЗ CLEAR ADD Y JMS TIMES3 STORE Y3 CLEAR ADD Z JMS TIMES3 STORE Z3 STORE TEMP CLEARL ROTL ADD TEMP JUMP I TIMESo Подпрограмма 4. Та же подпрограмма вызывается командой 64 и после ее выполнения происходит передача управления команде 65. Подпрограмма вызывается так- же командой 71, а управление затем передается команде 72. 5. Хотя подпрограмма используется много раз, она вводится в память ЭВМ только раз. Вследствие этого по сравнению с использованием открытых подпрограмм имеет место значительная экономия памяти. Ввод данных в подпрограмму. В последнем примере подпрограм- мы умножения на 3 из основной программы в подпрограмму переда- валось только одно число — множимое. Это число загружалось в аккумулятор, а затем команда JMS вызывала подпрограмму. Если из основной программы в подпрограмму передается лишь одно число, всегда используется аккумулятор. В ЭВМ с большим ко- личеством регистров в подпрограмму можно вводить большее число входных данных; Имеется другой способ ввода данных в подпрограмму, который можно объяснить с помощью следующего примера. Пример. Закрытая подпрограмма умножения на 3, не использующая для передачи данных аккумулятор. Программа показана в табл. 4.27. Сделаем следующие замечания: 1. В основной программе данные хранятся в ячейке, непосредственно следующей за командой JMS. 112
Второй способ ввода данных в подпрограмму Таблица 4.27 Адрес Содержимое Адрес CLEAR ADD X STORE. +2 JMS TIMES3 0000 STORE X3 TIMES3 CLEAR ADD I TIMES3 STORE TEMP CLEARL ROTL ADD TEMP ISZ TIMES3 JUMP I TIMES3 Подпрограмма копирования массива данных Таблица 4.28 Адрес Содержимое Комментарии COPY JMS COPY 100 150 7760 CLEAR ADD I COPY -16, v Передать параметры 100, 150 и —16 из основной STORE POINT1 программы в ячлйки POINT1, CLEAR ISZ COPY ADD I COPY STORE POINT2 CLEAR ISZ COPY ADD I COPY STORE COUNT CLEAR ADD I POINT1 PO1NT2 и COUNTI подпрограммы Цикл копирования данных STORE I POINT2 ISZ POINT1 ISZ POINT2 ISZ COUNT JUMP .—6 ISZ COPY Возврат в основную программу POINT1 POINT2 COUNT JUMP I COPY ПЗ
2 В подпрограмме команда ADD I TIMES3 используется для загрузки данных в аккумулятор. Данные в подпрограмме хранятся по адресу возвра- та к основной программе. 3. Команда ISZ TIMES3 используется для увеличения содержимого ячей- ки TIMES3 на 1. Это позволяет возвратиться в основную программу к коман- де, которая следует за ячейкой, содержащей число, умножаемое на 3. Такой метод ввода данных в подпрограмму удобен, когда необходимо пе- редать два или более исходных числа. Пример. Подпрограмма для перезаписи массива данных, начинающихся с ячейки 100, в блок ячеек, начинающийся с ячейки 150. Массив содержит 16 элементов. Программа показана в табл. 4.28. Первая часть подпрограммы использует описанный выше способ для вво- да трех параметров 100, 150 и —16 из основной программы в подпрограмму. Вторая часть подпрограммы выполняет операцию перезаписи чисел. Третья часть осуществляет возврат в основную программу. 4.7. ПОДПРОГРАММЫ НА ФОРТРАНЕ Так как язык ФОРТРАН является достаточно универсальным и почти независимым от типа ЭВМ, имеются обширные библиотеки подпрограмм на ФОРТРАНе. Язык допускает несколько способов определения и использования подпрограмм. Наиболее часто применяется способ, основанный на использовании операторов SUBROUTINE, RETURN и CALL. Первые два оператора эквивалентны псевдокомандам MACRO и ENDMACRO; они используются для определения тела подпро- граммы. Пример. Подпрограмма для перезаписи данных из массива SOURCE в массив DEST. Блок содержит W слов. Подпрограмма показана в табл. 4.29. Оператор CALL используется для связи основной программы с подпрограм- мой. Он эквивалентен команде JMS в символическом языке. Таблица 4.29 - Таблица 4.30 Подпрограмму копирования массива данных Та же подпрограмма с использованием оператора CALL SUBROUTINE COPY (SOURCE, DEST, N) DO 15 I=»l, N 15 DEST (I)-SOURCE(I) RETURN END CALL COPY (XI X2, 300) CALL COPY (YI, Y2, 100) CALL COPY (21, Z2, 1000) Пример. Переписать данные из массива XI в массив Х2 (300 слов), из масс- сива Y1 в массив Y2 (100 слов) и из массива Z1 в массив Z2 (1000 слов). Часть программы показана в табл. 4.30. 4.8. АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ Даже ЭВМ с очень простым набором команд может быть запрог- раммирована для выполнения многих арифметических операций. Арифметические операции выполняются с числовыми данными, ко- 114
торые в машине могут быть представлены как обычные двоичные чис- ла (целые или дробные) или как числа с плавающей запятой. Система команд машины оперирует с двоичными числами. При выполнении арифметических операций машина не воспринимает двоичную запятую. Программист сам определяет положение запя- той. Арифметические операции дают правильный результат при усло- вии, что числа находятся в пределах разрядной сетки машины. Мы напомним, что машина с п разрядами может оперировать с чис- лами в диапазоне (-2"-') -0 — (+2'1-' — 1). Следовательно, в 12-разрядной ЭВМ могут использоваться на- ибольшее отрицательное и наибольшее положительное числа, рав- ные — 20481О и + 204710 соответственно (— 40008 и + 37778). Если результат операции выражается числом, выходящим за пре- делы этого диапазона, то он будет неверным. Посмотрим, что произойдет при решении равенства z = и + V. В табл. 4.31 показаны четыре примера различных значений U и Y для машины с 12-разрядным словом. В первом примере склады- ваемые положительные числа дают верный результат. Во втором примере два положительных числа дают результат, выходящий за пределы разрядной сетки машины. Результат будет восприниматься как отрицательное число. В третьем примере сложение двух отрицательных чисел дает такой большой результат, что он имеет вид положительного числа. В последнем примере два отрицательных числа дают такой боль- шой результат, что он воспринимается как отрицательное число. В двух последних случаях бит переполнения L устанавливается в единицу. Для исключения ситуаций, подобных трем последним примерам, программист должен учитывать диапазон чисел, используемых в вычислениях. Проверяя знаковые биты операндов и результата и анализируя бит переполнения, программист может выявить факт Таблица 4.31 Суммирвание двух чисел и V L Z Знак результата 2422 1122 0 3544 l+. 3001 1010 0 4011 fc—-4 4000 4010 1 0010 7100 7700 1 7000 1 115
переполнения. Для корректировки результата или в крайнем слу- чае для индикации переполнения можно написать подпрограмму. Такие арифметические операции, как сложение, вычитание, ум- ножение, деление, И, ИЛИ, Исключающее ИЛИ, могут быть легко запрограммированы даже в малой ЭВМ. Сложение выполняется с помощью команды сложения. Вычитание можно выполнить, исполь- зуя команду сложения и двоичные дополнительные коды отрица- тельных чисел. Умножение и деление могут выполняться специаль- ными командами, если они имеются, или с помощью подпрограмм. Подпрограмму можно составить, используя команды сложения и циклического сдвига. Подпрограмму деления можно построить, используя операции вычитания и циклического сдвига. Для выполнения логических операций ЭВМ должна иметь как минимум одну логическую команду, например команду И. На осно- вании теоремы де Моргана, имея одну логическую команду и коман- ду образования обратного кода, можно составить подпрограммы, выполняющие другие логические операции. Рассмотрим несколько примеров программирования арифмети- ческих операций. Примеры построены по принципу программ для ЭВМ типа PDP-8. Реальные программы для PDP-8 описаны в ра- боте [2]. Определение абсолютной величины и знака. Пример. Составим программу для определения знака и абсолютной вели- чины операнда, находящегося в ячейке памяти U. Знаковый бит необходи- мо записать в ячейку SIGN, а абсолютную величину — в ячейку ABS. Про- грамма показана в табл. 4.32, а ее структурная схема — на рис.4.11. Первая половина программы предназначена для определения абсолютного значения, вторая — для определения знака- Вычисление степени числа 2. Пример. Даны целые числа М и N. Составить программу для вычисления значения Z — -М X 2N В десятичной системе счисления умножение на 10N означает сдвиг десятичной запятой на N разрядов вправо. Аналогично и в двоичной системе умножение на 2N означает сдвиг двоичной запятой на N разрядов вправо. Это то же самое, что сдвиг числа на N разрядов влево (от- носительно двоичной запятой) Умножение выполняется путем загрузки в ак- кумулятор числа М и сдвига его влево /V раз. Результат будет правильным, если его можно представить 12-битовым числом. Для больших чисел старшие разряды, сдвинутые за пределы аккумулятора, теряются. Программа пока- зана в табл 4.33, а ее структурная схема — на рис. 4.12. Умножение. Пример. Составить программу для умножения U на V путем сложения V самого с собой U раз. Программа приведена в табл. 4.34. Мы рассмотрели два метода умножения: умножение с использованием сдвигов, которое удобно при умножении на целую степень числа 2, и умно- жение путем сложения, которое применимо для всех чисел, но является более длинным. Наиболее общим способом умножения является способ, основанный на правилах умножения двоичных чисел: частичное произведение сдвигается П6
Таблица 4.32 Программа вычисления абсолютного значения и определения знака Адрес Содержимое POS и ABS SIGN CLEAR CLEARL ADD ROTL SKIPL JUMP ROTR COMPL INCR skip ROTR STORE CLEAR ADD ROTL CLEAR ROTR STORE HALT 1231 U POS ABS U SIGN Рис. 4.11. Структурная схема нахож- дения абсолютного значения и знака ha чала Конец на один разряд влево для каждого разряда множителя. Если в разряде мно- жителя содержится нуль, к частичному произведению прибавляется нуль; если единица, прибавляется множимое. 5 Y ' = 25 101 510 101 510 Ю1 ООО 101___ 11001 2510 Обратите внимание на следующее. Если умножается число XXX на число XXX, результат имеет длину ХХХХХХ или ХХХХХ. Другими словами, умножая два «-разрядных числа, мы можем полу- чить 2«-разрядный результат. 117
Рис. 4.12. Структурная схема умножения на степень числа 2, Умножение на 2 Таблица 4.33 Адрес Содержимое Комментарии MULT1P LOOP CLEAR ADD N COMPL I NCR STORE COUNT CLEAR ADD M CLEARL Очистить аккумулятор Взять число N Образовать обратный код Образовать дополнительный код Восстановить счетчик циклов Очистить аккумулятор Взять число М Очистить регистр переполнения N М Z COUNT ROTL ISZ COUNT JUMP LOOP STORE Z HALT 7 212 0000 0000 Сдвинуть влево (умножить на 2) Выполнено требуемое число раз? Нет, выполнить снова Да! 118
исел Таблица 4.34 Содержимое Комментарии CLEAR CLEARL ADD U COMPL INCR STORE COUNT CLEAR ADD V ISZ COUNT JUMP LOOP STORE Z HALT 0012 0017 0000 0000 Очистить аккумулятор Очистить регистр переполнения Взять множимое Образовать обратный код Образовать дополнительный код Восстановить счетчик циклов Очистить аккумулятор Прибавить множитель Выполнено требуемое число раз? Нет, выполнить снова Да! Запомнить результат множения Таблица 4.35 Содержимое Комментарий CLEAR ADD MIN 12 STORE COUNT CLEARL CLEAR ADD Ml ROTR STORE Ml CLEAR ADD M5 SKIPL skip ADD М2 CLEARL ROTR STORE M5 ISZ COUNT JUMP LOOP HALT 0011 0020 0000 0000 7764 Очистить аккумулятор Взять (—12)ю Установить счетчик (12 бит) Очистить регистр связи Очистить аккумулятор Взять множитель Сдвинуть вправо Запомнить множитель и часть произведения Очистить аккумулятор Взять результат Старший разряд множителя равен 1? Нет Да, прибавить множимое Очистить регистр связи Сдвинуть вправо Запомнить результат Достаточное число сдвигов? Нет, выполнить снова (—12Ьп J19
Подпрограмма умножения показана в табл. 4.35, а ее структур- ная схема — на рис. 4.13. Отметим следующие особенности этой программы: 1. Множимое и множитель заносятся в ячейки памяти ЛПи М2 соответственно. 2. Операция начинается с умножения на младший разряд. Мно- житель загружается в аккумулятор и сдвигается вправо так, что НИ Множитель МГ.ЮГ М2:Множимое МЯРШ ^Анн^ллтор Рис. 4.13. Умножение путем выполнения последовательных сдвиюв и слсн жений 120
Таблица 4.36 Программа суммирования с удвоенной точностью Адрес Содержимое Комментарии DUBADD UL ин VL VH ZL ZH CLEARL CLEAR ADD UL ADD VL STORE ZL CLEAR ROTL ADD UH ADD VH STORE ZH HALT Очистить регистр связи Очистить аккумулятор Взять младшие разряды U Сложить с младшими разрядами V Запомнить сумму Очистить аккумулятор Взять перенос в сумматор Прибавить старшие разряды U Прибавить старшие разряды V Запомнить сумму содержимое разряда, на который производится умножение, оказыва* ется в регистре связи. 3. Умножение выполняется за 12 циклов для 12 разрядов. 4. Произведение является словом удвоенной длины, в конце опе- рации оно запоминается в ячейках М5 и Ml. Так как программа цик- лическая, то множитель сдвигается из Ml, а на его место заносятся младшие разряды произведения. 5. Программа выполняет умножение двух положительных чисел. Арифметические действия с удвоенной точностью. Для представ- ления чисел с удвоенной точностью используются две ячейки памяти. Если требуется большая точность, могут использоваться три слова или более. Пример. Программа для суммирования двух чисел с удвоенной точностью. Программа приведена в табл. 4.36. Если при сложении UL и VL (младших разрядов U и V) образуется перенос, который поступает в регистр связи, со- держимое регистра связи сдвигается в младший разрят аккумулятора Тогда значения UН и VH (старшие разряды U и V) суммируются с единицей пере- носа Результат в виде числа с двойной точностью запоминается в ячейках ZL и ZH. Пример. Программа для вычитания чисел с „войной точностью. Програм- ма приведена в табл. 4.37. Напомним, что дополнительный код числа образу- ется прибавлением единицы к его обратному коду. Чтобы образовать дополни- тельный код числа двойной точности, состоящего из двух половин BL и ВН, необходимо образовать обратный код BL, прибавить к нему единицу, обра- зовать обратный код ВН и прибавить к нему перенос предшествующего сум- мирования. Обработка логической информации. Большинство команд и опе- раций, которые рассматривались до сих пор, использовали целое машинное слово. Встречаются случаи, когда в операции должна об- 121
1 а б л и ц а 4.37 Программа вычитания с двойной точностью Адрес Содержимое Адрес Содержимое DUBSUB CLEAR CLEARL ADD BL COMPL I NCR ADD AL STORE CL CLEAR ROTL STORE CARRY CLEAR ADD BH AH AL BH , BL CH CL CARRY COMPL ADD AH ADD CARRY STORE CH HALT рабатываться только часть машинного слова. Одним из примеров яв- ляется загрузка в ячейки памяти ЭВМ кодов буквенно-цифровых символов. Буквенно-цифровые символы могут быть представлены в различ- ных кодах; наиболее часто используются двоично-десятичные коды и код ASCII. Код ASCII имеет модификации в зависимости от того, 6,7 или 8 разрядов используются для кодирования одного символа. Эти коды показаны в табл. 1.7 и 1.8. Так как машинное слово имеет больше разрядов, чем требуется для одного символа, то одно слово может использоваться для хранения нескольких символов. Таким способом можно разместить в памяти машины сообщение из буквен- но-цифровых символов. Когда возникает потребность в таком текс- товом сообщении, программа должна за один раз выбрать один сим- вол и направить его код устройствам ввода — вывода. Упаковка и распаковка информации — это только один из примеров операций с частью машинного слова. Пример. Для кодирования слова ОК используется 6-разрядный код ASCII. В одном машинном 12-разрядном слове с символическим адресом SIX запоминаются два символа. Составить программу для распаковки символов, преобразования кода в 8-разрядный ASCII код и запоминайия символов в двух ячейках FIRST и SEC. Программа приведена в табл. 4.38. Отметим следующие важные положения: 1. Буквы О и К кодируются в 6-разрядном коде ASCII как числа 17 и 13 соответственно и обе хранятся в ячейках SIX. Следовательно, в ячейке SIX содержится число 1713. 2. После выполнения команды ROTR шесть раз содержимое аккуму- лятора преобразуется в число 1317. 3. Код первой буквы О выделяется с помощью логической операции И над содержимым аккумулятора и ячейки памяти MASK. Число в ячейке MASK имеет шесть первых разрядов, равных 0, и шесть последних, равных 1 (восьмеричное 0077). Следовательно, поразрядное выполнение операции И сохраняет в аккумуляторе содержимое тех разрядов, которые совпадают с последними шестью разрядами маски. Результат выполнения операции И равен 0017 и хранится в аккумуляторе. 122
Таблица 4.38 Программа распаковки и упаковки символов Адрес Содержимое Адрес Содержимое CLEARL CLEAR ADD SIX ROTR ROTR ROTR ROTR ROTR ROTR AND MASK ADD POS300 STORE FIRST SIX’ MASK POS300 FIRST SEC CLEAR ADD SIX AND MASK ADD POS300 STORE SEC HALT 1713 0077 0300 4. 6- и 8-разрядные коды ASCII для букв А—Z отличаются на констан- ту, равную 3008 (см. табл. 1). Следовательно, для образования 8-разрядного кода ASCII к считанному коду буквы О прибавляется число 300fe и код 317 запоминается в ячейке FIRST. 5. Для выделения кода второй буквы К содержимое ячейки снова загру- жается в аккумулятор, но не сдвигается. Та же маска сейчас выделит послед- ние шесть разрядов, т. е. число 13. Прибавляя число 300, мы получаем 8-раз- рядный код числа 313, который запоминается в ячейке SEC. 6. Программа ввода—вывода теперь может переслать выделенные коды один за другим на устройство ввода—вывода, например, для их печати. 4.9. АРИФМЕТИЧЕСКИЕ ДЕЙСТВИЯ В ФОРТРАНЕ ФОРТРАН разработан для программирования задач, которые могут быть выражены простыми математическими формулами. Ос- новные операции: сложение, вычитание, умножение, деление и возве- дение в степень — записываются, как в алгебре, с помощью специ- альных знаков между рассматриваемыми переменными: -j— 9 — # j /, # * Приведем пример арифметического выражения в ФОРТРАНе: Y = (XI + Х2) * (ХЗ — Х4)/(Х5**3) ЭВМ сначала будет выполнять вычисления внутри скобок, а затем операции между скобками. Дополнительно следует помнить, что компилятор распределяет операции по следующему приоритету: возведение в степень, умножение и деление, сложение и вычитание. Следовательно, выражение вида Y = 3.0 * XI + Х2 будет трактоваться компилятором как Y = (3.0 * XI) + Х2 123
Хотя скобки не ставятся, операция умножения выполняется раньше операции сложения. Выражение Y = XI + Х2/ХЗ будет восприниматься компилятором в виде Y = XI + (Х2/ХЗ) Компилятор предусмотрит сначала выполнение операции деле- ния, а затем суммирования частного с XI. ЭВМ различает два вида чисел: целые и числа с плавающей запя- той. В то время как основные машинные команды работают с целы- ми числами, ФОРТРАН может использоваться для вычислений как с целыми, так и с числами с плавающей запятой. Чтобы различать эти два способа представления чисел, предусмотрены специальные обозначения. При записи числовых величин используется простое правило: числа с плавающей запятой должны иметь десятичную точку, а це- лые не должны ее иметь. Так, число 35. трактуется компилятором как число в плавающей запятой, а число 35 как целое. При присвое- нии имени переменной программист также должен знать, является переменная целым числом или числом с плавающей запятой. Фор- мальное правило следующее: для обозначения величины, которая трактуется как целое число, имя переменной должно начинаться с одной из букв I,J,K,L,M, N. Например, MAX, NIN, NX, I и т. п. Величина с именем, начинающимся с другой буквы, трактуется как число с плавающей запятой. Например, AVERG, DELTA, VOLT, AT, X, Y, U3, BN ит. п. Если выполнить примеры программ, приве- денные ранее, на ФОРТРАНе, можно отметить следующее. Большинство переменных, используемых в вычислениях, явля- ются числами с плавающей запятой. Использование чисел с плаваю- щей запятой облегчает программисту манипуляцию с числами раз- ной величины, так как диапазон чисел с плавающей запятой чрез- вычайно широк. Метки, используемые в циклах и массивах, являются целыми чис- лами. Часто вычисления над метками выполняются так: N = I — 3* (1/3) + 1 GO ТО (7,109, 2), N Если два таких оператора написаны внутри цикла DO с индек- сом I, значения N в первом, втором и третьем циклах будут 1,2 и 3 и оператор GO ТО передаст управление операторам с метками 7,109 и 2 соответственно. Если программист испытывает затруднения в выборе имен для целых чисел и чисел с плавающей запятой, ФОРТРАН предостав- ляет ему возможность использовать операторы INTEGER и REAL и определить любое имя, которое он выбрал для своей переменной. 12J
Например, компилятор понимает оператор INTEGER SUM как указание о том, что переменная SUM является целочисленной, хотя ее имя не начинается с одной из букв, которые зарезервирова- ны для целых переменных. Аналогично компилятор понимает оператор REAL МАХ как указание о том, что переменная МАХ является действительной переменной, хотя ее имя начинается с буквы М. Не вникая в детали, приведем несколько полезных операторов ФОРТРАНа: DOUBLE PRECISION используется для представления числа с двойной точностью; FUNCTION определяет имя подпрограммы, к которой может обратиться основная программа. Оператор LOGICAL позволяет выполнять логические операции с переменными, которые принимают только два значения TRUE и FALSE (истинно или ложно соответственно). 4.10. ПРОГРАММИРОВАНИЕ ВВОДА — ВЫВОДА Операция ввода — вывода используется для пересылок данных между ЭВМ и внешними устройствами. В первых моделях ЭВМ про- граммирование процедур ввода — вывода было сложной задачей для программиста, требующей от него как знания методов программиро- вания, так и знания структуры машины. Сейчас наблюдается тен- денция к упрощению организации ввода—вывода. В некоторых сов- ременных машинах можно программировать ввод—вывод в основном таким же образом, как пересылку данных между внутренней ячей- кой и аккумулятором. Большинство малых ЭВМ имеют команды вво- да-вывода для выполнения передачи данных Детальное описание передачи информации при вводе — выводе будет дано отдельно. Здесь мы остановимся на общих свойствах такой передачи, в пер- вую очередь напомним следующее: 1. Операция вывода предусматривает пересылку информации из аккумулятора машины в регистр данных внешнего устройства. Пос- ле того как данные приняты этим регистром, команда ввода — выво- да вызывает включение электромеханической системы устройства (например, если это печатающее устройство, включается электро- механическая система для печати нужного символа). 2. Операция ввода предусматривает передачу данных из регист- ра данных внешнего устройства в аккумулятор ЭВМ. Команда ввода также вызывает включение электромеханической системы устрой- ства (например, если это перфоленточное устройство, то включается электромеханическая система для протяжки ленты). 125
Ход дыдороа Код приказа Рис. 4 14. Форма слеза команды ввода —вывода В общем, команды ввода — вывода для малой ЭВМ состоят из трех частей, как показано на рис. 4.14: поля кода операции, поля кода выборки устройства, поля кода приказа. Код операции обрабатывает- ся в основном в ЭВМ и исполь- зуется для отличия команд ввода — вывода от других команд. Код выборки устройства и код приказа используются в основ ном внешним устройством. Выборка устройства. Как правило, к одной машине может быть подключено много внешних устройств. Поэтому должна быть предусмотрена возможность выделения с помощью команды ввода—вывода устройства, к которому должна подключиться ЭВМ. Это достигается использованием кода выборки устройства, составляющего часть команды ввода — вывода. Код выборки уст- ройства одновременно передается на все внешние устройства, свя- занные с машиной. Каждое устройство имеет встроенный селектор. Селектор анализирует поступающие коды выборки устройства. Когда селектор распознает код, принадлежащий данному устрой- ству, он организует подключение выбранного устройства к ЭВМ. Все другие устройства, так как они имеют другие коды, не будут подключаться к машине. Команда ввода—вывода, в которой для кода выборки устройства используются шесть разрядов, показана на рис. 4.14. В этом при- мере к машине могут подключаться 64 различных устройства, коды выборки которых могут быть 0,2, 03, . . ., 62, 63. Приказы. С помощью команды ввода—вывода машина может вы- полнять многие функции обмена с внешним устройством. Она может посылать данные, принимать их, а также давать указание внешне- му устройству о необходимости выполнения некоторого специаль- ного задания или проверять состояние устройства. Для этой цели в командах ввода-вывода несколько разрядов используются в качест- ве приказов. Разряды приказов передаются на все внешние устрой- ства, но реагировать на приказ будет только выбранное устройство. В команде, показанной на рис. 4.14, для кода приказа исполь- зуются три разряда. Способ использования этих разрядов приказа предопределяется разработчиком внешнего устройства. В общем, каждое внешнее устройство должно распознавать как минимум три основных приказа и выполнять три основные задачи: рересылку данных, проверку флажка устройства и сброс флажка уст- ройства. Пересылка данных. Команда пересылки данных организует об- мен данными между аккумулятором и буферным регистром данных выбранного устройства. Будем использовать два символических име- ни READ и WRITE для входных и выходных пересылок данных соответственно. Так, команда 126
READ 04 определяет пересылку данных из устройства 04 в аккумулятор, команда WRITE 03 — пересылку данных из аккумулятора в устройство 03. Флажок устройства. Цифровые машины — чрезвычайно быстрые устройства с циклом работы порядка 1 мкс. Большинство внешних устройств, содержащих электромеханические узлы, работают зна- чительно медленнее, в миллисекундном диапазоне. Поэтому необ- ходимо предпринимать меры для синхронизации работы ЭВМ и внешнего устройства. Устройство ввода должно сообщать ЭВМ о том, что оно полностью подготовило информацию и готово переслать ее в машину. Устройство вывода также должно извещать машину, что оно полностью окончило предыдущую операцию и готово при- нять новую порцию информации из машины. Без таких сигналов машина будет осуществлять ввод и вывод данных с такой скоростью, которую внешнее устройство не сможет обеспечить, что приведет к неправильным действиям. Для того чтобы обеспечить правильную работу, в каждом внеш- нем устройстве имеется флажок —однобитовый регистр (триггер), который устанавливается в единичное состояние, когда устройство готово к обмену информацией. В устройстве вывода флажок уста- навливается тогда, когда устройство готово к приему информации, в устройстве ввода — когда устройство подготовило данные. Когда флажок устройства сброшен (установлен в нуль), устройство заня- то: устройство вывода еще обрабатывает предыдущую команду, уст- ройство ввода еще готовит данные. Команда ввода — вывода может использоваться для проверки флажка устройства. В этом случае она работает подобно команде SKIP: если флажок F установлен (устройство готово), то следующая команда программы пропускается; если флажок F сброшен (уст- ройство занято), то выполняется следующая команда программы: (П - 1 => I + 2, (F) = 0=> /+ 1. Для команды ввода — вывода, которая проверяет флажок, будем использовать символическое имя SKIP. Эта команда, подобно дру- гим командам ввода — вывода, будет восприниматься только се- лектируемым внешним устройством. Так, команда SKIP 04 будет проверять флажок внешнего устройств 04. Если флажок 04 установлен, то следующая команда программы пропускается. ^Имеется команда сброса флажка, с помощью которой внешнее уст- ройство устанавливается в исходное состояние. Команда CLEAR 03 127
сбрасывает (устанавливает в нуль) флажок в устройстве с кодом выборки 03. Выше были определены четыре символические команды ввода — вывода: READ, WRITE, SKIP и CLEAR. Фактически речь идет об использовании одной и той же команды. Различные операции по- лучаются только за счет различных комбинаций разрядов поля кода приказа (рис. 4.14). Разработчик должен знать, какой разряд используется для данной операции. Когда команда ввода — вывода передается на внешнее устройство, этот разряд будет инициировать определенную операцию. Примеры программирования ввода — вывода. Пример. Программа считывания одного символа с клавиатуры телетайпа. Код выборки клавиатуры 03. Программа приведена в табл. 4.39 Пример иллюстрирует следующие важные положения: 1 Первые две команды очищают аккумулятор и флажок устройства 03 соответственно. 2. Команды SK1P03; JUMP. — 1 организуют цикл. Машина проверяет флажок устройства 03 до тех пор, пока не будет нажата клавиша на телетай- пе или перфолента не будет загружена в считывающий узел. Когда телетайп передаст код ASCII символа в клавишный буферный регистр и установит фла- жок, программа выйдет из цикла. 3. Команда READ03 осуществит пересылку данных из буферного регист- ра телетайпа в аккумулятор. Следующая команда занесет эти данные в ячей- ку оперативной памяти. Пример. Программа для вывода символа (буква L) в коде ASCII на пе- чатающее устройство телетайпа. Код выборки печатающего устройства 04. Программа приведена в табл. 4.40. Таблица 4.39 Таблица 4.40 Программа считывания символа с клавиатуры Программа печати символа Адрес Содержимое Адрес Содержимое 1NPLH ! CLEAR I CLEAR03 SK1P03 i JUMP.-l ; READ03 | STORE X i HALT (j OUTPUT X CLEAR WRITE04 ADD X SKIP04 JUMP.-l WRITE04 HALT 314 Данный пример иллюстрирует следующие важные положения: 1. Первые две команды используются для пересылки нуля в бу- ферный регистр печатающего устройства. Когда эта операция закан- чивается, устанавливается флажок печатающего устройства. 128
2. Команда ADDX загружает код ASCII символа L в аккуму- лятор. 3. Команды SK1P04, JUMP.— 1 организуют цикл до тех пор, пока флажок устройства 04 не укажет на готовность печатающего уст- ройства. 4. Команда WRITE04 пересылает код в буферный регистр теле- тайпа, и символ печатается на бумаге. 4.11. ВВОД—ВЫВОД В ФОРТРАНЕ На ФОРТРАНе программируются в основном математические задачи, для которых ввод и вывод довольно просты. Программист может не знать структуры каналов ввода — вывода машины. Пере- сылка данных осуществляется такими операторами READ (устройство, формат) переменная WRITE (устройство, формат) переменная Например, оператор READ (4,5) X осуществляет считывание данных из устройства ввода с номером 4 и записывает их в память как значения переменной X. Во время ввода данные преобразуются к формату, который соответствует ука- занию оператора установки формата 5. Организация форматов бу- дет рассмотрена ниже. Другой пример: WRITE (2,7) А, В, С Этот оператор будет выводить данные из трех ячеек А, В, С на пери- ферийное устройство 2, используя формат 7. Формат. Оператор FORMAT позволяет пользователю задавать форму и способ расположения данных, передаваемых через выбран- ное внешнее устройство. Наиболее часто используются следующие форматы: Е, F, /, Н. Формат Ew.d используется для представления данных в форме чисел с плавающей запятой с использованием степенного множите- ля. Здесь w — общее количество используемых позиций, d — коли- чество разрядов справа от десятичной запятой. Пример. Вывести на печать число X = 12-34, используя различные ва- •ианты формата Е: WRITE (4,5)Х 5 FORMAT (Е9.3) Результат Д. 123Е + 02, где Е + 02 означает 0 в степени 2. Обратит внимание на то что печатаются девять позиций, из которых три находятс.- б ?ак. 1038 12)
справа от десятичной запятой. Символ каретки Д используется для инди- кации пробела: WRITE (4,6) X 6 FORMAT (Е7.3) Результат . 12Е + 02 Формат Fw,d используется для представления данных в форме с плавающей запятой без степенного множителя. Здесь w — общее количество используемых позиций, d — количество разрядов справа от десятичной запятой. Пример, Вывести на печать число Y = 12.34, используя различные ва- рианты формата F: WRITE (4,5)Y 5 FORMAT (F10.3) Результат ДАДД 12,340 WRITE (4,5)Y 5 FORMAT (F4.5) Результат 12.3 Формат Iw используется для представления данных в виде до-ра> рядных целых чисел. Пример, Вывести переменную M1N = 1234 в формате /: WRITE (4,7)MIN 7 FORxHAT (16) Результат ДД 1234 Формат tiHhihz — hn может использоваться вместе с оператором для передачи символьных данных, следующих за Н. Пример, WRITE (6,11) 11 FORMAT (14Н GOOD MORNING) В результате фраза GOOD MORNING выводится на выходное устрой- ство номер 6. Для более детального изучения деректив ввода-вывода и используемой нумерации устройств нужно обратиться к руководству по ФОРТРАНу, ори- ентированному на его применение в данной ЭВМ. Задачи 1. Массив содержит пять элементов, расположенных в ячейках с XI по Х5, Напишите программу сортировки этих элементов в порядке из возраста- ния с запоминанием в ячейках Y1 ... Y5. 2. Составьте программу обнуления ячеек с номерами 2000 .... 2777. 3. Составьте программу выбора каждого второго элемента массива X длиной 100 ячеек и записи их в массив Y длиной 50 ячеек. 4. Составьте подпрограмму формирования обратных кодов элементов массива. В команде обращения за оператором JMS должны следовать началь- ный адрес массива и его длина. 130
5. Составьте MACRO-команду считывания /V-го бита содержимого сум- матора, при этом 0 < N < 11. 6. Составьте программу суммирования двух чисел X -J- Y = Z с утро- енной точностью. Каждое слово разделить на три части: старшую (//), сред- нюю (М) и младшую (L). 7. Составьте программу засылки 0 в ячейку с номером 1000, —1 в ячей- ку 1001, —2 в ячейку 1002 и т. д. до ячейки 1777. 8. Составьте MACRO-команду, аналогичную оператору IF в ФОРТРАНе, для проверки числа в аккумуляторе. Если число отрицательное, управление передать ячейке NEG, если оно равно нулю, управление передать ячейке ZER, если же число положительное, управление передать ячейке POS. 9. Составьте программу нахождения числа отрицательных, положитель- ных и нулевых элементов массива, расположенных в ячейках с адресами с 2000 по 7777. Воспользоваться MACRO-командой из предыдущего задания, 10. Составьте программы на ФОРТРАНе для задач 1, 3 и 9. СПИСОК ЛИТЕРАТУРЫ 1. Flores I. Computer Programming, Prentice-Hall, Englewood Cliffs, N. J. 1966. 2. Introduction to Programming, Digital Equipment Corporation, Maynard, Mass., 1969. 3. Leeds H. D., Weinberg G. M. Computer Programming Fundamentals, McGraw-Hill, New York, 1966. Глава 5 ИНТЕРФЕЙСЫ МИКРОПРОЦЕССОРОВ В пятой главе рассмотрены типы интерфейсов и описаны схемы непосред- ственного подключения внешних устройств к микро-ЭВМ. Даны пояснения типовой структуры ЭВМ, процедур выполнения команд пересылок данных между памятью н основными регистрами. Описаны основные типы обмена данными при вводе и выводе из ЭВМ: синхронный, асинхронный, по преры- ванию программы и с непосредственным доступом к памяти. Для типовых лабораторных исследований приведены примеры построения интерфейса и программ для каждого типа обмена. Показано, что путем простой селекции и временного тактирования можно обсепечивать одновременное подключение многих устройств к микро-ЭВМ. Даны некоторые методы сравнительной оцен- ки систем ввода—вывода малых ЭВМ. 5.1. ТИПОВАЯ СТРУКТУРА ЭВМ Этот раздел посвящен знакомству с основными блоками ЭВМ и пояснению их функциональных связей. В состав типовой ЭВМ вхо- дят память, информационные шины и регистры. Память является центром ЭВМ. Она обеспечивает запоминание программы, исходных данных и промежуточных результатов. Команды программы и опе- ранды данных представлены в памяти двоичными числами. ЭВМ извлекает команду из памяти и выполняет действие, которое пред- 5* J31
писывает команда. В команде может также содержаться адрес дан- ных. Машина выбирает эти данные из указанной ячейки памяти. Информационные шины данных служат для передачи двоичной информации между различными блоками ЭВМ. Они могут быть одно- и двунаправленными и обычно состоят из большого числа линий — одна линия на каждый разряд. Регистры используются для запоминания двоичной информации во время выполнения команды. Регистр состоит из определенного числа триггеров — один триггер на каждый разряд. ЭВМ может иметь много регистров. Основными регистрами ЭВМ являются: ак- кумулятор, программный счетчик, регистр адреса и регистр команд. Типовая структура ЭВМ, содержащая память, регистры и инфор- мационные шины связи между различными частями машины, пока- зана на рис. 5.1. Аккумулятор (Л). Регистр А является одним из главных эле- ментов ЭВМ. До начала операции в аккумуляторе может содержать- ся один из операндов. Второй операнд, если он необходим, поступает из памяти. После окончания операции в аккумуляторе находится результат. Условимся, что ЭВМ, которую мы будем рассматривать, оперирует 12-разрядными словами. Следовательно, аккумулятор также содержит 12 разрядов. Регистр связи (L). Одноразрядный регистр L используется для обеспечения циклической связи между старшим и младшим разря- дами аккумулятора и хранения единицы переноса в аккумуляторе. Регистр данных (MD) используется для считывания информации из памяти или для записи ее в память. Он содержит то же чисто раз- Рис. 5.1. Основные регистры и блоки мини-ЭВМ. Выполнение однснпкловой команды 132
рядов, что и слово памяти (12). Когда информационное слово нахо- дится в этом регистре, оно доступно для осуществления арифмети- ческих операций и для пересылок в другие регистры. Следователь- но, для записи данных из любого регистра в память первоначаль- но нх необходимо переслать в регистр данных MD. Программный счетчик (PC) используется для хранения адреса ячейки памяти, из которой будет извлекаться очередная команда. Он состоит из 12 разрядов, и поэтому с его помощью можно адре- соваться к 4096 ячейкам памяти. Обычно состояние PC шаг за шагом изменяется на единицу, как в счетчике, благодаря чему в ЭВМ счи- тывается содержимое следующих друг за другом ячеек памяти. Со- держимое адресуемой ячейки затем пересылается в регистр данных и используется для указания ЭВМ, что делать дальше. В некоторых случаях содержимое программного счетчика может быть изменено под управлением программы. Это происходит во время выполнения команд перехода, осуществляющих обращение к команде, находя- щейся в другой части хранимой программы. Регистр адреса памяти(Л4Л) содержит только значение исполни- тельного адреса выборки ячейки памяти. Он состоит из 12 разрядов для адресации к 4096 ячейкам памяти. Если ЭВМ осуществляет выборку команды, то в регистр адреса МА пересылается содержи- мое программного счетчика PC для указания адреса ячейки, где хранится команда. Если ЭВМ осуществляет выборку данных, то адрес может поступить из регистра данных. Для выборки данных адрес пересылается в регистр адреса МА. Очевидно, что регистр адреса МА и программный счетчик PC выполняют отчасти сходные функции. Причина использования двух регистров состоит в следующем. Программный счетчик служит для сохранения адреса текущей команды и указания местонахождения последующей команды. Если выполняемая команда адресного типа, ЭВМ до1жна указать адрес в памяти для получения операнда без разрушения содержимого программного регистра. Для этих целей и используется регистр адреса. Рассмотрим следующий пример: 100 ADD 150 101 ... Программный счетчик PC содержит адрес 100, по которому будет осуществлена выборка команды. Во время выполнения команды ре- гистр адреса МА используется для указания адреса ячейки памяти 150. После выполнения команды программный регистр PC указы- вает, что следующая команда находится в ячейке 101. Регистр команд (IR) используется для хранения кода операции команды, непосредственно выполняемой машиной. Если код опера- ции 3-битовый, то регистр команды содержит три разряда. Команда поступает из памяти в регистр данных (MD). Три разряда, представ- ляющие код операции, затем пересылаются в регистр команды IR. Код операции декодируется в регистре IR и инициирует действия, необходимые для выполнения команды. 133
Генератор состояний. Все команды выполняются в ЭВМ последо- вательно, одна за другой, в течение дискретного интервала времени. Этот интервал является основным машинным циклом и для совре- менных машин длится около 1 мкс. В машине используются одно-, двух- и трехцикловые команды. Не все циклы используются для одной и той же цели. Генератор фаз состояния устройства управле- ния ЭВМ может находиться в трех возможных состояниях: выбор- ки, ожидания и выполнения. Каждое состояние предназначено для определенной цели. Основные действия во время каждого их них следующие. Выборка, В данном состоянии выполняется чтение команды из памяти и ее декодирование. Выборка выполняется в следующей по- следовательности: 1. Содержимое ячейки памяти, указываемой программным счет- чиком, читается из памяти в регистр данных. 2. Содержимое программного счетчика увеличивается на едини- цу- 3. Код операции команды пересылается в регистр команды для управления ее выполнением. 4. Для одноцикловых команд соответствующие действия по их выполнению осуществляются во время последней части цикла вы- борки. Ожидание. Фаза ожидания следует за выборкой для адресных команд с косвенной адресацией. Этот этап используется для чте- ния адреса операнда из памяти. Он состоит из следующих шагов: 1. Адресная часть команды пересылается из регистра данных в регистр адреса. 2. Содержимое адресуемой ячейки памяти, являющееся адресом операнда, читается в регистр данных. Выполнение. Фаза выполнения используется во всех адресных командах, за исключением команд передачи управления JUMP. 1. Для команд, при выполнении которых требуется выборка опе- ранда из памяти, фаза выполнения используется для чтения операн- да в регистр данных MD и выполнения операции, указываемой ко- дом операции команды, с сохранением результата в аккумуляторе. Это команды ADD (СЛОЖИТЬ), AND (И), ISZ (ПРИРАЩЕНИЕ и ПРОПУСК ПО НУЛЮ). 2. Для команды STORE (ЗАПИСАТЬ) эта фаза используется для записи содержимого аккумулятора в указанную ячейку па- мяти. 3. Для команды обращения к подпрограмме во время этой фазы осуществляется пересылка содержимого программного счетчика PC в ячейку памяти, адрес которой содержался в команде, и занесение этого адреса в программный счетчик для передачи управления под- программе. Каждая фаза управления занимает один машинный цикл. Затем он делится на меньшие временные отрезки, которые можно исполь- зовать для выполнения последовательных логических действий. 134
Сама команда определяет последовательность фаз состояний, ко- торую управление ЭВМ должно пройти при выполнении данной ко- манды. Несколько примеров выполнения типичных команд иллюст- рируют действия и работу ЭВМ. 5.2. ВЫПОЛНЕНИЕ МАШИННЫХ КОМАНД Одноцикловые команды выбираются из памяти и выполняются во время одного и того же основного машинного цикла. Все одноопе- рандовые или регистровые команды теперь будем представлять как одноцикловые. Во время их выполнения процессор находится в фазе выборки. Пример выполнения команды CLEAR (ОЧИСТИТЬ) приведен на рис. 5.1. Программа хранится в ферритовой памяти. Команда CLEAR хранится в ячейке с адресом 100 и представлена в памяти в двоичной форме, но для простоты мы используем ее символическое обозначение. Предположим, что команды расположены в последова- тельных ячейках памяти и что программный счетчик после адреса одной команды формирует адрес следующей. Вполне возможно, что программный счетчик будет содержать адрес 100. Тогда за время од- ного машинного цикла выполняются следующие операции: 1. Адрес 100 передается из программного счетчика PC в регистр адреса МА. 2. Содержимое программного счетчика PC увеличивается на еди- ницу, и он будет указывать адрес следующей команды. 3. В регистре адреса МА установится адрес ячейки памяти. Со- держимое ячейки считывается в регистр данных MD. 4. В регистре данных содержится теперь команда (CLEAR), ко- торая должна выполняться. Эта команда имеет только код операции, но не имеет адресной части. Код операции поступает в регистр ко- манды /7?. 5. Регистр команды и дешифратор декодируют команду и ини- циируют узел ЭВМ, осуществляющий выполнение данной команды. В этом простом случае должен инициироваться импульс очистки для того, чтобы установить аккумулятор в нуль, после чего команда будет выполнена. Команда перехода (JUMP). В каждой ЭВМ может использовать- ся несколько команд условных и безусловных переходов. Команды перехода также выполняются за один машинный цикл, но способ их выполнения будет отличаться от способа выполнения команд обра- щения к регистру. Пример выполнения команды перехода показан на рис. 5.2. Команда JUMP 150 хранится в ячейке памяти с адресом 100. На протяжении одного машинного цикла выполняются следую- щие операции: 1. Адрес 100 передается из программного счетчика PC в регистр адреса МА. 2. Регистр адреса МА выбирает ячейку памяти. Содержимое ячейки памяти читается в регистр данных МО. 135
3. Теперь в регистре данных находится команда, которая долж- на выполняться (JUMP 150). Команда состоит из кода операции JUMP н адреса 150. 4. Код операции пересылается в регистр команды //?, где команда декодируется и подготавливаются необходимые цепи; при упрощенном описании этой подготовки инициируется некоторый им- пульс перехода, который перебрасывает ключ (рис. 5.2) из обычного положения + 1 в нижнее положение. 5. Адресная часть команды (150) пересылается в программный счетчик PC. Так выполняется эта команда. Следующая команда вы- бирается по адресу, хранящемуся в программном счетчике РС9 т. е. по адресу 150. Адресные команды. В адресной команде или команде с обраще- нием к памяти один из операндов выбирается из памяти. Ясно, что ЭВМ должна обращаться к памяти дважды: первый раз для выборки команды и второй —для получения операнда. Для этого необходимы два машинных цикла. Во время первого цикла машина находится в фазе выборки, а во время второго — в фазе выполнения. Пример выполнения команды сложения ADD показан на рис. 5.3. Команда ADD 105 хранится в ячейке памяти с адресом 100. В течение двух машинных циклов выполняются следующие опе- рации. Выборка. 1. Адрес 100 передается из программного счетчика PC в регистр адреса МА. 2. Содержимое счетчика PC увеличивается на единицу. 3. По адресу в регистре МА выбирается ячейка памяти. Ее со- держимое считывается в регистр данных MD Переход ВЫБОРКА Выдрать Устям бить Рис. 5.2. Выполнение команд переходов 136
Память МА pc Рис. 5.3. Выполнение адресной команды 4. Теперь в регистре AID находится новая команда ADD 105. Эта команда состоит из кода операции ADD и адресной части 105. 5. Код операции пересылается в регистр //?, где команда деко- дируется и происходит подготовка цепей, необходимых для выполне- ния команды. 6. Адресная часть команды (105) передается из регистра MD в регистр адреса МА. Выполнение. 1. По адресу, хранящемуся в регистре МА, выбирается ячейка памяти. Содержимое ячейки считывается в регистр MD 2. Теперь регистр MD содержит новый операнд 0071. 3. Подготовленные цепи выполняют команду ADD. При этом число 0071 будет суммироваться с предшествующим содержимым аккумулятора (0004), а результат будет запоминаться в аккумуля- торе. Так выполняется эта команда. Странично-относительная адресация. Адресная команда, как от- мечалось выше, состоит из трех частей: кода операции, разрядов признаков, смещения. Первый разряд признаков используется при странично-относи- тельной адресации, а второй — при косвенной адресации. При выполнении команд со странично-относительной адресацией регистр адреса МА и программный счетчик делятся на две части каждый (рис. 5.4). МА : МА1 (5 разрядов) и МА 2 (7 разрядов) PC : PCI (5 разрядов) и РС2 (7 разрядов). Теперь рассмотрим два случая, отличающиеся значением разряда признака странично-относительной адресации. 137
Разряд признака относительной адресации равен 0. В этом слу- чае исполнительный адрес равен смещению. Команда адресуется к нулевой странице памяти. Выполнение команды ADD 20 показано на рис. 5.4, а. Чтобы получить исполнительный адрес, смещение 20 передается в регистр МА2, а нуль — в регистр МА/. Таким образом происхо- дит адресация к ячейке 20 нулевой страницы. Разряд признака относительной адресации равен /. В этом слу- чае исполнительный адрес равен смещению плюс адрес начала стра- ницы, на которой находится команда. Адрес команды содержится в программном счетчике PC. Причем РС1 используется для подсчета страниц, а РС2 — для указания ячеек внутри страницы. Следова- тельно, если команда находится в ячейке 405, ее адрес записывается в программном счетчике PC, как показано на рис. 5.4, б. Чтобы по- лучить исполнительный адрес, смещение 20 пересылается в МА2, а содержимое РС\ — в МА 1. Таким образом выбирается ячейка 20 относительно адреса 400 (420-я ячейка памяти). Команды с косвенной адресацией. В рассмотренных выше ко- мандах использовалась прямая адресация. В случае косвенной ад- ресации машина вынуждена обращаться к памяти трижды: первый раз для выборки команды, второй раз — для получения адреса опе- ранда и третий раз — для получения самого операнда. Во время пер- вого цикла машина находится в фазе выборки, во время второго — в фазе ожидания и во время третьего — в фазе выполнения. Пример выполнения команды с косвенной адресацией приведен на рис. 5.5. Команда ADD I 105 находится в ячейке памяти с адресом 100. За три цикла работы выполняются следующие операции. Выборка. 1. Адрес 100 пересылается из счетчика PC в регистр адреса МА. 2. Содержимое счетчика PC увеличивается на единицу. 3. По адресу, хранящемуся в регистре МА, выбирается ячейка памяти. Содержимое ячейки считывается в регистр данных MD. 4. Теперь MD содержит команду ADD I 105. Эта команда име- ет код операции ADD и адресную часть I 105. ю Рис. 5.4. Выполнение команд со странично-относительной адресацией: а — команда находится на нулевой странице; б — на текущей я 138
Памяти f/A PC Рис. 5.5. Выполнение команды с косвенной адресацией 5. Код операции пересылается в регистр команд /7?, где он де- кодируется, в результате чего подготавливаются необходимые для выполнения команды цепи. 6. Адресная часть команды (105) передается из регистра MD и регистр МА. Разряд косвенной адресации I информирует маши- ну о переходе в фазу ожидания. Примечание. Адрес в регистре МА формируется, как и в примере, приведенном на рис. 5.4, с учетом признака относительной адресации. Ожидание. 1. Выбирается ячейка памяти по адресу, содержащемуся в ре- гистре МА. Ее содержимое считывается в регистре данных MD. 2. Теперь в регистре MD находится адрес 200. 3. Содержимое регистра MD пересылается в регистр МА. Выполнение. 1. Вновь выбирается ячейка памяти по адресу МА. Ее содержи- мое считывается в регистр MD. 2. Теперь регистр МО содержит операнд 0012. 3. Подготовленные цепи осуществляют выполнение команды сло- жения ADD. Следовательно, число 0012 будет суммироваться с со- держимым аккумулятора (0002), а результат сохраняется в аккуму- ляторе (0014). 5.3. ПРОГРАММИРОВАНИЕ ПРОЦЕДУР ВВОДА —ВЫВОДА ДАННЫХ Одними из главных областей применений малых ЭВМ являются управление, сбор данных и измерения. Важной особенностью машин для этих областей применений является возможность непосредствен- 139
ной связи с устройствами, входящими в системы измерения и управ- ления. Обменом информацией между внешним устройством и ЭВМ управляет либо программа ЭВМ, либо специально разработанные для этих целей блоки внешнего устройства. Обмен, управляемый программой, называется программно-управляемым обменом. Обмен, управляемый внешним устройством, осуществляется без вмешатель- ства программы по специальным информационным каналам, при этом, в случае необходимости, в обмене участвует центральный про- цессор, теряя на это свое время. Такой обмен называется обменом с занятием цикла. В некоторых машинах этот обмен называется по- другому, например информационным прерыванием, информацион- ным каналом или каналом прямого доступа в память (DMA). В этом параграфе будет рассматриваться только программно-управляемый обмен. Программно-управляющий обмен осуществляется с помощью команд ввода — вывода. Для малых машин — это команда ЮТ, которая может использоваться для следующих целей: 1. Для передачи приказов внешнему устройству с указанием, что ему сделать. Например, накопитель на магнитной ленте может полу- чить приказ возвратить ленту назад на одну зону. 2. Для приема и анализа информации, характеризующей состоя- ние внешнего устройства. Например, состояние будет различным при нахождении накопителя на магнитной ленте в режиме перемот- ки и в режиме готовности к записи. 3. Для вывода информации из ЭВМ во внешнее устройство. При- мером может служить передача информации по координатам X и Y для использования ее в качестве координат точки, отображаемой на экране дисплея. 4. Для ввода информации внешнего устройства в ЭВМ. ПримерОхМ может служить ввод цифровой информации в процессе измерения. Перечисленные выше задачи могут осуществляться одним из трех способов, называемых безусловным (синхронным) обменом, обменом по условию (асинхронным) и обменом с прерыванием про- граммы. Синхронный обмен используется редко и только для процессов, строго фиксированных во времени и полностью определенных. Внешнее устройство должно быть готово для осуществления обмена. Программа работы при синхронном обмене проста и понятна, как показано схематически на рис. 5.6, а. Команда ЮТ вводится в про- грамму между двумя другими командами там, где необходим обмен. Асинхронный обмен используется очень часто. Он осуществляет- ся под управлением программы, но лишь в случае, когда внешнее устройство находится в состоянии готовности. Программа работы ЭВМ схематически показана на рис. 5.6, б— обычно две команды ЮТ используются в этом случае для обмена. Первая команда используется для ввода в ЭВМ информации о со- стоянии внешнего устройства. Затем машина производит анализ со- стояния и принимает решение. Если устройство не готово, ЭВМ 140
ftepeftwa ОМоЗМЯ Рис. 5 6 Программный ввод—вывод: а — синхронный; б — асинхронный; в —с прерыванием программы возвращается к той же команде и проверяет состояние устройства многократно. Когда устройство перейдет в состояние готовности» машина выполняет вторую команду ЮТ, которая осуществляет об- мен информацией. Главное преимущество асинхронного обмена за- ключается в возможности синхронизировать выполнение операций ЭВМ с работой внешнего устройства, а основным недостатком явля- ются потери машинного времени на ожидание того момента, когда устройство окажется готовым к обмену. Прерывание программы. Обмен по прерыванию позволяет бо- лее эффективно использовать машинное время. Обмен в этом слу- чае будет осуществляться под управлением программы, но ЭВМ не будет многократно проверять готовность внешнего устройства до момента ее установления. Машина может производить вычисления, не связанные с данным обменом. Назовем эту программу основной или фоновой. Когда внешнее устройство готово для обмена, оно фор- мирует сигнал прерывания, который является причиной приоста- новки выполнения фоновой программы и перехода к выполнению специальной подпрограммы обработки прерывания. Эти действия схематически изображены на рис. 5.6, в. Команда ЮТ входит в состав подпрограммы прерывания. Когда выполнение этой подпрограммы завершается, управление передается фоновой программе. Простой пример. Проведем сравнение синхронного, асинхронного и об- мена по прерыванию на следующем примере. Одному из членов семьи поручено следить за кипячением молока и снять его с плиты, когда оно будет готово. Безусловная операция: пойти на кухню, скажем, в 8 ч 25 мин и снять мо- локо с плиты, не заботясь о гом, вскипело оно или нет. Операция по условию: присматривать за молоком, скажем, раз в мину- ту Когда оно закипит, снять его с плиты. Операция по прерыванию: установить сигнальное устройство, которое звони г при закипании молока. Выполнять фоновую программу по выполне- 141
нию домашнего задания (фоновую работу). Когда зазвенит звонок, прервать фоновую работу и снять молоко с плиты. Возобновить фоновую работу с того места, на котором она была прервана. Общая шина вввода—вывода. Обычно внешние устройства рабо- тают медленнее, чем ЭВМ. Следовательно, ЭВМ может обслуживать, если это необходимо, ряд внешних устройств. Линии ввода — вывода ЭВМ образуют систему шин, к которым подключаются все внешние устройства. Магистраль (или об- щая шина) с рядом внешних устройств показана на рис.5.7. Этот тип организации ввода — вывода получил название магистрального. ЭВМ соединена со всеми устройствами через общую шину (или маги- страль), так что все внешние устройства воспринимаются ЭВМ как одно устройство. Каждое внешнее устройство должно иметь свой собственный контроллер. Контроллер содержит устройство селек- ции адреса, для того чтобы машина могла вызвать конкретное уст- ройство для обмена. Контроллер должен выполнять следующие функции: 1. Декодировать код выборки устройства, полученный из ЭВМ, и выделить единственное из них, если код совпал с его адресом. 2. Декодировать код команды и инициировать ее выполнение. 3. Посылать в ЭВМ информацию о состоянии внешнего устрой- ства. 4. Осуществлять пересылку данных между ЭВМ и устройством. Команда ввода — вывода данных ЮТ. ЭВМ взаимодействует с контроллером посредством команды ЮТ. Пример формата этой команды приведен на рис. 5.8. Машинная команда состоит из трех частей: кода операции, кода выборки устройства и кода приказа. Код операции. Для кода операции отводятся три разряда, и од- на из восьми возможных комбинаций этих разрядов является кодом операции команды ЮТ. Код операции передается в регистр команды машины, вызывая действия, требуемые для выполнения команды ввода — вывода. Код выборки устройства. Шесть последующих разрядов исполь- зуются в качестве кода выборки устройства. Следовательно, рас- Рис. 5.7. Ввод—вывод через общую шину 142
сматриваемая ЭВМ может различать до 64 отдельных устройств. Декодирование кода выборки осуществляется внешним устройством. Код приказа. В данном примере три разряда используются для кодирования приказов управления. Таким образом, машина может посылать восемь различных команд управления внешнему устрой- ству. Декодирование этого кода осуществляется внешним устройст- вом. Потоки информации, возникающие при программном обмене с внешним устройством, показаны на рис. 5.9. Команда ЮТ, как и любая команда, считывается из памяти в буферный регистр MD. Код операции (первые три разряда) пересы- лается в регистр команды IR. Дешифратор команды запускает гене- ратор синхронизации команды ЮТ. В результате ЭВМ переходит в фазу ввода — вывода. Фаза ввода — вывода и сигналы синхронизации. Фаза ввода — вывода характеризует команду ЮТ, так же как фазы выборки, ожи- дания и выполнения характеризуют все другие команды. Во время фазы ввода — вывода ЭВМ генерирует ряд временных сигналов, которые используются для выполнения операций, необ- ходимых для установления связи с внешним устройством, стробиро- вания линий данных и выделения команд управления. Линии выборки устройства. Разряды кода выборки устройства хранятся в регистре данных MD. Команда ввода — вывода с по- мощью этих разрядов осуществляет выборку внешнего устройства. Эти разряды передаются по общей шине данных на все внешние уст- ройства. Код выборки устройства представляет собой ключ к внеш- нему устройству. Каждое внешнее устройство имеет свой собствен- ный «замок», называемый селектором устройства. Код выборки устройства будет соответствовать только одному селектору, следовательно, только одно устройство будет связано с ЭВМ. В приведенном примере шесть разрядов используются для выборки устройства, поэтому из ЭВМ выходит шесть линий выбор- ки устройства (линии DS0 — DS5). Линии управления. Код приказа управления тоже находится в регистре данных и используется для указания выбранному устрой- ству, что ему следует делать. Линии управления подсоединены ко всем внешним устройствам. Однако код выборки устройства обеспечивает подключение только одного из них к этим линиям. Следовательно, приказ будет принят лишь одним устройством, выбранным в соответствии с кодом выбор- ки команды. В нашем примере три разряда используются для кода приказа, следовательно, три линии управления отходят от процес- сора ЭВМ (СО . . . С2). Линии данных. Обмен информацией осуществляется между внеш- ним устройством и аккумулятором. Для этого используются 12 вход- ных и 12 выходных линий. Информационные линии подключены ко всем внешним устройствам. В каждом внешнем устройстве имеются вентильные схемы для их стробирования. Будут открыты вентили 143
Нод операции ддода-дыдода Нод fa/д'орми рстроистда Нод примам 3 6 —— э» < J JF Рис. 5.8. Формат команды ввода—вывода данных Память Рнс. 5.9. Блоки мини-ЭВМ, участвующие в программно-информационном обмене 144
линий данных только в устройстве, выбранном в соответствии с кодом выборки. Выходные линии снабжены стробируемыми усилителями. На этих линиях появляется содержимое аккумулятора во время вы- полнения операций. Выбранное внешнее устройство производит стробирование этих линий для приема информации в свой буферный регистр. Через выходные линии поступает информация от внешнего уст- ройства. Эти линии стробируются внутри ЭВМ так, чтобы они не ис- кажали содержимое аккумулятора. Только во время выполнения ко- манды ввода — вывода вырабатывается строб входных линий ак- кумулятора. Линия пропуска. Машина имеет одну линию пропуска и прове- ряет состояние флажка внешних устройств по этому входу. Одно- битовый регистр флажка находится во внешнем устройстве. При го- товности устройства к обмену его флажок установлен, в противном случае он сброшен. Если флажок указывает на готовность устройства, машина мо- жет выполнить команду ввода — вывода, т. е. может осуществлять обмен данными. В противном случае (флажок указывает, что устрой- ство не готово) ЭВМ будет откладывать выполнение команды ввода— вывода на более позднее время. Флажки всех внешних устройств подключены к одной общей линии пропуска. В каждом устройстве имеется вентиль между выходом сигнала флажка и линией пропус- ка, управляемый селектором внешнего устройства. При выполне- нии команды ввода — вывода ЭВМ проверяет состояние флажка вы- бираемого устройства. Выбранное устройство подает сигнал флаж- ка на линию пропуска. Состояние флажка будет запоминаться триггером пропуска ма- шины. Машина устроена так, что каждая команда ввода—вывода проверяет состояние триггера пропуска. Если триггер пропуска после выполнения команды ввода — вывода находится в со- стоянии 0, программный счетчик будет указывать на следую- щую по порядку команду программы. Если же он после вы- полнения команды ввода—вывода находится в состоянии 1, со- держимое программного счетчика будет увеличено на два и сле- дующая команда будет пропущена. В краткой форме это можно записать так: (пропуск) = 0 => I 4- 1, (пропуск) = 1 => I -|- 2. Таким образом, программа может содержать две ветви: первая ветвь —для случая когда устройство занято, и вторая — для случая, когда устройство готово к обмену. Линия прерывания. ЭВМ имеет одну линию прерывания. По этой линии она получает запросы от внешних устройств. После полу- чения запроса ЭВМ прекращает выполнение фоновой программы и осуществляет выполнение программы обработки прерывания от 145
внешних устройств. Линия прерываний непосредственно без венти- лей соединяется с флажками внешних устройств. Таким образом, если любое устройство затребует обслуживания по прерыванию, машина сразу же получит этот запрос. Простейшая логическая схема прерывания содержит входной вентиль, триггер разрешения и триггер прерывания (рис. 5.9). Входной вентиль управляется триггером разрешения, и он запирается, если триггер разрешения не установлен в единицу. Триггер разрешения управляется программой. Машина имеет команду разрешения прерывания (ION), которая устанавливает триггер разрешения. Другая команда запрета прерывания (IOF) сбрасывает триггер разрешения. Следовательно, программное уп- равление позволяет отключить (запретить) или подключить (раз- решить) линию прерывания к ЭВМ. (Две команды управления пре- рыванием ION и IOF относятся к группе команд со специальным кодом.) Если программист думает в дальнейшем использовать прерыва- ние, он должен применить команду ION. Входной вентиль в этом случае открыт и ожидает сигнала по линии прерывания. Сигнал на линии прерывания устанавливает триггер прерыва- ния в 1. Во время выполнения каждой команды машина проверяет состояние триггера прерывания. Когда триггер прерывания установлен, выполняются следующие операции: 1. ЭВМ завершает выполнение текущей команды программы. 2. Содержимое программного счетчика автоматически запо- минается в специальной ячейке памяти, например, с адресом 0. 3. Команда с заранее определенным адресом, например 1, вос- станавливает содержимое программного счетчика с нулевой ячей- ки. Два этих адреса прерывания устанавливаются для каждой машины. В нашем примере использовались адреса 0и1. Описанная выше процедура может использоваться для передачи управления от фоновой задачи к специальной программе обработки прерываний от устройства, выставившего запрос. После выпол- нения программы обработки прерываний восстанавливается вы- полнение фоновой задачи. 5.4. СОСТАВ ИНТЕРФЕЙСА ДЛЯ ПРОГРАММИРОВАННОГО ВВОДА —ВЫВОДА Селектор устройства. Каждое внешнее устройство, подсоединен- ное к общей шине, должно иметь селектор. Линии кода выборки устройства соединяются со всеми селекторами (рис. 5.10). Каждому селектору присвоен код выборки, и он срабатывает только тогда, когда присвоенный ему код присутствует на шине. Селектор с совпа- дающим кодом будет открывать вентили, разрешая тем самым по- дачу импульсов управления на выбранное устройство. Пример селектора внешнего устройства приведен на рис. 5.11. Шесть пар линий кодов выборки устройства (DS0 — DS5) общей 146
Рис. 5.10. Шина управления и шина кода выборки Рис. 5.11. Простой селектор устройст- ва для кода выборки 348(а) и 178(б) шины подключаются ко входам вентиля И. Предположим, что этот селектор должен выделять код выборки 348 (двоичный 011100). Следовательно, вентиль должен иметь единичный логический сиг- нал на выходе, если разряды кода выборки (DS0 — DS5) удовлет- воряют равенству Выход - DS0 • DS1 • DS2 • DS3 • DS? • ~DS5. Все разрядные линии (DS) имеются в магистрали. Следователь- но, если мы хотим реализовать селектор устройства с кодом выбор- ки, описанным уравнением, необходимо подключить сигналы в со- ответствии с уравнением ко входам схемы И. Эта ситуация отобра- жена на рис. 5.11, а. Если необходимо изменить код выборки уст- ройства, то достаточно слегка изменить связи селектора устройства. Селектор для кода выборки 178 (двоичного 001111) показан на рис. 5.11,6. Выход селектора устройства используется для отпирания вен- тилей линий управления и инициации различных действий устрой- ства. Дешифратор приказов. Линии управления подключаются ко всем внешним устройствам. Во внешнем устройстве линии управ- ления стробируются выходным сигналом селектора. Следовательно, только выбранное устройство получает приказ от ЭВМ. Устройство должно быть оснащено дешифратором приказов. Тип дешифратора зависит от функций, которые должно выполнять устройство. Например, при выполнении только трех функций уст- ройство содержит простой дешифратор с тремя входами и тремя выходами, который выдает сигнал лишь под управлением селек- тора устройства. Такой простой дешифратор сигналов управления приведен на рис. 5.12, а. 147
Когда машина выдает команду ввода— вывода с единицей в раз- ряде СО. то нулевая линия управления в выбранном устройстве становится управляющей и будет вызывать выполнение определен- ного действия с номером 0. В других случаях машина может выда- вать команды на выполнение первого или второго действия, ис- пользуя разряды Ct и С2 соответственно. Часто требуется выполнение устройством более трех действий. В этом случае трехвходовый дешифратор на восемь выходов обеспе- чивает возможность выполнения восьми различных действий. Про- стой дешифратор такого типа показан на рис. 5.12, б. Изготавли- ваются дешифраторы и в интегральном исполнении. Схема такого дешифратора была приведена на рис. 2.1. Конструктору внешних устройств предоставляется свобода в вы- боре как кодов команд, так и кодов содержащихся в них приказов. В нашем примере мы ограничимся пятью командами, присвоив им символические имена CLEAR (ОЧИСТКА), SKIP (ПРОПУСК), READ (ЧТЕНИЕ), WRITE (ЗАПИСЬ) и GO (ВЫПОЛНЕНИЕ). Рис. 5.12. Дешифратор приказов: а — на три выхода; б — на восемь выходов; в — селектор устройств с кодом выборки /«» и дешифратором на три выхода 148
Приказы этих команд могут быть представлены, например, кодами от 0 до 4 соответственно. Конструктор может самостоятельно уста- новить и другие приказы с кодами от 5 до 7, если в этом есть необ- ходимость. Команда CLEAR в дальнейшем будет использоваться для сброса триггера флажка в выбранном устройстве. Следовательно, команда CLEAR 32 будет сбрасывать флажок устройства с номером 32. Команда SKIP будет использоваться для подключения флажка выбранного устройства к линии пропуска команды. Следовательно, по команде SKIP 12 будет подключаться флажок устройства с но- мером 12. Команда READ будет использоваться для управления передачей содержимого регистра данных выбранного устройства в аккуму- лятор. Следовательно, по команде READ 10 будет осуществляться передача данных из устройства с номером 10 в аккумулятор. Команда WRITE будет применяться для управления передачей данных из аккумулятора в регистр данных выбранного устройства. Следовательно, по команде WRITE 10 будет осуществляться пере- дача данных из аккумулятора в устройство с номером 10. Команда GO будет использоваться для выдачи сигнала управ- ления на линию интерфейса. Конструктор может использовать эту команду для различных целей. Следовательно, команда GO 70 будет возбуждать одну линию в селекторе устройства с номером 70. Во всех примерах будет использоваться набор этих команд. Не все команды необходимы для каждого конкретного внешнего устрой- ства. Например, для считывания с перфоленты нет необходимости в команде WRITE, потому что это устройство не имеет физической возможности принимать информацию из машины. Селектор устрой- ства с кодом выборки 70 показан на рис. 5.12, в. Конструктор в дан- ном случае решил определить команды следующим образом: 1. Команда ввода—вывода с кодОхМ выборки 70 и кодом опера- ции 1 (двоичным 001). 2. Команда ввода — вывода с кодом выборки 70 и кодом опера- ции 2 (двоичным 010). 3 Команда ввода — вывода с кодом выборки 70 и кодом операции 4 (двоичным 100). В нашем примере мы разрешили конструктору выбирать коды приказов (операций) по своему желанию. В мини-ЭВМ определен- ные коды всегда используются для определенных приказов, как это будет показано дальше. Однако принципиально это ничего не меняет. Триггер флажка. Как уже было сказано, флажок представляет собой однобитовый регистр внешнего устройства. Если устройство осуществило все подготовительные операции перед обменом и есть готовность со стороны ЭВМ, то оно устанавливает в состояние 1 СВОЙ флажок (рис. 5.13). Выход регистра флажка может быть под- ключен или к линии прерывания, или к линии пропуска команды. При входной линии прерывания устройство выставляет запрос про- 14?
цессору на выполнение специальной подпрограммы обслуживания данного устройства. Если прерывание разрешено, то ЭВМ принимает запрос преры- вания в тот момент, когда он послан устройством. По входной линии пропуска команды машина может проверять состояние флажка в любое желаемое для нее время. Чтобы это осуществить, машина должна выполнить команду SKIP. По этой команде состояние триггера флажка выбранного устройства пере- писывается в триггер пропуска машины. Например, команда ввода — вывода SKIP 70 будет вызывать следующие действия (рис. 5.13): 1. Код выборки 70 будет восприниматься только одним селек- тором устройства с номером 70. 2. Линия управления, названная SKIP, стробируется селек- тором и будет возбужденной только в устройстве с номером 70. Линия SKIP 70 открывает вентиль на шине пропуска в устрой- стве 70. 3. Если триггер флажка устройства 70 находится в состоянии 1, то он устанавливает триггер пропуска ЭВМ по линии сигнала про- пуска. После того как ЭВМ получит информацию о флажке, она начнет выполнение обмена, при этом ей необходимо сбросить флажок. Для этой цели используется команда ввода — вывода CLEAR. Например, если выполняемая команда CLEAR 70, то выходная линия дешифратора приказов, названная CLEAR 70, сбрасывает триггер флажка устройства с номером 70. Обратим внимание на следующие важные особенности: 1. Флажок устанавливается внешним устройством. 2. Состояние флажка проверяется машиной при выполнении команды ввода—вывода SKIP с конкретным кодом выборки. Эта команда обеспечивает подачу сигнала флажка на вход линии про- пуска команды машины. 3. Флажок может использоваться Рис, 5.13. Триггер флажка внешнего уст- ройства и для осуществления запроса прерывания. При этом он сое- диняется непосредственно со входом прерывания машины. 4. Флажок предваритель- но выбранного устройства сбрасывается по инициативе ЭВМ при выполнении коман- ды ввода — вывода CLEAR. Регистр данных внешнего устройства. Обмен данными осуществляется между акку- мулятором и регистром дан- ных устройства (D7?). Дан- ные этого регистра могут ис- пользоваться для различных целей при вводе ~ выводе. 150
Рис. 5.14. Регистры данных во внешних устройствах для ввода данных в ЭВМ (а) и вывода данных (б) В качестве примера ввода данных рассмотрим ввод данных от цифрового вольтметра, подключенного к ЭВМ (рис. 5.14, а). Вольт- метр измеряет аналоговую величину (напряжение) и затем преоб- разует ее в цифровую форму (число). Эти цифровые данные запоми- наются в его регистре данных. После этого вольтметр может уста- новить (поднять) флажок, информируя машину, что он имеет дан- ные, подготовленные для ввода в машину. В качестве примера вывода информации рассмотрим управле- ние угловым положением двигателя от ЭВМ (рис. 5.14, б). Машина кодирует значение угла цифровой величиной, находящейся в ее аккумуляторе. Цифровые данные пересылаются в регистр данных устройства. Цифроаналоговый преобразователь, подключенный к ре- гистру данных, преобразует данные в аналоговое напряжение для привода в движение электродвигателя. Обмен данными осуществляется между регистром данных (DR) этого устройства и аккумулятором. Для передачи каждого бита информации используется одна входная и одна выходная линии данных. Следует отметить, что при обмене поступающие данные будут объединяться (логическое ИЛИ) с данными, уже имеющимися в ре- гистре премника лишь по одной линии. Передача по одной линии данных между одним триггером источника данных и одним тригге- ром приемника данных показана на рис. 5.15. а. Импульс коман- ды передачи открывает вентили между единичным выходом триггера источника и входом S (установки в1) триггера приемника. Если триггер источника находится в состоянии 1, то триггер приемника также устанавливается в состояние 1. Однако, если триггер источ- ника находится в состоянии 0, триггер приемника не изменит своего состояния. Следовательно, результат обмена представляется опе- рацией ИЛИ предыдущего состояния триггера приемника и переда- ваемого состояния триггера источника. Этот тип обмена называется передачей с объединением данных по ИЛИ. Другой тип обмена называют КОПИРОВАНИЕМ или ЗА- ГРУЗКОЙ регистра. При этом обмене информация источника ко- 151
Ягре&ача Триггер приемнике Триггер источника б) Рис. 5.15. Передача данных из регистра в регистр: а — с объединением по ИЛИ; б — с копиро ванием по двум шинам; в — с копированием по одной шине пируется приемником, а пер- воначальное содержание те- ряется. Копирование может быть достигнуто двумя пу- тями. На рис. 5.15, б этот тип передачи осуществляется сое- динением триггера источника и триггера приемника двумя линиями. Если триггер источ- ника находится в состоянии 1, это состояние передается в триггер приемника по входу установки. Если триггер ис- точника находится в состоя- нии 0, то его состояние пе- редается в триггер приемни- ка по входу сброса. У такого способа передачи имеется не- достаток: требуются две ли- нии на разряд на каждое на- правление передачи Поэтому он используется редко. Можно реализовать этот тип передачи с использова- нием только одной линии данных, но в два этапа (рис. 5.15, в). Сначала им- пульс сброса устанавливает в 0 триггер приемника. Затем импульс передачи осущест- вляет передачу данных от источника к приемнику. Сброс может осуществляться путем подачи импульса из интер- фейсного блока на линию сброса регистра приемника. В случае передачи при вводе, когда приемником служит аккумулятор, ЭВМ может ис- пользовать команду CLEAR для очистки аккумулятора перед выполнением команды ввода — вывода. Входные вентили шины данных. Аккумулятор имеет входную линию для каждого разряда. Регистр данных 152
Рис 5 16 Вентили шины ввода данных, представленные подробно (а) и упрощенно (6) Рис. 5.17. Вентили шины вывода данных, представленные подробно (а) и упрощенно (б) внешнего устройства DR имеет одну выходную линию на каждый разряд. Эти выходные линии стробируются сигналом селектора внешнего устройства, как показано на рис. 5.16, а. В момент передачи ЭВМ посылает в магистраль адрес устройства и коды приказа в составе команды ввода — вывода. Только выбран- ное устройство открывает информацонные вентили, и через них дан- ные передаются из регистра данных устройства в аккумулятор. Упрощенная схема такой операции показана на рис. 5.16, б. Вместо указания отдельных линий для каждого информационного разряда используется обозначение в виде двойной стрелки для пред- ставления общей информационной шины. Одинарная стрелка ис- пользуется для обозначения управляющего сигнала, поступающего на вход вентиля. Если ЭВМ и устройство разнесены, информационные вентили Должны иметь формирователи (усилители мощности) для возбужде- ния шин ввода данных. 153
Выходные вентили линий данных. Аккумулятор имеет выходную линию на каждый разряд. Регистр внешнего устройства также имеет входную линию на каждый разряд. Эти линии стробируются сигналом от селектора внешнего устройства, как показано на рис. 5.17, а. В аккумулятор загружается машинное слово. Затем командой ввода — вывода осуществляется передача данных. Команда ввода— вывода посылает адрес устройства и код приказа в магистраль. Открываются вентили линий данных выбранного устройства, и через них данные передаются из аккумулятора в регистр данных выбранного устройства. Упрощенная схема такой операции показана на рис. 5.17, 6. 5.5. СИНХРОННЫЙ, АСИНХРОННЫЙ И ПРОГРАММНЫЙ ОБМЕН ПО ПРЕРЫВАНИЮ Синхронный обмен. Рассмотрим простой пример передачи дан- ных между ЭВМ и внешними устройствами. Пусть ЭВМ собирает данные о результатах измерений в трех точках. В каждой точке имеется свой регистр данных. Данные из этих трех точек должны передаваться в ЭВМ и запоминаться в трех последовательных ячейках памяти. Разработчик должен спроектировать интерфейс для связи между точками измерения и машиной и написать программу для передачи данных. Каждая точка измерения трактуется как независимое внешнее устройство. Код выборки должен быть определен для каждого уст- ройства. Предположим, что разработчик решил использовать коды выборки 40, 41 и 42. Структурная схема интерфейса показана на рис. 5.18. ЭВМ должна послать три команды ввода—вывода с кодами вы- борки соответственно 40, 41 и 42. Единственной задачей команды ввода — вывода является передача данных. Любой код приказа может выполнить эту задачу. Будем использовать код 1. Это значит, что битами приказа в команде ввода—вывода будут 001. Назовем эту команду READ (ЧТЕНИЕ). Следовательно, три команды ввода — вывода I/O имеют вид J/O401 = READ40 I/O411 = READ41 1/0421 = READ42 Предположим, что необходимо записать три измеренные вели- чины в ячейки памяти DEV 40, 41, 42. Программа при этом имеет вид, показанный в табл. 5.1. Программа состоит из трех идентичных частей для трех уст- ройств. Первой является команда очистки аккумулятора. Команда READ40 посылает адрес 40 и приказ 1 на шины магистрали. Этим 154
Рис. 5.18. Интерфейс для синхронного программного обмена кодом открывается только селектор 40, а импульс приказа 1 от- крывает вентили его регистра данных. Данные из регистра будут передаваться в аккумулятор. Команда STORE DEV40 используется для записи данных в ячейку памяти DEV40. Таким же образом следующие три команды будут засылать дан- ные из устройства 41 в ячейку памяти DEV 41. Последние три коман- ды осуществят пересылку данных из устройства 42 в ячейку па- Таблица 5.1 Пример программы записи в память трех измеряемых величин Адрес Содержимое Адрес Содержимое CLEAR READ40 STORE DFV40 CLEAR READ41 STORE DEV41 CLEAR DEV40 DEV41 DEV42 READ42 STORE DEV42 155
мяти DEV 42, Когда этот обмен закончится, выполнение программы может продолжаться с использованием этих данных для вычис- лений. Асинхронный обмен. Может случиться, что к моменту прихода новой команды внешнее устройство будет занято выполнением пре- дыдущей команды. Например, если предыдущей командой, посту- пившей на НМЛ, была перемотка ленты, то потребуется некоторое время, прежде чем будет завершена перемотка. Если в это время программа выдаст команду чтения данных с ленты, то результат ее выполнения будет неправильным. Важно, чтобы ЭВМ осуществляла каким-либо образом проверку состояния внешнего устройства и принимала решение, когда обмен возможен, а когда нет. Внешнее устройство имеет триггер флажка. Если устройство готово в обмену, оно устанавливает триггер флажка.Если устройство занято выполнением предыдущей команды или готовит данные, то оно сохраняет флажок сброшенным. Выход триггера флажка стро- бируется селектором внешнего устройства, как показано на рис.5.19, и подается на линию пропуска команды общей магистрали. Все устройства подключаются к одной и той же линии пропуска, по ко- торой сигналы поступают в процессор и воздействуют на логические схемы пропуска команды при вводе —- выводе. Чтобы проверить состояние флажка, ЭВМ выдает команду ввода— вывода с адресом для выбора устройства. К машине подключается только флажок выбранного устройства. Если флажок установлен, ЭВМ может выдать вторую команду ввода—вывода для выполнения передачи данных. Пример интерфейса для асинхронной передачи показан на рис. 5.19. Используются три команды ввода—вывода с тремя раз- Рис. 5J9. Интерфейс для асинхронного программного обмена 156
Таблица 5.2 Пример программы асинхронного обмена данными Адрес Содержимое Адрес Содержимое SKIP34 JUMP. —1 CLEAR READ34 RES STORE RES CLEAR34 личными управляющими кодами приказов. Для устройства с кодом выборки 34 эти команды следующие: 1/0341 =в CLEAR31 1/0342 = SKIP31 1/0344 READ31 Пример программы приведен в табл. 5.2. Первая команда SKIP34 устанавливает связь триггера флажка устройства 34 с линией пропуска команды ЭВМ. Предположим, что устройство не готово к передаче. Следовательно, линия пропуска ввода — вывода находится в состоянии логического нуля и програм- мный счетчик выбирает следующую по порядку команду. Вторая команда JUMP. — 1 осуществляет возврат к первой команде и снова проверяет состояние флажка. Программа выполняет этот цикл до тех пор, пока внешнее устройство не станет готовым к обмену и под- нимет свой флажок. При этом линия пропуска ввода —вывода будет находиться в состоянии логической единицы. После выполнения команды SKIP34 машина пропустит следующую команду. Остав- шаяся часть программы очистит аккумулятор и затем передаст данные из выбранного устройства в аккумулятор, используя коман- ду READ34. Последняя команда ввода — вывода CLEAR34 этой части программы сбросит флажок в устройстве 34. В этом примере ЭВМ требует выполнения трех различных опера- ций в выбранном устройстве, поэтому используются три управ- ляющих кода приказа: 1. Код 2 в команде SKIP34 используется для подключения флаж- ка выбранного устройства к машине. 2. Код 4 в команде READ34 используется для подключения вен- тилей шин данных этого же устройства к ЭВМ. 3. Код 1 в команде CLEAR34 используется для сброса флажка устройства 34. Обмен по прерыванию. При большом различии в быстродействии ЭВМ и внешнего устройства, а также при большом объеме проводимых вычислений проверка готовности устройства приводит к потерям времени. При этом нужно избегать циклов ожидания, подобных описанным в табл. 5.2. Для сообщения машине о готовности устрой- 157
ства и для подачи запроса устройства на обслуживание может использоваться прерывание программы. Особенностью обмена по прерыванию программы является то, что обмен между ЭВМ и внеш- ним устройством проводится по запросу от устройства. Триггер флажка внешнего устройства используется для сооб- щения машине о запросе устройства на обслуживание. Триггер флажка подсоединен к общей линии ПРЕРЫВАНИЕ,yak показано на рис. 5.20. Линия подключена к ЭВМ и управляет логи- ческими цепями прерывания. Логические цепи прерывания передают управление от фоновой программы программе обслуживания прерывания данного устрой- ства. Этот процесс проиллюстрирован примером в табл. 5.3 и на рис. 5.20. Машина производит счет по длинной фоновой программе, записанной в памяти с адреса 200. К ЭВМ подсоединено внешнее устройство с кодом выборки 34.Внешнее устройство содержит детек- тор излучения, генерирующий распределенные случайным образом импульсы. При появлении импульса в регистре данных запоминается в цифрой форме амплитуда импульса, а также устанавливается триг- гер флажка. Таким образом, внешнее устройство посылает запрос в машину на чтение данных. Запрос может прервать работу машины в любой момент. Пусть, например, это произошло в момент выполнения команды, записанной по адресу 234. После выполнения этой команды содержимое программного счетчика увеличится до 235. Логическая схема прерывания запоми- нает содержимое программного счетчика по адресу 0 и заносит в Праш Рис. 5.20. Интерфейс для обмена по прерыванию программы 158
Таблица 5.3 Пример программы обмена по прерыванию Адрес Содержимое Комментарии 0 JUMP INTR Записывается содержимое счетчика PC, (235) 1 Обращение к программе обработки прерываний INTR CLEAR34 STORE SAVEA CLEAR READ34 STORE RES CLEAR ADD SAVEA ION JUMP I 0 Программа обработки прерываний SAVEA О RES 0 200 CLEAR 234 235 Фоновая программа, прерванная после выполне- ния 234-й команды программный счетчик адрес 1. Она также сбрасывает триггер пре- рывания в ЭВМ. По адресу 1 записана команда JUMP INTR, передающая управ- ление на программу обработки прерывания, начинающуюся с адреса INTR. Эта программа представлена в табл. 5.3. Отметим следующие особенности программы обработки прерывания: 1. Команда ввода—вывода CLEAR 34 сбрасывает флажок, так как запрос уже принят и обрабатывается. 2. Содержимое аккумулятора принадлежит фоновой программе По команде STORE SAVEA его содержимое запоминается в памяти. 3. Три следующие команды CLEAR, READ34, STORE RES принимают данные с внешнего устройства в ячейку памяти RES. 4. Перед возвратом к фоновой программе восстанавливается содержимое аккумулятора командами CLEAR и ADD SAVEA. 5. Из рис. 5.9 можно видеть, что при установке триггера преры- вания сбрасывается триггер разрешения прерывания.Таким образом, когда принят запрос прерывания, по линии прерывания не может быть выдан сигнал запроса прерывания. Поэтому перед окончанием работы по обслуживанию прерывания необходимо выполнить коман- ду ION, которая восстанавливает чувствительность системы преры- ваний к последующим запросам. 6. Последняя команда JUMP 10 передает управление по адресу, записанному в ячейке 0. В примере это адрес 235. Таким образом, 152
фоновая программа продолжится с места, где она была прервана. Следующий запрос прерывания может быть в любом другом месте основной программы и вызовет те же самые действия. 7, Для обработки прерывания используются две специальные ячейки памяти. Первая ячейка хранит адрес возврата к фоновой программе. Вторая хранит первую команду программы обработки прерываний. Обычно это команда передачи управления, как в'нашем примере. Сама программа обработки прерывания может храниться в другой части памяти. Эд/1 Устройство Охов лреумОакия SK/P40 Охой пропуска I I I I I I Охов L/Tf I ванных J Сборка | устройства}—-- —..... Рриказ h Флажок 44 1 Устрой^\ Ц ство 40 CLEAR40 Селектор = 40 ЯШ40 \Регистр 40 Флажок 41 ~ycmpoip т ство 47 f SKIP41 CLEAR41 Селектор <= 47 REAP 47 Ресистр 41 ] Устрой^ । ство । 42 I ЧР-] I « . I \ CLEAR 42 Флажок Селектор 42 IrEAEAZ <^= Регистр 4Z г Рис. 5.21. Интерфейс дня иесь'элъкп.х нет очников прерывания
Таблица 5.4 Пример программы сбора данных от трех точек измерения с использованием прерывания Адрес Содержимое INTR SR40 SR41 SR42 OUT TEMP DEV40 DEV41 DEV42 JUMP INTR STORE TEMP SKIP40 SKIP JUMP SR40 SKIP41 SKIP JUMP SR41 SKIP42 JUMP OUT JUMP SR42 CLEAR40 CLEAR READ40 STORE DEV40 JUMP OUT CLEAR41 CLEAR READ41 STORE DEV41 JUMP OUT CLEAR42 CLEAR READ42 STORE DEV42 CLEAR ADD TEMP ION JUMP I 0 0 0 0 0 Начало Конец Рис. 5.22. Структурная схема про- граммы поиска источника прерывания 0 1 Система со многими источниками прерывания. Во многих слу- чаях машина имеет более одного внешнего устройства. Линии за- просов на обслуживание от всех устройств соединены по схеме ИЛИ с общей линией прерывания. ЭВМ не может различить, какое устрой- ство подало запрос на обслуживание. Программа обслуживания прерывания должна выполнить ряд команд ввода—вывода типа SKIP, установив таким образом, какое из устройств имеет уста- новленный в единицу флажок. Когда программа определит это устройство, она передаст управление программе его обслуживания. § Зак. 1083 161
Повторим пример рис. 5.18 и табл. 5.1, где устройства 40, 41, 42 запрашивают обслуживание для ввода данных. Теперь вместо про- граммного синхронного обмена используем обмен по прерыванию. Когда устройство подготовит данные, оно установит флажок и вы- даст запрос на обслуживание по линии прерывания. Интерфейс для обмена показан на рис. 5.21. На рис. 5.22 при- ведена структурная схема программы обработки прерывания. В табл. 5.4 представлена сама программа. Отметим следующие осо- бенности системы со многими источниками прерывания: 1. Все линии запроса прерывания подсоединяются через схему ИЛИ к общей линии прерывания. Таким образом машина получает запрос прерывания независимо от его источника. 2. Содержимое триггера флажка всегда стробируется селектором внешнего устройства. Таким образом, ЭВМ может использовать логические схемы выборки и опрашивать одно устройство за другим в целях обнаружения установленного флажка, выдавшего запрос прерывания. 3. На каждое внешнее устройство выдаются три команды ввода — вывода. Команда SKIPn используется машиной для определения состояния флажка внешнего устройства п, команда CLEARп—для сброса флажка устройства п, команда READn—для считывания данных с устройства п в ЭВМ. 5.6. КАНАЛ ПРЯМОГО ДОСТУПА В ПАМЯТЬ Принцип организации. Канал прямого доступа в память (КПДП) обеспечивает возможность обмена без участия программы. Обмен осуществляется по специальной шине с занятием по необ- ходимости циклов центрального процессора. Этот тип обмена изве- стен также под другими названиями, такими как информационный канал, приостановка обработки данных и обмен с занятием цикла. Логические цепи для обмена через КПДП не зависят от цепей, осуществляющих программный обмен. Главной особенностью яв- ляется то, что при обмене черезе КПДП не используется аккумуля- тор, а, точнее, обмен выполняется непосредственно регистром дан- ных памяти машины. Так как выполнение программы не включает обмен через КПДП, содержимое рабочих регистров не нарушается. Каждый основной цикл КПДП находится под управлением внеш- него устройства, которое выставляет запрос на передачу. Для ввода данных в машину устройство выставляет запрос тогда, когда данные подготовлены; для вывода данных из машины устройство выставляет запрос, когда оно нуждается в данных и готово принять их. При наличии КПДП машина может выполять параллельно две функции, которые могут быть полностью независимыми: 1. Выполнение программы. 2. Передача через КПДП. Машина анализирует запросы от КПДП во время выполнения каждой команды программы. Если получен запрос от КПДП, еле-
дующий временной цикл работы отдается передаче по КПДП. Вы- полнение программы задерживается на этот временной цикл. Принцип обмена за цикл работы ЭВМ показан на рис. 5.23. Верх- няя штриховая линия показывает временные отрезки, во время которых машина выполняет программу. Стрелки отображают за- просы на КПДП, полученные от внешних устройств. Нижняя ли- ния изображает временные отрезки, занятые у программы и ис- пользуемые для выполнения обмена по КПДП. Обмен данными по КПДП особенно полезен для быстродействую- щих устройств и при передаче больших массивов данных, например для быстродействующей системы на магнитных дисках или магнит- ном барабане. Вычислительная машина и шины КПДП. В ЭВМ имеются спе- циальные шины для передачи информации через КПДП. Эти шины предназначены в основном для передачи с большой скоростью мас- сивов данных. Передача массива данных обычно связана с массивом ячеек памяти. Во время одного цикла передачи осуществляется обмен элемента массива данных между ячейкой памяти и внешним устройством. В следующий отрезок времени выполняется обмен между очеред- ной ячейкой памяти и внешним устройством и так до тех пор, пока не будет достигнут конец массива. При каждой передаче внешнее устройство связывается с маши- ной по шинам, по которым передается следующая информация (рис. 5.24): 1. Запрос от устройства на обмен через КПДП. 2. Ответный сигнал от ЭВМ о том, что запрос принят. 3. Адрес ячейки памяти, которая будет участвовать в обмене. 4. Данные. 5. Признак направления передачи. Линия запроса подключена к логической схеме КПДП машины и проверяется в ходе выполнения каждой команды. Если внешнее устройство возбуждает линию, то следующий цикл ЭВМ будет от- дан КПДП. Линия принятия запроса передает ответ от ЭВМ на внешнее устройство. Она возбуждена на протяжении цикла обмена через КПДП и может быть использована для установки в исходное состояние источника запроса в устройстве. Адресная шина КПДП определяет ячейку памяти, с которой происходит обмен. Адреса вырабатываются внешним устройством. Код адреса с адресной шины поступает в регистр адреса памяти во время цикла работы КПДП. Пересылка данных в ЭВМ осуществ- ляется через ее входную шину для КПДП (рис. 5.24, а). Данные готовятся внешним устройством и поступают по входной шине в ре- гистр данных памяти ЭВМ во время каждого цикла обмена через КПДП. Затем в том же цикле данные запоминаются в ячейках, адреса которых находятся в регистре адреса. Пересылка данных при выводе (рис. 5.24, б) осуществляется через выходную шину КПДП. Данные готовятся машиной: содер- 6* 163
Запрос обмена через КПД Л циклы ___Jl_________Il _Il_______________Il________ программы Циклы КПДП Рис. 5.23. Принцип занятия цикла в режиме прямого доступа к памяти Логические схемы КПДП I ф Рис. 5.24. Канал прямого доступа ж памяти для ввода (а) и вывода данных U4
жимое ячейки памяти, адрес которой определяется регистром адре- са, считывается в регистр данных и передается на выходную шину КПДП. Внешнее устройство должно опросить эту шину для пере- сылки в свой регистр данных в течение того же цикла обмена КПДП. Направление передачи определяется типом обмена (ввод или вывод). Взаимодействие внешнего устройства с каналом прямого доступа. Основными компонентами контроллера внешнего устройства при обмене через КПДП являются: триггер запроса, регистр адреса (AR) и регистр данных (DR). Триггер запроса управляется процессом, происходящим во внешнем устройстве. Когда устройству нужно послать запрос в ка- нал прямого доступа, оно устанавливает триггер запроса. ЭВМ получает запрос и освобождает цикл для обмена через КПДП. При этом возбуждается линия подтверждения приема запроса, которая может быть использована для сброса триггера запроса. Регистр адреса (AR) применяется для формирования адресов ячеек памяти, участвующих в обмене. Данные передаются через КПДП обычно в виде массивов. В начале операции регистр адреса AR должен содержать начальный адрес массива. Содержимое регистра AR увеличивается на единицу на каждом цикле обмена. Следова- тельно, следующий обмен будет производиться с участием соседней ячейки памяти. Сигнал подтверждения принятия запроса может использоваться для увеличения содержимого регистра адреса (AR). Регистр данных (DR) выполняет различные функции обмена при вводе и выводе данных. При вводе регистр DR содержит данные, поступающие от внешнего устройства. В течение цикла КПДП эти данные заносятся в ЭВМ через входную шину КПДП. При выводе регистр DR принимает данные из машины по выходной шине КПДП. Сигнал подтверждения принятия запроса может быть использован для стробирования выходной шины КПДП регистра DR. Пример передачи через КПДП. Пример обмена через КПДП при вводе приведен на рис. 5.25. Детектор регистрирует случайные импульсы, приходящие от измеряемого процесса. Амплитуда каж- дого импульса преобразуется в цифровую форму при помощи ана- лого-цифрового преобразователя. Требуется принять 100 импуль- сов и занести цифровые значения их амплитуд в 100 ячеек памяти, начиная с 2000-й, с применением обмена через КПДП. Мы уже указывали основные элементы, необходимые для обмена через КПДП: триггер запроса, регистр адреса (AR) и регистр данных (DR). Используется также ряд других элементов, применяемых для вспомогательных целей. До сих пор мы рассматривали только основную операцию КПДП —занятие цикла. Полный перечень операций при передаче массива данных следующий: 1. Начальная установка (подготовка) схем КПДП. 2. Пуск. 3 Многократное занятие цикла. 4. Завершение обмена. J65
Схематически эти операции изображены на рис. 5.26, причем программа используется только для начальной установки и пуска обмена через КПДП. После этого ЭВМ может выполнять основную программу, которая совершенно не зависит от обмена. Во время выполнения этой программы каждый раз при поступлении запроса КПДП будет занимать машинные циклы и осуществлять обмен. После окончания обмена для передачи управления программе завершения обмена через КПДП используется прерывание. Затем основная программа может быть продолжена. ЭВМ | Устройство г- __Вывод Запрос А нале?о- цифрсёсй пре образа - батель | Запрос принта | Данные В I ППДП | Адрес НПАП 1< Обмен через _____1 Программный j обмен Лрерыбание Флажок Григгер запроса WRITE ВО_______ ! Селен— j тор ВО В ссет 7 инс О CLEARS Т1 Дывсд данных (из аккумулятора) Выборка сстройстба Приказ Преоиризи - Вание завершено ^Регистр I адреса | Регистр- Селек- тор В! Г’гс 5 23 Интерфейс для обмена через КПД: а — конец передали массива данных определяется по прерыванию; б — по опросу шины пропуска команды U6
Начальная установка КПДП. Перед началом обмена необхо- димо указать, в каком направ- лении должен происходить об- мен данными (ввод или вывод), где в памяти разместить или от- куда считать данные и каково количество данных, подлежащих обмену. Эти служебные данные вводятся с помощью небольшой программы подготовки КПДП. В этой программе программный ввод используется для выполне- ния следующих операций: уста- новки в 0 схем интерфейса, задания начального адреса, ука- зания длины массива данных. Программа начальной уста- новки КПДП, показанного на рис. 5.25, а, приведена в табл. 5.5. Начальная установка интерфейса осуществляется пер- Нячало Нонец Рис. 5.26. Операции, выполняемые при обмене через КПДП: начальная ус- тановка, пуск, занятие цикла, завер- шение обмена выми двумя командами, которые устанавливают в нуль триггер флажка и триггер устройства с но- мером 42. Считывание начальных адресов выполняется следующи- ми тремя командами. Начальные адреса загружаются в аккумуля- тор и передаются в регистр’ адреса внешнего устройства. Для от- личия регистра адреса AR от других частей интерфейса приме- няется схема выборки. В этом примере для выборки регистра ад- реса использован код 40. Загрузка числа слов массива выполняется следующими тремя командами. Число загружается в дополнительном коде в регистр количества слов. В примере в качестве кода выборки этого реги- стра использован код 41. Интерфейс готов к обмену, и можно начи- нать работу. Запуск КПДП. После установки интерфейса в начальное со- стояние можно начинать обмен через КПДП. В этом состоянии внешнее устройство может выставить запрос на обслуживание. В рассматриваемом примере команда ввода—вывода GO42 подклю- чает аналого-цифровой преобразователь (АЦП) к интерфейсу с по- мощью установки триггера 42. Когда АЦП окончит преобразование, цифровая информация посылается в регистр данных, а по сигналу окончания преобразования устанавливается триггер запроса пре- рывания. За командой GO42 следует команда ION, которая вклю- чает систему прерывания. Прерывание будет использовано для за- вершения обмена через КПДП. В дальнейшем обмен через КПДП осуществляется под уп- равлением непрограммных команд. Следовательно, машина мо- Д67
жет выполнять другие операции по программе независимо от обмена. Занятие цикла. Рассмотрим следующий пример. Детектор ио- низирующего излучения реагирует на случайный импульс. АЦП преобразует амплитуду импульса в число. Когда преобразование закончится, установится триггер запроса. Следующий цикл машин- ного времени занимается под обмен, при этом осуществляется одна пересылка в ячейку памяти по адресу, находящемуся в адресном регистре. Сигнал подтверждения приема из ЭВМ используется для выпол нения трех операций: 1. Сброса триггера запроса. 2. Увеличения содержимого регистра адреса на 1. 3. Увеличения содержимого регистра количества слов на 1. Регистр количества слов загружается словом в дополнительном коде, а во время цикла обмена его содержимое уменьшается на еди- ницу. Содержимое регистра анализируется после каждого обмена. Когда оно станет равным 0, установится триггер флажка и в ЭВМ поступит запрос прерывания. Прерывание передаст управление программе обработки прерывания для завершения обмена. Пример программы обмена через КПДП Таблица 5.5 /^дрес Содержимое e Комментарии 0 1 JUMP INTP CLEAR41 CLEAR42 CLEAR ADD ADDRESS WR1TE40 CLEAR ADD COUNT WRITE41 GO42 Начальная установка ION JUMP JOB Пуск JOB Занятие цикла основной программы 100 pas ADDRESS 2000* COUNT 7634 Восьмеричное —100^ INTR CLEAR42 CLEAR41 JUMP I 0 Завершение обмена 168
Таблица 5.6 Программа обмена через КПДП с завершением по флажку пропуска Адрес Содержимое (Комментарии START ADDRESS COUNT CLEAR41 CLEAR42 CLEAR ADD ADRESS WRITE40 CLEAR ADD COUNT WRITE41 GO42 SKIP41 JUMP. —1 CLEAR42 CLEAR41 HALT 2000 7634 Подготовка Пуск Цикл ожидания Завершение В примере завершение обмена осуществляется путем отклю- чения АЦП от интерфейса: команда ввода—вывода CLEAR42 сбра- сывает триггер 42, а команда CLEAR41 сбрасывает триггер флажка. По окончании прерывания управление передается основной про- грамме. Завершение обмена через КПДП с использованием сигнала пропуска. Если нет необходимости продолжать выполнение другой программы параллельно с передачей через канал прямого доступа, выходную шину можно использовать для проверки завершения ра- боты программы обмена. Триггер флажка в этом случае подключается ко входной линии пропуска машины. Чтобы управлять подключением флажка к линии пропуска, се-' лектор 41 должен иметь третий выход -SKIP41. Программа для данного случая приведена в табл. 5.6. В течение обмена через канал прямого доступа ЭВМ находится в цикле ожи- дания конца обмена, состоящем из команд SKIP41, JUMP. — I. Вход сигнала пропуска показан на рис. 5.35, б. Другие части интерфейса такие же, как на рис. 5.25, а. 5.7. УПРАВЛЯЮЩЕЕ СЛОВО И СЛОВО СОСТОЯНИЯ Управляющее слово. Простым внешним устройством, которое должно выполнять только несколько операций, можно' управлять С помощью кодов приказа команды ввода — вывода. Такие команды, как READ, WRITE, SKIP, CLEAR, GO, можно использовать для инициирования различных операций внеш- него устройства. 169
Но существуют устройства, которые могут выполнять множество разнообразных операций. Так, например, контроллер НМЛ с четырьмя лентопротяжными механизмами (ЛПМ) может выполнять 8 различных операций с каждым накопителем. Это составляет в об- щем 32 различные операции. В этом случае приказы контроллеру НМЛ должны быть посланы не только в виде команды ввода — вывода, но и в виде управляющего слова. В устройстве для хранения управляющего слова содержится регистр, названный регистром управления (рис. 5.27). Содержимое регистра дешифрируется с помощью дешифратора управления, и его выходные сигналы управляют различными блоками внешних уст- ройств. Каждый бит информации регистра управления инициирует одну операцию или подключает один ЛПМ. Например, если для указания номера устройства используются два разряда, то, задавая номер устройства, можно соединить с ЭВМ любой из четырех ЛПМ. Другие три разряда могут быть использованы для определения типа операции. В табл. 5.7 приведен пример кодирования операций для магнитного накопителя. Комбинируя биты выбора устройства и биты типа операции, можно задавать любому устройству выпол- нение любой операции. Для того чтобы указать устройству, какую из операций выпол- нять, ЭВМ загружает в регистр управления управляющее слово с определенным набором единиц и нулей. Загрузка выполняется так же, как и при программной передаче данных. Регистру управ- ления присваивается определенный код выборки. В приведенном примере используется код 70. Управляющее слово загружается в аккумулятор и по команде WRITE70 передается в регистр управления. Если необходимо узнать, каким было последнее управляющее слово, можно исполь- зовать команду READ70. Содержимое управляющего слова при этом передается в аккумулятор при ее выполнении. Когда соответствующее слово записано в регистр управления, устройство готово к работе. Для того чтобы начать обмен, посылается команда ввода —вывода для отпирания выходных вентилей дешиф- ратора управления устройства. Управление внешним устройством с применением управляющего слова схематически показано на рис. 5.28. Работа накопителя на магнитной ленте. Пример. Контроллеру НМЛ дана команда перемотать ленту в устройст- ве с номером 2. Программа приведена в табл. 5.8 Первые две команды ис- пользуются для засылки нуля в регистр управления (для сброса регистра). Следующие две команды вызывают управляющее слово и пересылают его в регистр управления. Управляющее слово имеет вид 20108. В соответствии с рис. 5.27 и табл. 5.7 первая восьмеричная цифра обозначает номер НМЛ (2), третья — операцию (1- перемотка). Последняя команда открывает вентили на выходах дешифратора управ- ления, и начинается операция перемотки ленты НМЛ № 2. Пример. Запишем метку конца файла в НМЛ № 3. Программа приве- дена в табл. 5.9. Единственное отличие от предыдущего случая — в конфи- 170
Рис. 5.27. Интерфейс, работающий с использованием управляющих слов Таблица 5.7 Операции, используемые при управлении НМЛ Выбор НМЛ Разрешение прерывания от флажка ошибки или НМЛ Холостой ход Перемотка Чтение одной зоны Контрольное чтение Запись одной зоны Запись метки конца фай- ла Перемотка вперед Перемотка назад ООО О 0 1 О 1 О О I I 1 О О 1 0 1 1 1 о 1 1 1 171
гурации битов управляющего слова (3050). Видно, что это код номера устрой- ства 3 и операции записи метки конца файла. Пример. Прочитать одну зону с магнитной ленты на НМЛ № 1 через КПДП. Количество слов в зоне 100. Начальный адрес блока памяти, с кото- рого должны размещаться данные, равен 2000. Регистр адреса и регистр- счетчик слов соединены, как показано на рис. 5.25. Структурная схема программы показана на рис. 5.29, а программа при- ведена в табл. 5.10. Первые три команды записывают начальный адрес в регистр адреса уст- ройства, следующие три записывают число слов в регистр-счетчик слов уст- ройства, следующие три — управляющее слово в регистр управления устрой- ством. Последняя команда передает управление устройству, и начинается обмен через КПДП. Управляющее слово 4020 содержит номер НМЛ (4) и операцию чтения зоны (20). Слово состояния. Простое внешнее устройство, которое может выполнять лишь несколько операций, может информировать ЭВМ о своем состоянии, используя триггер флажка. Это указание о том, занято устройство или готово к пересылке. Однако имеются устройства, которые могут выполнять множест- во разнообразных операций. В этом случае состояние устройства не может быть представлено только одним битом информации. Рассмотрим в качестве примера контроллер НМЛ. ЭВМ должна получать информацию о различных ситуациях, которые возникают при выполнении операций контроллера. Это может быть ошибка по четности, несуществующая команда, конец ленты, конец операции и т. д. Для указания ЭВМ о состоянии устройства используется слово состояния, а в устройство вводится специальный регистр, называемый регистром состояния (рис. 5.30). Каждая конкретная ситуация обмена фиксируется в устройстве путем установки в 1 соответствую- щих бит в регистре состояния. В табл. 5.11 показан пример слов состояния контроллера НМЛ. Для определения состояния устрой- ства ЭВМ считывает слово состояния. Чтение производится так же, как при программной передаче данных. Регистру состояния присваивается определенный код выборки. В примере используется код 71. Содержимое регистра состояния пересылается в аккумулятор по команде READ71. После этого программа ЭВМ проверяет, какие биты в слове состояния установ- лены в 1, и в зависимости от этого принимает решения. Например, если единице равен бит ошибки, то программа может дать контрол- леру команду повторить операцию. Проверка выполнения операции накопителем на магнитной ленте. Пример. НМЛ завершил передачу одной зоны данных с использовани- ем КПДП. Проверить, не обнаружена ли ошибка по четности в ходе операции. Программа приведена в табл. 5.12. Первые две команды используются .для передачи слова состояния в ак- кумулятор. Следующая команда осуществляет логическую операцию И с мас- кой, содержащей единицу в бите, предназначенном для ошибки по четности. Код маски равен 02008 (00001000000г). Из табл. 5.11 видно, что этот бит соот- 172
Таблица 5.8 Программа для осуществления перемотки магнитной ленты Адрес Содержимое CONTR CLEAR WRITE70 ADD CONTR WRITE70 GO70 2010 Таблица 5.9 Программа записи метки конца файла Начало Конец Рис. 5.28. Схема использования уп- равляющего слова Адрес Содержимое CONTR CLEAR WRITE70 ADD CONTR WRITE70 GO70 3050 Начало Таблица 5.10 Программа чтения зоны НМЛ через КПДП Адрес Содержимое CLEAR ADD ADDRESS WRITE40 CLEAR ADD COUNT WRITE41 CLEAR ADD CONTR WRITE70 GO70 Конец Рис. 5.29. Структурная схема про- граммы работы с НМЛ с использова- нием управляющего слова ADDRESS COUNT CONTR 2000 7634 1020 173
дь/дорка РЕАЛ77 Рис. 5.30. Интерфейс для передачи слова состояния L \p акнуиулятору il 1 i I! i j Регистр состояния I I 1 I I ЗВН\Устроиства Таблица 5.11 Слово состояния УЛЛ Г---- Слово состояния в аккумуляторе (АС)-------------1 ACq АС/ AC2 Xuj АС^ AC# AC# AC/ AC$ AC# AC-/# АСц (ЕЕ) Флажок ош идки Перемотка (ВОТ) Лич ал о ленты Несуществующая команда Сшивка по четности (поперечной или Продольнси) (ЕСЕ) Уоне а фиала (ЕСТ) Конец ленте/ Нечетное число символов (влокировна контроля четности для 7-дорожеч- нои ленто/) Неправильная длина записи (при И/и= О — запись длинна, при WC * в—коротка) Споздание запроса данных Не используется (М7Е) Фла/кок НМЛ 174
Таблица 5.12 Таблица 5.13 Программа проверки отсутствия ошибки по четности при записи зоны на НМЛ Программа проверки нахождения НМЛ в исходном состоянии Адрес Содержимое Адрес- Содержимое PARITY CLEAR READ71 AND PARITY SKIPZ JUMP ERROR 0200 BEGNE CLEAR READ71 AND BEGNE SKIPZ JUMP ERROR 1000 ветствует биту ошибки по четности. Все остальные биты слова состояния об- нулены. Последние две команды используются для проверки условия и вет- вления программы. Если бит ошибки по четности установлен в 1, управление будет передано программе обработки ошибки. Если бит ошибки по четности обнулен, продолжается основная программа. Пример. Требуется определить, находится ли лента в НМЛ в начальном состоянии. Программа приведена в табл. 5.13. Основное отличие от предыду- щего случая заключается в, использовании другой маски для выделения ха- рактерного бита регистра состояния. Как видно из табл. 5.11, такой маской будет код 10008. Сравнение различных видов передачи данных. При программной передаче данных большинство операций выполняется программой, в то время как относительно простые задачи решает интерфейс. В результате интерфейс получается простым. С другой стороны, для каждой операции используется много шагов программы, что ограничивает скорость передачи данных. Обычно максимальная скорость передачи данных при программном обмене не превышает 103 кГц. Предполагается, что при этом передается целое машинное слово без преобразования форматов и проверки условий. Некоторые операции этого вида обмена могут значительно сни- зить скорость передачи. Однако для большинства типичных лабора- торных исследований и для целей управления скорость программной передачи данных вполне достаточна. При использовании КПДП основная задача передачи решается целиком аппаратурными методами. В результате интерфейс зна- чительно сложнее, чем для программной передачи. С другой стороны, каждый шаг передачи выполняется только за один машинный цикл и машина может передавать информацию более эффективно, чем с помощью программных методов. Максимальная скорость передачи данных через КПДП может достигать 500 кГц. Конечно, при этом ни преобразование формата данных, ни проверка условий с помощью программы невозможна, так как передача осуществляется только с помощью аппаратурных средств. J75
Заключение. 1. Оцените скорость передачи данных, необходимую для кон- кретного применения. 2. Определите, какие виды преобразования формата данных и проверок условий должны быть проведены с каждым элементом массива данных в ходе передачи. 3. Используйте программную передачу, когда это возможно. Она медленнее, но позволяет применить более простой интерфейс. Кроме того, многие операции решаются программой, а не интерфейсом с определенной структурой, что позволяет производить адаптацию и модификацию передачи данных. 4. Программная передача по прерыванию обеспечивает неко- торые преимущества перед асинхронной передачей, основное из них — более эффективное использование машинного времени. Од- нако обмен по прерыванию требует более сложной программы и бо- лее сложного интерфейса. 5. Прямой доступ к памяти —наиболее эффективный способ пе- редачи данных. Он обеспечивает передачу данных с высокой ско- ростью, но без каких-либо преобразований. Интерфейс для КПДП более сложен, чем интерфейс при программной передаче. Задачи 1. В ЭВМ хранится следующая программа; 100 CLEAR 101 ADD I 105 102 COMPL 103 STORE 1 106 104 HALT 105 111 106 105 107 000 110 000 111 0001 а) Каково содержимое регистра адреса памяти после выполнения второй команды? б) Каково содержимое аккумулятора после выполнения третьей команды? в) Что будет находиться в ячейках 105 и 106 после выполнения про- граммы? 2. Данные во внешнем устройстве 40 должны быть сдвинуты влево на три разряда и переданы во внешнее устройство 41. Разработайте интерфейс и напишите программу для этой задачи, используя синхронный обмен а), асинхронный обмен и проверку готовности обоих устройств б). 3. Внешнее устройство 37 вводит данные, в ЭВМ по прерыванию в слу- чайные моменты времени. Каждый раз входные данные должны быть записа- ны в следующую ячейку массива X. Когда будет получено 100 слов данных, устройство должно быть отключено. Разработайте интерфейс и напишите программу. 4. Устройства 60, 61 и 62 вводят данные в ЭВМ по прерыванию в случай- ные моменты времени. Данные из трех устройств должны быть записаны со- ответственно в массиве X, Y и Z. Каждый массив имеет длину 100 ячеек» Если в какой-либо массив будет занесено 100 отсчетов, дальнейшая процеду- ра должна быть прекращена. Напишиie соответствующую программу. 176
5. Детектор ядерных частиц генерирует импульсы со случайной ампли- тудой в диапазоне 0—50. Организуйте сортировку импульсов и определите, сколько времени придется ожидать импульс данной амплитуды (постройте гистограмму или распределение вероятностей амплитуд). Используйте про- граммный ввод по прерыванию. 6. Пять детекторов генерируют случайные импульсы, которые записы- ваются в пять ячеек памяти от COUNTO aoCOUNT4. Разработайте интерфейс и напишите программу, используя обмен по прерыванию. 7. В списке Т содержится 200 значений, которые представляют собой температуру. Эти данные надо передать последовательно во внешнее устрой- ство 50 для управления экспериментом. Разработайте интерфейс и напишите программу для асинхронного обмена. После того как будет передано 100 зна- чений температуры, весь процесс должен начаться сначала. 8. Решите задачу 7 с использованием обмена через КПДП. Всегда, когда устройство 50 готово к приему следующих входных данных, оно должно вы- ставлять запрос КПДП. Используйте прерывание для завершения обмена че- рез КПДП. 9. Организуйте запись в одну зону на НМЛ № 2, используя КПДП. Ко- личество слов 200, начальный адрес блока памяти 3000. Регистр адреса, регистр количества слов и управляющий регистр связаны, как показано на рис. 5.25 и 5.27. 10. Используйте слово состояния и управляющее слово для выполнения следующих операций с магнитной лентой; перемотать ленту на НМЛ № 1, подождать и проверить, находится ли лента в НМЛ Xs 1 в начальном состоя- нии, записать одну зону на НМЛ № 1. Если есть ошибка по четности, пере- мотать ленту и попытаться записать снова. Повторить операцию 10 раз. При правильной записи записать отметку конца файла. В противном случае оста- новить выполнение программы. Как и в задаче 9, использовать обмен через КПДП. Регистр состояния включен по схеме рис. 5.30. СПИСОК ЛИТЕРАТУРЫ 1. Small Computer Handbook, Digital Equipment Corporation, Maynard, Mass., 1971. 2. Burgess E., Ed. On-line Computing Systems, American Data Processing Inc., Detroit, 1965. 3. Beckurts К. H., Glaser, Kruger GM Eds. Automatic Acquisition and Re- duction of Nuclear Data, Gecellschaft fur Kernforschung m. b. H., Karls- ruhe, 1964. 4. Soucek B., Carlson A. D. Computers in Neurobiology and Behavior, John Wiley, New York, 1976. 177
Часть II ОПИСАНИЕ МИКРОПРОЦЕССОРНЫХ НАБОРОВ 4004/4040. 8008/8080, МСОМ-8. М6800. PPS-4. PPS-8. IMP 4/8/16, РАСЕ. Глава 6 МИКРОПРОЦЕССОРНЫЕ НАБОРЫ 4004/4040 В этой главе описаны 4-битовые микропроцессорные наборы 4004/4040 фирмы Intel Рассмотрены базовые микросхемы центрального процессора, ПЗУ и ЗУПВ. Показано соединение основных микросхем для построения микро-ЭВМ. Процессор имеет 4-битовую совмещенную шину данных и адре- сов. Приведены временные диаграммы работы шины. Система команд содер- жит команды межрегистровых пересылок, арифметические и логические команды, команды ввода—вывода и обращения к памяти. Приведено не- сколько примеров программирования, в том числе пример реализации про- стой логической функции. Помещенные здесь материалы представляют собой частично переработан- ные публикации фирмы Intel1’ Всю ответственность за предсгавленний в та- ком виде материал несет автор. 6.1. МИКРОСХЕМЫ Общее описание. Новейшие достижения в области технологии БИС позволили конструктору цифровых систем использовать в своих разработках вычислительные мощности, равные мощностям ЭВМ общего назначения, и в то же время значительно снизили трудоем- кость проектирования аппаратурных средств. Одна микро-ЭВМ фирмы Intel может выполнять те же арифметические, логические 1) Программы, рисунки и таблицы заимствованы из проспекта фирмы Intel Corporation. Все права сохранены. 178
и управляющие функции, что и мини-ЭВМ, при этом она размещается в двух корпусах типа DIP с 16 выводами и примерно на 2 порядка дешевле. Набор разрабатывался не для конкуренции с мини-ЭВМ, а для расширения диапазона применения вычислительных средств. В ча- стности, многие системы, выполненные на основе ИС ТТЛ средней и малой степени интеграции, могут быть теперь реализованы на основе данного набора с сохранением всех функций системы. Ядром всякой микропроцессорной системы является однокри- стальный центральный процессор (ЦП), выполняющий все функции обработки данных и управления. В дополнение к ЦП в системе имеются постоянные запоминающие устройства (ПЗУ), хранящие микропрограммы и таблицы констант, запоминающие устройства с произвольной выборкой (ЗУПВ),хранящие данные и команды, и сдви- говые регистры (СР), используемые для расширения возможностей ввода — ввода. Система MCS-4 обменивается информацией с внеш- ними устройствами через узлы обмена, называемые портами ввода — вывода, предусмотренными в каждом ПЗУ и ЗУПВ. Система, построенная на этом наборе микросхем, обычно содер- жит один ЦП, от 1 до 16 ПЗУ, до 16 ЗУПВ и некоторое число сдви- говых регистров, причем конфигурация минимальной системы вклю- чает ЦП и одно ПЗУ. На этих элементах можно построить встроенные специализированные или домашние ЭВМ, а также реализовать практически любую микропрограмму. Разработчик приобретает стандартные микросхемы и путем программирования ПЗУ реали- зует свою конкретную схему. Микропроцессорный набор MCS-4 содержит четыре следующих микросхемы, каждая из которых заключена в 16-контактном кор- пусе DIP (рис. 6.1): 1. Микросхема центрального процессора 4004. 2. Микросхема постоянного запоминающего устройства 4001. 3. Микросхема запоминающего устройства с произвольной вы- боркой 4002. 4. Микросхема сдвигового регистра 4003. ЦП содержит устройство управления и арифметическое устрой- ство микропрограммируемой ЭВМ общего назначения. Сдвиговый регистр используется для увеличения количества линий ввода — вывода. Система MCS-4 проектировалась с ориентацией на максималь- ное удобство сопряжения: ЦП соединяется с ПЗУ и ЗУПВ единст- венной 4-разрядной шиной данных (Do, Dn £)2, D3), по которой про- исходит весь информационный обмен между микросхемами. Сиг- налы управления передаются в ЗУПВ и ПЗУ по пяти добавочным линиям. Один ЦП может управлять до 16 ПЗУ (4К X 8 бит), 16 ЗУПВ (1280x4 бит) и 128 линиями ввода—вывода без каких- либо дополнительных схем сопряжения. Используя несколько до- полнительных вентилей, можно увеличить число ПЗУ и ЗУПВ, под- ключаемых к одному ЦП, до 48, линий ввода — вывода до 192. 179
Порты ввода — вывода, хотя их функции и отличаются от функ- ций ЗУПВ и ПЗУ, размещены в микросхемах ПЗУ и ЗУПВ. Каждая микросхема 4001 и 4002 имеет четыре линии ввода—вывода для свя- зи с устройствами ввода—вывода (рис. 6.2). ПЗУ 4001. Микросхема 4001 — ПЗУ, программируемое маской объемом 2048 бит, обеспечивающее потребителю возможность микро- программирования в системе MCS-4. Каждая микросхема органи- зована в виде 256 8-битовых слов и может использоваться для хра- нения программ и констант. Каждая микросхема содержит также 4- битовый порт ввода—вывода, служащий для приема информации с шины данных и выдачи ее на шину данных при обмене с системой. ЗУПВ 4002. Микросхема ЗУПВ 4002 выполняет две функции. Как память она используется для хранения 320 бит, распределен- ных между четырьмя регистрами по 20 4-битовых символов в каж- дом. Как посредник при обмене с внешними устройствами она имеет четыре выходные линии и соответствующую управляющую логи- ческую схему для выполнения операций вывода. СР 4003. Микросхема 4003 — это 10-битовый сдвиговый регистр с последовательным входом, параллельным и последовательным выходами. Его функцией является увеличение числа выходных ли- ний при обмене с такими ВУ, как клавиатура, дисплей, печатающее устройство, телетайп, коммутатор, фотосчитыватель и аналого- цифровой преобразователь (АЦП). №09 CM ВВод- Вы Sod КОМ -^SYNC J*- RESET \CM RAMp Выход ЕВод- В мд од ~ №01 ~~ - о -- Т- SYNC RESET El №01 =: Д 1 ~~ 1—fCL SYNC RESET Ро Выход ш. Eb!XGd „ .TTTT.L V2FJJLXXJL Po_ k002~2 X №02-2 qXj- Ou--------------- -do CM kAMi CM RAM2 -£ -aw, *— р I 1 ЧЁЗЕТ fiLrrr р -JJLLX- JT 2 НН SYNC I. p J HL 4002-1 Jo -4 4002-1 Упз BL НН reset Ро Ро 400^1 ^T№02-1 . -------1 SYNC rIsETSoWs CM RAMj *—— 0ATAIN^\ ,.nnz Выход последователь- кого кода СР №01 15 IYnc. VBD W02:2 TV Wj wy №05 4005 ENABLE Hi '"[ Ро выход последоВя 5 -e- RESET *0 ^1 *9 ®19 Рис. 6.1. Структурная схема микропроцессорной системы MCS-4 180
ввода-вывода Рис. 6 2. Соединение микросхем ЦП, ПЗУ и ЗУПВ в системе MCS-4
Командный цаьл Л, 8 мкс 1,85 мкс /2 *3 4 Л2 Команда из памяти программ в ЦП Адрес из ЦП в память программы выполнение Увеличение программного счетчика &2 ЗУПС (Синхро~Г\ низация) СМ — (Управление памятью) Младшее слово адреса Старшее слово адреса Адпес стра- ницы DPR Опера- ция ОРА Операнд в ЗУ ПО и интер- фейсу ЦП Данные из Св) ЗУЛв или уст- ройство Свода- вывода Рис. 6 3. Основной командный цикл системы MCS-4 ЦП 4004. Центральный процессор 4004 разработан для агрега- тирования с другими элементами набора MCS-4 и образования функ- ционально полной системы. ЦП обменивается с другими элементами набора с помощью 4-разрядной шины данных, а с внешними устрой- ствами через порты ввода— вывода ЗУПВ, ПЗУ или СР. ЦП имеет пять линий управления, четыре из которых С7И/МЛ4о ... СМЦАМз используются для управления ЗУПВ (каждая линия — для управления до четырех ЗУПВ при общей системной емкости 16 3УПВ), а пятая CM ROM —для управления банком из 16 ПЗУ. Типовая конфигурация микро-ЭВМ на основе четырех типов микросхем показана на рис. 6.1, схема соединения ПЗУ, ЗУПВ и ЦП - на рис. 6.2. Синхронизация. Для функционирования системы MCS-4 на микросхемы 4001, 4002, 4004 необходимо подать два неперекрываю- щихся по фазе сигнала и Ф2. Микросхема 4004 генерирует об- щий сигнал синхронизации SYNC в течение каждых восьми пе- риодов тактового генератора и выдает его на микросхемы 4001 и 4002. Сигнал SYNC отмечает начало каждого цикла выполнения команды. На Основе сигналов SYNC, Ф1 и Ф2 микросхемы 4001 и 4002 формируют тактовые сигналы внутренней синхронизации. Для выполнения команды требуется 8 или 16 тактов генератора, работающего на частоте 750 кГц. В типичном случае ЦП выдает в течение первых трех тактов (Alt Л2, Д3) 12-битовый адрес в ПЗУ (в виде трех полубайтов по шипе данных). Этот адрес служит для выборки одной из 16 микро- схем ПЗУ и одного из 256 8-битовых слов этой микросхемы. Из 182
выбранного ПЗУ в ЦП в течение двух следующих тактов (Л4Ь М2) выдается 8-битовая команда (OPR,OPA), которая передается по 4-битовой шине данных в виде двух полубайтов.Она декодируется и выполнется в течение трех последних тактов (Хь Х2, Х3) (рис. 6.3). Если из ПЗУ извлечена команда ввода—вывода, в течение такта Х2 осуществляется юбмен данными между аккумулятором ЦП и ВУ по четырем линиям ввода— вывода ПЗУ. Группа из четырех ЗУПВ выбирается с помощью одной из четы- рех управляющих линий ЦП. При выполнении команд обращения к ЗУПВ адреса ЗУПВ, регистра и символа находятся в двух индек- сных регистрахЦП и передаются в ЗУПВ в течение тактов Х2 и Х3. Если ЦП выполняет команду вывода через ЗУПВ, то содержимое аккумулятора передается на четыре выходные линии ЗУПВ. ЦП, ЗУПВ и ПЗУ могут управляться и извне по линии сброса RESET, По сигналу сброса регистры и триггеры устанавливаются в начальное состояние и по его окончании ЦП начинает работу с ну- левого адреса, выбирая нулевую линию управления ЗУПВ (CM RAM0). 6.2. ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР Структурная схема ЦП 4004 приведена на рис. 6.4. Расположение выводов показано на рис. 6.5. Четырехразрядный сумматор построен по схеме со сквозным переносом. Одно из слагаемых поступает из временного регистра, который соединен с внутренней шиной и может передавать в сум- Двунаправленная ишна ванных Рнуфер данных 4-витов^ 7 внутренняя iuu”a /Рипочника { питания I Адресный стен Пары регион?-1 ров Р0 Pi Pt Рз Pi р5 р6 р? ____Уу^азле- Устройство управления 303 'управление - ПЗУ ЗУПЗ Генератор СМ СМ РАМ TEST 3YR0 Ф1 Фг RESET ROM 0-3 Рис. 6.4. Структурная схема ЦП 4004 183
матор данные в прямом и инверсном кодах. Второе слагаемое пере- дается из аккумулятора и триггера переноса в прямом и инверсном кодах. Выходные данные с сумматора поступают в аккумулятор и триггер переноса. Аккумулятор снабжен цепями сдвига для вы- полнения команд левых и правых циклических сдвигов. Аккуму- лятор также соединяется с регистром сигналов управления, со спе- циальными ПЗУ, триггерами состояния и внутренней шиной. Ре- гистр сигналов управления хранит 3-битовый код, используемый для переключения линий управления ЗУПВ (CM RAM). Специаль- ные ПЗУ осуществляют преобразование кодов для команды DAA (ДЕСЯТИЧНАЯ КОРРЕКЦИЯ АККУМУЛЯТОРА) и КВР (ОБМЕН С КЛАВИАТУРОЙ). Эти ПЗУ также соединены с внут- ренней шиной. Логические схемы проверки условий реагируют на результат суммы ADD = 0, на состояние аккумулятора АСС = О, состояние триггера переноса, состояние внешнего источника сиг- нала проверки (TEST) при выполнении команд JCN (УСЛОВНЫЙ ПЕРЕХОД) и ISZ (УВЕЛИЧЕНИЕ ИНДЕКСНОГО РЕГИСТРА И ПРОПУСК ПО НУЛЮ). Регистр команд, дешифратор и управление. Регистр команд, состоящий из регистров операции (OPR) и операнда (ОРА) по 4 бита каждый, загружается через мультиплексор с внутренней шины (в тактах Мъ М2 каждого цикла) и хранит команду, извлеченную из ПЗУ. Команда декодируется в дешифраторе кода операции и после стробирования сигналами синхронизации обеспечивает уп- равление различными функциональными блоками. Адресный регистр (программный счетчик и стек) и схема увели- чения адреса. Адресный регистр — четырехуровневое динамическое ЗУПВ емкостью 4 х 12 бит. Один уровень используется для хранения адреса команды (программный счетчик), три других уровня образуют стек для хранения адресов возврата при обращении к подпрограм- мам. Информация в стек поступает из программного счетчика или возобновляется через регистр регенерации путем временного раз- деления с помощью дешифратора. Шина данных № 2 ввода-вывода । q j Фаза \ генератора Ф-f j#/(Z & Фаза \7 генератора ' выход сигнала в синхронизааии J ul 75 Z3577 RA/fy I вь/xooin сигналов 74 □ CM RAMZ Г Меления tfpCM RAM^ 72ZJ^ “755 77 -~\СМРПМ Г выход сигнала 77 i_J4/7 huh \рлраСления ПЗУ 75 ZJ TEST {вход сигнала проверни 9 TlRESET^Exod сигнала сдроса Рис. 6.5. Расположение выводов ЦП 4004 184
При чтении из памяти адрес запоминается в адресном буфере и выдается на внутреннюю шину по 4 бита в тактах Лх, А2, А3 (см. ос- новной командный цикл на рис. 6.3). Этот адрес увеличивается на единицу с помощью 4-битовой схемы увеличения адреса со сквозным переносом после выдачи каждого полубайта на шину данных. Увеличенный адрес передается в адресный буфер, а затем записы- вается в адресный регистр. Индексный регистр— это динамическое ЗУПВ емкостью 16X 4 биг, имеющее два режима работы. В одном из них индексный регистр используется как 16 прямо адресуемых ячеек для хранения проме- жуточных результатов и управления, во втором—как 8 пар адре- суемых ячеек для адресации ПЗУ и ЗУПВ, а также для хранения извлеченных из ПЗУ данных. Адрес в индексный регистр поступает с внутренней шины или с регистра регенерации путем разделения во времени с помощью дешифратора этого регистра. Каждый из 4-битовых регистров Rx нумеруется от 0 до F, а 8-битовая регистровая пара Рх—от 0 до 7. 6.3. ЗУПВ, ПЗУ И ПОРТЫ ВВОДА — ВЫВОДА Память программы (ПЗУ) хранит команды, выполняемые ЦП,) и имеет стран ичную организацию по 256 слов на странице (рис. 6.6. ЦП адресует страницу и слово, а ПЗУ выдает адресуемое 8-битовое слово в процессор. Двенадцатиразрядный адрес позволяет ЦП прямо адресоваться к 16 страницам с помощью четырех бит адреса страницы А 8. Восьми- битовое слово At и Л2 используется для адресации слова внутри страницы. Важно отметить особенности выполнения команд пере- дачи управления (условные и безусловные переходы) при страничной организации. Некоторые адресные команды имеют полный 12-раз- рядный адрес и могут быть использованы для передачи управления как внутри страницы, так и со страницы на страницу. В то же время некоторые адресные команды управления используют 8-битовый адрес и могут передавать управление только внутри страницы. Память данных (ЗУПВ). В рассматриваемой микропроцессорной системе для программно-управляемого хранения данных исполь- зуются микросхемы Intel 4002 — ЗУПВ с регистровой организа- цией. Каждая микросхема 4002 организована как четыре регистра по 20 символьных полей в каждом слове (рис. 6.7). Каждый 20- символьный регистр состоит из 16 раздельно адресуемых символьных полей основной памяти и четырех программно-доступных символь- ных полей состояния. Средства адресации ЦП позволяют обращаться к 32 ЗУПВ 4002, организованным в восемь банков данных, каждый из которых состоит из четырех микросхем ЗУПВ. Банк ЗУПВ вы- бирается командой DCL (DESIGNATE COMMAND LINE — ВЫ- БРАТЬ ЛИНИЮ УПРАВЛЕНИЯ), указывающей, по какой из 185
четырех линий CM RAM, выходящих из ЦП, будет выдан сигнал вправления. С другой стороны, выбираемая линия CM RAM шределяет, какой банк ЗУПВ будет воспринимать команду SRC (SEND REGISTER CONTROL — ПОСЛАТЬ РЕГИСТРОВОЕ УПРАВЛЕНИЕ). По команде SRC осуществляется выборка микро- схемы ЗУПВ, регистра и символьного поля. Список типов адреса- ции ЗУПВ приведен в табл. 6.1. Ввод — вывод. Обмен данными между системой MCS-4 и внеш- ними устройствами осуществляется через порты ввода—вывода, каждый из которых имеет четыре линии связи. Для выполнения функций ввода — вывода порт предварительно должен быть выбран процессором с помощью команды SRC. Адрес выбираемого порта ввода — вывода содержится в четном регистре из пары индексных регистров, адресуемых каждой SRC. Адресованный порт выпол- няет все операции ввода—вывода до тех пор, пока не будет адресо- ван другой порт. Есть два типа портов вывода и один тип порта ввода. Каждый регистр ЗУПВ имеет на выходе порт, размещенный рядом с ним. Этот порт адресуется вместе с ЗУПВ кодом выборки микросхемы, но передача из аккумулятора в порт осуществляется специальной Рис 6.6. Организация ПЗУ в MCS-4 (Pro-Log Corporation)’ 186
Ч регистр#, и о рисуемых четным регистром номинвог SRG 15 основных символов, вывараемых поt одному, по нечетному регистру к ем инны SRC. Чтение или зипись 6 вывринное символьное пиле осуществляется компнвими в символ# состояния, читиемых или зились/в#^ емь/х нелосрев-* ственно Л О НОМННв#7ф RM а WRX REH или Ir/RM Рис. 6.7. Организация ЗУПВ в MCS-4 (Pro-Log Corporation)' командой WMP. Порт запоминает любые посланные в него данные и постоянно выдает их на выход до тех пор, пока следующая коман- да WMP не изменит их. Выходные линии порта ЗУПВ представ- ляют собой низкоуровневые в активном состоянии МОП выходы, совместимые с маломощными ИС ТТЛ. Таблица 6.1 Адресация ЗУПВ Уг^рсрь ! Команда Банк ЗУПВ DCL Микросхема ЗУПВ SRC, старшие биты четного индексного регистра Регистр ЗУПВ SRC, младшие биты четного индексного регистра Символ ЗУПВ SRC, 4 бита нечетного индексного регистра 187
6.4. СИСТЕМА КОМАНД Система команд ЦП 4004 состоит из: — 16 машинных команд (5 из которых двойной длины), — 14 аккумуляторных команд, — 15 команд ввода — вывода и обращения к ЗУПВ. Все три группы команд перечислены в табл. 6.2, 6.3 и 6.4. Ком- бинации условий перехода для команд передачи управления JUMP показаны в табл. 6.5. Большинство команд подробно опи- саны в таблицах. Ниже приведено более детальное описание неко- торых команд. JCN УСЛОВНЫЙ переход (jump on conbition) Первое c/isdo Второе слово Если рассматриваемое условие Сх выполняется, то управление передается по 8-битовому адресу А2, Ai текущей страницы памяти, в противном случае выполняется следующая команда. Если команда JCN занимает две последние ячейки на странице или находится на стыке страниц, управление передается по 8-битовому адресу сле- дующей страницы. Команда JCN — одна из двух возможных команд принятия решения в ЦП, другой является команда ISZ. В команде JCN решение принимается по результатам следующих проверок: — проверка содержимого аккумулятора на нуль или не нуль, — • проверка бита переноса на логическую единицу или нуль, — - проверка внешнего входа TEST на наличие высокого или низкого уровня. Подробные описания условий Сх приведены в табл. 6.5. 188
Таблица 6.2 машинных команд Мнемокод Описание операции Операция (OPR) Операнд (OPA) NOP Холостой ЦИКЛ JCN Cx LABEL Перейти при выполнении условия Сх по адресу AiA2 (LABEL), в против- ном случае выполнить следующую команду FIM d2 ₽X Di Осуществить выборку непосредствен- но из памяти программы числа D2Di в пару индексных регистров Рх SRC i Px Посылка регистрового управления. Выдать содержимое пары индексных регистров Рх на порты ввода — вы- вода и регистр ЗУПВ в качестве ад- реса микросхемы и символьного поля в ЗУПВ FIN Px Выбрать косвенно. Содержимое реги- стровой пары 0 используется как ад- рес ПЗУ. Считываемое по этому ад- ресу число помещается в регистро- вую пару Рх JIN Px Косвенный переход. Переход по адре- су, записанному в регистровой паре Р* JUN LABEL Безусловный переход по адресу AiAjAs (LABEL) JMS LABEL Переход «а подпрограмму, записан- ную s ПЗУ по адресу AiA2A3 (LABEL). Предыдущий адрес сохра- нить (занести в стек) INC Rx Увеличить на единицу содержимое регистра /?» ISi Rx LABEL Приращение и пропуск по кулевому условию Увеличить содержимое регистра /?х на единицу, если результат не равен 0, то перейти по адресу AiA2 (LA- BEL), иначе пропустить AiAs и вы- полнить следующую команду . 189
Продолжение табл. 6 2 Шестнадцате- ричный код Мнемокод Описание операции Операция (OPR) Операнд (OPA) •о и ADD Rx Прибавить содержимое регистра Rx к содержимому аккумулятора со X и SUB Rx Вычесть содержимое регистра Rx и единицу заема из содержимого акку- мулятора A Rx LD Rx Загрузить аккумулятор из регистра Rx В Rx XCH Rx Поменять содержимым индексный ре- гистр Рх и аккумулятор С Dx BBL Dx Возврат по адресу ПЗУ, запомненно- му в верхнем уровне стека предыду- щей командой JMC. Загрузить дан- ные Dx в аккумулятор D Dx | LDM Dx Загрузить Dv в аккумулятор Е X Команды ввода — вывода и обраще- ния к ЗУПВ F X | Аккумуляторные команды Примечание. Ai — младшие биты адреса; А2 — старшие биты адре- са; Аз — биты выбора микросхемы; РХ1 — пары регистров Р0...Р7, определя- емые нечетными номерами 1, 3, 5, 7, 9, В, D, F; Рх0 — пары регистров Р0...Р7, определяемые четными номерами 0, 2, 4, 6, 8, А, С, Е, Rx — регистры 0...F; Dx— данные; Di—данные для нечетного регистра; D2— данные для четного регистра; Сх — условия перехода. Аккумуляторные команды Таблица 63 Шестнадцате- ричный код Мнемокод Описание операции Операция (OPR) Операнд (ОРА) F 0 CLB Общий сброс (аккумулятора и триггера пе- реноса) F 1 CLC Сбросить перенос F 2 IAC Увеличить содержимое аккумулятора на 1 F 3 СМС Образовать обратный код триггера пере- носа 190
Продолжение табл. 6.3 Шестнадцате- ричный код Мнемокод Описание операции Операция (OPR) Операнд (ОРА) F 4 СМА Образовать обратный код содержимого ак- кгмулятора F 5 RAL Сдвинуть циклически влево на 1 бит содер- жимое аккумулятора и триггера переноса F 6 RAR Сдвинуть циклически вправо на 1 бит со- держимое аккумулятора и триггера пере- носа F 7 • ТСС Передать перенос в акумулятор и сбросить триггер переноса F 8 DAC Уменьшить содержимое аккумулятора на 1 F 9 TCS Выполнить вычитание е переносом и сбро- сить триггер переноса F А । STC 1 Установить триггер переноса F В DAA Десятичная коррекция содержимого акку- мулятора F С КВР Работа с клавиатурой. Преобразование со- держимого аккумулятора из кода клавиа- туры в двоичный код Р D DCL Определить линию управления памятью F Е Не используется F F > С помощью этой команды 8 бит данных D2 D! второго слова команды загружаются в указанную пару индексных регистров Рх0, где D2 — данные для четного регистра, a Di — для нечетного. Для обозначения пар регистров в команде FIM используют- ся только четные цифры. Номера пары регистров Рх0 кодируют- ся числами 0, 2, 4, 6, 8, А, С и Е. Команда FIM наиболее удоб- на для начальной загрузки пар индексных регистров. 191
Команды ввода-вывода и обращения к ЗУПВ Шестнадцате- ричный код Мнемокод Описание операции Операция (OPR) Операнд (OPA) Е 0 WRM Записать содержимое аккумулятора в пред- варительно выбранное символьное поле ре- гистра ЗУПВ Е 1 WMP Записать содержимое аккумулятора в пред- варительно выбранный порт вывода ЗУПВ (выходные линии) Е 2 WRR Записать содержимое аккумулятора в пред- варительно выбранный порт ввода—вывода (линии ввода—вывода ПЗУ) Е 3 WPM Записать содержимое аккумулятора в пред- варительно выбранное ЗУПВ программы Е 4 WR0 Записать содержимое аккумулятора в пред- варительно выбранное символьное поле со- стояния ЗУПВ с нулевым номером Е 5 WR1 Записать содержимое аккумулятора в пред- варительно выбранное поле состояния ЗУПВ с номером 1 Е 6 WR2 Записать содержимое аккумулятора в пред- варительно выбранное символьное поле со- стояния ЗУПВ с номером 2 Е 7 WR3 Записать содержимое аккумулятора в пред- варительно выбранное символьное поле со- стояния ЗУПВ с номером 3 Е 8 SBM Вычесть содержимое предварительно вы- бранного символьного поля ЗУПВ и заем из содержимого аккумулятора Е 9 RDzM Прочитать содержимое предварительно вы- бранного символьного поля ЗУПВ в акку- мулятор Е А RDR Прочитать содержимое предварительно вы- бранного порта ввода—вывода в аккумуля- тор (линии ввода—вывода) Е В ADM Сложить содержимое предварительно вы- бранного символьного поля ЗУПВ с содер- жимым аккумулятора и переносом 192
ПроОолженче табл б 4 Шестнадцате- ричный код Мне Операция (OPR) мокод Операнд (ОРА) Опи<ание операцжж Е С RD3 Прочитать содержимое предварительно вы- бранного нулевого символьного поля состоя- ния ЗУПВ в аккумулятор Е D RD1 Прочитать содержимое предварительно вы- бранного первого символьного поля состоя- ния ЗУПВ в аккумулятор Е Е RD2 Прочитать содержимое предварительно вы- бранного второго символьного поля состоя- ния ЗУПВ в аккумулятор Е F RD3 Прочитать содержимое предварительно вы- бранного третьего символьного поля состоя- ния ЗУПВ в аккумулятор Определение одной из регистровых пар Ро ...Р7 осуществляется кодом RRR команды. Нуль, следующий за кодом RRR, является частью обозначения кода операции, отличающего команду FIM от SRC. ПЕРЕСЫЛКА РЕГИСТРОВОГО ОПРАВЛЕНИЯ (SEAM REGISTER CONTROL) М2 О- О 1 О Н О R I —I____I___I__I I । I 8 1 4 1 2 1 1 в 4 1 2 Г1 SRC 2PJ Содержимое индексной пары регистров РХ1 посылается на порты ввода — вывода и регистры ЗУПВ в качестве кода выбора микро- схемы и (или) кода выбора символьного поля. Для обозначения регистровых пар в команде SRC используются нечетные числа. В качестве номера РХ1 допустимы следующие цифры: 1, 3, 5, 7 9, В, D, F. Обозначаются регистровые пары Ро ... Р7 кодом RRR. Единица, следующая за кодом RRR, является частью кода операции, отличающей команду SRC от команды FIM. Перед выполнением команд ввода—вывода и обращения к ЗУПВ необходимо адресовать порт ввода — вывода или символьное поле регистра ЗУПВ с помощью команды SRC. Эта же команда может использоваться для одновременной адресации портов ввода — вы- вода и регистров ЗУПВ, однако адрес, выбираемый из пары ре- 7 Зак. 1088 193
Таблица 0.5 Условие перехода Сх для команды JCN Шее тна дцмерачм ый код JCN Мнемокод C8— c V 1 *4 c2 ► 1 I r Инвертировать условия перехода Переход п© нулевому содержимо- му аккумулятора Переход по единице переноса (СУ=1) Переход, если входной сигнал про- верки TEST=0 (высокий уровень) 10 0 0 0 0 холостой цикл 11 ТО 0 0 0 1 Переход, если TEST—0 (выеоквй уровень) 12 С1 0 0 10. Переход, если СУ = 1 13 Т0 + С1 0 0 11 Переход, если TEST — Q или СУ— = 1 14 АО 9 10 0 Переход, если содержимое акку- мулятора АС = 0 15 ТО+АО 0 10 1 Переход, если TEST—Q или АС=« =0 16 С1 + А0 0 110 Переход, если СУ=1 или АС=0 17 Т0 + С1 + А0 0 111 Переход, если TEST=Q или СУ=з = 1 или АС —0 18 10 0 0 Безусловный переход 19 Т1 10 0 1 Переход, если TEST—\ (низкий уровень) 1А 1 со 1 10 10 Переход, если СУ=0 1В ПСО 10 11 Переход, если TEST=1 и СУ=0 1С АЛ 110 0 Переход, если ЛС^О 1D Т1А1 110 1 Переход, если сигнал проверки= =1 в ас&ъ 1Е С0А1 J 1 1 1 0 Переход, если СУ=0 и АС^О 1F T1C0A1 1111 Переход, если TEST=l, СУ='О и АС^О 194
Авресуемьш элеггвнлг Регистровая лара рх Четями регистр вечетныи регистр. Порт ввода - вывода Выбор порта Ре асттлигрется 8 ' 4 ' 2 ' 7 8 ' 4 ' 2 ' 7 Регистр ЗУ/78 выбор выбор ре- гистра ] Barf вол 8 ' 4 ' г ' г : 8 ' 4 1 2 1 7 Выбор ЗУПВ и регистра ЗУПВ Содержимое четного порт ввода— Номер Регистр Гил ЗУПВ Сигнал на выводе 10 регистра вывода ЗУПВ ЗУПВ ЗУПВ 0 0 0‘ 0* 1 2 I 2 0 0 1 2 4002-1 Высокий 3 3 0 3 4 4 1 0 5 6 5 6 1 1 1 2 4002-1 Низкий 7 7 1 3 8 8 2 0 9 А 9 Д 2 2 1 2 4602 2 Высокий В В 2 3 С С 3 0 D Е D Е 3 3 1 2 4002-2 Низкий F F 3 3 Рис. 6.8. Адресация портов ввода—вывода и ЗУПВ внутри одного банка со- держимым четных регистров команды SRC гистров, определяемой кодом Рх 1, для каждого из них имеет разный смысл, как показано на рис. 6.8. Порт ввода—вывода адресуется содержимым четного регистра выбранной пары регистров Рх. Нечетный регистр не используется при выборке порта ввода— вывода. Адрес микросхемы ЗУПВ определяется двумя старшими битами четного регистра-, адрес регистра в микросхеме—двумя младшими битами четного регистра, а номер символьного поля внутри реги- стра— четырьмя битами нечетного регистра. 7‘ 195
Адресация портов ввода -вывода и ЗУПВ показана на рис. 5.8, таблица иллюстрирует выборку внутри одного банка ЗУПВ. Для перехода к другому банку необходимо использовать команду DCL. Содержимое стека адресов подпрограммы опускается на один уровень. Содержимое программного счетчика, представляющее со- бой 12-разрядный адрес команды, следующей за командой JMS, записывается в верхнюю ячейку стека. Управление передается по адресу AgAaAi памяти программы, записанному в программном счетчике. Первое слово. 5 Аз В регистре команд. ВОЗВРАТ И ЗАГРУЗКА АККУМУЛЯТОРА (BRANCH and LOAD ACCUMULATOR) Mi MZ BBL 110 0 Bx 8 ^У‘2^ в^4^2^1 CBX Команда BBL используется для возврата из подпрограммы к основной программе. Содержимое стека адресов подпрограммы поднимается на один уровень. Верхний адрес передается из стека в программный счетчик, вызывая передачу управления команде, следующей за последней выполненной командой перехода на под- программу JMS. 196
63. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ Сложение с использованием индексных регистров. Стожен ив двух 4-битовых чисел может осуществляться непосредственно коман- дой ADD или ADM. По команде ADD к содержимому аккумулятора добавляется содержимое одного из индексных регистров, а по коман- де ADM — содержимое выбранного символьного поля регистров ЗУПВ. Числа с разрядностью, превышающей 4 бита, могут складывать- ся последовательно по 4 бита. Такой способ называется арифме- тикой повышенной точности. Бит переноса автоматически запоми- нается после сложения каждой 4-битовой группы. В примере на рис. 6.9 описана программа сложения двух 16-битовых двоичных чисел. Необходимо обратить внимание на то, что вначале требуется обнулить бит переноса, так как младшие биты складываются с уче- том переноса. В случае переполнения в конце программы в бита переноса находится I. Формирование управляющего импульса. Необходимо програм- мно генерировать прямоугольный импульс на выходе порта с ад- ресом 2. Простая программа приведена на рис. 6.10. Команда FIM используется для загрузки адреса порта в регистр, а после- дующая команда SRC выбирает этот порт. По команде LDM в ак- кумулятор заносится 1, а по команде WMP она посылается в выбран- ный порт. Подпрограмма DLY1 включает команду ISZ для орга- низации задержки. Команда ISZ использует регистр /?5 в качестве счетчика. Когда он переполняется после достижения числа 16, то подключается для счета регистр /?в. Этот прием может применяться к любому числу регистров для больших чисел счета. Далее осуще- ствляется возврат из подпрограммы, и по командам LDM и WMP на выбранный порт посылается нуль. Опрос входных линий для выполнения простых логических функ- ций. Этот пример иллюстрирует выполнение логической функции Выход - (Д • В) + (С ♦ D). Структурная схема алгоритма показана на рис.6.11, а програи* ма приведена в табл. 6.6* Таблица 6.6 Программа выполнения логической функции Метка Мнемокод Операнд Комментарии GOUT: FIM 2,0 Перенос Аккумулятор SRC 2 СГ АСв LOOP: RDR X ABCD 197
П родолжение табл. 6 в Метка Мнемокод Операнд Комментарии RAL Л BCDX JCN 2, А1 RAL В CDXA JUN скс А1: RAL В CDXA JCN 2, OUT Переход, если А, В=1 СКС: RAL С DXAB JCN 10, OUT Переход, если С — 0 RAL J D ХАВС OUT; ТСС Бит CY выдается на выход WMP | JUN ; 1 LOOP 1 6.6. .ЦЕНТРАЛЬНЫЙ- ПРОЦЕССОР 4040 Отличительные особенности. Микропроцессор 4040 — однокри- стальный 4?битовый параллельный ЦП, выполненный по МОП-тех- нологии. Он создавался как расширенный вариант 4004 и поэтому сохранил все его функциональные возможности. Однако имеется несколько существенных улучшений в его аппаратурном и програм- мном обеспечении. Все они кратко перечислены ниже. Программное обеспечение ЦП 4040 содержит все команды 4004 п 14 дополнительных команд, обеспечивающих следующие возмож- ности: — останов, — логические "операции, — разрешение/запрет прерывания, — переключение банков ПЗУ, — переключение банков индексных регистров. Эти новые команды ЦП 4040 перечислены в табл. 6.7. В ЦП 4040 имеются необходимые аппаратурные средства для принятия и обработки одноуровневых прерываний. Векторы преры- вания программы передают управление в ячейку 003, запоминая ври этом состояние процессора. 198
Очистить перенос Сложить Af+Bj Запомнить Мла&ший полубайт Оетный i 7ара Кечетный ___£_ К 7 F Сложить п Az+Bz +перенос ь 6 Л Запомнить А Alt 5 Аз 6 ♦ 8. Аг 4 Af 9 Сложить A s+B^+перенос В 3 7 Запомнить 4 1 6ц 2 Вз 5 Сложить А+8^.+перенос Запомнить Старший 2 вг 7 6, 3 полубайт 0 0 1 л Карта инСенснь/х регистров R и a) Сложение о повышенной точностью 1 ч Коман- да Afenwa Клема- \ноВ Операнд Комментарии Z7 F1 (АЛЛ) \CitC ’ ' Сложить (АЛВ9) с (7923) 7 А9 11Л 9 у Сложить К9 с Я3 2 83 АПЛ 3 3 ВЗ хек 3 4 А8 !>Л 8 т Сложить К8 с К z 5 82 АЛЛ 2 В BZ хек 2 7 АВ 1Л В у Сложить Кв с R$ 8 8В АЛЛ в 9 ВВ хек У А АА сл А у Сложить КА q 9^ В 87 АЛЛ 4 С В7 хе// 4 Л СВ BQI О 1 ВозВраш Рис. 6.9. Слошгшс с повышенной точностью: ^7“ cjpSfiijpHxi схема алюрянш; й — карга регистров; « — программа (Pro-Log Сог< porauorj 19F
SRC LUM WHP JHS IBM 2 1 DLY1 О ] HLY1 ISZ ISZ m 5. JJLY1 6.ULY1 О Рис. 6.10. Структурная схема алгоритма са (Integrated Computer Systems) и программа генерирования им пуль- GOUT Рис. 6.11. Структурная схема алгоритма выполнения логической функции (Integrated Computer Systems) 200
Таблица 6.7 Дополнительные команды ЦП 4040 Мнемокод OPR (операция) D9D2D jDo OPA (операнд) DaD 2-Di.Do Описание операции HLT 0000 0001 Останов — блокировать приращение про- граммного счетчика и буферы данных BBS 0000 0010 Возврат при прерывании и восстановление предыдущего SRC. Содержимое программ- ного счетчика и регистра в команде SRC восстанавливается в состояние перед пре- рыванием LCR 0000 0011 Содержимое регистра команды передать в аккумулятор OR4 0000 0100 Содержимое индексного регистра с номе- ром 4 объединить по схеме ИЛИ с содер- жимым аккумулятора OR5 0000 0101 Содержимое индексного регистра с номе- ром 5 объединить по схеме ИЛИ с содер- жимым аккумулятора AN6 0000 0110 Содержимое индексного регистра с номе- ром 6 объединить по схеме И с содержи- мым аккумулятора AN7 0000 0111 Содержимое индексного регистра с номе- ром 7 объединить по схеме И с содержимым аккумулятора DB0 0000 1000 Определить банк ПЗУ с номером 0. Линия CM ROMo управляет доступом к памяти DB1 0000 1001 Определить банк ПЗУ с номером 1. Линия CM ROMi управляет доступом к памяти SBO 0000 1010 Выбрать банк индексных регистров с номе- ром 0. Индексные регистры 0...7 SB1 0000 1011 Выбрать банк индексных регистров с номе- ром 1. Индексные регистры 0*...7* E1N 0000 1100 Разрешить прерывание DIN 0000 1101 Запретить прерывание RPM 0000 1110 Читать из памяти программы * Знак отличия банков импульсных регистров. 201
Рис. 6.12. Временные диаграммы функционирования ЦП 4040 Объем адресного стека увели- чен с 4 X 12’до 8x12 бит, что до- пускает семиуровневое вложение подпрограмм. Массив индексных регистров увеличен с 16 до 24 4-битовых регистров. ЦП 4040 снабжен схемами управления остановом, что позволяет поль- зователю останавливать процес- сор по окончании командного цикла. Это дает возможность пошагового выполнения про- граммы при отладке. ЦП 4040 может адресовать до 8К 8-битовых слов ПЗУ без до- полнительной внешней логики. При этом используются два бан- ка памяти по 4К 8-битовых слов с возможностью их переключе- ния. ЦП 4040 снабжен раздельны- ми’выводами питания цепей син- хронизации и. выходных буфе- ров. Это позволяет работать в режиме пониженной потребляе- мой мощности, отключая основ- ной источник питания и поддер- живая синхронизацию. Хотя вы- ходные буферы имеют отдель- ный источник, они могут непо- средственно подсоединяться к цепям типа n-МОП и КМОП. Для систем с одним источником питания все три вывода питания объединяются. Режим прерывания. ЦП 4040 имеет вход асинхронного пре- рывания и выход подтверждения прерывания. Основные времен- ные диаграммы для режима пре- рывания представлены на рис. 6.12. Последовательность событий такова: 1) если в течение командно- го цикла Г возникает прерыва- ние, то оно запоминается триг- гером— защелкой- прерывания в такте-М2; 202
2) в течение такта А± следующей одноцикловой команды уста- навливается внутренний триггер прерывания. Как и 4при^останове, выполнение двухцикловой команды должно -быть завершено; 3) в течение третьего командного цикла запрещается увеличение содержимого программного счетчика, а буферы данных блокируются в течение тактов Мх и Л49. На внутренней шине данных имитируется команда ПЕРЕХОД НА ПОДПРОГРАММУ (JMS). Адрес под- программы находится в третьей-ячейке нулевой страницы. В такте Х9 устанавливается триггер'подтверждения прерывания, и сигнал с его выхода через буфер подается на вывод подтверждения прерывания. Команда, записанная :в ячейке 03, -начинает программу обработки прерывания; 4) триггер подтверждения прерывания остается в установленном состоянии до тех пор, пока не будет обработано прерывание и .вы- полнена «команда BBS ।(BRANCH BACK and SRC — ВОЗВРАТ И ВОССТАНОВЛЕНИЕ SRC) в цикле W. До тех пор пока выдается сигнал подтверждения, новые прерывания'не рассматриваются. Сле- дует отметить, что запрос прерывания может быть сброшен после того, как .выдан сигнал, подтверждения прерывания. Запоминание и восстановление состояния процессора. Для обеспечения эффективной Обработки прерываний в процессоре долж- на быть предусмотрена возможность сохранения текущего состоя- ния программы и процессора и восстановления их после окончания обработки прерывания. В ЦП 4040 должно быть-сохранено: — содержимое аккумулятора и триггера переноса, — содержимое регистра команд, — содержимое используемых индексных регистров, — значение последнего адреса, выданного командой SRC пе- ред прерыванием, — содержимое программного ^счетчика, — текущий номер рабочего банка ПЗУ (CM R0MQ + CM R0MJ. Обработка прерывания. В общем случае программа обработки прерываний состоит из трех частей (табл. 6.8): 1) команд сохранения текущего состояния процессора; 2) части, определяющей.и обслуживающей источник прерывания; < 3) команд, требуемых для восстановления состояния программы перед прерыванием. В примере (табл. 6.8) используется процессор с одним банком ПЗУ, а банк индексных’регистров /Rnc* номером'1 используется для сохранения состояния аккумулятора, триггера переноса и регистра команд (CR). Шесть оставшихся индексных регистров банка 1 используются для обработки прерываний. Данная схема относительно проста и требует минимума команд для сохранения состояния процессора. Важно отметить, что так как доступен только один банк ПЗУ, то необходимо сохранять только три младших бита регистра CR. Это позволяет запоминать содержимое CR и CY в одном индексном ре-/ гистре. 203
Таблица 6.8 Последовательность команд обработки прерывания Банк Адрес ПЗУ (страница) Слово Команда Комментарии 0 6 82 SRC 4 Содержимое индексных регистров IR 8, 9 0 6 83 INC 9 передается в качестве адреса в ПЗУ и ЗУПВ и загружается в регистр команды SRC Возникновение прерывания 0 6 84 (JMS 0) Подтверждение прерывания. Адрес 6 84 со- 0 0 6 0 84 3 (3) SB 1 храняется в стеке, команда по адресу 6 84 игнорируется (переход по адресу 003) Выбор банка индексных регистров с номе- 0 0 4 ХСН 7 (ACC)->IR7*—Содержимое аккумулятора 0 0 5 LCR сохраняется в регистре IRi (CR)-^ACC 0 0 6 RAL (CY)->ACC0, ACCo-ACCj . . . ACC3->CY 0 0 7 ХСН 6 (ACC)->IRJ, CY и содержимое регистра ко- 0 0 0 р 8 9 п ХСН 6 манд CR сохраняется в IRq Подпрограмма распознавания и обслужива- ния прерывания (IR6*)->ACC ACC0--CY. Восстановление CY ACC0->CR0, ACC^CRx, ACC2->CR2. Вос- становление CR IR5-ACC Адрес 684 загружается в программный счетчик, содержимое индексного регистра по команде SRC передается на выход Возврат К программе 0 6 п+1 п+2 п+3 п+4 84 RAR DCL ХСН 7 BBS WRM СПИСОК ЛИТЕРАТУРЫ 1. MCS-4 Microcomputer Set, Users Manual, Intel Corp., Santa Clara. Ca., 1974. 2. MCS-40 Users Manual For Logic Designers, Intel Corp., Santa Clara, Ca., 1975. 3. Brewer M. The Designers Guide to Programmed Logic, for PLS 400 Sys- tems, Pro-log Corp., Monterey, Cal., 1973. 4; Collins D. C., Garen E. R., Lem as M. Software Development for Micro- computers, Integrated Computer Systems, Culver City, Ca., 1975. 204
Глава 7 МИКРОПРОЦЕССОРНЫЕ НАБОРЫ 8008/8080 И МСОМ-8 В гл. 7 описываются микропроцессорные наборы 8008/8080 фирмы In- tel и МСОМ-8 фирмы Nippon, совместимые программно и по логическим уров- ням. Рассмотрены базовая микросхема процессора и ее соединения в мик- ропроцессорных системах. Процессор 8080 имеет 8-битовую шину данных и 16-битовую адресную шину. Описаны четыре вида адресации к памяти: пря- мая, косвенная (через регистры), непосредственная и через стек. Набор команд состоит из команд пересылок, условных переходов, операций со сте- ком, команд вызова подпрограмм, команд арифметических, логических и ВВОда—вывода. Приведены примеры программирования, включая описание отдельных подпрограмм и организацию прерывания. Рассмотрены приори- тетная система прерываний и линии ввода—вывода. Материал11 этой главы представляет собой частично переработанные пу- бликации фирмы Intel Corporation. Всю ответственность за представленный в таком виде материал несет автор. 7.1. МИКРОПРОЦЕССОР 8080 Структурная схема микропроцессора представлена на рис. 7.1, а расположение выводов —на рис. 7.2. Назначение выводов, по- казанных на рис. 7.1, приведено ниже* 2. Фп Ф2 — входы синхросигналов генератора; RESET (сброс) — вход, по которому осуществляется сброс со- держимого программного счетчика, в результате чего выполнение программы начинается с нулевой ячейки памяти; SYNC (синхронизация) — выход синхросигнала, указываю- щего начало каждого машинного цикла; READY (готовность) — вход сигнала, поступающего на про- цессор от внешних устройств и указывающего о готовности данных к вводу. Используется для синхронизации обмена между централь- ным процессором (ЦП) и внешними устройствами. При отсутствии сигнала после обращения к внешнему устройству ЦП переходит в состояние ожидания; WAIT (ожидание)—выход сигнала подтверждения того, что ЦП находится в состоянии ожидания; HOLD (захват) — вход сигнала запроса внешней адресной ши- ны и шины данных ЦП. Запрос удовлетворяется после завершения очередного цикла обращения к памяти. После удовлетворения запроса шины переводятся в высокоимпедансное состояние, а сам процессор завершает выполнение текущего цикла; HLDA (HOLD ACKNOWLEDGE — подтверждение захвата) выход подтверждения о получении сигнала запроса шин. После *) Программы, рисунки и таблицы заимствованы из проспекта фирмы Intel Corporation. Все права сохранены. 2) Добавлено при переводе. 205
О Двунаправленная <> шина Ранных wmapye- строеаруе- мые нлючи -*н шины данных Внутренняя шина Ранных (8 бит) Ключи ан- нум-ра (8) АннумцляА Хдременной /лор (8) регистр (8) I Схема де- сятичной норренциа \Арифмети- \но-логи- /чесное : \ ycmp-до \(АЛУ) (8)' -. \7____ Триггеры Регистр надо* операции (8) Дешифра- тор нода операции и формирода-' тело машин- ных ц и плод <ъ Уст-бо упраб- ленияи син- —Муль/пиплен-\ Времен- нАбремен- наире- ной ре- найре- гистр (8) Регистр (8) Регистр (8) пиир^ гистр (8) - С .г.. Регистр (8) Регистр (8) Регистр (8) Регистр (8) Указатель^-. стена (SP) программный счетчин (PC) (15) , Сх. прираш уменьшен. Адресные нлючи (76) (16) +116 за* -**+56 \ лисью I -**-58 . хронизации Управление шинами преры-обме-ожида-^^ данных бан иен ном нием < ч \Адресные буферы (16)\ ЖР ЛВ1Н ШТЕШТНСЛА (УАТТ SYNC RESET Адресная шина Ату-Ац КОЬй РЕАЛУ t & Рис. 7.L Структурная схема ЦП 8080 окончания текущего машинного цикла ЦП приостанавливает вы- полнение своих операций, пока действует сигнал запроса. Сигналы захват шин и подтверждение захвата можно использовать для ор- ганизации прямого доступа к памяти, а также в многомикропро- цессорных системах; INT (INTERRUPT — запрос прерывания) — входной сигнал от внешнего устройства на прерывание работы ЦП и обслуживание внешнего устройства. Запрос воспринимается в конце цикла вы- полнения текущей команды. Если триггер разрешения прерывания установлен, то ЦП переходит к выполнению программы прерывания; INTE (INTERRUPTENABLE — разрешение прерывания) — выходной сигнал, указывающий, что триггер разрешения преры- вания установлен; DBIN (DATA BUS INPUT — прием с шины данных) — вы- ход сигнала, указывающего, что шина данных находится в режиме приема, т. е. ЦП ожидает поступления данных по шине; WR (WRITE — запись) — выход сигнала, использующегося для записи данных в память или для управления вводом — вы- водом. Указывает, что на шине данных находятся данные, по- ступающие из ЦП. Общее описание. Микропроцессор 8080 — полный 8-битовый параллельный центральный процессор (ЦП), предназначенный для применения в цифровых вычислительных системах общего назна- чения. Он выполнен на одном кристалле БИС с высокой степенью
интеграции по /1-канальнои МОП-технологии фирмы Intel, что позволяет получить зна- чительно более высокие ха- рактеристики, чем у анало- гичных микропроцессоров с двумикросекундным команд- ным циклом. Полная микро- процессорная система (микро- ЭВМ) организуется путем соединения микросхемы 8080 с микросхемами (портами) ввода —вывода (до 256 вход- ных и 256 выходных портов) и микросхемами полупровод- никовой памяти любого типа и быстродействия. Хотя микропроцессор 8080 значительно превосходит по характеристикам существую- щие микропроцессоры, он 1 2 3 4 5 6 7 8 9 10 // Ш /2 8080 13 14 15 16 17 40 39 38 37 30 35 34 3/|— 24 23 22 21 Рис. 7.2. Расположение выводов ЦП 8080 проектировался программно совместимым на уровне машинных кодов с микропроцессором 8008 фирмы Intel. Как и 8008, ЦП 8080 содержит шесть 8-битовых регистров данных, 8-битовый аккуму- лятор, четыре 8-битовых регистра для временного хранения, пять анализируемых триггеров-флажков и 8-битовое арифметико-логи- ческое устройство (АЛУ) параллельного действия. Микропроцессор 8080 может также работать в десятичной арифметике и использовать 16-битовые арифметические команды с непосредственной адреса- цией, значительно упрощающие вычисление адреса пахМяти и обес- печиващие быстрое выполнение арифметических операций. ЦП 8080 имеет стековую архитектуру, где любая часть внешней памяти может быть использована как стек (вошедший первым вы- ходит последним) для хранения и восстановления содержимого аккумулятора, триггеров флажков или любого регистра данных. Для указания местоположения стека в памяти имеется указа- тель стека. Одно из преимуществ стековой архитектуры состоит в возможности многоуровневых (вложенных) прерываний, так как состояние системы может быть легко сохранено при возникновении прерывания и восстановлено после его обработки. Другим преиму- ществом являются практически неограниченные возможности об- ращения к подпрограммам из подпрограмм (вложение подпро- грамм). Микропроцессор создавался с учетом простоты разработки си- стем. Отдельные 16-битовая шина адреса и 8-битовая двунаправ- ленная шина данных допускают непосредственное подсоединение к микросхемам памяти и портам ввода—вывода. Сигналы управле- ния не требуют декодирования и формируются самим процессором. 207
ЦП 8080 Все шины, включая шину управления, совместимы по уровням с ИС ТТЛ. Для программиста микро-ЭВМ состоит из следующих частей: 1. Семи рабочих регистров, используе- мых при выполнении всех операций над данными и для хранения адресов ячеек па- мяти. 2. Памяти, в которой хранятся коман- ды программы и данные и к которой не- обходимо адресоваться для получения тре- буемой информации. 3. Программного счетчика, указываю- щего адрес следующей команды. 4. Указателя стека — регистра, позво- ляющего использовать различные области памяти в качестве стека. Указатель стека упрощает выполнение подпрограмм и обслуживание прерываний, как показано ниже. 5. Схемы ввода—вывода, осуществляющей связь между ЦП и внешними устройствами. Описание регистров. ЦП 8080 имеет программно-доступные 8-битовый аккумулятор и шесть дополнительных 8-битовых рабо- чих регистров, образующих сверхоперативную память (СОЗУ) (рис. 7.3.) Все семь регистров нумеруются и вызываются по циф- рам 0, 1, 2, 3, 4, 5 и 7. Кроме того, как обычно, к ним можно обра- щаться по буквам B,C,D,E,H,LnA (аккумулятор) соответственно. Некоторые операции ЦП 8080 выполняются с парами регистров, обозначаемыми буквами В, D, HhPSW (слово состояния програм- мы). Обращение к парам регистров осуществляется при работе с 16-битовыми словами следующим образом: Вызываемая пара В D Н Регистры В, С D, Е И, L Обычно пара регистров содержит адрес ЗУПВ или ПЗУ. Память. ЦП 8080 может работать с ПЗУ, ППЗУ (программируе- мое ПЗУ), ЗУПВ. Программно можно считывать данные из любого типа памяти, но записывать только в ЗУПВ. Для программиста память является последовательностью байтов, представляемых двумя шестнадцатеричными цифрами. Можно адресоваться к 65535 байтам памяти, причем каждый байт адресуется числом от 0 до 655351О — FFFFle — наибольшего числа, которое может быть за- писано в 16 битах. Программный счетчик является программно доступным регист- ром, содержимое которого указывает адрес следующей команды, подлежащей выполнению. 208
Указатель стека. Стек — это область памяти, выделяемая про- граммистом для хранения адресов и данных при стековых операциях. Стековые операции выполняются рядом команд ЦП 8080 и облег- чают выполнение подпрограмм и обслуживание прерываний. Про- граммист определяет адреса, о которыми оперируют стековые операции, с помощью программно доступного 16-битового регистра, называемого указателем стека. Ввод — вывод. Для ЦП 8080 «внешний мир» состоит из 256 уст- ройств ввода и 256 устройств вывода. Каждое устройство обмени- вается с ЦП путем посылки байта информации в аккумулятор или приема из него. Каждое устройство снабжается программно не- изменяемым номером от 0 до 255. Синхронизация. Формат команд ЦП 8080 содержит от одного до трех байт. Каждая команда требует для выборки и выполнения от одного до пяти машинных циклов. Машинные циклы именуются Mlt Af2, М3, и M6. Каждый машинный цикл включает от трех до пяти тактов: 7\, Т2, Т3, Т4, Тъ. Каждый такт длится в течение одного периода синхросигнала (длительность такта при частоте 2 МГц 0,5 мкс). Имеются три состояния WAIT (ОЖИДАНИЕ), HOLD (ЗАХВАТ), HALT (ОСТАНОВ), которые могут длиться не- ограниченное число тактов. Цикл Mt — это всегда цикл выборки команды, и длится он 4 или 5 тактов. Циклы М2, М3, Mt и Л15 обычно состоят из 3 тактов каждый. Для лучшего понимания работы ЦП 8080 обратимся к рис. 7.4. В течение такта 7\ содержимое программного счетчика вы- дается на адресную шину, на выходе SYNC устанавливается высокий потенциал, а на шину данных поступает информация о состоянии, относящаяся к выполняемому циклу. За тактом 7\ всегда следует такт Т2, в течение которого проверяется наличие сигналов подтверждения состояний ОСТАНОВ, ГОТОВНОСТЬ и ЗАХВАТ. Если на входе READY имеется сигнал готовности (высокий уровень), то ЦП переходит к такту Т 3, в противном слу- чае — в состояние ОЖИДАНИЕ (такт Tw) и находится в нем до тех пор, пока не появится сигнал готовности. Таким образом, сигнал готовности позволяет синхронизовать ЦП с памятью с любым временем доступа или с любым внешним устройством. Более того, управляя соответствующим образом вхо- дом готовности, можно обеспечить пошаговое выполнение про- граммы. В течение такта Т3 цикла Л4Х по шине данных поступают данные из памяти в регистр кода операции, как показано на рис. 7.4. Де- шифратор кода операции и устройство управления формируют сигналы управления и синхронизации для внутренних пересылок данных, а также соответствующие дешифрируемой команде машин- ные циклы. После такта 7\, если он завершающий, или такта Т& ЦП пере- ходит к такту 7\ цикла Мг, если для выполнения команды требуется более одного цикла, или к выполнению цикла в противном слу- 209
чае. Рассмотренная последовательность повторяется требуемое для выполнения команда число раз. Только в последнем такте последнего машинного цикла прове- ряется наличие запроса прерывания на входе 1NT, и если таковой имеется, то ЦП переходит к выполнению цикла специального вида, в течение которого содержимое программного счетчика не увеличивается на 1, а выдается сигнал подтверждения прерывания на выход INTE. В этом случае из устройства, вызвавшего преры- вание в ЦП, должна быть послана одна из восьми возможных команд, организующих прерывание. В общем для выполнения команд требуется от 4 (для команд без обращения к памяти типа арифметических операций с аккуму- лятором или с регистрами) до 18 (для наиболее сложных операций — обмен содержимым регистров Н, L и двух верхних ячеек стека) машинных тактов. При максимальной частоте синхросигнала 2 МГц это означает, что для выполнения команды требуется от 2 до 9 мкс. При выполнении команды HALT (ОСТАНОВ) ЦП пере- ходит в состояние ОЖИДАНИЕ и остается в нем до поступления сигнала прерывания. Фг A15...0 От...о ММ? (Синхро - низания) READY (Готов- ность) WAIT (Ожидание) DBIN (Прием) WR (Вались) Данные Данные Дополнательно Дополни- тельно Информация о состоянии чтение УолшноСившиеся значения А15...А0 Адрес памяти или номер внешнем устройства Д7...П0 Информа- ция о сос- тоянии INTA OUT NLTA WO HEMR П1 INP stack Анализ состоищиц READY* HOLD HALT Остано# или син- хронизация с памятью выдорха данных или команды или залась данных выполнение номанды, если потр евр стоя Рис. 7.4. Временные диаграммы функционирования ЦП 8080 210
Информация о состоянии. Как уже указывалось, для выполнения команд ЦП 8080 требуется от одного до пяти машинных циклов. В начале каждого цикла на шину данных выдается байт состояния (в течение действия сигнала SYNC).Назначение каждого разряда байта состояния расшифровывается в приведенной ниже таблице. Описание информации о состоянии Обозначение Разряд шины дан- ных Описание INTA 1 (INTERRUPT ACKNOWLEDGE —ПОД- ТВЕРЖДЕНИЕ ПРЕРЫ- ВАНИЯ) Du Сигнал подтверждения прерывания. Может быть использован для стробирования сиг- нала, организующего прерывание во время действия сигнала на выводе DBIN WO (WRITE-OUTPUT - ЗАПИСЬ—ВЫВОД) Di Указывает, что в данном машинном цикле будет производиться запись в память или вывод (170=0). В противном случае будет выполняться ввод или чтение из памяти STACK (СТЕК) Da Указывает, что на шине адреса находится содержимое указателя стека, адресующе- гося к верхней ячейке стека HLTA (HALT ACKNO- WLEDGE-ПОДТВЕРЖ- ДЕНИЕ ОСТАНОВА) D, Подтверждение выполнения процессором операции останова (HALT) OUT (OUTPUT CYCLE — ВЫВОД) Di Указывает, что на адресной шине находит* ся адрес устройства вывода, причем шина данных будет содержать выводимую инфор- мацию, когда на выходе WR появится сиг* нал Ml d5 Указывает о нахождении ЦП в цикле из- влечения первого байта команды INP1 (INPUT CYCLE - ВВОД) D6 Сигнализирует, что на адресной шине на- ходится адрес устройства ввода, а ввод бу- дет производиться на шину данных по сиг- налу ПРИЕМ на выводе DBIN MEMR1} (MEMORY READ—ЧТЕНИЕ) d7 Указывает, что шина данных будет исполь- зована (в текущем цикле) для чтения дан- ных из памяти 1) Эти три состояния могут использоваться для контроля прохождения информации по шине данных в ЦП 8080 211
Так как информация о состоянии выдается из ЦП на шину дан- ных в течение коротких интервалов времени, то необходимо по- заботиться о ее хранении. Например, на рис. 7.5 показано исполь- зование для хранения информации о состоянии микросхемы ввода — вывода 8212. В типичной структуре системы 8080, состоящей из микросхем ЦП, ЗУПВ, ПЗУ и ввода-вывода, показанной на рис. 7.6, для хранения байта состояния и его дешифрации используется спе- Синхронизация 0L /7 Прием (Pf $2 il2 lid Генератор („Гтм) и (рормироватень Регистр состояния 31 5 3 20 11 /4 01 00 6212 , Подтверждение, -t— прерывания (INTA) 4г~ Запись-вывод (wo) jr Стек (stack) /CLH _ % МО Р5, J/3 Ъ -%— Подтверждениеостанова (hitа) вывод тг,гтт\ -ff- Ввод — Чтение (Out) ’ /д (мемн) -— Прием (явм) Рис. 7.5. Схема соединения ЦП 8080 с внешним регистром состояния 212
Рие. 7.6. Структурная схема микропроцессорной системы 8080 циальный системный контроллер — микросхема 8228. Байт со- стояния используется для управления направлением передачи по шине данных. 7.2. АДРЕСАЦИЯ ПАМЯТИ Прямая адресация. При прямой адресации команда содержит адрес памяти. Например, команда ЗАГРУЗИТЬ СОДЕРЖИМОЕ ЯЧЕЙКИ 1F2A В АККУМУЛЯТОР является командой с прямой адресацией, где 1F2A — прямой адрес. Команда должна быть записана в памяти в виде, показанном на рис. 7.7. Команда занимает три байта памяти, причем второй и третий байты содержат адрес. Косвенная адресация через пару регистров. Адрес ячейки па- мяти может быть определен с помощью содержимого пары регист- ров. Для большинства команд ЦП 8080 в этих целях используются регистры Н и L. Регистр Н содержит старший байт адреса, регистр L — младший. Структура однобайтовой команды загрузки акку- мулятора содержимым ячейки 1F2A памяти показана на рис. 7.8. Кроме того, есть две команды, использующие для адресации регистры В, С или D, Е. Как и ранее, первый регистр пары содер- жит старший байт адреса, а второй — младший. Эти команды (STAX и LDAX) будут описаны ниже. Непосредственная адресация. Команда с непосредственной адре- сацией содержит в одном из своих полей сам операнд. Например, команда ЗАГРУЗИТЬ В АККУМУЛЯТОР ВЕЛИЧИНУ 2А1в располагается в памяти, как показано на рис. 7.9. Команды с не- 213
Адрес Память ^Произвольный адрес” » Произвольный адрес”+7 „ Произвольный адрес ” +2 Команда, надлежащая выполнению Рис. 7.7. Прямая адресация Команда, подлежащая выполнению Память Ргс. 7.8. Косвенная адресация через дару регистров * Память $£ . ___Нод днериуии нооосредотденнод загрузни аккумулятора га — величина3 еаеружаемая в аккумулятор Рис. 7.9. Непосредственная ад- ресация Перед занесением I I i I Адрес'памяти SP_____ 13AG В______ - 6А } ПА 73А^ 73АП ТЗАд I t Л I i I J FF --- Несло -теоыщя П_____ 6А С_________ . 3Z? 4 Рис. 7.10. Адресация через указатель стека (операция занесения в-стек} 214
Перед извлечением I. I. I I Адрес памяти После извлечения SP 1508 JJ И FF Ов FF 1507 1508 1503 150А FF 33 Ов FF FF SP 150А F Ов L - зз FF < L Рис. 7.П. Операция извлечения из стека посредственной адресацией не обращаются в памяти для извлечения операнда —они сами содержат операнд. Адресация через указатель стека. Адресация может быть, осуще- ствлена через 16-раз рядный регистр— указатель стека. Существуют только две операции со стеком: запись данных в стек, называемая PUSH — ЗАНЕСЕНИЕ В СТЕК, и выборка данных из стека, называемая POP — ИЗВЛЕЧЕНИЕ ИЗ СТЕКА. Операция занесения в стек используется для пересылки 16бит данных из пары регистров или из программного счетчика в область памяти, отведенную под стек. Адрес памяти, по которому должно произойти обращение к памяти при выполнении операции занесе- ния в стек с помощью указателя стека, определяется так: — 8 старших бит данных запоминаются по адресу «содержимое указателя стека — Г»; — 8 младших бит запоминаются по адресу «содержимое ука- зателя стека—2»; — содержимое указателя стека автоматически уменьшается на 2. К примеру,, предположим, что указатель стека содержит адрес 13А61б, регистр В — 6А16, регистр С — 301б. В результате выполнения операции занесения в стек из пары регистров В возникает ситуация, показанная на рис. 7.10. Операция извлечения из стека используется' для пересылки 16 бит из области памяти, отведенной под стек, в любую пару регистров или в программный*счетчик. Адрес памяти, по которому осуществ- ляется обращение при выполнении операции, определяется следую- щим образом: — второй регистр пары или младшие 8 бит программного счет- чика загружаются из памяти по> адресу, хранимому, в указателе стека; 215
Выполнение команды CALL (ВЫЗОВ ПОДПРОГРАММЫ) Таблица 7.1 Адрес памяти Команда Комментарии 0С02 0С03 0С04 OQ05 ОС06 0F00 OFQ1 0F02 ВЫЗОВ ПОДПРОГРАМ- МЫ (CALL) 02 OF СЛЕДУЮЩАЯ +- КОМАНДА ПЕРВАЯ КОМАНДА ПОДПРОГРАММЫ Занесение в стек адреса следу- ющей команды (0СО61б) и пе- реход к началу подпрограммы по адресу 0F02i6 Тело подпрограммы CF4E 0F4F ВОЗВРАТ (RET)------ Извлечение адреса возврата (0C06ie) и переход к следующей команде основной программы — первый регистр пары или старшие 8 бит программного счет- чика загружаются из памяти по адресу «содержимое указателя етека+1»; — содержимое указателя стека автоматически увеличивается на 2. К примеру, пусть указатель стека содержит адрес 15081в, по адресу 15081в в памяти записано число 3316, а по адресу 150916— число 0В1в. Результат извлечения из стека в пару регистров Н показан на рис. 7.11. Перед выполнением стековых операций в указатель стека не- обходимо загрузить требуемое значение адреса. Для загрузки ука- вателя стека любой величиной используется команда LXISP (LOAD IMMEDIATE STACK POINTER — ЗАГРУЗИТЬ НЕ- ПОСРЕДСТВЕННО УКАЗАТЕЛЬ СТЕКА). Подпрограммы и использование стека для адресации. При вы- полнении подпрограмм характерна последовательность событий: Основная программа 1 Вызов подпрограммы -------------- V Подпрограмма Следующая команда ч—------------1 I где стрелки указывают последовательность выполнения.
Когда выполняется команда CALL (ВЫЗОВ ПОДПРОГРАММЫ), содержимое программного счетчика (адрес следующей команды) заносится в стек и начинается выполнение подпрограммы. Послед- ней выполняемой командой подпрограммы должна быть команда возврата, по которой из стека в программный счетчик извлекается этот адрес, и, таким образом, инициируется выполнение следующей команды программы (см. табл. 7.1). Любая подпрограмма может сама обратиться к подпрограмме и т. д. Количество вложенных подпрограмм ограничивается только объемом памяти, отведенным под стек. Анализ последовательности занесений и извлечений из стека указывает, что порядок извле- чений обратен порядку вызовов подпрограмм, даже если одна и та же подпрограмма вызывалась несколько раз. 7.3. БИТЫ УСЛОВИЙ ЦП 8080 выдает 5 бит условий, отображающих результат выпол- нения операций. Все биты, за исключением бита дополнительного переноса, могут быть проанализированы командами управления последовательностью выполнения программы (командами услов- ного перехода). Ниже рассмотрено, в каких командах и какие биты анализируются, а также как выполняются команды в зависимости от битов состояния. Далее предполагается, что бит состояния равен 1, если о нем говорится, что он «установлен», и равен 0, если «сброшен». Бит переноса (Carry) устанавливается и сбрасывается коман- дами сложения, вычитания, сдвига и логическими командами, выполненными над данными, и может быть программно проанали- зирован. Например, при сложении двух однобайтных слов может появиться перенос из старшего разряда: Бит 7 6 5 4 3 2 1 0 , АЕ1в= 10 10 1 1 10 + 7416= 0 1110 10 0 122,, j—0 0 1 0 0 0 1 0 !__>Перенос=1, устанавливается бит переноса«=1 Если в результате выполнения операции сложения появляется единица переноса из старшего разряда, бит переноса устанавли- вается, если же перенос не возникает, бит переноса сбрасывается. Замечание. Операции сложения, вычитания, сдвига и логические устанавливают и сбрасывают бит переноса по разным правилам. ЦП 8080 имеет несколько видов операций сложения: ADD, ADC, ADI, ACI и DAD; вычитания: SUB, SBB, SUI, SBI, CMP и CPI; циклического сдвига: RAL, RAR, RLC, RRC; логиче- ских операций: ANA, ORA, XRA, ANI, ORI, XRI. 217
Дополнительный бит переноса ('Auxiliary carry) устанавливается при появлении переноса избита 3. Состояние дополнительного бита переноса не может быть проанализировано непосредственно* про- граммой, за •исключением команды десятичной' коррекции (DAA). Ниже приведен'пример, в котором сбрасывается бит переноса и уста- навливается дополнительный бит переноса: Вит 76 5' 43210 1 2Eje== + 7416 = 0 0 10 1110 0 1110 10 0- A2i6 1 0 1 0 0 0 1 0 Перенос =0 Дополнительный перенос =1 Бит.' дополнительного переноса' может, быть установлен всеми операциями, сложения; вычитания^ приращения (+1). уменьшения (—1) и операциями: сравнения. Бит знака (Sign). В байте*можиопредставить числа от;—128j0 до + 12-710. При этом; как обычна, седьмой бит представляет знак. Если он равен 1, байт содержит числа; от—12810-до — 1]0, если 0 — от 0 до + 127j 0. В конце выполнения некоторых операций бит знака устанавли- вается по седьмому биту результата. Бит нулевого признака (Zero) устанавливается^ если' резуль- тат определенных операций равен 0* Бит нуля*’ сбрасывается, если результат; ненулевой.^ Еслиюиерация дает нулевой байт результата и .единицу переноса, как показано ниже, бит нуля- также'устанавливается. Бит 7 6 5 4 3 2 1 0 ; 1 0 I б б 1 I Г ~г 0 10 1 10 0 1 1 00000000 t Перепое из . Нулевой результат 7-го бита Нулевой бит устанавливается в 1 Бит четности (Parity) устанавливается при выполнении не- которых операций путем подсчета числа бит в байте, равных* еди- нице. Если суммарное число равно четной величине, то индицируется сигнал четности, в противном случае—сигнал нечетности. Бит, чет- ности устанавливается сигналом четности и сбрасывается- сигналом нечетности. 21Г
7.4. СИСТЕМА КОМАНД ЦП 808С Детальное описание команд^ЦП 8080 представлено в табл. 7.2... 7.11. Основные обозначения Обоз.ьачекк€ Содержание <Bg> 1 ВторойI байт команды <В3> Третей байт команды г Обозначение одного из рабочих регистров: А, В, Ct D. Е, Н. L с • Обозначение состояния одного из следующих триггеров флаж- ка: Триггеры -Условие. ист ииности флажка С , (перенос) — наличие переноса или заема Z (нуль) —нулевой результат 8 (знак) —старший разряд байта результата равен еди- нице . Р -(-четность)—результат- содержит четное число единиц М Адрес ячейки-памяти, хранящийся! в регистрах Н и L ( ) Содержимое ячейки памяти’или регистра А Логическое И V Исключающее .ИЛИ V ИЛИ Г;и m-ЧРбит регистра г. sp ; Указатель стека РС Счетчик^оманд * Пересылка XXX > Не имеющие значения* биты SSS Регистр (источник) DDD Регистр 'назначения (приемник) Номер регистра Наименование регистра (SSS или DDD) ООО в 001 с 010 о он 100 н 101 L 110 Память 111 Аккумулятор (А)’ 1} Крды^оверапий .«омздщи число .периодов' тактовых импульсов, тре- буемых для выполнения команд, приведены в книге Дж. Хилбурн, П. Джу- лич..Микро-ЭВМ.,и микропроцессоры. М., Мир, 1979, стр. 414—420. 219
Таблица 7.2 Команды прямой адресации •Мнемокод Длина (байт) Число циклов * Описание операции АЛ АЛ - « со < И CQ СО СО SWjVV 3 3 4 4 [<В3хВ2>Ь(А) Запомнить содержимое аккумулятора по адресу, указываемому байтами В2 и В3 команды (А)-[<В3><Ва>| Загрузить аккумулятор содержимым ячейки, адресуемой байтами В2 и В3 команды Таблица 7.3 Команды с адресацией через пару регистров 7/, L Мнемокод Длина (байт) Число циклов Описание операции ADD M 1 2 (А)«-(А) + (М). Сложить ADC M 1 2 (А)«—(А)+(М) + (перенос). Сложить с переносом SUB M 1 2 (А)«-(А)—(М). Вычесть SBB M I 2 (А)^-(А) — (М) —(заем) Вычесть с заемом ANA M 1 2 (А)<-(А)Л(М). Логическое И XRA M 1 2 (А)*~(А) V(M). Исключающее ИЛИ ORA M 1 2 (А)*-(А)у (М). Логическое ИЛИ CMP M 1 2 (А)—(М). Сравнение INR M 1 3 [М]*-[М]+ 1. Увеличить на 1 содержимое ячейки, адресуехмой регистрами Н и £. Все биты состоя- ния, за исключением переноса, могут измениться [М]*-[М] — 1. Содержимое ячейки памяти, указы- ваемой парой регистров Н, L, уменьшить на 1. Все биты состояния, кроме переноса, могут из- мениться DCR M 1 3 Примечание. Память (М) адресуется содержимым регистров Я, L, Флажки выставляются точно так же, как и в безадресных командах (см. табл. 7.5). Таблица 7.4 Команды с непосредственной адресацией Мнемокод Длина (байт) Число циклов Описание операции ADI <В2> 2 2 (А)*-(А) + <В2>. Сложить ACI < В2 >• 2 2 (А)«-(А)+<В2> + (перенос). Сложить с перено- сом 220
Продолжение табл. 7.4 Мнемокод Длине (байт) Числе НИКЛО? Описание операций SUI <в,> 2 2 (А)*—(А)— <В2>. Вычесть SBI <в,> 2 2 (Л)<—(А) —- < В2> — (заем). Вычесть с заемом ANI <в2> 2 2 (А)*-(А)Л <В2>. Логическое И XRI <В2> 2 2 (А)«-(А) V <В2>. Исключающее ИЛИ ORI <в2> 2 2 (А)^-(А) V < В2>. Логическое ИЛИ CPI <В2> 2 2 (А) —<В2>. Сравнить LXI В <в2> <^в3> 3 3 (С)«-<В2>; (В)«-<В3>. Загрузить В2 в регистр С, а В3— в регистр В LXI D <в2> <В3> 3 3 (Е)«“<В2>; (D)«~<B3>. Загрузить второй байт команды в регистр Е, третий — в регистр D LXI Н <в2> <в3> 3 3 (L)«—<В2>; (Н)*~<В3>. Загрузить второй байт команды в регистр L, третий — в регистр Н Таблица 7.5 Команды обращения к регистрам Мнемокод Описание операций 1NR г DCR г ADD г 1 1 (г)—(г) + 1. Увеличить на единицу содержимое регистра г. В результате могут поменяться все биты состоя- ния, кроме переноса 1 1 (г)ч-(г)-1. Уменьшить на единицу содержимое регистра г. В результате могут поменяться все биты состоя- ния, кроме переноса 1 1 (А)^(А) + (г). Сложить содержимое регистра А с содержимым регистра г и заслать результат в А. (Все биты со- стояния подвержены изменению) 221
Продолжение табл 7.5 Мнемокод Длина (байт) Число циклот Описание операции ADC г 1 1 ! (А)-*-(А)‘+(г) + (перенос). Сложить содержимое регистра г и триггера пере- носа с содержимым регистра А, результат оста- вить в А. (Все биты состояния подвержены изме- нению) SUB г 1 1 (А}ч-(А)-(г). Вычесть содержимое регистра г из содержимого , регистра А, результат занести в А. Используется вычитание в дополнительном коде. (Все биты со- тояния подвержены изменению) SBB г 1» 1 (А)^-(А)—(г)—(заем). Вычесть из содержимого регистра А содержимое регистра г и триггера переноса. Результат оста- вить в А. (Все биты состояния подвержены изме- нению) ANA г 1 1 (А)Н^А(г) Поместить в регистр А результат логической опе- рации И над содержимым регистров А и г. (Сбра- сывается перенос). XRA г 1 1 , (А)НА)У(г) Поместить в регистр А результат Исключающе- го ИЛИ над содержимым регистров А и г. (Сбра- сывается перенос) ORA г 1 1 (A)<-(A)V(r)- Поместить в регистр А результат логического ИЛИ над содержимым регистров А и г. (Сбрасы- вается перенос) СМР г 1 1 (А) —(г). Сравнить содержимое регистра А с содержимым регистра г. Содержимое регистра А не изменяет- ся. Триггеры состояния устанавливаются по ре- зультату вычитания. Равенство (А=г) индици- руется установкой триггера нуля в 1. Неравенст- во (А<г) индицируется установкой триггера пе- ' реноса в 1 RAL RA8 1 1 1 1 A/n+i^A/n, Ао«—-4(C), (С)«—А7 Циклический сдвиг А влево на 1 бит. Бит перено- са сдвигается в Ао, А7 сдвигается в триггер пере- носа A/n^—Ayn+i, А7«—(с), (С)«—Ао Циклический сдвиг А вправо на 1 бит. Ао сдви- гается в триггер переноса, а бит переноса сдви- гается в А7 RLG 1 1 Am+i«—Am, Aq*—А7, (£)*—А7 Циклический сдвиг А влево на 1 бит. А7 сдвига- ’ ется в Ао и в триггер1 переноса RRG 1 1 Am“*Am+i, А7«—Ао, (С)^—Ао Циклический сдвиг А>‘ вправо на 1 бит. Ао сдви- гается в Ат и в триггер переноса 222
Продолжение табл. 7J Мнемокод Длина (байт) Число циклов Описание операции СМА 1 1 . (А)-(Л) Взяшь обратный код Л. Триггер состояния не из- меняется STG 1 1 (С)-1 Установить триггер переноса в 1. Другие тригге- ры состояния не изменяются СМС 1 1 (О—(С) Обращение бита 'переноса. Другие триггеры со- стояния не затрагиваются Таблица 7.0 Команды пересылок Мнемокод Длина (байт) Число 11иь лон Описание операции MOV rlt г2 1 1 (Г1) — (г2). Загрузить регистр чу из регистра г±. Содержимое 72 не изменяется MOV г, М 1 2 Загрузить регистр г из ячейки памяти с адресом W L) MOV М, г 1 2 (М)^-(г). Записать в ячейку памяти с адресом (Н, L) со- держимое регистра г MVI г <в2> 2 2 (г)«-<В2> Загрузить второй байт команды в р*егистр г MVI м <в2> 2 3 <М>«-<В2>. Загрузить второй байт команды по {адресу (>Н, L) Таблица 7.7 Условные переходы Мнемокод ' Длина (байт) НОГИИИ «йгэин Описание операции JMP <ва> <ва> 3 3 (РС>~<В3><В2>. Безусловный =пережо’Д по адресу, указанному в байтах В2 и В3 команды JC <в,> <В3> 3 3 ЕСЛИ (С)«=1, то ТО^<В3><В,>, ИНАЧЕ 223
Продолжение табл 7 7 Мнемокод Длина (байт) Число циклов Описание операции JNC <в2> <В3> 3 3 ЕСЛИ (С)=0, (РС)<-<В3хВ4> ИНАЧЕ (РС)«-(РС)+3 JZ <в2> <В3> 3 3 ЕСЛИ (Z)==l, (РС)-<В3><В,>, ИНАЧЕ (РС)-(РС) + 3 JNZ <В2> <В3> 3 3 ЕСЛИ (Z) =0, (РС)-<В3хВ2>> ИНАЧЕ (PC)НРС)+3 JP <в2> <в8> 3 3 ЕСЛИ (S) = 0, (PC)*— <B3xBi>> ИНАЧЕ (PQHPQ+3 Л Л <м ео ч-CQCQ V V 3 3 ЕСЛИ (S) = 1, (РС)*-<Вд><В<>, ИНАЧЕ (PC)-(PC)4-3 JPE <в2> <в3 > 3 3 ЕСЛИ (Р) = 1, (РС)*-<В3хВ4>, ИНАЧЕ (PC)НРС)+3 JPO <в2> <В3> 3 3 ЕСЛИ (Р)==0, (РС)«-<В3хВ»>, ИНАЧЕ (РС)НРСН-З Таблица 7.8 Операции со стеком Мнемокод Длина (байт) Число циклов Описание операция LXI SP <в2> <в8> PUSH PSW 3 1 3 3 (SP)L<“<B2>, (SP)h*—<В3> Загрузить байт В2 в младшие разряды указателя стека» а В3 — в старшие. [SP— 1]НА), [SP—2]HF), (SP) = (SP)—2 Сохранить содержимое аккумулятора А и битов условий F (5 флажков) путем внесения в стек по адресу указателя стека Содержимое регистра SP уменьшается на 2, Слова состояния флажков за- поминается в сл^ующем виде: £>о’-СУ3 (перенос С) Dx:l D2:P D3:0 Р4:СУ1 (дополнительный перенос) Р6:0 De:Z 224
Продолжение табл. 7.8 Мнемокод Длина (байт) Число циклов Описание операции PUSH в 1 3 D7:S (старший значащий бит) [SP—(]«—(В), (SP —2]«—(С), (SP) = (SP)~2 PUSH D 1 3 [SP—1 J«-(D), [SP—2J*-(E), (SP) = (SP)—2 PUSH н 1 3 [SP- IJ^-(H), [SP—2H(L), (SP) = (SP)—2 POP PSW 1 3 (F)-[SP], (A)f-(SP-)-1], (SP) = (SP)-F2 POP в 1 3 Восстановить содержимое А и F из двух послед- них ячеек стека, увеличить SP на 2 (С)<—[SP], (B)-[SP+1], (SP) = (SP)+2 POP D 1 3 (E)<-[SP, [Dl-[SP+l], (SP)~(SP)+2 POP H 1 3 (L)HSP], (H)HSP+1]> (SP) = (SP)4-2 XTH L 1 5 (L)4SP], (H)~[SP+1] Обменять содержимым регистры H, L и верхнюю пару ячеек стека, адресуемого указателем стека SP. Содержимое SP не изменяется (SP) = (SP) (SP)HH)(L) SPHL 1 1 PCHL 1 1 Переслать содержимое регистров И и L в регистр SP (PC)-(H)(L). DAD SP 1 3 КОСВЕННЫЙ ПЕРЕХОД - перейти по адресу, указанному в регистрах Н, L (H)(L)-(H)(L) + (SP). INX SP 1 1 Сложить содержимое регистров Н, L и SP и за- слать результат в регистры Н и L. Если возникло переполнение, то устанавливается бит переноса, в противном случае он сбрасывается. Другие биты состояния не затрагиваются. Это удобно для ад- ресации через стек (SP)^(SP) + 1 DCX SP 1 1 (SP)—(SP) — 1 Таблица 7.9 Условные команды перехода к подпрограммам и возврата из подпрограмм Мнемокод Длина (байт) Число циклов Описание операции CALL <в2> <в3> 3 5 [SP—l][SP — 2]*—(PC), (SP) = (SP)—2 (РС)^<В3><В2>, Занести содержимое счетчика команд PC в стек по адресу указателя стека SP. Содержимое реги- стра SP уменьшить на 2. Безусловный переход к команде, записанной по адресу, указываемому байтами <В2> и <В3> команды сс <В2> <В3> 3 3/5 ЕСЛИ (С) = 1, то [SP— 1][SP — 2]«-PG (SP)=₽(SP)-2t (РС)4-<В3хВ2>, ИНАЧЕ (PC)«(PC) 4-3 8 Зак. 1088 225
Продолжсние табл 7 ') Мнемокод Длина (байт) Число циклов Описание операции CNC <В2> <В3 >• 3 3/5 ЕСЛИ (С)=0, то [SP—1Ц5Р—2]*-РС (SP) = (SP)—2, (РС)«—<В3хВ2>, ИНАЧЕ (РС) = (РС)+3 л л (N М UVV 3 3/5 ЕСЛИ (Z) = 1, то [SP—1](SP—2]«—PC, (SP) = (SP)—2, (РС)«-<В3хВ2>, ИНАЧЕ (РС) = (РС) + 3 CNZ <В2> <В3> 3 3/5 ЕСЛИ (Z) = 0, то [SP—1][SP—2]<-РС (SP) = (SP)-2, PC* <В3хВ2>, ИНАЧЕ (РС) = (РС)+3 СР <в2> <В3> 3 3/5 ЕСЛИ (S)=0, то [SP-1][SP — 2]*-РС, (SP) = (SP)—2, (РС)*-<В3хВ2> ИНАЧЕ (РС) = (РС)+ > см <в2> <В3> 3 3/5 ЕСЛИ (S) = 1,то [SP—1][SP —2]«-РС, (SP) = (SP)—2, (РС)«—<В3хВ2>, ИНАЧЕ (PC) = (PC) 4-3 л л & VV 3 3/5 ЕСЛИ (Р) = 1, то |SP— 1][SP—2]*-РС, (SP) = (SP)-2, (РС)*-<В3хВ2>, ИНАЧЕ (PC) = (PC) 4-3 СРО <в2> <в3> 3 3/5 ЕСЛИ (Р)=0, то [SP—1][SP—2]«-РС (SP) = (SP)—2, (РС)<-<В3ХВ2>, ИНАЧЕ (PC) = (PC) 4-3 RET 1 3 (PC)*-[SP][SP4-1], (SP) = (SP) + 2 Возвращение к команде, адрес которой записан в верхней паре ячеек стека. Увеличение содержимо- го указателя стека на 2 RC 1 1/3 ЕСЛИ (С)=1, то (PC)*-[SPJ, [SP4-1], (SP) = (SP)4-2, ИНАЧЕ (PC) = (PC) 4-1 RNC 1 1/3 ЕСЛИ (С) = 0, то (PC)<-[SP], [SP4-1], (SP) = (SP)4-2. ИНАЧЕ (PC) = (PC) 4-1 RZ 1 1/3 ЕСЛИ (Z)= 1, то (PC)*-[SP], [SP4-1], (SP)==(SP)-|-2, ИНАЧЕ (PC) = (PC) 4-1 RNZ ] 1/3 ЕСЛИ (Z) = 0, то (PCMSP], [SP4-1], (SP) = (SP)4-2, ИНАЧЕ (PC) = (PC) 4-1 RP 1 1/3 ЕСЛИ (S) = 0, to (PC)«-[SPb [SP4-4. (SP) = (SP)4-2, ИНАЧЕ (PC) = (PC) 4-1 RM 1 1/3 ЕСЛИ (S) = l, to (PC)<-[SP], [SP4-1], (SP) = (SP)4-2, ИНАЧЕ (PC) = (PC)4-1 226
Продолжение rafii 7 9 Мнемокод Длина и.ант? tJOlfMHTi Gif ЭИ Описание операции RPS 1 1/3 ЕСЛИ (Р) = 1, ю (PC)-[5PJ, |ЬР-4- 11, (SP)=(SP)+2, ИНАЧЕ (SC) = (РС)+ 1 RPO 1 1/3 ЕСЛИ (Р)=0, го (PC)-[S1’I[SP+11, (SP) = (SP)4-2, ИНАЧЕ (РС) = (РС)+ 1 RST 1 3 SP — 1J [SP —2|«-(РС), (SP)=(SP)—2 PC) <-(00000000 00 AAA 000) Вектор прерывания, выдаваемый внешним устройством (см рис 7.17) Таблица 7.10 Операции ввода — вывода Мнемокод Описание операции IN <В2> OUT <в2> Е1 DI 2 3 (А)-е-(вводимые данные) Во время такта 7\ третьего цикла байт В2 коман- ды, содержащий адрес УВВ, выдается на адрес- ную шину, а во время действия сигнала SYNC (синхронизация) на линию INP (ввод) (а не MEMR (чтение)) поступает высокий потенциал. Данные загружаются в аккумулятор с шины дан- ных по сигналу DBIN (прием), выдаваемому ЦП. Триггеры состояния не затрагиваются 2 3 (Выводимые данные)<~(А) Во время такта 7\ третьего цикла байт В2 коман- ды, содержащий адрес УВВ, выдается на адрес- ную шину, а во время действия сигнала SYNC (синхронизация) на контакт OUT (вывод) подает- ся высокий потенциал. Содержимое аккумулятора выдается на шину данных, когда сигнал на выво- де WH (запись) становится равным 0 1 1 Разрешить прерывание 1 1 Запретить прерывание С помощью указанных команд может быть уста- новлен или сброшен триггер разрешения прерыва- ния (INTE). Сигнал запроса прерывания INT мо- жет быть воспринят ЦП, только если триггер раз- решения прерывания INTE установлен. Сразу пос- ле приема сигнала в ЦП триггер INTE сбрасыва- ется. Во время выполнения команд EI и DI сигнал запроса прерывания не воспринимается 8* 227
Таблица 7.11 Другие команды Мнемокод Длина (байт) Число циклоп Описание операции LDAX D 1 2 (A)-[(D)(E)]. Загрузить А из ячейки с адресом, записанным в регистрах D, Е INX В 1 I (В) (С)^-(В) (С)+ 1. Увеличить содержимое пары регистров В, С на 1. Триггеры состояния не изменять INX Н 1 1 (H)(L)-(H)(L)+1. Увеличить на 1 содержимое пары регистров п, L. Триггеры состояния не изменять INX D 1 1 (D)(E)«-(D)(E) + 1 DAD В 1 3 (H)(L)-(H)(L) + (B)(C)- DAD Н 1 3 (H)(L)HH)(L) + (H)(L) (сдвиг влево удвоенной точности содержимого ре- гистров Н и L) DAD D 1 3 (H)(L)<—(H)(L)+(D)(E) STAX В 1 2 [(B)(C)WA). Запомнить содержимое А по адресу, записанному в паре регистров В и С STAX D 1 2 [(D)(E)]-(A) Запомнить содержимое аккумулятора по адресу, записанному в паре регистров D и Е LDAX В I 2 (А)—[(В) (С)]. Загрузить аккумулятор из ячейки с адресом, запи- санным в регистрах В и С DCX В 1 1 (В)(С)*—(В)(С)-—1 DCX H 1 1 fH)(L)—(H)(L) —1 DCX D 1 1 (D)(EHD)(E)-1 XCHG 1 1 (HHD)(EHL) Поменять содержимое пар регисторов Н, L и D, Е DAA 1 1 Десятичная коррекция аккумулятора. Его содер- жимое (8 бит) — скорректированный результат арифметической операции над 2-разрядными де- сятичными операндами, представленными в дво- ично-десятичном коде 7 4 3 0 х II Y Аккумулятор Корректировка заключается в следующем: если У^Ю или есть перенос из 4-го разряда (бит 3), то Y=Y + 6 и перенос из старшего разря- да Y в X (из бита 3 в 4). Если Х^Ю или есть перенос из 8-го разряда (бит 7), или Y^ 10 и Х = 9, то Х = Х + 6 (и уста- навливается триггер переноса). В данной команде анализируются два триггера переноса: CY{—пере- нос из 3-го бита (4-й разряд), который доступен для анализа данной команды как пятый флажок, и СУ2— перенос из 7-го бита (8-й разряд), как обычно. Команда может изменить состояние лю- бого треггеоа фпажков 228
Продолжение табл, 7.11 Мнемокод Длина (байт) Число циклов Описание операции SHLD В, > <в3> 3 5 [<B3><B2»-(L), [<ВзХВ2>+1Ь(Н) Запомнить содержимое регистров Н и L по адре- су, указанному во втором и третьем байтах коман- ды LHLD <В2> <в3> 3 5 (1)Ч<ВзХ32>], (Н)Ч<ВзХВ2>+1] Загрузить регистры И и L из ячейки с адресом, указанным в байтах В2 и В3 команды НВТ 1 1 По приходу команды HALT ЦП переходит в со- стояние останов. Содержимое всех регистров и памяти не изменяется, а содержимое счетчика команд PC модифицируется 7.5. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ Загрузка аккумуляторов. Одна из наиболее часто встречающихся задач при программировании — засылка некоторого числа в акку- мулятор. В табл. 7.12 приведены 8 различных вариантов загрузки аккумулятора. Каждая строчка представляет собой отдельный вариант. MOV А, В — однобайтовая команда (см. табл. 7.6). Регистр А используется как регистр назначения (приема), регистр В — как регистр — источник данных. Таблица 7.12 Команды загрузки аккумулятора Мнемокод Операнд Комментарии Длина (байт) MOV A, В Загрузить А из регистра В 1 MVI A, 23 Загрузить в А непосредственно чис- 2 ло 2316 LDA 4098 Загрузить А из ячейки памяти № 4098 3 MOV A, M Загрузить А из ячейки с адресом, со- 1 держащимся в регистрах Н и L LDAX В Загрузить А из ячейки с адресом, со- 1 держащимся в регистрах В, С LDAX D Загрузить А из ячейки с адресом, со- 1 держащимся в регистрах D, Е LHLD 4098 Загрузить аккумулятор из ячейки, ад- 4 MOV A, M рес которой записан в ячейке 4098 (косвенная адресация) 1 POP A Загрузить А из стека 2 IN 10 Загрузить А из VRB № 10 229
MVI A, 23 — двухбайтовая команда (см. табл. 7.6). Второй байт содержит число (в данном случае 23), заносимое в аккумуля- тор. LDA 4098 — трехбайтовая команда (см. табл. 7.2). Второй и третий байты содержат адрес ячейки памяти (в данном случае 4098). MOV А, М — однобайтовая команда (см. табл. 6.7). Перед этой командой должна выполняться команда загрузки в пару ре- гистров /7, L 16-битового адреса памяти. По команде MOV из ячейки с адресом, записанным в И, L, выбирается число и посылается в ак- кумулятор. LDAX В —однобайтовая команда (см. табл. 7.11). Перед этой командой должна быть выполнена команда загрузки в пару реги- стров В, С 16-битового адреса. По команде LDAX по адресу, за- писанному в регистрах В, С, выбирается число и посылается в ак- кумулятор. LDAX D — однобайтовая команда (см. табл. 7.11). Выполняется, как и команда LDAX В, но после того, как адрес ячейки памяти записан в пару регистров D, Е. LHLD 4098 и MOV А, М — эти две команды занимают 4 байта (см. табл. 7.11). Команда LHLD загружает число из ячейки 4098 в регистры И, L. Команда MOV использует адрес, записанный в паре регистров /7, L, для выборки числа, загружаемого в аккумулятор. Таким образом,используется косвенная загрузка А через ячейку 4098. IN 10 — двухбайтовая команда (см. табл. 7.10). Второй байт содержит адрес устройства ввода—вывода. Аккумулятор загру- жается из адресуемого устройства ввода— вывода по шине данных. Многобайтовое сложение. С помощью команды сложения с пере- носом (ADC) и триггера переноса можно складывать числа произ- вольной длины. Рассмотрим следующий пример сложения двух 3 байтовых слов в шестнадцатеричном коде (см. табл. 7.13) I I 32 AF 8А 84 ВА 90 В76 А 1А В ЦП 8080 такое сложение может быть выполнено последователь- но путем сложения младших байтов обоих слов, запоминания перено- са, сложения следующих байтов слов и переноса от предыдущего сложения, запоминания переноса и т. д.: 1 32 64 В7 AF 8А 6А ВЛ 90 1Л Перенос =/ Перенос -1 23Q
Таблица 7.13 Сложение 3-байтовых слов Программа многобайтового сложения представлена в табл. 7.14. Регистр D содержит длину слагаемых слов в байтах (в данном слу- чае 3). Первое и второе слова хранятся с младших байтов в группах ячеек, начинающихся соответственно с номеров FIRST и SECND. Старшие байты хранятся в ячейках с большими номерами. Резуль- тат сложения записывается на место первого числа, начиная с ячей- ки FIRST (старшие байты —в ячейки с большими номерами). Вследствие того, что ни одна из команд подпрограммы, кроме ADC, не может изменить состояние триггера переноса, вычисления дают правильный результат По достижении в процессе выполнения программы метки DONE в ячейках FIRST ... FIRST 4- 2 будет содержаться число 1А6АВ7, равное сумме слагаемых для нашего примера (младшие байты в ячейках с меньшими номерами). Для вычитания чисел без знака произвольной длины могу*! быть использованы команда вычитания с заемом SBB и бит г?ереноса (заема). Например, — 1301 0503 0DFE Эта процедура в ЦП 8080 может быть выполнена путем вычита- ния младших байтов и использования полученного бита переноса для коррекции разности старших байтов (командой sBB). 231
Таблица 7.14 Программа многобайтового сложения Метка Код Операнд Комментарии MADD: LXI В, FIRST Загрузить адрес FIRST в регистры В, С LXI H, SECND Загрузить адрес SECND в регистры Н, L XRA A Очистить бит переноса LOOP: LDAX В Загрузить байт из ячейки FIRST ADC M Сложить с байтом из ячейки SECND STAX и с переносом В Запомнить результат по адресу FIRST DCR D Уменьшить содержимое регистра D на 1 JZ DONE Перейти к пометке DONE, если D=0 INX В Указать следующий байт FIRST INX H Указать следующий байт SECND J MP LOOP Перейти к сложению двух следующих байтов DONE: — FIRST DB 8A16 DB af!6 DB 32l6 SECND: DB 90j e DB В A16 DB Вычитание младших байтов (бит переноса == 0, нет заема): 00000001 = 0116 11111101 =—(031в + перенос) — дополнительный код 11111110 =0FEin— младший байт результата Перенос = 0, бит переноса устанавливается в 1, индицируется заем. Вычитание старших разрядов (байтов): 00010011 = 1310 11111010 = -(0516 + перенос) —дополнительный код 00001101 -10D16 Перенос = 1. Сбрасывается бит переноса, индицируется отсут- ствие заема. 232
Если возникает единица заема, то команда SBB увеличивает вы- читаемое на 1, что эквивалентно вычитанию 1 из уменьшаемого. Для получения программы вычитания достаточно в программе сложения (табл. 7.14) заменить команду ADC на команду SBB, и в ней число по адресу SECND будет вычитаться из числа по адресу FIRST, а результат записываться по адресу FIRST. Десятичное сложение. Любое 4-битовое число можно интерпре- тировать как десятичную цифру, если оно содержит десятичное число от 0 до 9 и не содержит комбинации битов, соответствующей числам от А1В до F16. Чтобы оперировать при выполнении сложения с числами в таком десятичном представлении, необходимо добавить 6 к сумме двух таких цифр, если она больше 10, но меньше 15. Это связано с тем, что каждая тетрада битов содержит 6 неисполь- зуемых при двоично-десятичном кодировании комбинаций. В процессоре 8080 десятичное сложение производится байтами, содержащими по 2 десятичные цифры (каждая по 4 разряда). Байты складываются в аккумуляторе как обычно, а затем по команде DAA (ДЕСЯТИЧНАЯ КОРРЕКЦИЯ) 8-битовый двоичный резуль- тат преобразуется в две десятичные цифры. Операция DAA может анализировать биты переноса и дополнительного переноса, что и позволяет складывать многоразрядные десятичные числа. Например, для выполнения десятичного сложения । 2985 ф4936 7921 необходимы следующие действия: 1. Очистить триггер переноса и сложить два младших десятич- ных разряда каждого числа (напоминаем, что одна цифра занимает пол байта). 8510 = 100001012 3610 = 001101102 Перенос =0 0] 101110112 | 4 Перенос == 0 Дополнительный перенос = 0 В аккумуляторе содержится число ВВ16. Напоминаем, что число 101110112 =10111011 в двоичном коде. 2. Выполнить операцию DAA. Так как младшие 4 разряда пред- ставляют число 1010, то к содержимому аккумулятора необходимо добавить 61П: Аккумулятор — 101110112 6= 0И02 110000012 233
Так как старшие 4 бита представляют число > 1010, то к ним тоже необходимо прибавить число 6. При этом установится бит переноса: Аккумулятор = 110000012 6 = 0110-2 1] 001000012 I Перенос = 1 Теперь в аккумуляторе содержится число 211в. Эти два разряда запоминаются. 3. Сложить следующую пару разрядов: 291в = 001010012 4910 = 010010012 Перенос ==Ц 0| 011100112 I I Перенос = 0 Дополнительный перенос = 1 Аккумулятор содержит число 7316. 4. Выполнить операцию DAA. Так как бит дополнительного пе- реноса установлен, необходимо добавить к содержимому аккуму- лятора число 6: Аккумулятор = 011100112 6= 01102 0] 011110012 I Перенос =0 Так как четыре старших бита представляют число меньше 10 и бит переноса сброшен, то к ним нет необходимости добавлять число 6. Получен десятичный результат 7921, записанный в двух байтах. Программа десятичного сложения аналогична программе много- байтового двоичного сложения MADD, рассмотренной в предыду- щем параграфе. Она может быть получена, если в программе MADD после команды ADC М добавить команду DAA. Подпрограммы. Подпрограмма записывается как последователь- ность операторов на ассемблере и вызывается по названию, являю- щемуся меткой первой команды подпрограммы. Программист вы- зывает подпрограмму, записывая в поле операндов команды CALL ее название. В процессе выполнения команды CALL в стек поме- щается адрес следующей команды и управление передается первой команде подпрограммы. Завершает подпрограмму команда RETURN (ВОЗВРАТ), с помощью которой из верхних ячеек стека извлекается адрес, который помещается в программный счетчик, благодаря чему выполнение программы продолжается с команды, следующей за командой CALL. Таким образом, подпрограмма может много- 234
Метка Код Операнд Ком'. ? нт арии MINC INR RNZ INX INR RET м н м Увеличение младшего байта Возврат, если не нуль Адресация к старшему байту Увеличение старшего байта Безусловный возврат Пусть программе необходимо вызвать подпрограмму MINC Произвольный Произвольный сйрес памяти а аре с памяти Пт он порей Отоя при О лен после йызойом райо те М//М возврата Рис. 7.12. Работа стека при вызове подпрограммы' кратно вызываться из любого места памяти в место записи ее в каж- дом нужном месте программы. Например, подпрограмма M1NC (рис. 7.12) увеличивает 16-битовое слово на единицу, младший байт которого хранится в первой ячейке из пары используемых ячеек, и возвращает управление команде, следующей за CALL. Адреса ячеек, в которых находится увеличиваемое число, по- мещаются в регистры И, L. При выполнении первого вызова адрес 2С0316 помещается в стек по адресу в указателе стека и управление передается по адресу ЗС001В. При выполнении команды возврата RETURN подпрограммой MINC из вершины стека извлекается адрес следующей команды и помещается в программный счетчик, ини- 235
циируя продолжение программы с адреса 2С0316 (команда CALL имеет длину 3 байта). При втором вызове подпрограммы в стек поме- щается адрес 2EF313 и.управление опять передается подпрограмме M1NC. Теперь по команде возврата RETURN передается управ- ление по адресу 2EF316. Заметим, что и подпрограмма MINC может вызывать другие подпрограммы, помещая соответствующие адреса в стек. Эта про- цедура может выполняться произвольное число раз, ограничиваемое только объемом памяти, отведенной под стек. Отметим также, что любая подпрограмма может помещать в стек используемые числа для временного хранения без ущерба для выполнения команд вы- зова и возврата, если только эти данные извлекаются из стека перед возвратом. Ввод данных в подпрограмму. Для работы подпрограммы необ- ходимы данные. В простейшем случае их можно ввести в один или более регистров. Подпрограмма MINC в предыдущем примере полу- чает адрес памяти, с которым она работает, через регистры Н и L. В некоторых случаях более удобно и экономично предоставить возможность подпрограмме самой загружать регистры необходи- мыми данными. Одна из таких возможностей осуществляется путем помещения требуемых данных (называемых списком параметров) в некоторую область памяти и засылки адреса списка в регистры W, £(рис. 7.13, табл. 7,15). Подпрограмма ADSUB в этом примере полу- чает адрес 3-байтового списка параметров через регистры Н, L, скла- дывает первый и второй байты списка, а результат запоминает в третьем байте. При первом обращении к подпрограмме ADSUB регистры ZI и В загружаются из ячеек PLIST и PLIST+1 соответственно, осуществ- ляется сложение и результат засылается в ячейку PL1ST+-2. Далее следует возврат по команде RET 1. При втором вызове подпрограммы ADSUB регистры Н и L со- держат адрес списка параметров LIST 2. Регистры А и В загружают- ся числами 10 и 35 соответственно, а сумма их затем запоминается АВ5ьЗ fiepooe обращение к подпрограмме второе обращение к подпрограмме ADSUB Н L ADSU8: Рис 7.13 Передача данных в лидара рамму с использованием списка пара- метров 236
Таблица 7.15 Подпрограмма с вводом данных по списку параметров Метка Код Операнд Комментарии RET1: PLIST: RET2: LIST2: ADSUB: LXI CALL DB DB DS LXI DB DB DS MOV INX MOV ADD INX MOV RET H, PLIST ADSUB 6 8 1 H, LIST2 10 35 1 A, M H B, M В H M, A Загрузить в регистры Н, L адрес спи- ска параметров Вызов подпрограммы Первое слагаемое Второе слагаемое Место результата Загрузить регистры И, L для после- дующего вызова подпограммы ADSUB Выбрать первый параметр Увеличить адрес памяти Выбрать второй параметр Сложить первое число со вторым Увеличить адрес памяти Запомнить результат в третьей ячей- ке списка Безусловный возврат из подпрограм- мы в ячейке LIST2+2. Отметим, что списки параметров PL1ST и LIST2 могут располагаться в любом месте памяти без ущерба для резуль- татов работы подпрограммы ADSUB. Однако этот подход имеет ограничение. Согласно табл. 7.15 подпрограмма ADSUB получает список из двух и только двух сла- гаемых, и они должны быть расположены в памяти по соседству. Построим подпрограмму GENAD для сложения двух чисел с про- извольным количеством битов, расположенных в произвольных местах памяти, и сохранения результата в аккумуляторе (рис.7.14, табл 7.16). Это достигается введением в подпрограмму списка адресов пара- метров, а не списка самих параметров и указанием конца списка па- раметров с помощью номера, старший байт которого равен FF18 237
РАШ РАШ FARMS PARMZ Рис. 7.14. Передача данных в подпрограмму с использованием списка адре- сов параметров (предполагается, что ни один параметр не может быть запомнен по адресу более чем FF0016). В процессе выполнения подпрограмма GENAD получает про- межуточную сумму (начиная с О), хранимую в регистре С. Далее загружается адрес первого параметра в регистры D и Е. Если адрес больше или равен FF00, в аккумулятор загружается сумма из ре- гистра С и управление передается вызывавшей программе. В про- тивном случае в аккумулятор загружается параметр и к нему при- бавляется сумма из регистра С. Далее подпрограмма переходит к об- работке оставшихся параметров. Отметим, что в подпрограмме GENAD можно складывать лю- бую комбинацию параметров без изменения самих параметров. Программа вида LXI Н, PLIST CALL GENAD PLIST: W PARM4 DW PARM1 DW FFFF16 обеспечит сложение содержимого PARM1 и PARM4 независимо от их расположения в памяти (кроме адресов свыше FF00ln). Существуют и другие способы ввода данных в подпрограммы. На- пример, если необходимо обрабатывать данные, хранящиеся по произвольным адресам, вызывающая программа может передать под- программе в качестве первого параметра общее число параметров; подпрограмма должна загрузить это значение в регистр и использо- вать его как счетчик для определения момента исчерпания всех па- раметров. 238
Таблица 7 16 Подпрограмма сложения чисел с произвольным числом байтов М^тка Код Операнд Комментарий LXI CALL II, PLIST GENAD Вызывающая программа PLIST: DW DW DW DW DW PARM1 PARM2 PARM3 PARM4 FFFFle Список адресов параметров Указатель конца списка PARM1: PARM4: DB DB 8 15 PARA13: DB 13 PARM2: DB 82 GF.NAD: LOOP: BACK: XRA MOV MOV INX MOV CPI JZ MOV LDAX ADD INX J MP MOV RET A C, A E, M H A, M FF BACK D, A D C H LOOP A, C Очистить аккумулятор Сохранить текущую сумму в регист- ре С Выбрать младший байт адреса перво- го параметра Выбрать старший байт адреса перво- го параметра Сравнить с FF16 Если равенство выполняется, то под- программа выполнена Занести новый адрес параметра в ре- гистры D и Е Загрузить параметр в аккумулятор Сложить с текущей суммой Увеличить содержимое регистров //, L для указания адреса следующего параметра Перейти к обработке следующего па- раметра Программа выполнена — восстано- вить результат Возврат к вызываемой программе 7.6. ПРЕРЫВАНИЯ И ВВОД — ВЫВОД Прерывания. В ЦП 8080 имеется триггер INTE разрешения пре- рывания, который может быть установлен либо сброшен командами EI и DI соответственно (см. табл. 7.10). Если триггер INTE нахо- дится в нулевом состоянии, то система прерываний блокирована и запросы прерываний не воспринимаются. Когда ЦП воспринимает запрос прерывания от внешнего устрой- ства, происходит следующее: 239
1. Заканчивается выполняемая команда. 2. Сбрасывается бит разрешения прерывания INTE. 3. Прерывающее устройство аппаратурно формирует команду и посылает ее в ЦП для выполнения. Команда не размещена в памя- ти, и программист не может ее изменить, это является функцией раз- работчика системы прерываний. Перед выполнением этой команды содержимое программного счетчика не увеличивается на I. Командой, формируемой прерывающим устройством, обычно является команда RST (см. табл. 7.9), представляющая собой коман- ду вызова одной из восьми 8-байтовых подпрограмм, расположен- ных в первых 64 ячейках памяти. К примеру, телетайп при каждом прерывании может посылать следующую команду (рис.7.15): RST 01б. Далее для обработки данных, поступающих от телетайпа, управ- ление передается соответствующей подпрограмме через последова- тельность команд, записанных в ячейках памяти 000016... 00071б. Устройство ввода цифровых данных может формировать сле- дующую команду RS1116. Далее через последовательность команд в ячейках памяти 00081в ... 000F16 должна быть вызвана подпрограмма обслуживания данного устройства. Отметим, что любая из этих 8-байтовых подпрограмм может вы- зывать (по необходимости) более продолжительные подпрограммы для обработки прерываний. Любое устройство может генерировать команду RST (как и любую другую команду ЦП 8080). Пример последовательности обработки прерывания (рис. 7.16) рассмотрен ниже. Устройство 1 выдает сигнал прерывания, когда ЦП выполняет команду, выбранную по адресу ЗС0В16. Выполнение ооы ооз? DOO8 ООО? 0000 0007 Рис. 7 15 Команды прерывания ' 240 обслуживания устройства „а” Родпрограмма обслуживания устройства„ b” Подпрограмма обслуживания устройства,, <?”
произвольный АДРЕС ПАМЯТИ 3003 НОМ АНДЫ MOV С, б MOV Е3А 0000 Запрос прорывания от усприойства 1 Устройство 7 генерирует PSTOtf Содержимое программного счетчика ЗСОС^ заносится в стен Управление передается ячейке 0000 команда Z RET __________i__________ Извлечение из стена 3 программный счетчик Рис. 7.16. Последовательность прерывания команды заканчивается. Программный счетчик содержит число ЗС0С16, и выполняется команда RST016, генерируемая устройст- вом /. Так как это означает обращение к ячейке 000016, ю адрес ЗС0С1ь заносится в стек и управление передается по адресу 0000i6 (подпрограмма может выполнять безусловные переходы, вызовы под- программ или другие команды). Когда выполняется команда RETURN (ВОЗВРАТ ИЗ ПОДПРОГРАММЫ), то адрес ЗС0С16 из- влекается из стека и помещается в программный счетчик, инициируя выполнение прерванной программы от точки, где поступило пре- рывание. В принципе все регистры или биты условий, изменяемые программой обработки прерываний, во избежание ошибок должны быть восстановлены перед возвратом в прерванную программу. Пусть, например, фоновая программа была прервана перед коман- дой JC LOC и бит переноса равнялся 1. Если подпрограмма обра- ботки прерывания сбрасывает его в 0, то после возврата из подпро- граммы необходимый переход к метке LOC не произойдет, т. е. пре- рывающая программа создает сбойную ситуацию. Как и всякая другая подпрограмма, подпрограмма обработки прерываний должна сохранить по крайней мере биты условий и вос- становить их перед возвратом в основную программу (наиболее простой и очевидный путь для выполнения этого — сохранить дан- ные в стеке, используя операции занесения и извлечения из стека). Более того, система разрешения прерывания блокируется после подтверждения запроса прерывания. Поэтому во всех случаях, за редким исключением, в подпрограмму обработки прерываний не- обходимо включить команду EI для разрешения приема и обслужи- вания будущих прерываний. В любой момент после команды EI подпрограмма обработки прерываний может быть прервана сама. 241
Таблица 717 Подпрограмма обработки прерываний Коз Спепгпд Kovne iгг.рии PUSH El PSW Сохранить биты состояния и аккумулятора Разрешить прерывание Выполнение необходимых действий по обработке прерывания POP RET PSW Восстановить слово состояния программ Возврат в прерванную программу и Этот процесс может повторяться сколько угодно раз, но коррект- ность работы программы будет обеспечена благодаря тому, что тре- буемые данные запоминаются и извлекаются в требуемой последо- вательности. Типичная подпрограмма обработки прерывания приведена в табл. 7.17. Устройство управления приоритетными прерываниями (PICU). Проектирование системы с многими источниками прерываний может быть упрощено при использовании устройства управления приори- тетными прерываниями (PICU), схема которого показана на рис. 7.17. Эта микросхема (8214) представляет собой 8-уровневое устройство, созданное для упрощения обслуживания прерываний Расположение Выводов, ^Е ^Е ms с ШЕ /5Е АО А- I 2 5 4 5 U 7 8 9 Ю // 12 вт 22 21 : 20 ' 19 18 П 16 15 19 13 23 ЗЕСб □ P,;r 7.17. Устройство управления приоритетными прерываниями
в микропроцессорных системах. Устройство P1CU может принять 8 запросов прерываний различных уровней, выделить старший при- оритет, сравнить его с содержимым программно управляемого ре- гистра текущего состояния и выдать запрос прерывания в систему, сопровождая его векторной информацией для поиска подпрограммы обслуживания прерываний данного источника. Возможности микро- схемы 8214 могут быть расширены благодаря наличию открытых кол- лекторных выходов сигнала прерывания и векторной информации. Имеются сигналы управления для упрощения этих функций. Уст- ройство создано для построения различных структур обслужива- ния векторных прерываний и для уменьшения числа корпусов мик- росхем, используемых в микропроцессорных системах с прерывания- ми (управляемых по прерыванию). Вектор прерывания описывается тремя битами Ао, А,, А2, исполь- зуемыми для установки программного счетчика по вводимой коман- де RST (см. табл. 7.9). Наименования выводов на рис. 7.17 следующие: Rq ... R1 — входы уровней запросов, — старший приоритет; Bq ... В2 — вход текущего состояния; SGS — вход выбора группы состояния; ECS — вход разрешения текущего состояния; 1S — вход строба прерывания; CLK — вход синхросигнала; ELR — вход разрешения чтения уровня; ETLG — вход разрешения группы этого уровня; Л0...Л2 — выходы уровня запроса; 7Л/Т — выход прерывания (низкий уровень): Открытый кол- лектор ENLG — выход разрешения уровневой группы. Порт ввода—вывода. Микросхема 8212— многорежимное ключевое запоминающее буферное устройство, разработанное для использо- вания в микропроцессорных системах, состоит из 8-битового регист- ра с трехстабильными выходными буферами, логической схемы уп- равления и служебного триггера запроса (рис. 7.18). Все возможные периферийные операции и операции ввода —вывода микропроцессор- ных систем могут быть выполнены с помощью этой микросхемы. К общей шине данных может быть подсоединено несколько пор- тов ввода —вывода, а выборка требуемой микросхемы ввода — вывода может быть выполнена с помощью специальной микросхемы двоич- ного дешифратора. Назначение выводов микросхемы 8212 приведе- но ниже. Dlx ... DI* — входы шины данных; DOV ... О08 — выходы шины данных; DS2 — входы выборки устройства; 243
MD — вход задания режима; STB — вход с гроба; INT — вход прерывания (низкий уровень); CLR — вход очистки (низкий уровень). Двоичный дешифратор 8205 (рис. 7.19) может быть использован для расширения систем с микросхемами памяти, портами ввода — вывода с низким уровнем сигнала выборки. Если микросхема 8205 включается, один из ее выходов переходит в состояние низкого по- тенциала и выбирается отдельный ряд в системе памяти Наличие трех входов разрешения у схемы 8205 позволяет легко расширять систему. В больших системах для произвольного расширения па- мяти дешифраторы 8205 могут быть соединены так, что каждый де- шифратор будет управлять восемью другими дешифраторами. Микросхема INTEL 8205 выпускается в стандартном 16-контакт- ном корпусе типа DIP и работает в диапазоне температур O... + 750 С. Использование ограничителей на диодах Шоттки позволяет полу- Расположение Модов /5, Г/ ДП Л02р6 7 М г ю STB Plf ±4* 6212 ZtQVcc 25 □ INT 22 501в 21 Л D08 2o5di7 19 5 bo7 16 5 DI ff П 5 D06 16 5 bi? Jzw 75 5 BS2 Логическая мема Рис 7.18. Восьмибиговый порт ввода—вывода 244
Расположение выводов Рис 7 19. Дешифратор чить лучшие характеристики по быстродействию, чем для аналогич- ных приборов, выполненных по технологии, использующей диффу- зию золота. Наименование выводов микросхемы и таблица ее функциониро- вания приведены ниже. Наименование выводов 40 . . .Д2— входы адреса; Ё1 , . .£3- входы разрешений; Оо • ♦ ^7 — выходы дешифратора. Адрес 1 Разрешение Выходы _sJ <41 1 4, 1 Et Г 2 1 1 '> 1 ’ 1 < 1 5 1 0 1 7 L L L L L н L н н н н н н н Н L L L L н н [ н н н н н н L Н L L L н н н L н н н н н Н Н L L L н Н н н L н в н н L L Н L L н Н н н В L н н н Н L н L L н Н н н Н Н L н и L В н L L в н н в В Н Н L н В н н L L в в н и Н Н Н Н >. X X X L L I н н н В н Н Н н X X X Н L L н н в Н н В Н и X X X L Н L н н н В н н н н х X В Н L в н н н н н н н X X X Н L Н в в н н н в н н X X X L Н Н в н н н н В' н н X X X Н И н в в н н н н н н Примечание. Н — высокий уровень. L — низкий уровень, X — про- извольный уровень (В или L) 245
СПИСОК ЛИТЕРАТУРЫ 1. 8080 Microcomputer System Manual, Intel Corp., Santa Clara, Ca , 1975. 2. 8080 Assembly Language Programming Manual, Intel Corp , Sama Clara, Ca., 1974. 3. Brewer M. The Designers Guide to Programmed Logic, for MPS 800 Sys- tems, Pro-Leg Corp , Monterey, Ca , 1974. 4. MCS-8 Microcomputer Set, Users Manual, Intel Corp., Santa Clara, Ca., 1973. Глава 8 МИКРОПРОЦЕССОРНЫЙ НАБОР M6800 В главе 8 описывается 8-битовый микропроцессор фирмы Motorola, ко= торый имеет 8-битовую шину данных, 16-битовую адресную шину и шину ут равления. Описано семь способов адресации: к аккумулятору, непосредствен- ная, прямая, расширенная, индексная, безадресная и относительная. Набор команд включает команды двоичной и десятичной арифметики, логические, сдвига, загрузки, запоминания, условного и безусловного переходов, пре- рывания и управления стеком. Система М6800 организована на основе общей микрошины (Microbus), что позволяет использовать одно и то же множество адресов для обращения как к памяти, так и к интерфейсу ввода—вывода. В связи с этим нет необходимости в специальных командах для выполнения ввода—вывода. Описаны микросхемы ввода—вывода, упрощающие конструи- рование системы. Материалы^ этой главы являются частично обобщением публикаций фир- мы Motorola Semiconductor Products Inc. Ответственность за публикуемый в таком виде материал полностью несет автор. 8.1. ОБЩЕЕ ОПИСАНИЕ Набор М6800 характеризуется рядом архитектурных особеннос- тей, главные из которых следующие: — малое число требуемых компонентов; — малое число требуемых вспомогательных блоков; — простота интерфейса; — простота источника питания; — высокая производительность. Ниже показано, как это'достигнуто, на примере рассмотрения кон- струкции и работы микро-ЭВМ на основе набора М6800. Приведены также простые примеры, поясняющие принципы работы системы. Структурная схема системы М6800, включающая ПЗУ емкостью 1024 байт для хранения команд и таблиц констант, ЗУПВ емкостью 128 байт для хранения промежуточных данных и два адаптера ввода- вывода, показана на рис. 8.1. Как видно из рисунка, полная систе- ма выполняется на шести /г-МОП-модулях из набора М6800. 1) Программы, рисунки и таблицы заимствованы из проспета фирмы Motorola Semiconductor Products Inc. Все права сохранены. 246
Упрощенная • структура ми препроцессора МС6800 представлена на рис. 8.2, где показаны его линии управле- ния и интерфейс микроишпы. Шина данных и адресная шина процессора работают на стандартных ТТЛ-уровнях и могут быть подключены к стандартной ТТЛ-нагрузке с емкостью до 130 пФ. Это по- зволяет осуществить управ- ление работой всеми состав- ными частями системы М6800 без буферных устройств. Все составные части системы обла- дают такими возможностями управления и работают па тех Адресная Шина шина данных же стандартных уровнях. В системе М6800 исполь- Рис. 8 1. Микропроцессорная система зуется единая область адре- М6800 минимальной конфигурации сов. Процессор обращается ко всем другим компонентам шины как к ячейкам памяти. Выбор раз- личных ЗУ или микросхем ввода—вывода определяется состоянием только адресной шины. Эго в значительной степени упрощает управление шиной. Расположение выводов Рис. 8 2 Интерфейс шин микропроцессора МС6800 247
Центральный процессор. ЦП Л1С6800 представляет собой моно- литный 8-битовый микропроцессор, выполняющий основные функ- ции управления в системе М6800 фирмы Motorola. Он совместим с ИС ТТЛ и так же, как и все составные части системы М6800, питает- ся от единственного источника +5 В и не требует внешних устройств на ИС ТТЛ для согласования шин. ЦПМС6800 обеспечивает адресацию ЗУ емкостью 65К с помощью 16-битовой шины адреса, 8-битовая шина данных является двуна- правленной с тремя состояниями и обеспечивает прямой доступ к памяти и реализацию многопроцессорных систем. Основные характеристики ЦП МС6800: — параллельная обработка 8-битовых слов; — двунаправленная шина данных; — 16-битовая адресная шина — адресует память объемом 65К; — 72 команды переменной длины; — 7 способов адресации: прямая, непосредственная, индексная, расширенная, безадресная, относительная, к аккумулятору; — стек переменной длины; — векторный повторный запуск; — маскируемое векторное прерывание; — отдельное немаскируемое прерывание — содержимое внут- ренних регистров сохраняется в стеке; — 6 внутренних регистров — 2 аккумулятора, индексный ре- гистр, программный счетчик, указатель стека и регистр кода состоя- ния; — прямой доступ к памяти (ПДП) и возможность применения в многопроцессорных системах; — частота синхронизации 1 МГц; — простой интерфейс шин без ТТЛ-согласующих узлов; — наличие операции HALT (ОСТАНОВ) и возможность поша- гового выполнения программы. Для функционирования ЦП требуются внешние сигналы управ- ления и синхронизации, и при этом формируются внутренние сиг- налы, определяемые состоянием процессора. Выводы микросхемы ЦП для этих сигналов описаны ниже. Фазы 1 и 2 синхроимпульсов (Фп Ф2). Эти два вывода микросхе- мы используются для подачи неперекрывающихся по фазе синхро- сигналов с амплитудой напряжения Vcc. Адресная шина (Л0...Л15). Для адресной шины используется 16 выводов. На выходах шины имеются формирователи с тремя состояниями, способные управлять одной стандартной ТТЛ-на- грузкой емкостью 130 пФ. В выключенном состоянии каждый выход представляет собой практически разомкнутую цепь. Это позволяет использовать микропроцессор в режиме прямого доступа к памяти. Шина данных Для шины данных используется 8 вы- водов микросхемы. Она является двунаправленной и служит для 248
обмена информацией с ЗУ и внешними устройствами. Эта шина также имеет выходное буферное устройство с тремя состояниями, способное управлять одной стандартной ТТЛ-нагрузкой емкостью 130 пФ. HALT (Останов). Это потенциальный вход. Если на входе низ- кий уровень, то все действия в машине приостанавливаются. По сигналу на входе HALT машина остановится по окончании выпол- няемой команды, при этом на выходе ВА (адресная шина сво- бодна) (рис. 8.2) устанавливается единичный уровень, а на выхо- де УМА (действительный адрес памяти) — нулевой уровень; все остальные линии с тремя состояниями устанавливаются в третье состояние. В течение последних 250 нс синхросигнала состояние входа HALT не должно изменяться. Для обеспечения пошагового выпол- нения команд потенциал на линии HALT должен быть высоким в те- чение одного цикла синхросигнала Фх. TSC (Three — State Control —управление тремя состояниями). Этот вход предназначен для переключения всех линий адресной шины и линии R/ W (запись/чтение) в высокоимпедансное (выключен- ное) состояние. Это состояние устанавливается через 500 нс после того, как напряжение на входе TSC достигнет уровня 2,4 В. На выходах УМА и ВА устанавливается низкий уровень. Сигнал на входе TSC не воздействует на шину данных; она управляется по входу DBE (разрешение шины данных). При прямом доступе к памяти вход управления тремя состояния- ми должен быть переведен в состояние «высокое» фронтом синхро- сигнала Фг. Для выполнения этой функции синхросигнал Фг должен находиться в состоянии «высокое», а Ф2 — в состоянии «низкое». Адресная шина, таким образом, будет освобождена для работы с другими устройствами в режиме прямого доступа к памяти. Так как ЦП МС6800 — динамическое устройство, оно может находиться в этом состоянии только 5 мкс, после чего информация в ЦП будет разрушена. R/ W (Read/ Write—запись/чтение). Этот совместимый с ТТЛ выход используется для указания микросхемам ввода-вывода и памяти, чю ЦП находится в состоянии ЧТЕНИЕ (READ) — высокий уровень или ЗАПИСЬ (WRITE) — низкий уровень. Обычно выход находится в состоянии ЧТЕНИЕ (высокий уровень). Когда на выхо- де TSC появляется высокий уровень, на выходе R/W устанавливает- ся выключенное (высокоимпедансное) состояние. При останове про- цессора этот выход также переходит в выключенное состояние. Вы- ход R/W способен управлять одной стандартной ТТЛ-нагрузкой с входной емкостью 130 пФ. УМА (Valid Memory Adress — действительный адрес памяти). Этот выход используется для указания внешнему устройству, что на адресной шине находится действительный адрес памяти. Сигнал 249
с этого выхода используется для выборки микросхем адаптеров, та- ких как PIA (адаптер внешнего интерфейса) и ACIA (адаптер ин- терфейса последовательного обмена). Этот выход не имеет трех со- стояний. Он непосредственно управляет одной стандартной ТТЛ-на- грузкой с емкостью 30 пФ (высоким уровнем). DBE (Data Bus Enable — разрешение шины данных). Этот вход используется для управления тремя состояниями шины данных ЦП и выдает разрешение формирователям шины данных, когда на нем высокий уровень. Вход совместим по уровням с ТТЛ, однако для нормальной работы требуется стробирование синхросигналом Ф2. В течение цикла чтения ЦП на формирователи шины данных выдает- ся запрещающий сигнал. Если требуется, чтобы шиной данных уп- равляло другое устройство, например при прямом доступе к памяти (DMA), на выходе DBE должен быть низкий уровень. В A (Bus Available — адресная шина свободна). Обычно на этом выходе низкий уровень. Если же на нем устанавливается высокий уровень, то это означает, что микропроцессор остановлен и адрес- ная шина свободна. Это имеет место, когда на выходе HALT низ- кий уровень или процессор находится в режиме ОЖИДАНИЕ при выполнении команды WA IT (ОЖИДАНИЕ). В это время все выход- ные формирователи с тремя состояниями будут переведены в вы- ключенное состояние, а на других выходах установятся исходные неактивные уровни. Процессор выходит из режима ОЖИДАНИЕ при появлении маскируемого (бит маски 1 = 0) или немаскируе- мого прерывания. Этот выход способен управлять одной стандарт- ной ТТЛ-нагрузкой с входной емкостью 30 пФ. IRQ (Interrupt Reguest — запрос прерывания). Это потенциаль- ный вход сигнала запроса на выполнение программы обработки прерываний. Процессор ожидает окончания текущей команды, вы- полняемой перед возникновением запроса. Затем при условии, что бит маски прерывания в регистре кода состояния не установлен, машина начнет выполнять программу обработки прерывания. Содер- жимое индексного регистра, программного счетчика, аккумуляторов и регистра кода состояния запоминается в стеке, после чего ЦП от- вечает на запрос прерывания установкой бита маски прерывания в 1, благодаря чему последующие запросы прерывания не восприни- маются. В конце цикла в ЦП загружается 16-битовый адрес, который хранится в ячейках FFF8 и FFF9 и является векторным адресом пре- рывания. По этому адресу осуществляется переход к подпрограмме обработки прерываний. Для принятия запроса прерывания на входе HALT должен быть высокий уровень. Вход IRQ имеет высокое сопротивление, однако для оптималь- ного управления прерываниями с объединением по схеме ИЛИ не- обходимо соединить его с источником коллекторного питания Vcc через внешний резистор сопротивлением 3 кОм. RESET (сброс). Этот вход используется для установки ЦП в начальное состояние при падении напряжения питания в резулыа- 250
Рис. 8.3. Временные диаграммы работы ЦП после повторного запуска те неисправности источника или при повторном запуске процессо- ра. Появление фронта сигнала на этом входе указывает ЦП о начале последовательности повторного запуска. Это послужит началом выполнения последовательности перехода процессора в исходное со- стояние из состояния СБРОС. Старшие разряды адресной шины устанавливаются в состояние «высокое». Для повторного запуска программы используются две ячейки памяти (FFFE, FFFF), из ко- торых в программный счетчик загружается начальный адрес про- граммы повторного запуска. Во время выполнения программы по- вторного запуска устанавливается бит маски прерывания, и он дол- жен быть сброшен перед возможным прерыванием работы ЦП сиг- налом на входе IRQ. Система может работать с максимальной частотой синхронизации 1 МГц.Синхронизирующие сигналы представляют собой неперекры- вающиеся противофазные импульсы прямоугольной формы. При максимальной частоте синхронизации минимальное время выпол- нения команды в микропроцессоре МС6800 достигает 2 мкс. Толь- ко эти два входа синхроимпульсов являются входами, которые не работают на стандартных ТТЛ-уровнях. Все компоненты микро- шины работают от источника питания +5 В с общей корпусной шиной. Все сигналы управления процессором и наименования выво- дов на корпусе микросхемы показаны на рис. 8.2. Простота управ- ления процессором является следствием простоты микрошинной ар- хитектуры системы М6800. Временные диаграммы установки ЦП в исходное состояние после повторного запуска показаны на рис. 8.3. Сигнал на входе RESET должен находиться на нулевом уровне по крайней мере в течение восьми периодов синхроимпульсов после достижения уровня кол- лекторного питания Vcc = 4,75 В. Если сигнал сброса принимает единичное значение до появления фронта сигнала Ф2, в течение Действия следующего синхроимпульса <PL на адресной шине появ- 251
ляется первый векторный адрес ячейки памяти повторного запуска (FFFE). Ячейка памяти по этому адресу должна содержать старшие 8 бит адреса начала программы, которые затем пересылаются в про- граммный счетчик. Следующая ячейка (FFFF) должна содержать младшие 8 бит этого же адреса, которые пересылаются в программ- ный счетчик (табл. 8.1). NMI (Nonmaskable Inter-rupt— немаскируемое прерывание). Переход на низкий уровень сигнала на этом входе запросов прерыва- ния вызывает последовательность обработки немаскируемого преры- вапия в процессоре. Как и при действии сигнала на входе IRQ, про- цессор заканчивает текущую команду, которая выполнялась до прихода сигнала на вход NMI. Бит маски прерывания в регистре кода состояния не влияет на воздействие NMI. Содержимое индекс- ного регистра, программного счетчика, аккумуляторов, регистра ко- да состояния запоминается в стеке. В конце цикла на адресную ши- ну выдается 16-битовый адрес, указывающий векторный адрес из ячееек памяти FFFC и FFFD. Адрес, хранящийся в этих ячейках, вызывает переход ЦП к программе обработки немаскируемого пре- рывания, хранящейся в памяти. Вход NMI имеет высокое сопротивление, однако для объедине- ния по схеме ИЛИ и оптимального управления прерываниями тре- буется подключение внешнего сопротивления величиной 3 кОм к источнику коллекторного питания. Входы IRQ и NMI исполь- зуются при аппаратурном прерывании и опрашиваются ЦП в те- чение сигнала Ф2, а программа обработки прерывания начинает выполняться в течение сигнала Ф1 по окончании предыдущей команды. Структурная схема алгоритма анализа и обработки векторов пре- рывания микропроцессора приведена на рис. 8.4. Расположение векторов прерывания в памяти показано в табл. 8.1. Регистры микропроцессора. Микропроцессор имеет три 16-би- товых и три 8-битовых программно доступных регистра (рис.8.5). Программный счетчик представляет собой 2-байтовый (16 бит) регистр, указывающий адрес текущей команды программы. Указатель стека представляет собой 2-байтовый регистр, кото- рый содержит адрес последующей ячейки во внешнем стеке. Стек организован как ряд ячеек обычного ЗУПВ, которые могут иметь любой, удобный для работы адрес памяти. Если требуется сохра- нить информацию в стеке при отключении напряжения питания, стек должен обладать этой способностью. Индексный регистр является 2-байтовым регистром, используе- мым для запоминания данных или 16-битового адреса ЗУ при индекс- ном способе адресации к нему. Аккумуляторы. В микропроцессоре имеется два 8-битовых ак- кумулятора, которые служат для хранения операндов и результа- тов вычислений в арифметико-логическом устройстве (АЛУ) Регистр кода состояния отображает признаки результатов вы- 252
Таблица 8.1 Расположение векторов прерывания в памяти Вектор Назначение Старший байт Младший байт FFFE FFFF Повторный запуск FFFC FFFD Немаскируемое прерывание FFFA FFFB Программное прерывание FFF8 FFF9 Прерывание по запросу Рис. 8.4. Структурная схема алгоритма рабе гы ЦП МС6800 253
7 Рис. 8.5. Регистры ЦП МС6800 Рис 8 6 Порядок записи информации о состоянии ЦП 6800 в стек: SP —указатель стека; СС — код состояния (так называемый байт состояния процессора): АССВ — содержимое аккумулятора В\ АССА — содержимое аккумулятора A; JXH — стар- шие 8 бит индексного регистра, IXL — младшие 8 бит индексного регистра, PC Н — стар- шие 8 бит программного счетчика; PCL — младшие 8 бит программного счетчика 254
голнения операций в АЛУ: отрицательный результат (N), нулевой । езультат (Z), переполнение (У), перенос из седьмого бита (С), : эполнительный перенос из третьего бита (//). Эти биты регист- * а состояния используются в качестве условий для команд услов- ного перехода. Четвертый бит является битом маски прерывания (Z). Шестой и седьмой биты регистра состояния не используются. Порядок записи данных о текущем состоянии микропроцессора в стек показан на рис. 8.6. е 2. СПОСОБЫ АДРЕСАЦИИ В микропроцессоре МС6800 используется семь способов адреса- ции, причем способ адресации определяется типом команды и ко- дом операции. Адресация к аккумулятору. При адресации к аккумулятору ука- зывается обозначение аккумулятора А или S. Команды с этим спосо- бом адресации являются однобайтовыми. Непосредственная адресация. При непосредственной адресации операнд содержится во втором байте команды, за исключением ко- манд LDS(LOAD STACK POINTER - ЗАГРУЗИТЬ УКАЗАТЕЛЬ СТЕКА) и LDX (LOAD INDEX REGISTER — ЗАГРУЗИТЬ ИН- ДЕКСНЫЙ РЕГИСТР), в которых операнд содержится во втором и в третьем байтах. Ячейки памяти, в которых хранится этот операнд, адресуются ЦП во время выборки команды с непосредственной ад- ресацией. Команды в этом случае 2- или 3-байтовые. Прямая адресация. При прямой адресации адрес операнда со- держится во втором байте команды. Прямая адресация позволяет пользователю адресовать до 256 байт, т. е. использовать ячейки памяти 0...255. В большинстве микро-ЭВМ для этих целей исполь- зуется ЗУПВ. Вследствие хранения данных в этих ячейках умень- шается время выполнения команды. Эти команды имеют длину 2 байта. Расширенная адресация. При расширенной адресации адрес, содержащийся во втором байте команды, представляет собой стар- шие 8 бит адреса операнда. Третий байт команды содержит млад- шие 8 бит адреса операнда.Это абсолютный адрес памяти. Команды являются 3-байтовыми. Индексная адресация. При индексной адресации адрес, содер- жащийся во втором байте команды, суммируется с содержимым младших 8 битов индексного регистра ЦП. Возникающий перенос затем прибавляется к старшим 8 битам индексного регистра. Ре- зультат используется для адресации памяти. Модифицированный адрес хранится во временном адресном регистре, так что содержи- те индексного регистра нс изменяется. Команды являются 2-байто- вььш. 255
Безадресная адресация. При безадресной адресации адрес оп- ределяется типом команды (это может быть указатель стека, индекс- ный регистр и т. д.). Команды являются однобайтовыми. Относительная адресация. При относительной адресации адрес, содержащийся во втором байте команды, добавляется к 8 младшим битам программного счетчика и прибавляется число 2. Послеэтого перенос или заем добавляется к 8 старшим битам программного счет- чика. Это позволяет пользователю адресовать ячейки в диапазоне от —125 до 4-129 байт ЗУ относительно выполняемой команды. Ко- манды являются 2-байтовыми. J3P-переход к подпрограмме Основная Стек Подпрограмма программа и AJ7=J3R п+1 *8 = смещение н+2 Следующая команда 8-Ситовая дез знаковая величина Основная рп программа п п+1 п+2. п+5 8D=JSR Зн = адрес подпрограммы SL ~адрес подпрограммы Следующая команда PC [NX Указатель стена после выполнения 1-я команда подпрограммы PC 8 Подпрограмма 1-я команда подпрограммы (8 формируется аз З/f и Зс) 08R- переход к подпрограмме Основная программа УС 8О=ОЗЯ смещение п+2 Следующая команда *8 - [-Ситовая величина со знаком Стен Подпрограмма п 256
8.3. СИСТЕМА КОМАНД Система команд ЦП МС6800 состоит из 72 различных команд. Она включает команды двоичной и десятичной арифметики, логи- ческие команды, команды сдвига, циклического сдвига, занесения в регистры, запоминания, условных и безусловных переходов, пре- рывания и команды, выполняющие операции со стеком (табл.8.2...8.6 и рис. 8.7). /МР, переход Основная Основная Расширенная программа мс п П+1 < п+2 R 7E~JMP Наследующий адрес следующий адрес Следующая номанда RTS, возврат из подпрограммы PC 5 Подпрограмма 39~RTS Основная PC программа Следующая " номанда RT/f возврат из прерывания Программа ру прерывания 3 ЗВ=ПП ЗР ЗР ЗР+1 3P+Z ЗР+З ЗР+й ЗР+В ЗР+В ЗР+7 Стен Слово состояния Аннумулятор В Аннумулятор А Внденсный регистр (X#) Индексный регистр (XL) Рн Pl Основная ру программа Следующая л номанда Рис. 8.7. Стек подпрограммы и прерывания (специальные команды из табл. 8.5J 9 Зак. 1088 257
Таблица 82 Система команд микропроцессора М6800 ABA —Add Accumulators ADC—Add with Carry ADD —Add AND — Logical AND ASL—Arithmetic Shift Left ASR— Arithmetic Shift Right BCC—Branch if Carry Clear BCS—Branch if Carry Set BEQ—Branch if Equal to Zero BGE — Branch if Greater than or Equ- al to Zero BGT —Branch if Greater than Zero BHI —Branch if Higher BIT — Bit Test BLE—Branch if Less or Equal BLS—Branch if Lower or Same BLT — Branch if Less than Zero BMI—Branch if Minus BNE — Branch if Not Equal to Zero BPL — Branch if Plus BRA — Branch Always BSR — Branch to Subroutine BVC — Branch if Overflow Clear BVS—Branch if Overflow Set CBA—Compare Accumulators CLC—Clear Carry CLI — Clear Interrupt Mask CLR—Clear CLV—Clear Overflow CMP—Compare COM—Complement CPX —Compare Index Register DAA — Decimal Adjust DEC — Decrement DES —Decrement Stack Pointer DEX —Decrement Index Register EOR—Exclusive OR INC — Increment INS —Increment tack Pointer INX —Increment Index Register Сложить аккумуляторы Сложить с переносом Сложить Логическое И Арифметический сдвиг влево Арифметический сдвиг вправо Перейти по отсутствию переноса Перейти по наличию переноса Перейти, если равно нулю Перейти, если больше или равно нулю Перейти, если больше нуля Перейти, если больше Побитовая проверка Перейти, если меньше или равно ну лю Перейти, если меньше или равно Перейти, если меньше пуля Перейти по отрицательному числу Перейти, если не равно нулю Перейти по положительному числу Перейти при любых условиях Перейти на подпрограмму Перейти по отсутствию переполнения Перейти по наличию переполнения Сравнить аккумуляторы Очистить перенос Очистить маску прерывания Очистить Очистить триггер переполнения Сравнить Образовать обратный код Сравнить с индексным регистром Десятичная коррекция Уменьшить на единицу Уменьшить указатель стека Уменьшить индексный регистр Исключающее ИЛИ Увеличить на единицу Увеличить указатель стека Увеличить индексный регистр 258
Продолженир тлбя Я.2 JMP—Jump JSR—Jump to Subroutine LDA—Load Accumulator LDS—Load Stack Pointer LDX—Load Index Register LSR—Logical Shift Right NEG—Negate NOP —No Operation ORA—Inclusive OR Accumulator PSH—Push Data PUL—Pull Data ROL —Rotate Left ROR—Rotate Right RTI — Return from Interrupt RTS — Return from Subroutine SBA—Subtract Accumulators SBC —Subtract with Carry SEC — Set Carry SEI — Set Interrupt Mask SEV —Set Overflow ST A—Store Accumulator STS —Store Stack Pointer STX —Store Index Register SUB—Subtract SW1 — Software Interrupt TAB—Transfer Accumulators TAP—Transfer Accumulators to Con- dition Code Register TBA— Transfer Accumulators TPA—Transfer Condition Code Regis- ter to Accumulator TST —Test TSX —Transfer Stack Pointer to Index Register TXS —Transfer Index Register to Stack Pointer WAI — Wait for Interrupt Безусловный переход Обращение к подпрограмме Загрузить аккумулятор Загрузить указатель стека Загрузить индексный регистр Логический сдвиг вправо Образовать дополнительный код Нет операции Логическое ИЛИ Занести в стек Извлечь из стека Циклический сдвиг влево Циклический сдвиг вправо Возврат после прерывания Возврат из подпрограммы Вычесть аккумуляторы Вычесть с переносом Установить перенос Установить маску прерывания Установить переполнение Запомнить содержимое аккумулятора Запомнить указатель стека Запомнить индексный регистр Вычесть Программное прерывание Переслать из аккумулятора А в В Переслать из аккумулятора в регистр состояния Переслать из аккумулятора В в А Переслать из регистра состояния в аккумулятор Проверить Переслать из указателя стека в ин- дексный регистр Переслать из индексного регистра в указатель стека Ждать прерывание 9* 259
° Команды с обращением к памяти и аккумуляторам Адресация Операции Мнемо- непосред- прямая индекс код ственная ная OP~# ОР_# OP-# Сложить ADDA 8B 2 2 9В 3 2 АВ 5 2 ADDB СВ 2 2 DB3 2 ЕВ 5 2 Сложить аккумулято- АВА ры Сложить с переносом ADCA 89 2 2 99 3 2 А9 5 2 ADCB С9 2 2 D9 3 2 Е9 5 2 Логическое И ANDA 84 2 2 94 3 2 А4 5 2 ANDB С4 2 2 D4 3 2 Е4 о 2 Побитовая проверка BITA 85 2 2 95 3 2 А5 5 2 BITB С5 2 2 D5 3 2 Е5 5 2 Очистить CLR 6F 7 2 CLRA CLRB Сравнить СМСА 81 2 2 91 3 2 AI 5 2 СМРВ С1 2 2 D1 3 2 EI 5 2 Сравнить аккумулято- СВА ры Образовать обратный СОМ 63 7 2 код СОМА COMB Образовать дополни- NEG 60 7 2 тельный код NEGA NEGB Десятичная коррек- DAA ция, А
Таблица 8.3 Регистр кода расши- безад- Мнемоника выполнения состояния ренная ресна я (все наименования регистров обозначают их содержимое) 5 4 : 3 2 10 OP-# ОР_# Н 1 1 V Z V C ВВ4 3 А + М-А 1 1 i : i t FB 4 3 В+М-»В t 1 j t t t /В * 1 А+В->А t t t t t В9 4 3 А + М+С-»А t t I t F9 4 3 В + М+С-»В t : Illi В4 4 3 А-М-.А I R F4 4 3 В-М-^В I R В5 4 3 А*М I R F5 4 3 В.м I R 7F 6 3 00-М f S RR 4F 2 1 00->А R S R R 5F 2 1 00—В R S R R BI 4 3 А—М t : t t FI 4 3 В—м t t t t И 2 1 А —В ин 73 6 3 М-М t t R S 43 2 1 А—А t t R S 53 2 1 В-В t t R S 70 6 3 00—М-М [ t 1 2 40 2 1 00— А— А t t 1 2 50 2 1 00— В-В i J 1 2 19 2 1 Преобразование двоичной суммы i t i 3 двоично-десятичных символов в двоично-десятичный код
Уменьшить на едини- DEC 6A 7 2 7A 6 3 цу DECA DECB Исключающее ИЛИ EORA 88 2 2 98 3 2 A8 5 2 B8 4 3 EORB C8 2 2 D8 3 2 E8 5 2 F8 4 3 Увеличить на единицу INC 6C 7 2 7C 6 3 INCA INCB Загрузить аккумуля- LDAA 86 2 2 96 3 2 A6 5 2 B6 4 3 тор LDAB C6 2 2 D6 3 2 E6 5 2 F6 4 3 Логическое ИЛИ ORAA 8A 2 2 9A 3 2 AA5 2 BA4 3 GRAB CA 2 2 DA3 2 EA 5 2 FA 4 3 Занести в стек PSHA PSHB Извлечь из стека PULA PULB Циклический сдвиг ROL 69 7 2 79 6 3 влево ROLA ROLB Циклический сдвиг ROR 66 7 2 76 6 3 вправо RORA RORB Арифметический сдвиг ASL 68 7 2 78 6 3 влево ASLA ASL В Арифметический сдвиг ASR 67 7 2 77 6 3 вправо ASRA ю ASR В «А
4А 5А 4С 5С 36 37 32 33 49 59 46 56 48 58 47 57 2 1 2 1 2 1 2 1 4 1 4 1 4 1 4 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 М — 1->М А — 1-А В — 1-»В АфМ-А ВфМ—>В М+1-М А-Н-+А В+1->В М—>А М—В А + М->А В + М-^В A->MSP, SP - 1 -SP В—MSP, SP—l-SP SP-4-l->SP, MSP—A SP4-1->SP, MSP->B M 1 A 1 В J M ) A } В J M ) A } В J M ) A 1 В J l~£] ШТГГТГН-1 C b7 bO C b7 bo n * m.i j 1111 c b7 bO bO — □ 77 I I t t t t t t 1 i 4 1 4 4 R R :: 5 :: 5 :: 5 :: R R R t R J6 t t 6 J : 6 j
Продолжение табл. 8.3 Операции Мнемо- код Адресация Мнемоника выполнения (все наименования регистров обозначают их содержимое) Регистр кода состояния непос- редствен- ная прямая индекс- ная расши- ренная безад- ресная 5 4 3 2 10 ОР~4* ОР ОР — # Н / N Л V с Логический сдвиг вправо Запомнить содержи- мое аккумулятора Вычесть Вычесть аккумулято- ры Вычесть с переносом Обмен содержимым аккумуляторов Проверить, нуль или отрицательное число Условные обозначения: ОР —код операции ~ —число циклов ЦП # —число байтов + —плюс арифметиче — —минус арифметич - —логическое И MSP—содержимое яч< LSR LSRA LSRB STAA STAB SUBA SUBB SBA ЪВСА SBCB TAB ТВА TST TSTA TSTB [ СК ИЙ еский ’ЙКИ П: 80 2 2 СО 2 2 82 2 2 С2 2 2 + Ф М 0* 00 амяти, 97 4 2 D7 4 2 90 3 2 D0 3 2 92 3 2 D2 3 2 — логи — ИСКЛ — инве — пере — нуле — нуле 64 7 2 А7 6 2 Е7 6 АО 5 2 Е0 5 2 А2 5 2 Е2 5 2 6D 7 2 ческое V ючающе< рсия М сылка в вой бит вой бай! 74 6 3 В7 5 3 F7 5 3 ВО 4 3 F0 4 3 В2 4 3 F2 4 3 7D 6 3 (ЛИ г ИЛИ указываемой указателем стека Примечание. Команды с адресацией к аккумуляторам М 1 о-а. R 1 ' 6 l 44 2 1 А [ Ь7 4-Ы । । и □ Н? С R ' 6 I 54 2 1 В J • R k 6 t А-»М 1 : R В-М 1 : R А —М->А 1 : : I r В —М-»В 1 : t t 10 2 1 А —В->А I : t t Г О 1 >А t t I t в — м — с—в i t 16 2 1 А->В t : R 17 2 1 В->А : R М—00 l R R 4D 2 1 А— 00 J R R 5D 2 1 В— 00 t R R Символы кодов состояния: Н— дополнительный перенос из четвертого разряда (бит 3) /—маска прерывания N—отрицательный результат (знаковый разряд) Z — нулевой (байт) V—переполнение, признак дополнительного кода С — перенос из 8 разряда (бит 7) R—сброс S—установка J —проверяется и устанавливается, если, истинно, в противном случае сбрасывается вынесены в колонку безадресных команд.
Команды упоавления стеком и индексным регистром Операции Мнемо- код Адресация непо- средст- венная прямая индекс- ная расши- ренная ОР~# ОР~# ОР ~ # ОР ~ Сравнить с регистром Уменьшить регистр Уменьшить стека Увеличить регистр Увеличить стека индексным индексный указатель индексный указатель СРХ DEX DES INX INS 8С 3 3 9С 4 2 АС 6 2 ВС 5 31 Загрузить регистр индексный LDX СЕ 3 3 DE4 2 ЕЕ 6 2 FE 5 3 Загрузить стека указатель LDS 8Е 3 3 9Е 4 2 АЕ 6 2 BE 5 3 Запомнить индексный STX DF 5 2 EF 7 2 FF 6 3 pci Запомнить указатель стека Переслать из индекс- ного регистра в указа- тель стека Переслать из указа- теля стека в индекс- ный регистр STS TXS TSX 9F 5 2 AF 7 2 BF6 3 1
Таблица 8.4 Мнемоника выполнения Регистр кода состоя- ния безад- ресная 5 4 3 2 I 0 ОР H / Л/ Z V c Хн-м, XL-(M+1) 7 I 8 09 4 1 Х-1-Х t. 34 4 1 SP—1—SP 08 4 1 X+l-X 4 31 4 1 SP-H-SP M->XH, (M+1)-XL 9 t R (M-j-1)—>SPL 9 t R XH_M, XL->(M + 1) 9 t R sph-*m, SPL-(M+1) 9 1 R 35 4 1 X —1—>SP 30 4 1 SP+l^X 1
Операции Мн емокод относи- тельная Адресация индексная расширен- ная OP — # op ~ # op - # Перейти при любых условиях BRA 20 4 2 Перейти по отсутст- вию переноса вес 24 4 2 Перейти по наличию переноса BCS 25 4 2 Перейти, если равно нулю BEQ 27 4 2 Перейти, если больше или равно нулю BGE 2C 4 2 Перейти, если больше нуля BGT 2E 4 2 Перейти, если больше НУЛЯ BHI 22 4 2 Перейти, если меньше или равно нулю BLE 2F 4 2 Перейти, если меньше или равно нулю BLS 23 4 2 i 1 Перейти, если меньше нуля BLT 2D 4 2 Перейти по отрица- тельному числу BMI 2B 4 2 1 i
безядре - на я Проверяемое условие перехода Регистр кода сос- тояния 5 4 3 2 10 ОР*~ # Н I N Z V Не проверяются C = 0 С=1 Z=1 N®V = 0 Z + (N®V)==0 C + Z = 0 Z + (W®V)=1 C + Z=l N®V=1 N=1
Перейти, если не рав- но нулю BNE 26 4 2 Перейти по отсутст- вию переполнения BVC 28 4 2 Перейти по наличию переполнения BVS 29 4 2 Пеоейти по положи- тельному числу BPL 2А 4 2 Перейти на подпро- грамму BSR 8D 8 2 Безусловный переход JMP 6Е 4 2 Обращение к подпро- грамме JSR AD 8 2 Нет операции NOP Возврат после преры- вания RTI Возврат из подпро- граммы RTS Программное преры- вание SWI Ожидать прерывание WAI
Z=o v=o V = 1 N = 0 Смотри специальные команды ТЕ 3 3 То же BD 9 3 01 2 1 Увеличивается только програм- ный счетчик ЗВ 10 1 < 10 39 5 1 Смотри специальные команды 3F 12 1 » » » ЗЕ 9 1 » > » И
Таблица 8.6 Команды управления регистром кода состояния Операции Мнемокод Безадрес- ная Мнемоника Регистр кода состояния 5 4 3 2 1 0 ОР - # Н I N Z V С Очистить перенос Очистить маску прерывания Очистить переполнение Установить перенос Установить маску прерывания Установить переполнение Переслать из аккумулятора в регистр состояния Переслать из регистра состоя- ния в аккумулятор CLC CLI CLV SEC SEI SEV ТАР ТРА ОС 2 1 0Е 2 1 0А 2 1 0D 2 1 0F 2 1 0В 2 1 06 2 1 07 2 1 0->С 0-И 0->V 1->С 1-1 1-*V A->CCR CCR->A R R R S S S * 12 ► Описание назначения разрядов регистра кода состояния и условий их установки в табл. 8 3—8.6 (Бит устанавливается в единицу, если проверяемое условие истинно, и сбрасывается в противном случае) 1 (Бит V) 2 (Бит С) 3 (Бит С) 4 (Бит V) 5 (Бит V) 6 (Бит V) 7 (Бит N) 8 (Бит N) 9 (Бит N) 10 (Все) 11 (Бит I) 12 (Все) Проверка: Результат = 10000000? Проверка: Результат=00000000? Проверка: Десятичное значение старшего символа двоично- десятичного кода больше девяти? (не сбрасывается, если был предварительно установлен) Проверка: Операнд = 10000000 перед выполнением коман- ды? Проверка: Операнд=0111111J перед выполнением коман- ды? Устанавливается равным N фС после выполнения сдвига Проверка: Знаковый разряд старшего байта=1? Проверка: Имеется ли переполнение в дополнительном ко- де при вычитании старшего байта? Проверка: Результат меньше нуля? (15-й бит=1). Загрузить регистр состояния из стека (смотри специальные команды) Устанавливается, когда возникает прерывание. Если пред- варительно был установлен, требуется немаскируемое пре- рывание для выхода из состояния ожидания Устанавливается в соответствии с содержимым аккумуля- тора 8.4. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ Сложение и вычитание. В большинстве микропроцессорных сис- тем для выполнения действий над числами, содержащими больше од- ного байта, арифметические команды объединяются в подпрограммы. Если используется более чем одна система счисления, то подпрограм- ма должна быть записана для каждой из них, а в некоторых слу- чаях можно использовать подпрограммы преобразования систем счисления. В большинстве случаев удобнее писать программу для 2£6
каждой системы счисления, т. е., например, для шестнадцатерично- го умножения вместо двоично-десятичного и т. д. В этом разделе рассмотрено несколько алгоритмов с характерными примерами, по- казывающими их выполнение на основе системы команд микропро- цессора МС6800. Основными арифметическими операциями являются двоичное сложение и вычитание, программы для которых имеют вид: ALPHA-f- BETA = GAMMA ALPHA— BETA= GAMMA LDAA ALPHA LDAA ALPHA ADDA BETA SUBA BETA STAA GAMMA STAA GAMMA Эти операции являются настолько короткими, что они обычно включаются непосредственно в тело основной программы. Сложение двоично-десятичных байтов требует на одну команду больше — ис- пользуется команда DAA (ДЕСЯТИЧНАЯ КОРРЕКЦИЯ), следую- щая обычно после команд ADD, ADC или АВА и используемая для преобразования двоичного числа» полученного в аккумуляторе Д, в двоично-десятичное число. Программа имеет вид LDAA ALPHA ADDA BETA DAA STAA GAMMA и иллюстрируется примером 0111 — аккуму- лятор А Перенос X X Аккумуля- тор А 67 + 79 перенос оно ОН1 10О1 — память 0 I4& О то 0000 — аккуму- лятор* А Двоичный резуль- тат 46 1 0100 оно — аккуму- лятор А После выполнения команды DAA; бит переноса также устанавливается по двоично-дес я тичному переносу. Процедура вычитания двоично-десятичных чисел не является столь тривиальной; для образования разности можно использовать десятичный дополнительный код. Нижеприведенная программа еы- полняет вычитание двух двухразрядных двоично-десятичных чисел: LDAA # $ 99 SUBA ВЕТА SEC ADCA ALPHA DAA STAA GAMMA (загрузка в аккумулятор /1 числа 99) (99—ВЕТА)=АССА (вычитание из аккумулято- ра А ВЕТА и сохранение результата в аккумуля- торе А) ПЕРЕНОСА ACCA+ALPHA-bC=ACCA (содержимое акку- мулятора складывается с ALPHA и с переносом) десятичная коррекция (вычитается число 100) ALPHA—ВЕТА = GAMMA (запоминается резуль- тат в ячейке GAMMA). 267
Программа реализует .алгоритм, основанный на следующих ра- венствах: ALPHA — BETA =GAMMA ALPHA + (99-BETA) —99 = GAMMA ALPHA + (99—BETA+1)—100 = =GAMMA дополнительный до 9 код BETA дополнительный до 10 код ВЕТА Единица прибавляется к дополнительному до 9 коду вычитае- мого ВЕТА установкой бита переноса с тем, чтобы образовать до- полнительный до 10 код числа ВЕТА, которое затем складывается с уменьшаемым ALPHA и накапливается в аккумуляторе АССА, Команда DAA преобразует результат в аккумуляторе в двоично- десятичный код перед запоминанием разности в ячейке GAMMA. Так как для нахождения десятичного дополнительного кода число 100 (99 + 1) прибавлялось к вычитаемому, то теперь его необхо- димо вычесть. Эта процедура и осуществляется командой DAA, пос- ле чего результирующий перенос сбрасывается. При выполнении операций с повышенной точностью для хранения данных и результатов необходимо больше одного байта памяти. Простейшими программами вычислений с повышенной точностью являются программы сложения и вычитания 16-битовых двоичных чисел в прямом или дополнительном кодах. Эти вычисления часто называют вычислениями с удвоенной точностью, так как необходи- мо запоминать 16 бит, т. е. 2 байта. Программы, приведенные в табл. 8.7, иллюстрируют эти вычис- ления. Счет и формирование задержки. При проектировании микропро- цессорной системы для замены обычных логических узлов возникают естественные вопросы: как программно организовать триггер, счет- чик, сдвиговый регистр, одновибратор? Ответы на эти вопросы сво- Таблица 8.7 Пример программ вычислений с удвоенной точностью LDAA LDAB ADDA ADCB STAA STAB ALPHA+ 1 ALPHA BETA + 1 BETA GAMMA +1 GAMMA LDAA ALPHA +1 LDAB ALPHA SUBA BETA +1 SBCB BETA STAA GAMMA +1 STAB GAMMA Сложение младших байтов Сложение старших байтов и переноса из суммы младших Вычитание младших байтов Вычитание старших байтов и заема из разности младших 268
дятся к одному из следующих двух типов: 1) должно быть опреде- лено (подсчитано) количество тактов до определенного события; 2) перед выполнением некоторого действия должен быть измерен или сформирован отдельный временной интервал. Для случаев, когда требуется счетчик удвоенной длины (16 бит или 65536 в десятичном коде), используется индексный регистр и пол- ный набор дополнительных команд. Если одновременно требуется более одного счетчика двойной длины, то может быть применена короткая программа, которая позволяет использовать две соседние ячейки ЗУПВ как 16-битовый счетчик: INC N-Н —Увеличить содержимое ячейки памяти (N4-1) на 1 BNE CNTNUE— Если результат не равен 0, то продолжать, начи- ная с ячейки CNTNUE INC N —Увеличить содержимое ячейки N на 1 CNTNUE XXX ХХХХ —Следующая команда программы. Эта программа увеличивает содержимое 16-битового слова, рас- положенного в ячейках памяти N и N + 1. Простейшая процедура для уменьшения 16-битового слова имеет вид TS1 BNE DEC NEXT DEC N + I Содержимое ячейки памяти N4-1 =0? NEXT Нет, перейти на метку NEXT N Да, уменьшить содержимое N N-j-l Уменьшить содержимое N + 1 Кроме использования в качестве счетчиков двойной длины, эти программы могут быть применены для модификации адресов воз- врата. Во время выполнения подпрограмм или программ обработки прерываний адрес возврата, представляющий собой содержимое программного счетчика, запоминается в стеке, размещенном в ЗУПВ. Рассмотренные программы могут использоваться для из- менения содержимого программного счетчика, хранящегося в стеке, и таким образом осуществлять возврат из подпрограммы или после- довательности обработки прерывания в любую ячейку основной программы. Для этих же целей можно использовать индексный регистр и аккумулятор, когда один из них выполняет функции счетчика. Пусть необходимо записать данные от периферийного устройства в память ЦП через адаптер внешнего интерфейса (PIA) МС6820. Внеш- нее устройство информирует ЦП о готовности данных установкой флажка в 7-м бите регистра управления адаптера PIA. Всякий раз, когда флажок устанавливается, ЦП принимает данные из регистра данных адаптера Р1А и запоминает их в ячейке внутренней памяти до тех пор, пока не накопятся все 8 байт. Так как регистр данных и регистр управления выбираются подобно ЗУПВ, требуется про- грамма, которая позволяла бы ЦП управлять одной ячейкой памяти Для изменения бита флажка, а затем выбирать данные из другой ячейки. Эта последовательность повторяется 8 раз. 269
Таблица 8.8 Пример программы приема данных от периферийного устройства LDAB # 08 Занести число байтов в дополнительном коде в АССВ (счетчик числа байтов) LOOP1 BITB PIACRA Проверить, установлен ли флажок BPL LOOPI Если нет, то возвратиться к началу цик- ла и проверить флажок снова LDAA PSHA INCB PIADRA Да. Выбрать байт Занести байт в стек Восемь байтов выбрано? BNE LOOPI Нет. Перейти к ожиданию следующего байта XXX XXX Да. Продолжение программы В последовательности команд, указанных в табл. 8.8, исполь- зуется единственный регистр (аккумулятор В) как для счета, так и для управления. Эта программа использует то обстоятельство, что увеличение содержимого аккумулятора, равного FF, приводит к его сбросу в 0. Требуемое число байтов заносится ьАССВ в дополнительном ко- де. Поэтому при сбросе АССВ его знаковый (7-й) бит обозначает положительное число, а так как команда BIT не влияет на содер- жимое АССВ, но изменяет содержимое регистра состояния, сле- дующая команда BPL (BRANCH ON PLUS — ПЕРЕЙТИ ПО ПО- ЛОЖИТЕЛЬНОМУ ЧИСЛУ) может быть использована для управ- ления битом флажка. Как только 7 -й бит регистра управления уста- навливается в единичное состояние, условие проверки в команде BPL выполняется и ЦП выбирает текущий байт данных путем чте- ния регистра данных (PIADRA) и затем засылает байт в ячейку стека в ЗУПВ. Структура Р1А такова,что флажок очищается авто- матически операцией LDAA PIADRA. Число байтов затем «умень- шается» увеличением содержимого АССВ и осуществляется провер- ка по команде BNE (BRANCH ON NOT EQUAL ZERO - ПЕРЕЙ- ТИ, ЕСЛИ HE РАВНО НУЛЮ). До тех пор пока не будут переда- ны все 8 байт, выполняется возврат в начало цикла и ожидание сле- дующего байта данных. Если текущий байт был восьмым, то коман- да INCB вызывает установку АССВ в 0, условие перехода не выпол- няется и программа переходит к следующей команде. Другие коман- ды проверки TST, СМР и СВА также могут использоваться для этих целей, так как они изменяют биты кода состояния, не изменяя со- держимого регистров. Следует отметить, что при этом нет необходи- мости в пересылке содержимого регистра управления в ЦП для про- верки флажка. Задержка может быть сформирована различными способами. Ти- пичная программа приведена ниже: LDAA 32 Требует 4 цикла для выполнения LOOPI DECA (2 цикла) BNE '4 цикла) 270
В этом примере ЦП возвращается 32 раза к метке, поэтому общая задержка при времени цикла ЦП, равном 1 мкс, составляет 4 + 32(2 + 4) = 196 мкс. 8,5. ИНТЕРФЕЙС ШИН ПЗУ И ЗУПВ Интерфейс шин ПЗУ. Простоту интерфейса системы М6800 мож- но оценить по интерфейсу шин ПЗУ, показанному на рис. 8.8. Так как все составляющие микрошины работают на уровнях ТТЛ с оди- наковыми параметрами, тошины данных, адреса и управления могут быть подключены непосредственно без буферных устройств. Время синхронизации памяти выбирается так, чтобы обеспечить простоту функционирования при полном использовании быстродействия про- цессора. Входы выборки (CS) микросхемы МСМ6830 могут использовать- ся для частичной дешифрации адресной шины системы. В малых и средних системах эта частичная дешифрация адреса может быть достаточна для различения всех микросхем системы без использо- вания дополнительных схем дешифрации адреса. Интерфейс шин ЗУПВ (рис. 8.9) выполняется аналогично интер- фейсу шин ПЗУ. Все необходимые выходы могут быть соединены непосредственно без формирующих каскадов. Четыре инверсных (CS) и два прямых (CS) сигнала выборки МСМ6810 используются At— Ai Аг — Аг А^Аз Аь — Ai, Ав — As A*j Aq данных Адресная шина Шина управления f‘5— +5Я-+5Я-- ±_JL ---- Ag — Ag OS An- CS Af4~ CS Рис 8 8. Интерфейс шин ПЗУ /024* 8 Матрица ПЗУ Aq ~ Аа — 271
Шина Адресная Шина данных шина управления Рис. 8 9. Интерфейс шин ЗУПВ для осуществления частичной дешифрации адреса в системе. В этой системе дешифрирование адреса достаточно для раздельной выбор- ки микросхем ЗУПВ. 8.6. ввод — вывод Принципы организации системы М6800. Принципы организации ввода—вывода для данной микро-ЭВМ определяют необходимые сиг- налы управления и состав аппаратуры сопряжения, степень выпол- нения функций контроллера ввода—вывода самим процессором и объем программного обеспечения, необходимый для обмена данными с устройствами ввода—вывода. При разработке системы М6800 внимание фирмы Motorola кон- центрировалось на структуре микрошины, для которой характерно, что для выборки и памяти и устройств интерфейса ввода—вывода используется одно и то же множество адресов. Каждое интерфейс- ное устройство индивидуально программируется для обеспечения организации ввода—вывода. Оно генерирует и принимает все сигна- лы управления вводом—выводом. Программирование осуществляет- ся управляющими словами, передаваемыми по шине системы. В ре- зультате этого уменьшается доля аппаратурного управления, тре- буемого для системных шин, и вместе с тем появляется простота и общность программирования ввода—вывода. 2*2
Адаптер внешнего интерфейса (PIA) МС6820 является универ- сальным средством сопряжения внешних устройств с ЦП МС6800. Сопряжение осуществляется с помощью двух 8-битовых двунаправ- ленных шин данных внешних устройств и четырех линий управле- ния. Для обеспечения связи с большинством внешних устройств не требуется дополнительных логических схем. функциональная конфигурация адаптера внешнего интерфейса задается программно ЦП во время установки системы в исходное состояние. Каждая из линий шин данных внешних устройств может быть запрограммирована на прием или передачу, и каждая из четы- рех линий управления/прерывания может быть запрограммирована для одного из нескольких режимов управления. Это обеспечивает высокую степень гибкости функционирования интерфейса. Основные характеристики адаптера PIA следующие: — 8-битовая двунаправленная шина данных для связи с микро- процессором; — две двунаправленные 8-битовые шины для сопряжения с внеш- ними устройствами; — два программно доступных регистра управления; — два программно доступных регистра направления данных; — четыре отдельные линии управления прерыванием: две из них используются для выходных сигналов управления внешними устрой- ствами; — совместимые логические схемы установления обмена при при- еме и передаче данных; — трехстабильные с высоким входным сопротивлением линии периферийных устройств, непосредственно управляющие транзис- торами; — программно управляемое прерывание с возможностью маски- рования; — совместимые с К-МОП уровнями линии внешних устройств. Сопряжение шин адаптера внешнего интерфейса. Адаптер внеш- него интерфейса в системе М6800 соединяется с внешними устройст- вами 16-битовой внешней шиной и четырьмя линиями управления. Обычно биты ввода-вывода представляются как два слова по 8 бит каждое, но каждый бит является индивидуально программируемым на ввод или вывод данных. Все режимы работы интерфейса записы- ваются из ЦП в регистры направления передачи данных и управле- ния Р1А, Это, как правило, происходит во время сброса, но допус- кается и в любое другое время. При предыдущем рассмотрении организации шин системы не было упомянуто о линиях управления вводом—выводом (это нисколько не отразилось на их рассмотрении). Все устройства, связанные с про- цессором, имеют такой же интерфейс, как и память. Это основное свойство микрошины. Интерфейс PIA показан на рис. 8.10. Линии выборки регистра(/?50 и служат той же цели, что и линии ад- реса памяти. По этой причине они в стандартном режиме непосред- ственно подсоединены к соответствующим линиям адресной шины 273
системы (младшим разрядом). Входы выборки микросхемы исполь- зуются, как и ранее, для частичного декодирования адреса. В этой системе для распознавания микросхем сопряжения не требуется дру- гих дешифраторов. На рис. 8.10 показаны и другие линии интерфейса адаптера, ко- торые не использовались в интерфейсе ЗУ. Линия УМА использует- ся для защиты устройства от ложной операции чтения в течение машинного цикла, не содержащего обращения к памяти. Это необхо- димо, так как операция чтения может изменить состояние адаптера внешнего интерфейса. Выходы IRQA и IRQB адаптера подключают- ся по схеме ИЛИ к системной линии IRQ. Это соединение необходи- мо для инициации программы обработки прерываний, а распозна- вание сигналов прерываний по любой из линий управления осущест. вляет адаптер. На линию IRQ будет выдан низкий уровень от адапте- ра после получения запроса по любой из линий управления, которые сыделены для системного прерывания. Линия IRQ находится в ну- левом состоянии в течение всего времени обработки прерывания. Поэтому прерывание не теряется, даже если установлена маска пре- рываний в процессоре. Наконец, сигнал на линии RESET (СБРОС) используется для начальной установки интерфейса. Выводы адаптера внешнего интерфейса для обмена с микропро- цессором. Сопряжение адаптера с ЦП МС6800 осуществляется с помощью 8-битовой двунаправленной шины данных, трех линий вы- борки микросхемы (CS), двух линий выборки регистров (RS), двух линий запроса прерывания (IRQ), линии записи/чтения (R/W), ли- нии разрешения (Е) и линии сброса (RESET). Сигналы на этих ли- Pz~J)z Шина управления ^s'ZZ - В7 Шу _ Ад~РЗд' * Шина Адресная данных шина Регистр управления А Регистр управления В Данные 0 Регистр направления В WMA-fy-d'A Tpn/IRQA 2^2 +58—+5B' Данные A Регистр направления A ----С А/ Управление —СА» направле - 1 наем А (A Cent не Is) РА0 л ZZPAz ^РА5 ра7 Рдо P8Z Интерфейс данных на- правления А PS7 Интерфейс данных на- правления 0 Управление .002 \ направле- вд7 J наем в (8 Centrals) Рис. 8.10. Интерфейс шин адаптера внешнего интерфейса 274
ниях вместе с сигналом на линии VMA ЦП МС6800 позволяют мик- ропроцессору полностью управлять работой адаптера PIA. Сигнал на линии VMA может использоваться для стробирования входных сигналов адаптера периферийных устройств. Двунаправленная шина данных (D0...D7) используется для пере- дачи информации между микропроцессором и адаптером. Выходные формирователи шины данных являются приборами с тремя состоя- ниями, они находятся в выключенном состоянии (высокое входное сопротивление) при выполнении всех операций, кроме операций считывания. Когда адаптер PIA выбран для считывания, линия за- писи/чтения R/W находится в состоянии СЧИТЫВАНИЕ (высокий уровень). Е (PIA Enable — разрешение адаптера). Вход разрешения Е используется для подачи сигналов синхронизации адаптера PIA. Временное положение всех других сигналов определяется по отно- шению к фронту и спаду импульса на входе Е. Этот сигнал форми- руется из синхроимпульса Ф2 ЦП МС6800. Импульс на входе Е используется для опроса линий прерыва- ния/управления CAly CA2t CBlt СВ2. Когда линии используются как входные, то для установления флажка прерывания по крайней мере один импульс на входе Е должен оказаться между фронтом и спадом сигнала на этих линиях. R/W (Read/Write Pl А — запись! чтение). Сигнал на этот вход подается из ЦП для указания направления передачи информа- ции по шине данных. Нулевое состояние линии R/W разрешает прием сигнала во входные буферы, и данные передаются от ЦП к адаптеру PIA по сигналу на входе Е при условии, что устройство выбрано. Высокий уровень по линии записи/чтения переводит адап- тер PIA в состояние передачи данных на шину. Выходные буферы PIA готовы к передаче, если имеется соответствующий адрес и сигнал на входе разрешения Е. _______ RESET (Сброс). Активный низкий уровень линии RESET ис- пользуется для сброса всех битов регистров Р1А в нулевое состояние (низкий уровень). Эта линия используется для сброса при аварии питания или для общего сброса при работе системы. CS0, CSr и CS2 (PIA Chip Select — выборка микросхемы адаптера). Сигналы на этих трех входах используются для выборки адаптера PIA. Чтобы выбрать микросхему, сигналы на входах C\S0 и CSX должны находиться в единичном состоянии, а на входе CS2 — в нулевом состоянии. Передача данных происходит под действием управляющих сигналов на входах разрешения Е и записи/чтения WIR. На линиях выборки микросхемы должен поддерживаться не- изменный потенциал в течение действия импульса на входе разре- шения Е. RSq, RSi (PIA Register Select — выборка регистра адаптера). Для выборки регистров в адаптере PIA используются два входа вы- борки регистров. Эти входы вместе с внутренними регистрами уп- 275
равления используются при выборке отдельного регистра для записи или для чтения На входах выборки регистров должен поддерживаться неизмен- ный потенциал в течение действия импульса на входе Е в цикле чте- ния или записи. IRQA, IRQB (Interrupt Request — запрос прерывания). Актив- ный низкий уровень на выходах IRQA и IRQB обеспечивает переда- чу сигнала прерывания в ЦП непосредственно или через устройство приоритетных прерываний. Эти выходы имеют открытые коллекторы (не нагружающие микросхему) и потребляют ток 1,6 мА от внешнего источника. Это позволяет все линии запроса прерывания объединить по схеме ИЛИ. Каждая линия запроса прерывания имеет два бита внутреннего флажка прерывания, которые вызывают переход в состояние низко- го потенциала линии запроса прерывания. Каждый бит флажка свя- зан с отдельной линией прерывания внешнего устройства. Кроме того, 4 бита разрешения прерывания, находящиеся в адаптере, мо- гут использоваться для запрета отдельных прерываний от внешних устройств. Обслуживание прерывания может быть выполнено программой, которая на основе приоритета прерывания последовательно считы- вает и проверяет содержимое двух регистров управления в каждом адаптере для обнаружения установленных флажков прерывания. Флажок прерывания сбрасывается в результате чтения ЦП дан- ,ных с периферийных устройств. Шины связи адаптера с периферийными устройствами. Адаптер имеет две 8-битовые двунаправленные шины данных и четыре линии прерывания/управления для сопряжения с внешними устройствами. Шина данных внешнего устройства направления А(Л40...Л47). Каждая из линий шины данных внешнего устройства может быть запрограммирована для работы на прием или передачу. Это дости- гается установкой в единицу для выходных линий соответствующе- го бита регистра направления данных. Нуль в бите регистра направ- ления данных означает, что соответствующая линия шины данных внешних устройств является входной. При выполнении операции чте- ния данных из внешнего устройства в ЦП периферийные линии ши- ны данных программируются на прием и данные поступают непосред- ственно на соответствующие линии шины данных ЦП. В режиме при- ема эта линия имеет сопротивление, эквивалентное максимальному значению одной стандартной ТТЛ-нагрузки. Данные с выхода регистра А появляются на линиях шины данных, когда они запрограммированы как выходные. Логическая единица, записанная в регистре, соответствует высокому уровню на соответ- ствующей линии шины данных, а нуль — низкому уровню. Данные с выхода регистра А могут быть прочитаны ЦП с помощью операции чтения периферийных данных А, когда соответствующие линии ши- ны программируются как выходные. Для правильного чтения необ- 276
ходимо,чтобы напряжение на линиях внешней шины данных было больше 2 В для логической единицы и меньше 0,8 В для логического нуля. Если нагрузить выходные линии так, чтобы напряжение на них не достигало номинального значения, то это может привести к тому, что данные, принятые ЦП, будут отличаться от содержимого соответствующих битов регистра А. Шина данных внешнего устройства направления В (PBQ...PB,]). Линии шины данных внешнего устройства направления В адаптера могут программироваться на прием или передачу аналогично линиям РЛ0.«. РАГ Однако выходные формирователи, управляющие этими линиями, отличаются от формирователей, управляющих линиями /Мо... РЛ7. Они выполнены по схеме с тремя состояниями и могут находиться в состоянии высокого сопротивления, когда линии дан- ных внешнего устройства работают на прием. Кроме того, данные с внешних линий данных РВ9...РВЪ запро- граммированных на передачу, считываются правильно, если даже уровень напряжения будет ниже 2В для логической единицы. Как выходные эти шины совместимы по уровням со стандартной ТТЛ и могут использоваться как источник тока 1 мА при напряже- нии 1,5 В для непосредственного управления базой транзисторного ключа. САХ и CBi (Interrupt Input — вход прерывания). Линии САГ и СВХ являются только входными и используются для установки флаж- ков прерывания регистров управления. Управляющий переход этих сигналов также программируется с помощью двух регистров управ- ления. СА2 (Peripheries Control — периферийное управление). Линия СЛ 2может программироваться для работы как вход прерывания или как выход управления внешним устройством. При использовании в качестве выходной линия согласуется со стандартной ТТЛ, при ра- боте в качестве входной она имеет внутреннее сопротивление, соот- ветствующее одной стандартной ТТЛ-нагрузке. Состояние этой сиг- нальной линии программируется регистром управления Л. СВ2 (Peripherial Control — периферийное управление). Линия СВ2 может также программироваться как вход прерывания или как выход управления внешним устройством. Как входная эта линия имеет высокое входное сопротивление и совместима со стандартной ТТЛ-нагрузкой по уровням. Как выходная она согласуется со стан- дартной ТТЛ-нагрузкой и может также использоваться как источ- ник тока 1 мА при напряжении 1,5В, обеспечивая непосредственное управление базой транзисторного ключа. Состояние этой шины про- граммируется регистром управления В. Внутреннее управление. Шесть регистров адаптера являются доступными для шины данных ЦП: два регистра данных периферий- ных устройств, два регистра направления передачи данных и два регистра управления. Выборка регистров осуществляется сигналами на входах /?50 и AJSt совместно со вторым битом регистра управле- ния, как показано в табл. 8.9. 277
Внутренняя адресация Таблица 8.9 RS. Бит регистра управления Выбираемая ячейка CRA-i [ CRB-2 0 0 1 X Регистр данных А 0 0 0 X Регистр направления пе- редачи данных А 0 1 X X Регистр управления А 1 0 X 1 Регистр данных В 1 0 X 0 Регистр направления пе- редачи данных В 1 1 X X Регистр управления В Х = Произвольно Установка в начальное состояние. Низкий уровень на линии сбро- са устанавливает в нуль все регистры адаптера PIA. Поэтому сигна- лу линии PAq.'.PA^ PBJ...PB1, СА2 и СВ2 устанавливаются на прием, а все прерывания игнорируются. Во время программы пов- торного запуска, следующей за сбросом, адаптер должен быть запро- граммирован для конкретного применения. Подробное описание возможных конфигураций регистров на- правления передачи данных и управления приведено ниже. Регистры направления передачи данных (DDRA и DDRB). Эти регистры позволяют ЦП управлять двумя направлениями передачи данных через соответствующую внешнюю шину данных. Если бит регистра направления передачи данных установлен в 0, это соответст- вует работе линии шины данных на прием, если в 1 — на передачу. Регистры управления (CRA и CRB). Эти регистры позволяют ЦП управлять работой четырех линий управления периферийными устройствами: CAlt СА2, CBlf СВ2. Кроме того, они позволяют ЦП выдавать разрешение по линии прерывания и управлять состоянием флажков прерывания. ЦП может записывать и считывать содержи- мое разрядов 0...5 в обоих регистрах, если действуют сигналы выбор- ки данной микросхемы и выборки регистра. Содержимое разрядов 6 и 7 обоих регистров только считывается и изменяется под воздейст- вием внешних прерываний по линиям управления CA lf С А 2, СВи СВ2. Формат управляющего слова показан в табл. 8.10. Бит управления доступом к регистрам направления или данных (CRA-2, CRB-2). Второй бит в каждом регистре управления (CRA и CRB) позволяет выбрать либо регистр данных адаптера, либо ре- гистр направления передачи данных, когда соответствующие сигна- лы выборки регистров подаются на входы RSQ и RSlt Флажки прерывания (CRA-Ъ, CRA-1, CRB-&, CRB-7). Четыре бита флажков прерывания устанавливаются управляющими пере- ходами сигналов на четырех линиях прерывания и состояния внеш- 278
Таблица 810 Формат управляющего слова 7 (j 4 3 1 0 CRA IRQA, irqa2 Управление CA2 Доступ к DDRA Управление CAt 7 6 5 4 3 2 1 0 CRB IRQB, iRQB2 Управление CB2 Доступ к DDRB Управление CZJj него устройства, когда эти линии запрограммированы на прием. Эти биты не могут устанавливаться непосредственно через шину данных ЦП, и сбрасываются косвенно командой чтения данных внешнего устройства соответствующего направления. Биты управления входными линиями прерывания САГ и CBL (CRA-Q, CRB-О и CRAA, CRBA), Два младших бита регистров уп- равления используются для управления входными линиями преры- вания CAt и СВ1. Биты CRA-6 и CRB-О служат для разрешения подачи на ЦП сигналов прерывания IRQA и IRQB соответственно. Биты CRA-1 и CRB-1 определяют управляющий переход входных сигналов прерывания САХ и CBt (табл. 8.11). Управление входами прерывания Таблица 811 Вход прерь'ьани> С А, {С/М Флажок преры- вания CRA-7 (CRB-7) Запрос прерывания ЦП IRQA (IRQB) Прерывание невозможно на IRQ остается высокий уровень —управляющий отрица- тельный переход (от высокого к низкому) устанавливает в еди- ницу флажок На IRQ устанавливается низ- кий уровень по переходу флаж- ка CRA-7 (CRB-7) 0 t — управляющий положи тельный переход (от низкого к высокому) ус- танавливает в единицу флажок Прерывание невозможно на IRQ остае1ся высокий уровень 1 Па IRQ устанавливается низкий уровень по переходу флажка 2RA-7 (CRB-7} 279
Таблица 8.12 Управление СА2 и СВ2, когда на выходе прерывания CRA-Ъ (CRB-5) низкий уровень Вход преры- Флажок пре- вания рывания CA, (СВ2) CRA-6 (CRB-6) Запрос прерывания ЦП IRQA (1RQB) — управляющий отри- цательный переход (от высокого к низ- кому) устанавли- вает в единицу флажок Прерывание невозможно — на IRQ остается высокий уровень На IRQ устанавливается низкий уровень, когда бит флажка прерывания CRA-S (CRB-6) устанавливается в 1 f— управляющий положи- — тельный переход (от 1 низкого к высокому) устанавливает в еди- ницу флажок Прерывание невозможно — на IRQ остается высокий уровень На IRQ устанавливается низкий уровень, когда бит флажка прерывания CRA-6 (CRB-6) устанавливается в 1 О О о о О 1 О 1 I О Примечания к табл. 8.11, 8.12: 1. Флажки прерывания CRA-6, CRA-7 сбрасываются ЦП при чтении из регистра данных A, a CRB-6, CRB-7 — при чтении из регистра данных В. 2. Если в CRA-3, CRA-0 (CRB-3, CRB-О) низкий уровень, прерывание не- возможно, оно воспринимается позже, когда установится высокий уровень. Сигналы на линиях IRQA (IRQB) вырабатываются по положительному пере- ходу CRA-3, CRA-0 (CRB-3, CRB-0) Биты управления линиями внешнего управления СА2 и СВ2 (С/?Л-3, С/М-4, CRA-5, CRB-3, CRB-А и CRB-5). Третий, четвер- тый и пятый биты обоих управляющих регистров используются для управления линиями внешнего управления СА2 и СВ2. Эти би- ты определяют, будет ли управляющая линия входом прерывания или выходом управления. Если биты CRA-5 (CRB-5) находятся в нулевом состоянии, то линии СА2 (СВ2) являются входными линия- ми прерывания аналогично линиям САг (CBL) (табл. 8.12). Когда биты CRA-5 (CRB-5) в единичном состоянии, то линии СА2 (СВ2) становятся выходными и могут использоваться для управления пере- дачей внешних данных. В режиме передачи линии СА2 и СВ2 имеют почти одинаковые характеристики (табл. 8.13, 8.14). Примеры ввода—вывода. Пример применения адаптера Р1А, ил- люстрирующий роль интерфейса в системе М6800, показан на рис. 8.11.Восемь бит шины направления А используются как парал- 280
Таблица 8.13 Управление СВ2> когда на выходе CRB-5 высокий уровень СТ? В-5 CRB-4 CRB-3 Уровень СВ2 Очистка (низкий) Установка (высокий) 1 0 0 Устанавливается низким по положительному переходу первого импульса Е, следу- ющего за операцией записи из ЦП в регистр данных В Устанавливается высоким, когда бит флажка прерыва- ния устанавливается актив- ным переходом сигнала СВ\ 1 0 1 Устанавливается высоким по положительному переходу ближайшего импульса' Е 1 1 0 Устанавливается низким, когда на выходе CRB-З по- является низкий уровень в результате записи в регистр управления В Всегда низкий, когда низкий уровень на выходе CRB-3. Становится высоким при за- писи в регистр управления В, что устанавливает CRB-3 в единицу 1 1 1 Всегда высокий, когда высо- кий уровень на выходе CRB-З. Устанавливается низ- ким при записи в регистр управления В. В результате CRB-З устанавливается в 0 Устанавливается высоким, когда на выходе CRB-З уста- навливается высокий уро- вень в результате записи в регистр управления В Запрос готовности Адресная шина входные данные 00000000 | 00100111 ~| выходные данные 11111111 \ОО7ОО111~\ ____напреем ____Подтверждение J-. готовности на прием ра0 РА, РА 2 РАг ра! PAs РА& РА? \вход ^ВыхоО PBq Г ^Готовность на передачу ____Запрос готовности на. передачу Рис. 8.11, Пример применения адаптера внешнего интерфейса 281
о) Ванных управления Входные данные 00000000 ____Запрос готовности на прием Подтверждение го- Г той нос ти на прием | 10100111 ~~1 Выходные данные Шиш | 00100111 ~I ^PAi —. й -^P8s Готовность I на пере ту Запрос готовности на передачу Вход 6) (Л> Шина пресная щцнд данных .шина управления tffSfT* Тт-* Тмв-* *5В -Э. Запрос готовно- сти на прием Подтверждение ' “повности на прием Вхос Входные данные оооооооо | 001 00117"! Выходные данные 7Ti11111 | 00100111 I $ РЛ7 ^РВо Выход -^рв7 "Г Готовность на передачу Запрос готовности на передачу
со W В) Шина Шина аанныг управления х________к М Запрос готсдности на прием Подтверждение готовности -* й?-* f p/w-Z Ipeset*. Входные данною oooooooo 00100111 Выходные данные 7/111111 10 10 0177 **-РАп ^-PXi ^~РА\ ^ра\ PAg ^PAg PAl\ + Р% -^ОД*1 Вход Выход Шина управления П/\ to Запрос готовности на прием Подтверждение готовности (HSq -* RS , ** Входные данные oooooooo \001Q 011/ | *-рЛо ^-РА. A. X7J6 /^7 J Вход Выходные данные -^РВд Выход cs2 -* f leesEr^ 00100117 ^7) пп° рв2‘ , --- . '-^Готовность i l™"1"* шина передачи о I на передачу I а Запрос Запрос готовности на передачу готовности на передачу Рис. 8.12. Последовательность операций ввода — вывода через адаптер внешнего интерфейса: ^данные поступают^ внешнего устройства на шину направления Д. Входной сигнал готовности устанавливают бит состояния и низки =hsb.=~?s=:s-:= Адресная шина +5в^. д/ина Адресная данных шана
Таблица 8.14 Управление СА2, когда на выходе CRA-5 высокий уровень CR А-5 СЯЛ-4 СЯЛ-3 Уровень СА Очистка (низкий) | Установка (высокий) 1 0 0 Устанавливается низким по отрицательному фронту Е после операции чтения дан- ных А Устанавливается высоким по активному переходу сигнала С Ах 1 0 1 Устанавливается низким не- посредственно после опера- ции чтения данных А Устанавливается высоким по спаду ближайшего им- пульса Е 1 1 0 Устанавливается низким, когда на выходе CRA-3 в ре- зультате записи в регистр управления А появится низ- кий уровень Всегда низкий, когда на вы- ходе CRA-3 низкий уровень 1 1 1 Всегда высокий, когда вы- сокий уровень на выходе CRA-3 Устанавливается высоким, когда на выходе CRA-3 устанавливается высокий уровень в результате записи в регистр управления А лельный байт входных данных. 8 бит шины направления В исполь- зуются как выходной байт. Это достигается установкой процессором с помощью команд записи соответствующих битов регистров направ- ления передачи данных (всех в 0 или 1). Линия САХ используется для подачи сигнала готовности данных на ввод. Управляющий переход (положительный в этом примере) устанавливает бит состояния (С7?Л-7) этой линии и формирует уп- равляющий сигнал на выходе IRQA, который соединен по схеме ИЛИ с линией прерывания системы IRQ. На линии СА2 программно ус- танавливается низкий потенциал на чтение данных шины направ- ления А, и этот потенциал сохраняется до прихода следующего уп- равляющего фронта сигнала САГ Таким образом, обеспечивается формирование сигнала подтверждения приема данных. Линия СВХ используется для передачи сигнала запроса данных. Для нее управляющим является также положительный переход, устанавливающий ее бит состояния (CRB-7) и формирующий управ- ляющий сигнал на выходе IRQB, который соединен по схеме ИЛИ с системной линией запроса прерывания. На линии СВ2 программ- но устанавливается низкий потенциал на запись данных направле- ния В, и этот уровень сохраняется до прихода следующего управляю- щего фронта сигнала на линии СВ1. Тем самым обеспечивается фор- мирование сигнала готовности вывода данных. 284
функции всех линий управления программируются установкой соответствующих кодов в регистрах управления командами записи от процессора. Полная последовательность выполнения операции ввода—вывода показана на рис. 8.12. Следует обратить внимание на то, что все требуемые для установления обмена сигналы генерируются и при- нимаются самим адаптером. Процессор никогда не обращается к ин- терфейсу, пока не потребуется обслуживания. Он никогда не ожи- дает установления входных данных или приема внешним устройст- вом выходных данных. Адаптер PIA значительно увеличивает произ- водительность микро-ЭВМ благодаря уменьшению загрузки про- цессора. Обобщая, можно сказать, что принцип организации системы М6800 на основе микрошины упрощает как аппаратурное, так и про- граммное обеспечение микро-ЭВМ. Управление вводом—выводом обеспечивается индивидуально программируемыми устройствами внешнего интерфейса. Поэтому на процессор возлагается роль уп- равления системой, программирование основных операций внеш- него интерфейса и обслуживание его только по требованию. 8.7. ПРОГРАММИРОВАНИЕ ОБМЕНА С ВНЕШНИМИ УСТРОЙСТВАМИ Данные, управление и прерывания. В предыдущем примере про- граммному обеспечению были отведены две функции: установление направления передачи данных и кодов в регистре управления во время установки системы в исходное состояние и обработка преры- ваний. Установка направления передачи данных и кодов в регистре уп- равления определяет рабочие режимы внешнего устройства. Про- грамма установки начального состояния адаптера для рассмотрен- ного выше примера показана на рис. 8.13. Она устанавливает коды, показанные на рис. 8.11. Напомним, что по сигналу сброса все ли- нии адаптера внешнего интерфейса устанавливаются в исходное со- Занести в регистр управления адаптера с адресом $2004 требуемый код, приняв в качестве входного направления А, в качестве выходного В, и сбросить в нуль все схемы управления и регистры RESET LDA А STA А СОМ STA А # %00100111 $ 2005 $ 2006 S 2007 Установить код управления Записать в регистр управле- ния (CRA) Установить В на передачу Записать управление в ре- гистр управления CRB Рис 8 13 Программа установки начального состояния адаптера внешнего интерфейса 285
Прерывание Рис. 8.14. Алгоритм обмена при прерывании стояние на прием и все прерывания запрещаются. Поэтому приведен- ная программа только изменяет начальное содержимое указанных регистров. Обработка прерывания описанным выше способом является зада- чей программного обмена. Алгоритм обмена для этого примера при- веден на рис. 8.14, а соответствующая ему программа—на рис. 8.15. Такой метод обмена является обычно наиболее оправданным для распознавания прерываний, но в некоторых случаях может оказать- ся слишком медленным. В этих случаях может использоваться до- полнительная аппаратура, в которой осуществляется шифрация • Передача данных через адаптер РМ по прерыва- нию и его обработка POLL LDA А 82005 BPL POLL2 . (Обработка вводимого символа j POLL2 LDA А 8'2007 BPL POLL3 POLL3 . (Обработка выводимого символа ) RTI Рис. 8.15. Программа обмена при прерывании 286
Таблица 815 Гипотетическая система памяти 6КХ8, использующая для дешифрации адреса входы выборки микросхемы (CS) cs2=vma ф2 Секция памяти Диапазон адресов 1 1024. .. .2047 Л.^ о 2048. ..3072 Л it 3 4096. ..5120 Д12 4 8192. ..9216 5 16384. ..17408 6 32768. ..33792 л15 приоритетности различных запросов прерывания. Зашифрованное значение запроса прерывания затем может использоваться как си- стемный адрес для передачи управления соответствующей програм- ме. Эта процедура называется векторным прерыванием. Частичная дешифрация адреса, использующая выборку микро- схемы. В любой системе памяти входы выборки микросхемы памяти могут использоваться для частичной дешифрации старших разрядов адресов. В малых системах этот способ может быть достаточным для различения всех ячеек памяти. Простой пример такой организации памяти показан в табл. 8.15. Каждая секция памяти содержит 1К байт и имеет два входа выборки микросхемы. Один из входов необхо- дим для подачи синхроимпульса Ф2> другой может соединяться с лю- бой из шести адресных линий, позволяющих выделить шесть секций памяти, как показано в таблице адресов. Однако в такой системе можно встретиться с некоторыми трудностями. Во-первых, заметим,что имеется несколько наборов бит.которые разрешают выбор секции памяти. Например, секция 1 может выби- раться следующими наборами: 0000 01ХХ ХХХХ ХХХХ 0000 11ХХ ХХХХ ХХХХ 0 001 01ХХ ХХХХ ХХХХ и Г. д. Однако только первый из них позволяет отличить секцию 1 от осех других секций. Остальные являются перекрывающимися и не должны использоваться, так как выбирают две секции памяти од- новременно. Конечно, при программировании можно избежать ис- пользования таких перекрывающихся адресов. В течение цикла процессора, в котором не происходит обращения к памяти, состоя- ние адресной шины неизвестно. Поэтому, когда возможно перекры- тие по адресам, вход 1/Л4А должен стробироваться одним из разре- шающих сигналов. В табл. 8.15 для этой цели используется синхро- импульс Ф.,. 287
Другой подход к исключению перекрытия адресов состоит в вы- боре достаточного количества линий выборки микросхемы для пол- ной дешифрации подмножества сигналов старших разрядов адрес- ных шин. Этот подход использован для адресации памяти в системе М6800, показанной в табл. 8.16. Рассмотрим в качестве примера ПЗУ. Один вход выборки микросхемы используется для сигнала Фг, а другой соединен с адресной линией Лц, которая выделяет ПЗУ среди других типов памяти. Линии Д10, 4и полностью дешифри- руются при использовании оставшихся входов выборки микросхе- мы. Хотя имеется несколько наборов бит, которые могут разрешать выбор ячейки ПЗУ, они не являются перекрывающимися. Это оз- начает, что из-за случайного состояния адресной шины в цикле, в ко- тором нет обращения к памяти, или при ошибке программирования выборка двух микросхем ПЗУ одновременно невозможна. Линия Аи ЗУПВ связана с инверсным входом разрешения, что позволяет различать ПЗУ и ЗУПВ и, следовательно, адреса ПЗУ и ЗУПВ никогда не будут совпадать. Линия Л13 связана также с ин- версным входом разрешения и используется для разделения ЗУПВ Таблица 8.16 Расширенная система М6800, использующая для дешифрации адреса входы выборки кристалла (CS) ЗУПВ Адреса CS CS CS CS CS CS 0...127 Фа +5 л14 Ли Л? Лв 128...255 Фа Л7 Лц Л и Лв 256...383 Ф2 А& Лц Л13 Адреса Е CSfc CSi csr 2004...2007 Фа Л14 A l9-V МА Аг 2008...200В Фа Лц A13-VMA Аз 288
По ~ Во —> %-д,+ Пу —Пз “"*• #5 "Я5-*> В в - Об ~* в7 ~в7-^ , Адресная ' шина шина Шина данных управления Ам -4- J УМА J <?2• - Е R/W - Ж - IRQ «<- 58 -+58 Регистр управления Регистр состояния Приемный регистр данных Передающий регистр данных Рис. 8.16. Интерфейс асинхронной связи -^1*0 Несинхронные последователь* ные данные -+-СТ5 ^BCD Управление модемом Синхроимпульсы, определяющие скорость пере* daw данных и микросхем ввода—вывода таким же образом, как и линия Л14 для разделения ПЗУ и других типов памяти. Линии Л7 и А8 используют- ся для полной дешифрации с помощью оставшихся входов разреше- ний. Несмотря на то, что имеется несколько наборов бит, которые могут разрешить выборку ЗУПВ, они не перекрываются. Наконец, микросхемы ввода—вывода выбираются линией Д14 (подключенной к CS2), когда на ней находится низкий уровень, ли- нией А13 (подключенной к CSJ, когда на ней высокий уровень, и од- ной из линий А2...А12, подключенной к CS0. При использовании такой системы микросхемы ввода—вывода всегда распознаются среди микросхем памяти, хотя среди них имеются адреса, потенциально перекрывающиеся. По этой причи- не сигнал на входе УМА, как показано, стробирует линию А13 для защиты от перекрытия адресов, которое может произойти в циклах без обращения к памяти. Необходимо позаботиться также о том, что- бы в программе отсутствовали обращения к перекрывающимся ад- ресам. Адаптер последовательного интерфейса асинхронного обмена (АС/А) служит в качестве устройства последовательного сопряже- ния для специальных целей при асинхронном обмене. Он выпол- няет функции преобразования форматов, такие как дополнение слу- жебными битами и распознавание битов стартового, стопового и четности, и может быть запрограммирован на все обычные последо- вательные форматы. Разновидности его функционирования задают- ся путем записи соответствующего управляющего кода в регистр уп- равления адаптера. Признаки состояния регистров и всех ошибок отображаются в отдельном регистре состояния. Интерфейс шин адаптера АС! А (рис. 8.16) такой же, как и адап- тера PIA. Никакого дополнительного управления не требуется. Адаптер сам управляет линиями последовательной связи и линия- ми управления модемом. Сигнал на выходе IRQ адаптера ACIA 10 Зак. 1088 289
может использоваться для запроса обслуживания со стороны ЦП при условии заполнения входного регистра или освобождения от ин- формации выходного. Так как оба регистра представляют собой двойной буфер, процессор должен будет выдавать каждое слово через 33 мс (при скорости 300 байт/с). СПИСОК ЛИТЕРАТУРЫ 1. М6800 Systems References and Data Sheets, Motorola Semiconductor Products Inc., Phoenix, Ariz., 1975. 2. Programming Manual M6800 Micro Processor Motorola Semiconductor Products Inc., Phoenix, Ariz., 1975. Глава 9 МИКРОПРОЦЕССОРНЫЙ НАБОР PPS-4 В этой главе представлен 4-битовый микропроцессор PPS-4 фирмы Rock- well Intern. Corp. Он имеет 12-битовую параллельную адресную шину и 8-битовую общую шину команд/данных. Набор команд включает команды пе- ресылок данных, арифметические, логические команды, команды управления, ввода—вывода и специальные команды. Приведены примеры программиро- вания для обработки массивов данных. Описаны микросхемы ПЗУ, ЗУПВ и ввода—вывода. Особое внимание уделено микросхемам ввода—вывода общего назначения, используемым для прямого обмена данными или выполнения функций управления и анализа состояния внешних устройств. Программно- аппаратурные средства организации стека позволяют осуществлять практи- чески неограниченное вложение подпрограмм. Материалы этой главы частично используют публикации фирмы Rock- well Intern. Corp1. Автор несет полную ответственность за подготовленный и помещенный здесь материал. 9.1. ОБЩЕЕ ОПИСАНИЕ Система PPS-4 представляет собой набор МОП БИС, предостав- ляющих разработчикам широкие возможности при создании деше- вых, универсальных по назначению, высокопроизводительных мик- ропрограммируемых микропроцессорных систем. Минимальная система PPS-4 состоит только из двух МОП БИС и микросхемы синхрогенератора. Модульная конструкция системы PPS-4 позволяет конструкторам разрабатывать весьма мощные си- стемы простым добавлением дополнительных микросхем памяти и ввода-вывода фирмы Rockwell. Типовая система, иллюстрирую- щая возможности расширения, показана на рис. 9.1. Разнообразие типов микросхем ввода—вывода и памяти повышают экономич- ность и гибкость системы PPS-4. 1 Программы, рисунки и таблицы заимствованы из проспекта фирмы Rockwell International Corporation. Все права сохранены. ?90
до 16 пзу до зг syna Рис. 9.1 Структурная схема микропроцессорной системы PPS-4 Высокая производительность и большое быстродействие системы PPS-4 позволяют эффективно выполнятьмногиефункции, для кото- рых на первый взгляд требуются 8-битовые или более мощные мик- ропроцессоры. Высокую производительность системы характери- зует скорость обмена данными между УВВ и ЗУПВ, равная 8 бит (байт) за 36 мкс, а большое быстродействие — время сложеци двух 8-разрядных десятичных чисел, равное 240 мкс. Другие конструктивные преимущества состоят в более простом программировании с меньшим числом шагов, более быстром получе- нии фотошаблона, использовании меньшего числа компонентов для сборки системы и в возможностях фирмы Rockwell разрабатывать и выпускать заказные микросхемы ввода—вывода по запросам поль- зователей. Функциональные возможности: — 50 команд, включающих арифметические и логические операции, условные и безусловные переходы, прямые и косвенные обращения к подпрограммам, прямую и косвенную адресацию к ЗУПВ, команды ввода—вывода; — 4-битовые слова данных и 8-битозые слова команд;
— программно-аппаратурный стек, обеспечивающий неогра- ниченное число вложений подпрограмм; — возможности обработки прерываний. Вычислительные возможности: — магистральная структура с 21-разрядной параллельной ши- ной; — малое время выполнения — сложение двух 8-разрядных деся- тичных чисел осуществляется за 240 мкс; — высокая производительность — параллельный обмен данными между УВВ и ЗУПВ осуществляется: 4-битовое слово за 28 мкс, 8-битовое слово за 36 мкс, 12-битовое слово за 56 мкс; — десятичная и двоичная арифметика; — прямая адресация к 16 микросхемам ПЗУ объемом 1КХ8 бит или 2Кх8 бит и 32 микросхемами ЗУПВ объемом 256X4 бит (294 912 бит — полная емкость памяти); — прямая адресация к 16 микросхемам ввода—вывода; — сохранение информации при выключении питания в МОП БИС ЗУПВ и ПЗУ с электрической перезаписью. Технико-экономические параметры: — не требуются дополнительные внешние схемы для согласова- ния между микросхемами ЦП, памяти и ввода—вывода; — имеется восемь БИС сопряжения — управления, включая непосредственно сопрягаемую по уровням с ТТЛ память, непосред- ственно подключаемую микросхему управления дисплеем и клавиа- турой и микросхему связи с модемом и телетайпом (MODEM/UART) на одном кристалле; — имеется возможность изготовления заказных микросхем вво- да— вывода для специальных применений; — полная совместимость всех микросхем по уровням ТТЛ; — один источник питания; — ПЗУ/ЗУПВ на одном кристалле для двухкристальной базовой системы (плюс микросхема синхрогенератора); — 4-фазное динамическое функционирование с большой ско- ростью при малой потребляемой мощности; — не требуются схемы для регенерации памяти; — полное аппаратурное и программное обеспечение потре- бителя. Каждая микросхема из набора PPS-4 (кроме синхрогенератора) выполнена в корпусе с 42 выводами для обеспечения максимальных возможностей сопряжения. Полная система может состоять только из двух корпусов с 42 выводами (ЦП и ПЗУ или комбинированное ПЗУ/ЗУПВ) плюс 4-фазный синхрогенератор. Модули PPS-4 раз- рабатывались с учетом требований совместимости, максимальной схемной плотности и скорости обработки при минимизации потреб- ляемой мощности. ЦП имеет 12-битовую параллельную адресную шину и 8-битовую параллельную шину команд/данных и прямо ад- 292
Адресная шина питания Рис. 9 2. Структурная схема ЦП системы PPS-4 оесуется к 4К 8-битовых слов команд (в ПЗУ) и к 4К 4-битовых слов данных (ЗУПВ); при этом ПЗУ выдает команду в ЦП в форме 8- битового параллельного слова, а ЗУПВ выдает и принимает 4 бита данных параллельно в течение одного и того же цикла. Центральный процессор (ЦП), показанный на рис. 9.2,представ- ляет собой 4-битовый параллельный микропроцессор. Он исполь- зует путем разделения во времени 8-битовую параллельную шину команд/данных для передачи 8-битовых слов команд от ПЗУ к мик- росхемам ЦП и ввода—вывода, а также в качестве двойной двуна- правленной 4-битовой параллельной шины данных для обмена дан- ными между микросхемами ЦП, ЗУПВ и ввода—вывода (рис. 9.1). Для расширения памяти, программного прерывания или прямо- го доступа от периферийного оборудования ЦП имеет 8 линий ди- скретных входов (Discrete Input) и 4 линии дискретных выходов (Discrete Output) 293
ЦП содержит: а) дешифратор микрокоманд, необходимый для приема и де- шифрации 50 основных команд; б) 4-битовые параллельные сумматор и аккумулятор для ариф- метических и логических операций; в) 12-битовый регистр В для компоновки и хранения адреса ЗУПВ; г) 12-битовый регистр Р и два 12-битовых оперативных (save) регистра хранения для компоновки и хранения адреса ПЗУ; д) 8 синхронизируемых дискретных входа; е) 4 дискретных выхода со статическими формирователями; ж) 2 триггера с индивидуальным управлением; з) мультиплексируемые приемники и передатчики для связи с 12-битовой параллельной шиной адреса, 8-битовой параллельной шиной команд данных и линией управления записью/вводом — выво- дом (W//O). Дешифратор микрокоманд интерпретирует команды для управле- ния передачей данных или выполнения арифметических операций и формирует логическую последовательность функционирования. Команды кодируются байтом и делятся на логические, арифмети* ческие, пересылок данных, передачи управления, ввода—вывода и специальные. Команды прямого вызова подпрограммы, безусловные переходы, прямой адресации к ЗУПВ и команды ввода—вывода счи- таются удлиненными командами, так как требуют для своего хра- нения двух байт ПЗУ. Команды косвенного обращения к подпро- Рпс. 9 3. Расположение выводов ЦП системы PPS-4 {NC — неиспользуемый вывод) 294
грамме и косвенной адресации к ЗУПВ требуют для хранения толь- ко одного байта ПЗУ. Все команды выполняются за один цикл фазы А, исключая удлиненные команды, команды с косвенной адресацией и команды ввода—вывода, выполняемые за два цикла. Сумматор/аккумулятор. 4-битовый параллельный двоичный сум- матор соединен с триггером переноса для выполнения арифметичес- ких операций повышенной точности. Сумматор вместе с 4-битовым аккумулятором составляют арифметико-логическое устройство (АЛУ). Оно позволяет ЦП выполнять 10 команд, предназначенных для реализации арифметических и логических операций. Все они одноцикловые и допускают прямые арифметические операции между содержимым аккумулятора и данными из ЗУПВ или ПЗУ. В допол- нение к арифметическим функциям аккумулятор является основ- ным рабочим регистром почти при всех операциях пересылок между отдельными частями параллельной микропроцессорной системы. При выполнении внутренних пересылок аккумулятор служит бу- ферным регистрохМ связи с ЗУПВ и ПЗУ. Для внешних пересылок (ввод—вывод) аккумулятор—источник выходных данных и прием- ник входных. В связи с большой загруженностью аккумулятора в ЦП имеется второй (дополнительный) регистр X. Он является также 4-битовым и используется вместе с аккумулятором для промежуточного хране- ния данных. Регистр адреса ЗУПВ. 12-битовый регистр В состоит из трех 4- битовых регистров (BU, ВМ, BL), содержащих адрес обращения к ЗУПВ. Регистр BL является счетчиком, и его содержимое можно уве- личивать или уменьшать программно на 1, что позволяет последова- тельно обращаться к 4-битовым символам регистров ЗУПВ. В стар- шие 8 бит адреса ЗУПВ (BU и ВМ) может быть программно уста- новлена специальная величина смещения при выполнении операций обмена данными между удаленной ячейкой ЗУПВ и рабочей об- ластью памяти, адресуемой четырьмя битами BL. Во время выпол- нения операций с модификацией адреса ЗУПВ можно использовать аккумулятор и регистр X для временного хранения старших 8 бит нового адреса обращения к ЗУПВ без разрушения текущего адреса ЗУПВ. Программный счетчик и оперативные регистры. 12-битовый ре- гистр-счетчик Р используется для хранения адреса следующей команды. Шесть младших бит образуют счетчик, содержимое которого автоматически увеличивается на 1 после каждого цикла выполнения обычной операции. Шесть старших бит указывают номер ПЗУ и по- ложение страницы. Эти биты изменяются только командами безуслов- ного перехода (TL) или вызова подпрограммы (TML или ТМ). Регистры SA и SB представляют собой оперативные регистры, образующие двухуровневый стек для хранения адресов команд при переходах. Это дает возможность непосредственно организовать Двухуровневое вложение подпрограмм путем аппаратурного запоми- нания адресов программы; неограниченное же число вложений под- 295
программ возможно при использовании команды CYS. Эта команда производит обмен содержимым регистра SA и аккумулятора, обес- печивая возможность запоминания адреса программы ПЗУ в ЗУПВ. Благодаря использованию ЗУПВ для запоминания адресов програм- мы числа вложений подпрограмм ограничивается только размером выделенного для этих целей массива ячеек. Триггеры управления (FF) и дискретные входы—выходы. Два тригге- ра управления FF1 и FF2 могут быть установлены, сброшены и опро- шены программно. Имеется восемь дискретных входов, по которым в аккумулятор могут быть введены данные в виде двух отдельных 4-битовых групп. Эти группы входов соответственно различаются как дискретный вход группы A (DIA) и дискретный вход группы В (DIB). Входы предназначаются для ввода специальных сигналов, сигналов переключения состояний флажков или сигналов прерыва- ния от внешних микросхем. Содержимое аккумулятора может быть непосредственно выведено во внешние цепи PPS через специальный параллельный 4-битовый регистр вывода (DOA) с отдельными выход- ными формирователями. Эти выходы могут использоваться для рас- ширения возможностей адресации к ЗУПВ и ПЗУ сверх 4К. Мультиплексируемые приемники и передатчики обеспечивают непосредственное сопряжение с системными шинами: адресной и команд/данных. Шины мультиплексируются во времени, а благодаря использованию уникальной схемы предварительного заряда дости- гается большой коэффициент разветвления по выходу. Система может содержать до 30 схем без дополнительных формирователей. Схема сброса при включении питания. При включении питания не- обходимо установить регистр Р в начальное состояние так, чтобы мог- ла выполняться соответствующая программа. Эта начальная уста- новка достигается подачей отрицательного импульса длительностью ^10 мс. Импульс вырабатывается вне ЦП, и пока он действует, программный счетчик Р сброшен. В это же время ЦП генерирует син- хронизированный сигнал включения SPO, который может быть ис- пользован для начальной установки других микросхем. Мультиплексируемая передача данных. Кроме линий питания и синхронизации микросхемы ЦП, ПЗУ, ЗУПВ и ввода—вывода соединяет 21 мультиплексируемая линия. Эти линии функцио- нально делятся на 12 параллельных линий адресной шины; 8 па- раллельных линий шины данных, 1 линию управления записью и разрешением ввода—вывода. Двенадцать адресных линий являются выходными и мультиплек- сируемыми внутри ЦП. Они обеспечивают прямую адресацию к 4096 ячейкам ПЗУ или ЗУПВ. Кроме 12 адресных входов, ПЗУ P/N А05 имеет два, а ЗУПВ P/N 10432 один вход выборки микросхемы. Входы выборки могут непосредственно управляться от дискрет- ных выходов ЦП или микросхем ввода—вывода с целью расширения объема памяти без дополнительных цепей. Расширение памяти пол- нее рассмотрено при описании ПЗУ и ЗУПВ. 296
Адресная шина Шина даннь/х OLKA CLM ** Цикл генератора 5мне *1 $г $1 Фг $3 ПЗУ 7^////////а , Очис- \ тать ' шаны ; 'адреса и', ''данных ''////////А Очис- \ \ тите ; ' ШИНЫ \ адреса ш, уданнь/х Очис- ' тать \ шины 'адреса и\ Данных'', '//////////, Очис- ? ',тить $ у шины', 'pttoecaa, ',аанныху Айрес ЗШ Следунз- ^зцая номанда из ПЗУ $3 Линия записи или раз- решения Звода- дывода 1-й цинл генератора Z-й цинл генератора * Хотя информация имеется на шине, она не используется Рис. 9.4. Временные диаграммы выполнения команды ввода—вывода в PPS-4 Как и адресные линии, восемь линий шины данных работают с разделением во времени от ЦП. Логическая 1 на линии WHO во время фазы Ф2 интерпретируется ЗУПВ как разрешение записи, и де иные с шины данных запишутся в ЗУПВ. ЗУПВ является прибо- ром с неразрушаемым считыванием информации, постоянно запро- граммированным на считывание, и поэтому для указания режима записи ему нужен специальный сигнал. Так как 8 линий шины дан- ных функционируют как двойная 4-битовая двунаправленная шина в течение фазы Ф2, то можно считать 4 бита из некоторой ячейки ЗУПВ на шину данных и в течение того же цикла записать 4 бита с шины данных в указываемую ячейку ЗУПВ. Одна и та же линия WHO обеспечивает подачу сигнала записи в ЗУПВ в течение Ф2 и одновременно служит для выдачи сигнала раз- решения ввода—вывода в течение фазы Ф4 во время выполнения команды ввода—вывода (IOL). Если имеется сигнал разрешения вво- да—вывода (логическая единица) в течение фазы Ф4, то будет за- прещено обращение к ЗУПВ в следующей фазе Ф2, а шина данных будет использоваться для обмена между аккумулятором ЦП и мик- росхемами ввода—вывода. Команда ввода—вывода (IOL) имеет особую синхронизацию и тре- бует двух циклов для выполнения и двух ячеек памяти ПЗУ для хранения. В течение первого цикла команда IOL принимается из ПЗУ и декодируется в ЦП. В течение второго цикла по линии раз- 297
решения ввода—вывода подается сигнал оповещения микросхем вво- да—вывода,^ то же время адрес микросхемы и приказ ввода—вывода принимаются от ПЗУ адресуемой микросхемой ввода—вывода. Дан- ные между выбранной микросхемой и аккумулятором передаются в течение такта Ф2 следующего цикла. Временная диаграмма выполнения команды IOL показана на рис. 9.4. 9.2. СИСТЕМА КОМАНД Символические обозначения. Ниже приведено описание 50 команд, которые могут использоваться для управления формирова- нием адреса ЗУПВ и ПЗУ, а также для обработки и пересылок дан- Таблица 9.1 Расшифровка символических обозначений Символ Расшифровка А А/Вп В С FF1 FF2 1 I/Dn In Регистр-аккумулятор, Л (4 : 1)1 n-я линия адресной шины Регистр адреса ЗУПВ, В (12 : 1) Триггер переноса Триггер FF1, триггер FF2 Команда (обычно 8-битовое поле) n-я линия шины данных/команд п-й байт удлиненной команды (Б— первый байт, I?— второй байт) м Содержимое ячейки ЗУПВ по адресу, записанному в ре- гистре В m n Р BL ВМ BH R (n) R (in n) SA SB W/1O X Текущий индекс. /п = 1, 2, 3, ... Текущий индекс, /2 = 1, 2, 3, ... Программный счетчик команд ПЗУ, Р(12 : 1) Младшие биты поля регистра В, В (4 : 1) Средние биты поля регистра В, В(8 : 5) Старшие биты поля регистра В, В(12:9) п-й бит регистра R Биты регистра R от m-го до п-го Верхняя ячейка стека: регистр хранения 54(12:1) Нижняя ячейка стека: регистр хранения 5/3(12 : 1) Линия управления записью и разрешения ввода—выво- да Digit (цифра) Второй регистр-аккумулятор Х(4 : 1) 4-битовое поле (часто именуется данными или симво- лом) Байт Страница ч— —> 8-биговое поле Блок ПЗУ из 64 байт1* Пересылки Обмен V V A 4- Обратный код (т. е. А — обратный код А) Логическое объединяющее ИЛИ Логическое Исключающее ИЛИ Логическое И Алгебраическое сложение Алгебраическое вычитание ') Страница для системы PPS определена как 64 байта ПЗУ. Номер страницы ука<* зывается 6 старшими битами регистра Р а положение «чойки на странице — fi млад* шими бигами 298
них между микросхемами ЦП, ЗУПВ и ввода—вывода. Список ко- манд приведен с использованием символических обозначений, благо- даря чему программист может легко понять содержание команд и увидеть, как можно использовать МП PPS-4 для конкретных приме- нений. Расшифровка символических обозначений приведена в табл.9.1, а список команд — в табл. 9,2...9.6. 93. АДРЕСАЦИЯ И ПРОГРАММИРОВАНИЕ Адресация данных. Четыре основные команды пересылок дан- ных показаны в табл. 9.2. Эти команды предназначаются для обеспе- чения достаточной гибкости при загрузке аккумулятора данными из памяти или константами и при обмене данными между аккумулято- ром и памятью. Команды LD, ЕХ и EXD способны модифицировать содержимое адресного регистра данных В для следующей команды, если это необходимо программисту. Эта особенность позволяет во многих случаях избежать дополнительной команды для модификации содержимого регистра В. Слово адреса данных микропроцессорной системы PPS-4 пока- зано на рис. 9.5; биты bi...&i2 поступают из регистра адреса данных ЦП, который организован как три 4-битовых сегмента: В старший (BU), В средний (ВЛ4), В младший (BL). Бит &13 используется толь- ко в больших системах для расширения объема памяти свыше 4096 слов, прямо адресуемых содержимым регистра В. Сигнал вы- борки микросхемы (CS) обычно может быть выдан по программному указанию с одного из дискретных выходов ЦП, хотя можно исполь- зовать также .микросхему ввода—вывода общего назначения или внешний переключатель. Организация памяти данных, иллюстрирующая, как использует- ся каждый сегмент адресного слова памяти, показана на рис. 9.6. Сигнал CS можно считать сигналом выборки блока ЗУПВ, BU ука- зывает некоторую область ЗУПВ емкостью 256X4 бит, ВМ опреде- ляет строку длиной в 16 слов, BL указывает определенное слово в строке. Модификация адреса командами LD, ЕХ и EXD позволяет про- граммисту модифицировать номер строки в адресе (ВМ). Следующая команда с обращением к памяти данных может обратиться за требуе- мыми данными к другой строке внутри группы строк в той же поло- вине выбранного ЗУПВ. По этой причине регистры в памяти, со- ^/2 b/O CS sc CM CL Расширенный Номер Лоложение Лоложение аСрео ЗУЛЗ отрока колонки Рис. 9.5. Слово адресации данных 299
s Команды пересылок Мнемокод Код операции на шине I/Dt шестнадцатерич- ный и двоичный Наименование SC 20 0010 0000 Set Carry flip-flop Установить триггер переноса (1 цикл) RC 24 0010 0100 Reset Carry flip-flop Сбросить триггер переноса (1 цикл) SF1 22 0010 0010 Set FF1 Установить триггер FF1 (1 цикл) RF1 26 0010 ОНО Reset FF1 Сбросить триггер FF1 (1 цикл) SF2 21 0010 0001 Set FF2 । Установить триггер FF2 (1 цикл) RF2 25 0010 0101 Reset FF2 Сбросить триггер FF2 (1 цикл) LD 30...37 ООН 0... Load Accumulator from Memory Загрузить аккумулятор из памяти (1 цикл)
Таблица 9.2 Описание Символическая запись т Триггер переноса устанавливается в 1 С<-1 Триггер переноса сбрасывается в 0 Сч-0 Триггер FFI устанавливается в 1 FFU-1 Триггер FF\ сбрасывается в 0 FF1*~O Триггер FF2 устанавливается в 1 FF2<-1 Триггер FF2 сбрасывается в 0 FF2*-0 4 бита из адресуемой регистром В ячей- ки ЗУПВ помещаются в аккумулятор. Текущий адрес ЗУПВ в регистре В (7 : 5) затем модифицируется выполнением Ис- ключающего ИЛИ с тремя битами поля команды 1(3 ; 1) А<—М В (7 : 5)«- В (7 :5)v [I (3 : 1)1 См. прим. 3
EX 38 ,3F 00111... Exchange Accumulator and Memory Обменять содержимым аккумулятор и ячейку памяти (1 цикл) EXD 28...2F 0010 1... Exchange Accumulator and Memory and decrement BL Обменять содержимым аккумулятор и ячейку памяти и уменьшить BL (1 цикл) См прим. 3 LDP) 70...7Г 0111 .... Load Accumulator Immediate Загрузить аккумулятор непосредст- венно (1 цикл) LAX 12 0001 0010 Load Accumulator from X register Загрузить А из X (1 цикл) LXA IB 0001 1011 Load X Register from Accumulator Загрузить X из A (1 цикл) LABL 11 0001 0001 Load Accumulator with BL Загрузить А из BL (1 цикл) LBMX 10 0001 0000 Load BM with X Загрузить BM из X (1 цикл)
1 То же, что и LD, но содержимое аккуму- лятора помещается по текущему адресу в ЗУПВ А~М В (7 :5)~ В (7 : 5)V (1 (3 : D] См. прим. 3 То же, что и ЕХ, но адрес ЗУПВ в ре- гистре BL затем уменьшается на 1. Если новое значение BL равно 11 И, сле- дующая команда в ПЗУ пропускается А<—>М В (7 : 5)- В (7 : 5) И (3 :1)J BL*-BL—4 Пропуск по BL=1111 4 бита команды 1(4:1) загружаются в аккумулятор (см. прим, ниже) А—[1 (4 : 1)J См. прим. 3 4-битовое содержимое X загружается в аккумулятор А«-Х Содержимое аккумулятора передается в регистр X Х«-А Содержимое регистра BL передается в аккумулятор A<-BL Содержимое регистра X передается в ре- гистр ВМ ВМ<-Х
Мнемокод Код операции на шине //£>, шестнадцатерич- ный и двоичный Наименование LBUA 04 0000 0100 Load BU with А Загрузить BU из А (1 цикл) XABL 19 0001 1001 Exchange Accumulator and BL Обменять содержимым регистры А и BL (1 никл) хвмх 18 0001 1000 Exchange ВМ and X Обменять содержимым регистры ВМ и X (1 цикл) ХАХ 1А 0001 1010 Exchange Accumulator and X Обменять А с X (1 цикл) XS 06 0000 оно Exchange SA and SB Обменять содержимым SA и SB (1 цикл) CVS 6F ОНО 1111 Cycle SA register and accumulator Циклически сдвинуть SA и A ( 1цикл)
Продолжение табл 9 2 Описание имволическая запись Содержимое аккумулятора передается в регистр BU, а содержимое текущей ячей- ки ЗУПВ загружается в аккумулятор BU<~A А*-М Аккумулятор обменивается содержимым с регистром BL А«—*BL Регистры X и ВМ обмениваются содер- жимым Х<—>ВМ Регистры X и А обмениваются содержи- мым А«—>Х Регистры SA и SB обмениваются содер- жимым SA-—>SB 4 младших бита 5/1(4: 1) сдвигаются в аккумулятор, содержимое регистра 5/1 сдвигается на 4 бита вправо, а содержи- мое аккумулятора заносится в освобо- дившиеся 4 старших разряда регистра 54(12:9) A*-SA (4 : 1) SA (4 : 1)- SA (8 :5), SA (8 :5) — SA (12 : 9), SA (12 :9)«-
/ 1 1 LB2) 1 CO-CF 1-е слово 1100 .... 2-е слово с 3-й страницы Load В Indirect Косвенная загрузка В (2 цикла) С помощью команды LB в 8 младших бит регистра В может быть загружено одно из 16 слов (12), записанных в со- седних ячейках 3-й страницы ПЗУ. 4 старших бита регистра В обнуляются Содержимое регистра SB теряется. Эта команда выполняется за 2 цикла, но за- писывается в одной ячейке ПЗУ (авто- матический возврат) (см. прим, ниже) SB—SA SA—Р, Р (12 : 5)«— 0000 1100, Р (4.1)- 11 (4:1) BU-0000 В (8:1)- (12 (8:1)] P-SA SA<—.SB См. прим. 3 и 4 LBL2) 00 1-е слово 0000 0000 2-е слово Load Ь Lon^ Удлиненная загрузка В (2 цикла) Эта команда занимает две ячейки ПЗУ Содержимое второй ячейки загружается в 8 младших бит регистра В. 4 старших бита В обнуляются (см. прим, ниже) BU—0000 В (8 : 1)- U2 (8:1)] См. прим. 3 INCB 17 0001 0111 Increment BL Увеличить BL (1 цикл) 4 младших бита регистра B(BL) увели- чиваются на 1. Если новое содержимое BL — 0000, то следующая команда про- пускается BL-BL + 1 Пропуск по BL = 0000 DECB IF 0001 1111 Decrement BL Уменьшить BL (i цикл) 4 младших бита регистра 8(BL) умень- шаются на 1. Если новое содержимое BL = 1111, то следующая команда про- пускается BL^-BL-1 Пропуск по BL— 1111 ’> Из следующих одна за другой команд LDI выполняется только первая, остальные пропускаются. 2) Из последовательно записанных в программе команд LB и LBL выполняется только первая, остальные яропускаются В подпрограммах vj LB следует применять с осторожностью, так как она разрушает содержимое SB. 8________________________________________
Арифметические команды Мнемокод Код операции ча шине I/D, шестнадцатерич- ный и двоичный Наименование AD ОВ 0000 1011 Add Сложить (1 цикл) A DC 0А OGOO 1010 Add with carry—in Сложить с переносом (1 цикл) ADSK 09 0000 1001 Add with carry—in and skip on car- ry-out Сложить с переносом и пропустить по переносу (1 цикл) ADCSK 08 0000100 Add with carry in and skip on carry- out Сложить с переносом и пропустить по переносу (1 цикл) AD1 60—6Е кроме 65° ОНО хххх Add immediate and skip on carry—out Непосредственно сложить и пропус- 1ить по переносу (1 цикл) 1
Таблица 9.3 Описание Символическая запись Результат двоичного сложения содер- жимого аккумулятора и 4 бит из ячей- ки памяти ЗУПВ, адресуемой регистром В, помещается в аккумулятор, перенос заносится в триггер переноса С Выполняется так же, как и AD, но пре- дыдущее содержимое триггера С исполь- зуется как перенос в младший разряд То же, что и AD, но следующая коман- да в ПЗУ пропускается, если С = 1 То же, что и ADSK, но к содержимому аккумулятора прибавляется содержимое триггера переноса Результат двоичного сложения содержи- мого аккумулятора и 4 бит непосредст- венного поля команды помещается в ак- кумулятор. Следующая команда ПЗУ пропускается, если возникает перенос. Эта команда не анализирует и не изменяет содержимое триггера переноса С. Непосредственное поле команды 1(4:1) не должно быть равно 0000 или 1010 (см. CYS и DC) С, A^A-f-M С, А^-А + М-|- + С С, А<-А + М Пропуск по С, А*-А+М+С Пропуск, если С = 1 А<-А + + [1 (4:1)] Пропуск, если перенос=1 I (4:1)^=0000 I (4 : 1)^1010 См. прим. 3
DC 65 ОНО 0101 Decimal Correction Десятичная коррекция (1 цикл) ’) хххх указывает на то что при программировании этой команды Логические команды Мнемокод Код операции на шине //£>, шестнадцагерич ный и двоичный Наименование AND 0D 0000 НО) Logical AND Логическое И OR 0F 0000 1111 Logical OR Логическое ИЛИ (1 цикл) EOR ОС 0000 1100 Logical Exclusive OR Исключающее ИЛИ (1 цикл) COMP g 0Е 0000 1110 Complement Дополнение (1 цикл)
Двоичная величина 1010 прибавляется к аккумулятору. Результат заносится в ак- кумулятор. Команда не анализирует и не изменяет содержимое триггера переноса или пропуска А-А+1010 не все комбинации допустимы. Таблица 9.4 1' Описание Символическая запись Результат логического И содержимого аккумулятора и 4 бит ячейки ЗУПВ, ад* ресуемой регистром В, заносится в А А^АдМ Результат логического ИЛИ содержимо- го аккумулятора и 4 бит ячейки ЗУПВ. адресуемой регистром В, заносится в А А«-А\/М Результат Исключающего ИЛИ содер- жимого аккумулятора и 4 бит ячейки ЗУПВ, адресуемой регистром В, зано- сится в А А-АуМ В аккумулятор помещается обратный код содержимого аккумулятора А«-~А
Команды передачи управления Мнемокод Код операции на шине //D, шестнадцатерич- ный и двоичный Наименование Т1) 80-BF 10 Transfer Передача (безусловный переход) (1 цикл) ТМ2) DO-FF 11 XX 1-е слово 2-е слово из 3-й страницы Transfer and Mark Indirect Передача и отметка косвенно (обра- щение к подпрограмме) (2 цикла) TL 50-5F 1-е слово 0101 .... 2-е слово Transfer Long Удлиненная передача (с удвоенным полем адреса) (2 цикла)
Таблица 9.5 Описание Символическая запись Безусловная передача управления ячейке ПЗУ на текущей странице. 6 младших бит регистра Р загружаются 6 младши- ми битами команды 1(6 : 1) Р (6: !)<-! (6.1 48 соседних ячеек на 3-й странице со- держат числа — входные адреса подпро- грамм. Эти адреса ограничены страница- ми 4...7. Эта команда сохраняет адрес следующей команды ПЗУ в SA после загрузки предыдущего содержимого SA в SB. Затем осуществляется передача к соответствующему входному адресу под- программы. Команда занимает 1 ячейку ПЗУ, но выполняется за 2 цикла SB«-SA SA<-P Р (12 : 7)^ 000011, р (6 :!)- 11(6: 1) P(12 . 9)«- 0001 Р(8: 1)<- 12 (8 : 1) П (6 : 5)^00 См. прим. 4 Команда выполняет переход к любой ячейке любой страницы ПЗУ. Она зани- мает 2 ячейки памяти и требует двух циклов для выполнения. Первый байт загружает Р(12:9) полем 11(4: 1), а за- тем второй байт 12(8: 1) помещается в Р(8:1) Р(12:9)-П(41) Р (8:1)«— 12(8.1)
1 1ML 01-03 Le слово1 0000 OOxx 2-е слово Transfer and Mark Удлиненная передача и отметка (с удвоенным адресом) (2 цикла) Эта команда выполняет передачу управ- ления с запоминанием адреса возврата в любую ячейку ПЗУ на страницах 4... 15 Она занимает 2 ячейки ПЗУ и выполня- ется за 2 цикла См. прим. 4 SB-SA SA—P Р (12 . 9)«- Н(4 • 1) Р(8: 1)«— 12(8 ; 1) Л (2: 1)=И=00 SKC 15 0001 0101 Skip on Carry flip-flop Пропустить по триггеру п- реноса С (1 цикл) Следующая команда ПЗУ пропускается, если С=1 Пропуск по С=1 SKZ IE 0001 1110 Skip on Accumulator Zero Пропустить по нулю А (1 цикл) Следующее слово ПЗУ пропускается, если аккумулятор содержит 0 Пропуск по А = 0 SKB1 4O-4F 0100 .... Skip if BL Equal to Immediate Пропустить, если BL равно непосред- ственно указанной величине (1 цикл) Следующая команда ПЗУ пропускается, если 4 младших бита в регистре B(BL) равны содержимому непосредственного поля команды 1(4: 1) Пропуск по BL = I (4 : 1) SKF1 16 0001 OHO Skip if FF1 Equals i Пропустить, если FF1 — 1 (1 цикл) Следующая команда в ПЗУ пропускает- ся, если FF1 = 1 Пропуск по FF1 = 1 SKF2 14 0001 0100 Skip it FF2 Equals 1 Пропустить, ^сли FF2=*I (1 цикл) Следующая команда в ПЗУ пропускает- ся, если FF2~ 1 Пропуск по FF2=1 RIN") 05 0000 0101 Return Возврат (1 цикл) Эта команда выполняет возврат из под- программы путем загрузки содержимого регистра ЗА в Р и обмена содержимым между SA и SB P-SA SA—SB RTNSK2> W 0 XX J 9 2) Эти 07 0000 0111 указывает, что не команды, за искль Return and Skip Возврат и пропуск (1 цикл) все возможные двоичные комбинации могут очением Т*+1, не могут быть использованы То же, что и RTN, но, кроме того, про- пускается первая команда ПЗУ после возврата из подпрограммы быть использованы при программировании этих j в 0000 ячейке ПЗУ P<-SA SA<—»SB P-P+l гвух бит команды.
308 Команды ввода—вывода и специальная команда Мнемокод Код операции на шине Z/D, шестнадцатерич- ный и двоичный Наименование IOL 1С 1-е слово 0001 1100 2-е слово Input/Output Long Удлиненный ввод—вывод (2 цикла) DIA 27 0010 0111 Discrete input Group А , Дискретный ввод группы А (1 цикл) DIB 23 0010 ООН Discrete Input Group В Дискретный ввод группы В (1 цикл)
Таблица 9.6 Описание Символическая запись Эта команда занимает 2 ячейки ПЗУ и выполняется за 2 цикла. 1-е слово коман- ды принимается в ЦП и устанавливает сигнал разрешения ввода—вывода. 2-е слово принимается УВВ и указывает ад- рес и приказ ввода—вывода. Инвертиро- ванное содержимое аккумулятора выда- ется на шину данных для доступа УВВ. В то же время вводимое слово принима- ется с УВВ и инвертированное подается в аккумулятор А шина дан- ных А «-шина данных 12~*УВВ Данные с дискретного входа группы А передаются в аккумулятор A-DIA Данные с дискретного входа группы В передаются в аккумулятор- A-*D1B
DOA ID 0001 1101 Discrete Output Дискретный вывод (1 цикл) SAG 13 0001 0011 Special Address Generation Формирование специального адреса (1 цикл) 309 Примечания (к табл. 9.2...9.6). I. Слово «Пропуск», используемое здесь, означает, что команда будет прочитана из памяти, но не будет выполняться. Каждое пропускаемое слово требует одно- го цикла. 2. Обращение к некоторой странице и ячейке ПЗУ определяется адресом на шине A/В. В момент начальной установки при включении питания начальным адресом является 0-я ячейка 0-й страницы, и адрес автоматиче- ски увеличивается на 1 после каждого цикла. 3. Команды ADI, LD, EX, EXD, LDI, LB и LBL со- держат непосредственно операнд как часть поля коман- ды. Его значение на шине должно быть представлено
Содержимое аккумулятора выводится через регистр дискретного выхода DO А*--А Эта команда обнуляет 8 старших бит ад- реса ЗУПВ только на время следующего цикла. Она не меяяет содержимое реги- стра В шина А/В (12:5) «--0000 0000 шина А/В (4:1) -BL (4:1) Содержимое ре- гистра В оста- ется неизмен- ным обратным кодом. Все поля, подлежащие инвертирова- нию, указаны в скобках. Например, команда ADI 1, осуществляющая прибав- ление единицы к содержимому аккумулятора, должна иметь код 6Е1б= ОНО [1110], где скобками отмечена‘ве- личина, которая должна быть на шине. Если программист работает на языке ассемблера фирмы Rockwell, он не должен обращать внимания на это инвертирование, так как ассемблер сам выполняет его. 4. Во всех командах, пересылающих содержимое программного счетчика Р в SA, содержимое регистра Р уже указывает адрес следующей команды.
стоящие более чем из одного 4-битового слова, обычно организуют- ся вдоль строки так, чтобы поля одного и того же регистра находи- лись по возможности в одном столбце. При такой организации памя- ти в системе PPS-4 манипуляции с регистрами проводятся с высокой эффективностью. Примеры. Команды, которые будут рассмотрены детально в сле- дующих примерах, требуют некоторых предварительных замечаний. Первая из них LBL используется для установки в регистр В адреса одного из первых 256 слов памяти данных и вторая Т—для установ- ки в регистр В новой величины. В действительности выполняемые этими командами действия значительно шире, чем было указано, но этого вполне достаточно для объяснения примеров. Первая группа примеров состоит из ряда программ записи числа О в определенные области ЗУПВ 0. Эти программы приведены в табл. 9.7. Символ 4k указывает, что аргумент записан в абсолютном шест- надцатеричном коде, а не в буквенно-цифровом. Символы А1...А4 строка- положение fit регистра цифры ^-Специальная команда Ш одеспетдает доступ к эрам 1$ О-дитовь/м словам д следующем цикле, не изменяя содержимого регистра адресу ЗУП0. Это позволяет пересылать данные из лтдого регистру в этот регистр. &\-/(оыанды Ц} и М адресуется к л/одаму моду ЗУЯ0 & /К-Для одрищения к ЗУ/М1...15 неодкодима команда LfllM, Рис. 9.6. Организация памяти данных — шестнадцатеричные адреса 310
Таблица 97 Примеры программ установки областей ЗУПВ в исходное состояние Метка Мнемокод Поле непосредствен- ного аргумента Комментарии А1 LBL LDI EXD Т #07 0 А1 Пример I А2 LBL LDI EXD Т #7F 0 А2 Пример 2 АЗ LBL LDI EXD Т #AF 0 3 АЗ Пример 3 А4 LBL LDI FX LDI EXD Т #DA 0 3 0 3 А4 Пример 4 в колонке меток и в колонке аргументов интерпретируются как мет- ки, так как они не отмечены символом фф. Содержимое памяти ЗУПВ до и после выполнения программ по- казано на рис. 9.7. В примере 1 адресный регистр данных загружается величиной 00716, аккумулятор устанавливается в нуль и обменивается содер- жимым с адресуемой ячейкой памяти. Так как содержимое BL по команде EXD затем устанавливается равным 6, то следующая коман- да не пропускается и осуществляется переход к нулевой команде, тем самым повторяется весь процесс. Этот процесс автоматически пре- кращается, когда загружен последний нуль. Результат этой про- граммы показан индексом 1 на рис. 9.7. Пример 2 идентичен первому, за исключением того, что началь- ным адресом выбирается величина 07F16, благодаря чему обнуля- ется целая строка. Результат выполнения этой программы отмечен индексом 2 на рис. 9.7. Пример 3 идентичен первому, за исключением того, что в ка- честве начального адреса взята величина 0AF1B и показана возмож- ность модификации поля ВМ. Когда непосредственное поле, содер- жащее число 3 (011), вступает в операцию Исключающее ИЛИ 311
ЗУПВ о. or г 3 4 5 6 7 в 9 А В О ЛЕ F 1 23456789A60BEFО 2 3 4 5 67 8 9 А В С Л Е F О 1 3 456789АВ0 ЛЕFО 1 Z 4 56789ABCEEF01Z 3 5 6 7 8 9 А В С ЛЕ F О 1 2 3 4 6 7 8 9 А ВОЛ Е F О 7 2 3 4 ff 7 89А6СЛЕЕ0123 4 5 6 89А60ЛЕЕ07234567 9 А В 0 Л Е F О 1 2 3 4 5 6 7 8 А В ОЛЕF 01 2 3 0 567 8 9 BCOEF0123 0 5 6 7 8 9 А СЛЕЕ0123056789АВ ЛЕF0 1 2 3 4 5 6 7 8 9 А В О ЕF 01 2 3 0 56 7 8 9 А ВОЛ F 0 1 2 3 0 5 6 7 8 9 А В С ЛЕ Исходное содержимое ЗУПВ ЗУПВ о ,_________0 (Z? О О О О О О 0}В 9 А В С Л Е F 89AB0BEFO123 4 5 6 7 1 23456789АВ0ЛЕР О Q\&Jl\cfi\Ej7\o/o\^^ 2 3 0 5 6 7 8 9 А В С Л ЕЕ 0 1 7^gfc\£fE\£fo\^ 3 0 56 7 8 9 А В О ЛЕ F0 1 2 В 60EF0123456789A О 56789ABCBEF012 3 (о) О BEF0123456 7 8 9 А В 5 6789ABGOEF01 23 О (О 000000000 S\ 8 9 А В С В 7 8 9 А В О В Е F О 1 2 3 0 5 О О О О О О О О О 0}9 А В С Л (р 00000000000000 o}(J) F 0 1 2 3 0 5 67 8 9 А ВОЛЕ Содержимое ЗУ ПС после выполнения программы примеров 7,. А ЗУПВ О ОГ23У5в783АВСРВП 8 9АВСРВВ0123Ч56 7 {2 3 05678 9ABCBEF О 0}Q) 9 ABCBEF01Z30567 8x Z 3 О 56 78 9 А В ОЛЕFО 1 A BQEEF0 1Z305678 S 056789АВОЛЕРО1 2 {9 АВ0ЛЕР01230567^8} О 56789АВ0ЛЕЕ01 Z 3 О ЛЕ F О123056789А В 5 6789ABCBEF0123 4 {F О 1 2 3 4 5 6 7 8 9 А В С Л Е\ (7 8 9АВ0ЛЕЕ01234 5 EF01234567 89 АВ С 7 8 9ABOEEFO123 4 5 6 {Л EF012345 678 9 А В Су Содержимое ЗУПВ после выполнения программы примеров в.,.8 Рис. 9.7. Распечатка ЗУПВО до и после выполнения программ из приме- ров I ... 8 312
Таблица 9.8 Примеры программ операций с массивами данных Метка Мнемокод Поле непосредствен ного аргумента Комментарий А1 LBL LD LXD Т #1F Al Пример 5 Сдвиг влево А2 LBL ЕХ Т* EXD Т #60 *+l А2! Пример 6 Циклический сдвиг влево АЗ LBL LD EXD Т #9F 2 2 АЗ Пример 7 Пересылка А4 LBL LD FX EXD Т #DF 2 2 A4 Пример 8 Обмен с соответствующими битами ВМ, равными в нашем примере А (1010), то в результате образуется число 1001, указывающее строку 9 для следующей цифры в последовательности. В дальнейшем цифра в по- ле ВМ восстанавливается равной А16, в результате указывается стро- ка 10, и нули записываются в память зигзагом. В примере 4 первоначально нуль загружается по адресу 0£М16, а затем содержимое ВМ изменяется на величину Е с помощью числа 3 по команде ЕХЗ. Нуль снова загружается в аккумулятор, так как теперь он содержит величину 6 (первоначальное содержимое ячейки 0DA16). Нуль переписывается в 0ЕА1в, а адрес модифицируется командой EXD3 и становится равным 0D916. Процесс продолжается до тех пор, пока не пропускается команда передачи управления Т. Другие примеры программ оперирования с массивами данных приведены в табл. 9.8. Результаты выполнения этих программ пока- заны на рис. 9.7. В примере 5 регистр из 16 слов сдвигается влево на одно слово, а самое младшее слово слева пропадает. 313
Таблица 9.9 Примеры программ двоичной и десятичной арифметики Метка Мнемокод Поле непосредствен- ного аргумента Комментарий А1 RC LBL LD ADC EXD Т #05 j 1 1 1 1 Al f Пример 9 Двоичное сложение А2 SC LBL LD СОМР A DC EXD Т #47 7 7 A2 Пример 10 Вычитание (двоичное) АЗ RC LBL LD ADI ADCSK DC EXD T #66 1 6 1 A3 Пример 11 Сложение (десятичное) А4 SC LBL LD COMP ADCSK DC EXD T #A8 2 2 A4 Пример 12 Вычитание (десятичное) А5 RC LBL LD ADO EX EX EXD T #C6 1 2 3 A5 Пример 13 Сложение (двоичное) со- держимого двух регист- ров с запоминанием ре- зультатов в третьем ре- гистре 514
зулво Двоичное г Десятичное г & (@) Двоич- ное Г" г 0 О 2 в в А) 0 000000000 \0 О А 7 2 о) О 000000000 0 0 0 0 0 0 000 00 0000 0 5 О О 0 8 3 3)0 000000 0 У О 2 F ПЗ А 7)0 0 0 0 0 0 0 0 0000000000000000 ГД О 8 7 3 О 5) О О О 0 0 000 О 'Д О 8 2 2 О 7)0 О О О О 0,0 О О >до О О 2 в О А 0 0 0 О ООО О О О {О О С С 9 5)0 000000000 0000000 0 О О ООО 00 о {О 9 Л О 3 9 9 2)0 0 0 0 0 0 0 0 О о о {О 7 5 3 5 7 2)0 00000009^ О О 2 5 U 3 000000 008730 А 70000008 000000000 500000000 > После ЗУПВ О Десятичное {в 2 О 7 8 О 0 9 8)0 00 0 00 О О 0 00 0 0 О О О ООО 000 О {0097 53 9 6 3)0 00 000 0 0000000000000000 (р 03 7 А 5 3)0 00000000 Со о о о i О 5)0 00000000 0000000000000000 где 0000000000000000' Дбоичное {О 7 6 О 2 6 63 5)0 0 0 0 0 0 0 О 0 0 О О О О 0 0 0 0 О 0 0 О О 009753 9 63 000 О О О О О О О О О О О О О 0 0 0 0 0 о о {О О 3 7 А 5 3)0 00000000 {О О О О 2 В 6)0 00000000 0000000000000000 {О О 3 7 Л О 9)0 0 0 0 0 0 0 0 О ► После. Рис. 9 8. Примеры выполнения двоичного и десятичного сложения и вы- читания 315
Пример 6 иллюстрирует полный циклический сдвиг содержимого регистра из 16 слов влево. Команда Т* + 1 интерпретируется как команда передачи управления ячейке с номером, на единицу боль- шим номера ячейки, где записана команда Т* + 1 (* обозначает но- мер этой ячейки), и, следовательно, она является командой холосто- го цикла (NO ОР). В примере 7 содержимое строки 91в пересылается в строку В1в. В примере 8 строки D16 и Fle обмениваются содержимым. Программы двоичной и десятичной арифметики. Некоторые при- меры программ двоичной и десятичной арифметики представлены в табл. 9.9. Результаты показаны на рис. 9.8 В примере 9 складываются два 24-битовых двоичных слова, ре- зультат помещается в один из исходных 24-битовых регистров. Аналогично в примере 10 используются два 32-битовых регистра, при этом содержимое регистра четвертой строки вычитается из со- держимого регистра третьей строки и результат помещается в ре- гистр третьей строки. В примерах 11 и 12 соответственно два семизначных десятичных числа складываются и два девятизначных числа вычитаются. В обоих случаях результат помещается на место одного из операндов. Пример 13 эквивалентен примеру 9, за исключением того, что длина регистра 28 бит и результат помещается в третий регистр ЗУПВ 0. Это выполняется следующим образом. Первоначально ре- гистр В загружается 0С6и, в аккумулятор помещается содержимое указываемой ячейки памяти, а средняя тетрада регистра В модифи- цируется в D аргументом команды загрузки (числом 1), так что ад- ресный регистр теперь содержит величину D610. Содержимое этой новой ячейки прибавляется к содержимому аккумулятора по коман- де ADC. Следующие три команды выполняют запоминание резуль- тата в третьем регистре. По первой команде обмена ЕХ исходная величина из регистра В61вменяется местами с содержимым аккумуля- тора. По второй команде обмена ЕХ производится обратный обмен, но при этом модифицируется средняя тетрада регистра В числом 2, так что адресный регистр ЗУПВ теперь содержит величину F6le. Наконец, по команде обмена и уменьшения EXD запоминается 4-битовый результат в указываемом третьем регистре памяти, а ар- гумент 3 команды преобразует содержимое средней тетрады регист- ра В из Fle в Cie, и содержимое BL уменьшается на 1, так что про- грамма готова к повторению цикла с новым словом из ячейки С51в. 9.4. ВВОД — ВЫВОД и ПРЕРЫВАНИЯ Дискретный ввод—вывод. Прямой интерфейс ввода—вывода с ЦП осуществляется через дискретные входы группы A (DIA) и группы В (DIB) и раздельный выход (DOA). Две команды дискретного вво- да позволяют считывать с выбранной группы входов 4-битовое сло- во и загружать его непосредственно в аккумулятор (см. рис. 9.2 и табл. 9.6). 316
По команде дискретного вывода (DOA) содержимое аккумулято- ра пересылается в выходной буферный регистр. Четыре бита этого ре- гистра выдаются постоянно на шину этой группы до тех пор, пока новая команда DOA не поменяет содержимое выходного буфера или не выключится питание. Если данные, поданные на дискретный выход, принимаются по дискретному входу, то необходима двухцик- ловая задержка между выдачей и приемом сигналов по группам. Инверсия битов данных при пересылках между аккумулятором и группами (входа и выхода) не происходит. Ввод—вывод по шине данных. Команда УДЛИНЕННЫЙ ВВОД—ВЫВОД (IOL) используется для передачи информации между аккумулятором и шиной данных. Это основная команда, применяемая для связи со стандартными микросхемами ввода- вывода в системе PPS-4. Команда IOL — двухцикловая и содержится в двух соседних ячейках памяти. Первое слово указывает ЦП, что поступает команда ввода—вывода, оно же устанавливает внутреннюю логику на пропуск следующего слова процессором. Это слово также формирует в нужное время необходимый сигнал на линии WHO, сообщая ЗУПВ и микро- схемам ввода—вывода, что выбрана команда ввода—вывода. Второе слово команды IOL подается из соответствующей ячейки ПЗУ на шину данных, где оно становится доступным всем микросхе- мам ввода—вывода, чтобы определить, какая микросхема адресуется и способна воспринять приказ ввода—вывода. Во всех стандартных микросхемах ввода—вывода системы PPS-4 биты 5...8определяют адрес микросхемы, так что на этот адрес будет реагировать заранее определенная микросхема ввода—вывода, а биты 1...4 содержат спе- циальный код операции для внешнего устройства (шина HD (команд/данных) = системная шина). Биты 1...4 на шине HD (команд/данных) содержат приказ, который указывает, что нужно делать устройству, адресуемому линиями //D-5...//D-8. В течение времени пересылки данных содержимое аккумулятора выдается на линии //D-5...//D-8, а данные с линий IIDA...IID-4 загружаются в аккумулятор. В обоих случаях — при пересылке из аккумулятора на шины и с шин в аккумулятор — данные инвер- тируются, т. е. передаются в обратном коде. В зависимости от передаваемого на микросхему ввода—вывода 4-битового приказа будет осуществляться прием управляющей ин- формации (которая, к примеру, в схеме управления печатающим устройством может быть использована для запуска или выключе- ния мотора) либо прием или передача данных в инверсной форме в аккумулятор. Сам ЦП не дешифрирует 4-битовый код приказа вво- да—вывода, т. е. он фактически работает просто в режиме обмена данными. Следовательно, если микросхеме ввода—вывода прика- зано принять данные из аккумулятора, то эти данные будут высла- ны, а данные с линий будут приняты в аккумулятор. В зависимости от конкретной микросхемы ввода—вывода эти дан- ные мог\т быть или не быть полезной информацией. Главным здесь 317
является то, что программист должен знать, что после выполнения операции вывода содержимое аккумулятора изменяется. Ввод—вывод с использованием устройства ввода—вывода обще- го назначения. Структурная схема устройства ввода—вывода общего назначения (GP I/O) типа P/N 10696 показана на рис. 9.9 и имеет 12 дискретных входов и 12 дискретных статических выходов. Это уст- ройство служит для прямого обмена данными или для выполнения функций управления и чтения состояния периферийных устройств. Микросхема GP I/O использует специальную схему согласования для прямого соединения с ТТЛ-схемами. Возможна прямая адресация до 16 таких микросхем благодаря использованию четырех линий ад- реса микросхемы, которые могут быть соединены по желанию поль- зователя. Устройство коммутируется сигналом разрешения ввода- вывода из ЦП и одновременно поступающей 8-битовой командой из ПЗУ. Четыре бита команды используются для адресации отдельной микросхемы ввода—вывода, а другие 4 бита определяют операцию (приказ) ввода—вывода. 4-битовый код операции (приказ) интерпретируется микросхе- мой так, что вызывает либо запись данных из аккумулятора в один из трех 4-битовых регистров параллельного вывода (А, В или С), либо передачу данных из одного из трех 4-битовых приемников па- раллельного ввода (А, В или С) в аккумулятор ЦП. Выходные пере- датчики — статические, т. е. данные хранятся в них, пока не будут изменены. Биты 1...4 слова команды — приказ для УВВ, а биты 5...8 используются для адресации одной из 16 возможных микросхем ввода—вывода. Четыре входа выборки микросхем также могут быть использованы для формирования адресов каждой микросхемы вво- да—вывода. Данные передаются через микросхему GP I/O от входной группы А, В или С на линии I/D-1...I/D-4 и от выходной группы, Д, В или С на линии I/D -5...I/D-8, старшие разряды на старшие, млад- шие — на младшие. Микросхема GP I/O обеспечивает стробирование выбранных 4- битовых групп данных из доступных 12 бит на прием или передачу инвертированного содержимого аккумулятора к выбранным 4-бито- вым группам выходных буферов. Коды операций для этого устройст- ва показаны в табл. 9.10. Заметим, что одновременно могут работать одна, две или три группы входных или выходных линий. К приме- ру, программа, приведенная ниже, может использоваться для уста- новки в нуль всех 12 выходов микросхемы с номером 6: CLEAR 6 LDI 15 Дополнение к нулю IOL #64 Из последующей программы (табл. 9.11) хорошо видно, что си- стема PPS-4 может быть весьма эффективно использована для пере- дачи данных. Эта программа загружает данные, вводимые от группы А устройства 9 в строку D, от группы В в строку Е и от группы С в строку F ЗУПВ 0. Команда с меткой STROBE в данной програм- ме
D3 Via й С1КА ратор А ,6 Дешиф- патов Формиро- ватель —i Синхросигнал A CLOCK (ТТЛ) Схема выборки I I Ш-1 -*-7? ’ 27 1/Л-1 §2/Л~3 ,1^-4 |//^ fe^-7 ^Т/Л-8 W/IO 10 11 1Z Тз Дешифра- тор команд Схема выборки Схема выборки микросхемы । U- IN-2 IN-3 IN-*. 1N-5 Ш-6 IN-7 IN-8 IN~9 I <Е= < JU «5 -*-_2£ *- 13 28_ — 7^ *-_2g .., . ^-гд_ Ш-10 ^-29_ Ш-11 ^-1т\ш-12^ -*И] ""Г * 35 -» 3» «2 J3 33 38 & & ОU Т-2 оит-ц)^' оит-§\ ОСТ-б ( оит-т и и /-qj ОСТ-9 OUT-10 оит-т §у 1 IC/70 1/Д-б 8С7 т/л-о 80-2 1/11-7 30-3 1/Д-8 80-4 1/0-7 7/0-2 1/11-3 7/Л-4 Vpu М-4 М-8 М-12 М-2 М-О М-10 С1НА 0VT-5 ООТ-1 ООТ-2 ОСТ-6 ОСТ-9 > ОСТ-19 ^88 ОСТ-3 ОСТ-4 ОСТ-7 ОСТ-8 ОСТ-11 ОСТ-12 Ш-П IN-7 IN-3 IN-9 1N-6 Ш-1_ CLKO ACLOCH (ТТЛ) Рис. 9. Структурная схема устройства ввода-вывода общего назначениж 31*
Таблица 9.10 Формат приказов для устройства ввода—вывода общего назначения Адресация микросхемы ввода—вывода Выборка группы ввода — вывода Шина 1/D Линии выборки микросхемы Адрес микросхемы Код выборки Г руппа Приказ 8 SO3 SC-2 о SC-1 4 3 2 1 с в А Номер Шестнадца- Ше стнадца микросхе- тсричный теричный -ЧТЕНИЕ мы код код 1 0 0 0 0 0 0 А 1 0 1 0 —- X Читать группу А 1 1 0 0 0 1 9 1 0 0 1 — X —— Читать группу В 2 2 0 0 1 0 3 0 0 1 1 X — — Читать группу С ' Если выбраны две или 3 3 0 0 1 1 0 0 0 0 0 X X X три группы, то в акку- 4 4 0 1 0 0 1 0 0 0 1 X X — муляторе накапливается 5 5 0 1 0 1 2 0 0 1 0 X X результат логического 6 6 0 1 1 0 8 1 0 0 0 — X X ИЛИ от выбранных . групп 7 7 0 1 1 1 8 1 0 0 0 УСТА- 9 9 1 0 0 1 1 НОВКА 10 А 1 0 1 0 Е 1 1 1 0 — X Установить группу А 11 В 1 0 1 1 D 1 1 0 1 — X — Установить группу В 11 С 1 1 0 0 7 0 1 1 1 X —. — Установить группу С 13 D 1 1 0 1 4 0 1 0 0 X X X Если выбраны две или 14 Е 1 1 1 0 5 0 1 0 1 X X — 1три группы, то содержи- 15 F 1 1 1 1 6 0 1 1 0 X —- X [мое А выдается на каж- С 1 1 0 0 — X X дую из групп
Таблица 9.11 Пример программы передачи данных через микросхему ввода—вывода Метка । Команда i Комментарии LOADBLK STROBE LBL cWF LDI 1 DOA LDI 0 DOA IOL #9A EX 3 IOL #99 EX 1 IOL #93 EXD 2 T STROBE Установить указател© блока Выдать 2-цикловый импульс Загрузить группу А Запомнить (строка D) Загрузить группу В Запомнить (строка Е) Загрузить группу С Запомнить (строка F) и установить следующую колонку Повторить 15 раз ме указывает аппаратурным средствам, присоединенным к микро- схеме GP I/O, что данные нужно загружать для считывания. Эта последовательность (строб) могла быть расположена и после пере- сылки данных, чтобы показать внешним устройствам, что данные уже получены. Прерывания. Функцией прерывания является прерывание основ- ной программы при распознавании соответствующего сигнала от внешнего устройства. Управление микро-ЭВМ передается специаль- ной программе для выполнения требуемых функций с более высоким приоритетом, а когда они выполнены, управление возвращается к основной программе. Прерывание в системе PPS-4 может выполняться несколькими способами. При разработке интерфейсной аппаратуры и 'программ используется сигнал установки ЦП при включении питания для пе- ревода регистра адреса’программы в нулевое состояние. Это вызывает программу, определяющую, от какого ВУ поступило прерывание, и обслуживающую его. Затем, используя предварительно запомнен- ную в памяти данных информацию, программа может вернуться к соответствующей начальной точке для ее продолжения. В другом случае процедура прерывания может использовать внешнюю логическую схему, модифицирующую адрес на адресной шине при получении сигнала прерывания. Это принуждает основ- ную память программ игнорировать команду и послать адрес в спе- циальную программную память (эту модификацию адреса проще все- го выполнить, используя один из битов расширения памяти). Спе- циальная программная память автоматически выдает команду ТМ, которая направит ее к подпрограмме обработки прерываний и со- хранит содержимое программного счетчика. При завершении под- программы обработки прерывания, после того как предыдущее со- стояние ЦП будет восстановлено в том виде, какой был к моменту Зак. 1088 321
возникновения сигнала прерывания, команда возврата запустит ос- новную программу с соответствующей точки. Простейшая форма прерывания в системе PPS-4 — программное прерывание. В этом случае программист составляет программу так, что ЦП периоди- чески осведомляется о наличии сигналов прерывания через дискрет- ный вход или через вход от микросхемы ввода —вывода. Если сигнал есть, то ЦП передает управление подпрограмме об- служивания прерывания; если сигнала нет, то ЦП продолжает ос- новную программу, периодически проверяя соответствующие вход- ные сигналы на наличие запроса прерывания. Опрос наличия за- проса прерывания должен быть расположен в местах программы, где необходимо запомнить минимум информации о состоянии так, что подпрограмма обслуживания прерывания может быть очень простой. При таком методе опрос наличия прерывания может длиться всего 15 мкс. В некоторых других микропроцессорах время для запомина- ния текущей информации при аппаратурном прерывании может со- ставлять до 20 мс, и при этом требуется значительное количество до- полнительной внешней аппаратуры. Программное прерывание реко- мендуется для организации прерываний в системе PPS-4. СПИСОК ЛИТЕРАТУРЫ 1. Data Sheet, Parallel ^Processing System (PPS-4) Microcomputer, Rockwell International Corp., Anaheim, Ca., 1973. 2. PPS-4 Microcomputer Program Library, Rockwell International Corp., Anaheim, Ca., 1973. 3. PPS-4 Bus Interface Circuit, Rockwell International Corp., Anaheim, Ca., 1973. Глава 10 МИКРОПРОЦЕССОРНЫЙ НАБОР PPS-8 В этой главе описан 8-битовый микропроцессорный набор PPS-8 фирмы Rockwell Intern. Corp. Этот процессор имеет 14-раз.рядную мультиплекси- руемую адресную шину и 8-битовую двунаправленную шину данных/команд, ЦП PPS-8 имеет большой набор команд для выполнения различного рода арифметических, логических и пересылочных операций. Примеры програм. мирования иллюстрируют эффективность команд, в частности, при работе с массивами данных. Особое внимание уделяется параллельному контролле- ру данных, который является гибким устройством сопряжения ЦР PPS-8 с внешними устройствами. Работа этого прибора основана на принципе контро- ля слова состояния. Другая микросхема, контроллер прямого доступа к па- мяти, обеспечивает прямой доступ к памяти от восьми каналов ПДП (пря- мого доступа к памяти). Помещенный здесь материал частично взят из публикаций фирмы Rockwell Intern. Corp.1) Ответственность за опубликованный здесь материал несет автор 1) Программы, рисунки и таблицы заимствованы из проспектов фирмы Rockwell International Corporation. Все права сохранены. 322
10.1. ОБЩЕЕ ОПИСАНИЕ Восьмибитовый набор БИС параллельной системы PPS-8 (Rock- well), имеющей модульную структуру, использует для логического функционирования и управления 4-фазную систему синхроимпуль- сов. Для исполнения системы PPS-8, ориентированной на побайт- ную обработку, использовалась развитая р-канальная МОП-техно- логия. МОП-технология фирмы Rockwell и уникальное конструктор- ское выполнение системы PPS-8 обеспечили ей возможность широко- го применения с высокой эффективностью, например, в цифровых весах, вводных терминалах, периферийных схемах управления. Широкий диапазон применений достигнут благодаря высокой про- изводительности микропроцессора, эффективности символьно-ори- ентированных команд, гибким возможностям ввода — вывода и мо- дульному построению системы. Стандартная система PPS-8 (рис. 10.1) состоит из центрального процессора (ЦП), памяти с произвольной выборкой (ЗУПВ), по- стоянного ЗУ (ПЗУ), многофазного синхрогенератора, контроллера Параллельные ТТЛ каналы Память для запаса а чтенья Пат ять для программ/ констант По 12 ТТЛ дискретных, входов и выходов Устройство связи с клавиатурой и дисплеем. Контроллер печатающего устройства а др. Рис. ЮЛ. Структурная схема микропроцессорной системы PPS С П* 323
прямого доступа к памяти (DMAC), параллельного контроллера данных (PDC) и последовательного контроллера данных (SDC). Базовая система может быть укомплектована микросхемами вво- да — вывода общего и специального назначения в зависимости от кон- кретного применения. Например, можно изготовить устройство сопряжения для передачи данных со скоростью 1200 бод, контроллер печатающего устройства, устройство сопряжения с шинами (ин- терфейс шин), контроллер управления клавиатурой и дисплеем. Все приборы системы PPS-8 выпускаются в одинаковых пласт- массовых корпусах с 42 выводами, за исключением синхрогенерато- ра, выпускаемого в корпусе ТО 100. Размеры пластмассового кор- пуса составляют (без ножек) 16x26,5x3,75 мм. Такая стандарти- зация корпусов в значительной мере упрощает проектирование и конструирование систем на базе набора PPS-8. Основные микросхемы набора PPS-8 и некоторые их характерис- тики приведены ниже: — центральное процессорное устройство (ЦП); — постоянное ЗУ (ПЗУ); — синхрогенератор; — микросхема ввода—вывода общего назначения (GPI/0)-, — параллельный контроллер данных (РОС); — контроллер прямого доступа к памяти (DMAC)-, — память с произвольной выборкой (ЗУПВ); — время выборки команды 2 мкс; — время выборки операнда 2 мкс; — полный цикл команды 4 мкс; — десятичное сложение 12 мкс/разряд; — десятичное вычитание 12 мкс/разряд; — пересылки массивов данных 12 мкс/байт; — поиск в таблице 12 мкс/байт; — цифровой (на 4 бита) построчный сдвиг 8 мкс/цпфрз. Центральный процессор (ЦП) системы PPS-8, структура которо- го показана на рис. 10.2, является полным 8-битовым параллель- ным процессором, выполненным на одном МОП-кристалле. В ЦП используется 4-фазное динамическое логическое управление и един- ственный источник питания 17 В. Процессор содержит: — логические схемы для приема и дешифрации команды; — 8-битовый параллельный сумматор/аккумулятор для выпол- нения арифметических и логических операций; — 14-битовый регистр Р для формирования последовательности адресов программы ПЗУ; — 16-битовый регистр L для связи с подпрограммой, адресации операндов в ЗУПВ и косвенной адресации ПЗУ; — три 8-битовых регистра (X, Y и Z) для адресации операндов в ЗУПВ; — 5-битовый указатель стека S для адресации соответствующей области ЗУПВ; 324
Питание Синхронизация Vss l/вл А В вшше питания (Р0) Ъинхроназированное включение питания (8Р0) выборка' записи или ввода-вывода ОГ/10) Запрет чтения (Я7Н) Запрос /подтверждение „ ПДП(ШЯА) ЦП PPS~8 Прерывание в (авария питания) (/НТО) Прерывание 7 (синхрониза- ция 0 реальном масштабе времени) (1ПТ7) Прерывание 3 (ввод - вывод) (МТ2.) Подтверждение прерывания ввода-вывода (АПНв) (W (8) Адресная шина (А/0т...А/вп) РО SPO /дина номанд/данных //Л1'..7/Лз Pcs Рол АВ Рис. 10.2. Структурная схема центрального процессора PPS-8 325
— логические схемы для обработки приоритетных прерываний; — цепи прямого доступа к памяти; — мультиплексируемые приемники и передатчики для связи о 14-битовой мультиплексируемой адресной шиной и с 8-битовой дву- направленной шиной команд/данных. Мультиплексирование организовано таким образом, что в тече- ние такта Ф4 ЦП использует 8-битовую двунаправленную шину для передачи команд от ПЗУ к ЦП (и для ввода—вывода), а в течение такта Ф2 — для обмена данными между ЦП, ЗУПВ и микросхемами ввода—вывода. Дешифратор команд содержит логические схемы для дешифрации кода операции, реагирующие на запросы прерывания и запросы ПДП, и формирует сигналы, управляющие передачей данных, ариф- метическими, логическими и индексными операциями. Команды со- стоят из одного, двух или трех байт и выполняются за один, два или три цикла. Аккумулятор и АЛУ. Сумматор является 8-битовым параллель- ным двоичным с присоединенным внешним триггером переноса (С) для выполнения арифметических операций с повышенной точностью. Он построен в расчете на облегчение работы с двоично-десятичными и шестнадцатеричными числами. Имеются цепи для левого и право- го циклического сдвигов содержимого аккумулятора через триггер переноса. Сумматор с 8-битовым регистром-аккумулятором (А) и соответствующими логическими цепями образуют арифметико-ло- гическое устройство ЦП (АЛУ). Кроме того, аккумулятор является основным рабочим регист- ром ЦП и используется при выполнении большинства операций пе- ресылок. Регистр Р (14 бит) хранит адрес команды, выполняемой в дан- ный момент. Для считывания следующего байта из памяти команд (ПЗУ) его содержимое увеличивается на единицу (младшие 7 бит). Содержимое этого регистра может изменяться при выполнении команд BRANCH (ПЕРЕХОД), RETURN (ВОЗВРАТ) или SKIP (ПРОПУСК). Регистр L (16 бит) используется для сохранения адреса возвра- та при выполнении подпрограммы или при прерывании. Он также служит в качестве адресного регистра при косвенной адресации ПЗУ и может быть использован как регистр временного хранения для адресации ЗУПВ или как программно доступный регистр общего назначения. Регистр Z (8 бит) хранит 7 старших бит 14-битового адреса ЗУПВ и может использоваться как программно доступный регистр общего назначения Регистр X (8 бит) содержит 7 младших бит 14-битового адреса ЗУПВ. Самый старший бит (восьмой) используется в качестве бита управления старшими разрядами адреса ЗУПВ. Если этот бит равен: 326
логической I, то старшие биты адреса ЗУПВ определяются со* держимым регистра Z; логическому 0, то 7 старших разрядов адреса равны 0. Регистр можно программно загрузить, запомнить его содер- жимое, увеличить и уменьшить на 1. Регистр Y (8 бит) используется как регистр для хранения 7 младших бит адреса ЗУПВ и в качестве счетчика циклов. Он может также работать как программно доступный регистр общего назна- чения. Регистр S (5 бит) представляет собой 5-разрядный реверсивный счетчик. Используется как указатель расположенного в ЗУПВ сте- ка объемом 32 байта. Содержимое указателя стека увеличивается на единицу при занесении в стек одного байта и уменьшается на еди- ницу при извлечении байта. Регистр W (8 бит) обычно используется в качестве внутреннего буферного регистра. Он также используется в командах LAL (LOAD A THROUGH L—загрузить А по L) и PSHL (PUSH L - занести L). Схема сброса при включении питания (РО). Входной сигнал РО (POWER—ON) используется при включении питания для установ- ки ЦП в некоторое обусловленное состояние и для передачи управ- ления по заранее известному начальному адресу. Сигнал РО выра- батывается вне ЦП. ЦП принимает этот сигнал, запускает внутрен- ние логические схемы и выдает сигнал SPO (SYNCHRONIZED POWER—ON — синхронизированное включение), служащий для сброса в исходное состояние других микросхем в системе PPS-8. Мультиплексируемая передача данных. В течение времени между двумя изменениями содержимого программного счетчика ЦП адресуется к ПЗУ, читает и дешифрирует команду, выполняет ее и изменяет путем увеличения на 1 (или загрузкой) содержимое прог- раммного счетчика для подготовки к выполнению следующей команды. Этот интервал времени—цикл выполнения команды при частоте синхроимпульсов 250 кГц занимает 4 мкс. Чрезвычайно вы- сокую скорость обработки данных при сравнительно низкой часто- те внешней синхронизации обеспечивает удобная для выполнения команд архитектура и многофазная синхронизация 8-битового ЦП. ЦП PPS-8 синхронизируется от микросхемы синхрогенератора, формирующей две фазы синхросигналов, обозначаемые А и В, ЦП принимает их и логически разделяет на 4 фазы, благодаря чему час- тота внутренних синхроимпульсов становится в 4 раза больше час- тоты сигнала А. Если, например, внешняя частота синхросигнала равна 250 кГц» тс внутри ЦП логические процессы протекают на частоте I МГц. Временные диаграммы синхроимпульсов показаны на рис. 10.3. Параллельные шины передачи данных ЦП синхронизируются синхросигналами А и В так, что передача данных происходит толь- ко в течение фаз и Ф4, как показано на рис. 10.3. 327
Кроме цепей питания и синхронизации, ЦП имеет 24 мультиплек- сируемые линии, связывающие его с ЗУПВ, ПЗУ и УВВ. Функцио- нально эти линии разделены на: — 14 параллельных адресных линий (А/В от 1 до 14); — 8 параллельных двунаправленных линий данных (I/D от 1 до 8); — 1 линию управления записью/разрешением ввода—вывода (Г///0); — 1 линию запрета чтения (RIH). 14 адресных линий являются выходными и мультиплексируют- ся ЦП для обеспечения прямой адресации к 16384 байтам ПЗУ или ЗУПВ. Как и адресные линии, 8 линий шины данных используются пу- тем разделения во времени для связи ЦП с ПЗУ, ЗУПВ и микросхе- мами ввода—вывода. Появление логической единицы на линии раз- решения записи в течение фазы Ф2 интерпретируется ЗУПВ как приказ записи, и данные с шины данных записываются в ЗУПВ по адресу, представленному на шине адреса в течение предыдущей фазы Ф4. В течение предыдущей фазы Фг сигнал RIH (запрет чте- ния, логическая 1) запрещает чтение из памяти. ЗУПВ является устройством с неразрушаемым чтением и всегда ориентируется на 1 цикл генератора синхро- сиени/ш " Запись или разрешение ВВода- вывода (1 линия) Шина данных^ (в линий) Адрес ЗУПВ Запрет чтения ' (1 линия) Адресная шина (15 линии) Уоманди ПЗУ 1/В(7\ 0) Чтение или запись В ЗУПВ данных 1/Ж7: О) Адрес ПЗУ Запрет чтения (U чтение) Фг Фч Уоманди ПЗУ или ввода - Мода Адрес ЗУПВ Запрет чтения Разрешение ввода- Вывода: {1=выверни УВВ) Запись: /5 запись 0= запись Разрешение ввода- вывода: 0= выдорна ЗУПВ Рис. Ю.З. Временная синхронизация шин PPS-8 323
операцию чтения, кроме случаев запрета со стороны программы сиг- налом RIH. Эта же линия (WHO) служит для выдачи сигнала раз- решения ввода—вывода в течение фазы Ф4, когда необходимо осу- ществить ввод—вывод с устройства, адресуемого на шинах данных. Если линия разрешения ввода—вывода находятся в состоянии логической 1 во время фазы Ф4, то линия запрета чтения RIH ис- пользуется для запрета чтения во время фазы Ф2, когда информация передается между ЦП и адресуемой микросхемой ввода—вывода. 10.2. СИСТЕМА КОМАНД Определение используемых символических обозначений дано в табл. 10.1, а команды системы PPS-8 описаны в табл. 10.2. PPS-8 имеет широкий набор команд для выполнения различных арифме- тических, логических операций, операций пересылок в удобной как для хранения, так и для быстрого выполнения форме. Большинство команд имеют только однобайтовый формат, но для расширения возможностей адресации и функционирования используются 2- и 3-байтовые форматы. Ссылки в таблицах поясняются в при- мечании к табл. 10.2. Основные символические обозначения Таблица 10.1 Символ Содержание А X Y Z L Р S W С IC Q Аккумулятор А (1 : 8) Регистр адреса ЗУПВ и индексный Х(1 :8) Регистр адреса ЗУПВ У(1 :8) Регистр адреса ЗУПВ Z(1 : 8) Регистр связи L(1 : 16) Программный счетчик Р( \ : 14) Указатель стека Регистр W Триггер переноса Промежуточный перенос Триггер промежуточного переноса 11 Комада 1(1 : 8) Первый байт многобайтовой или удлиненной (2 13 м R (п) R (п;гп) W/IO команды 11(1 : 8) Второй байт многобайтовой команды 12(1:8) Третий байт многобайтовой команды 13(1 :8) Содержимое ячейки ЗУПВ n-й бит регистра R Биты от п до m регистра R включительно Линия управления записыо/разрешением ввода — RIH Byte pigit (Цифра) Rage (Страница) вывода Линия запрета чтения 8-битовое поле данных 4-битовое поле данных Массив из 128 байт Пересылка (или +-) 329
Продолжение табл. 10.1 Символ Содержание Обмен Обратный код R Логическое И Логическое ИЛИ Исключающее ИЛИ Алгебраическое вычитание Алгебраическое сложение Больше, чем Меньше, чем Равно Шина команд/данных (с 1 по 8) Содержимое ячейки ПЗУ по адресу L Старший байт адреса входа в подпрограмму Младший байт адреса входа в подпрограмму Примечания к табл. 10.2 1. Адрес (14 бит) для операндов ЗУПВ указывается в регистрах Z и X. Семь младших бит регистра X указывают байт адреса (младшие биты адре- са). Если бит 8 регистра Х=1, то 7 младших бит регистра Z указывают 7 старших бит адреса ЗУПВ (номер страницы). В противном случае адрес страницы принимается равным 0 2. Все команды, увеличивающие или уменьшающие содержимое регистров X или У, автоматически обеспечивают пропуск следующей команды в случае переполнения Х/Y (7:1)—0 или заема X/Y (7:1) = 127 соответственно 3. Непосредственные или символьные операнды хранятся в ПЗУ (памяти команд) в качестве третьего байта команды. При этом один символ может быть поделен между несколькими командами путем помещения его в сим- вольный массив (см. раздел «Массивы данных») 4 Эта команда может использовать массив команд для «разделения» вто- рого байта команды (см раздел «Массивы данных»). 5. Все команды, которые загружают регистры по адресам ПЗУ, указан- ных в регистре автоматически увеличивают содержимое регистра L на 1. 6 Все команды, обменивающие операнд из ЗУПВ с содержимым аккуму- лятора, являются двухбайтовыми. Второй байт — это однобайтовая команда STORE (запомнить). Первый байт по сути «создает условия» для операции запоминания при обмене. По этой причине второй байт может быть выполнен как отдельная команда (путем перехода к ней), если это удобно программи- сту 7. Каждая из команд INQY и DECY состоит из двух самостоятельных команд (XY и INXY или DEXY). 8 Когда выполняется пропуск, то пропускается следующая команда (а не следующий байт). Для пропуска каждого байта необходим один цикл. Единственное отклонение от этого правила, когда после команды SKIP сле- дует одна из сложных команд* обмен с памятью (прим. 6), условные перехо- ды (прим. 9) или увеличение/уменынение Y (прим. 7). В этом случае пропу- скается только 1 байт, 330
9. Команды условного перехода содержат 2 или 3 байта. Первый байт по сути — соответствующая команда пропуска, а второй (и третий, если тре- буется) команда перехода. Если команде этого типа предшествует другая команда условного пропуска, то пропускается только первый байт команды условного перехода. 10. Команды DC и DCC применяются для упрощения операций десятич- ной арифметики, когда в одном байте содержатся две десятичные цифры. Триггер С используется для хранения переноса из 8-разрядного сумматора и, таким образом, создает условия для выполнения операций с удвоенной точ- ностью. Кроме того, значение переноса в промежуточном месте схемы распро- странения переноса — перенос из 4-го разряда, сохраняется в триггере Q для использования в команде DCC. Программы десятичного сложения и вычита- ния приведены ниже. Сложение LZI PAGE ) LXI ОР1 } LYI OP2 I Загрузка адресов операндов Вычитание ( LZI PAGE { LXI ОР1 I LYI OP2 RC LOOP LNXY DC AC DCC SNXY В LOOP Первоначальна» установка перено- са/заема Сложение/ вычита- ние двух чисел с переносом / заемом из предыдущего результата SC LOOP LNXY COM AC DCC SNXY В LOOP 11. Если следующая команда, которая должна быть выполнена или про- пущена после RT или RSK, является командой перехода В или BDI, в коман- дах RT или RSK должен быть установлен признак перехода (7-й бит). Это осуществляется кодированщ.м RT или RSK. 12. Команды перехода могут быть двух форматов. Однобайтовый формат модифицирует только 7 младших битов регистра Р, позволяя осуществить пе- реход внутри текущей 128-байтовой страницы. Двухбайтовый формат моди- фицирует все 14 бит регистра Р и позволяет переходить к любой ячейке па- мяти (16К). Два формата различаются 8-м битом первого байта: если он ра- вен 0, то используется удлиненный формат, если равен 1 — короткий. Если 8-й бит второго байта команды двухбайтового формата равен 0 (команда BDI), то запрещаются прерывания. Отметим, что ассемблер PPS-8 выбирает оптимальный формат автоматически для всех типов команд перехода (см. разд. 10.3). 13. См. пункт «Стеки данных». 14. Команды LAL и PSHL позволяют снизить объем подпрограмм, тре- бующих двух полных адресов1 для их вызова. Эффективным программным способом в этом случае является использование регистров Z, X для одного адреса, а регистра L для другого, оставляя регистр У, например, для хране- 331
ю Список команд Мнемокод Наименование Длина байт Число циклов L Load А — 1 1 LN Загрузить А Load A, Increment Address Загрузить А, увеличить ад- рес 1 1 LD Load A, Decrement Address Загрузить А, уменьшить ад- рес 1 1 LNXL Load A, Increment Address, Exchange L Загрузить А, увеличить ад- рес, обменять с L 1 1 LDXL Load A, Decrement Address, Exchange L Загрузить А, уменьшить ад- рес, обменять с L I 1 LNCX Load A, Increment & Compare Address, Exchange L Загрузить А, увеличить и сравнить адрес, обменять с L 1 1 LDCX Load A,Decrement ^Compare Address, Exchange L Загрузить Л, уменьшить и сравнить адреса, обменять с L 1 1 LNXY Load A, Increment Address, Exchange Y Загрузить А, увеличить ад- рес, обменять с Y 1 1
Таблица 10.2 Описание Словесное Символическое Примеча- ние Извлекаемый из ЗУПВ операнд по- мещается в аккумулятор То же, что и в L. Кроме того, содер- жимое регистра X увеличивается на 1 А-*-М А+-М Х^-Х+1 Пропуск, если Х=0 1 1, 2, 8 То же, что и в L. Кроме того, содер- жимое регистра X уменьшается на 1 А+-М, Х+-Х— 1 Пропуск, если Х= 127 I, 2, 8 То же, что и в LN. Кроме того, реги- стры L и Z, X обмениваются содер- жимым А*-М, Хч-Х—1 Пропуск, если Х = 0, Z, Х<—>L 1, 2, 8 То же, что и в LD Кроме того, реги- стры L и Z, X обмениваются содержи- мым А-*~М, Х+-Х—1 Пропуск, если Х=127, Z, Х<—>L 1, 2, 8 То же, что и в LNXL, но следующая команда пропускается, если X==Y А*-М, Х<-Х+1 Пропуск по X—0 или X=Y, Z, X~L 1, 2, 8, 19 То же, что и в LDXL, но следующая команда пропускается, если X = Y А-*-М, Х^-Х—1 Пропуск, если Х=127 или X — Y Z, X *-* L К 2, 8, 19 То же, что и в LN, но еще происхо- дит обмен содержимым между реги- страми X и Y А^-М, Х«-Х— 1 Пропуск, если Х~0, X~Y 1, 2, 8
s * Store A Запомнить A 1 1 SN Store A, Increment Address Запомнить А, увеличить ад- рес 1 1 SD Store A, Decrement Address Запомнить А, уменьшить ад- рес 1 I SNXL Store A. Increment Address, Exchange L Запомнить А, увеличить ад- рес, обменять c L 1 1 SDXL Store A. Decrement Address Exchange L Запомнить А, уменьшить адрес, обменять c L 1 1 SNCX Store A, Increment & Com- pare Address, Exchange L Запомнить А, увеличить и сравнить адреса, обменять с L 1 । SDCX Store A, Decrement & Com pare Address, Exchange L Запомнить А, уменьшить и сравнить адреса, обменять с L 1 SNXY Store A. Increment Address. Exchange Y Запомнить А, увеличить ал pec, обменять с Y 1 1 X Exchange Обменять 2 2
Содержимое А запоминается в теку- щей ячейке ЗУПВ М*~А 1 То же, что и S, но еще увеличивает- ся содержимое регистра X М*-А, X—Х+1 Пропуск, если Х=0 1, 2, 8 То же, что и S. Кроме того, уменьша- ется содержимое регистра X М-+-А, Х^Х-1 Пропуск, если Х=127 1, 2, 8 То же, что и SN. Кроме того, обмен содержимым между регистрами L и Z, X М—А, Х+-Х4-1 Пропуск, если Х=0, Z, X«-*L со сч То же, что и SD, но еще обменивают- ся содержимым регистры L и Z, X М+-А, Х*-Х—1 Пропуск, если Х= 127, Z, X^L 1, 2, 8 То же, что и SNXL. Кроме того, сле- М*-А, Х^-Х—1 1, 2, 8 дующая команда пропускается, если X —Y Пропуск, если Х = 0 или X=Y, Z, X~L 19 То же, что и SDXL. Но еще пропу- М^-Л, х—X—1 1, 2, 8, скается следующая команда, если X = Y Пропуск, если Х=127 или X = Y, Z, X~L 19 То же, что и SN, но, кроме того, ре- гистры X и У обмениваются содер- жимым М*~А, Х^-Х + 1 ’ Пропуск, если Х = 0, X*-*Y 1, 2, 8 гЭти команды идентичны указанным выше командам запоминания, за ис- ключением того, что происходит об- мен содержимым между А и ячейкой ЗУПВ А~М 1, 6
Мнемокод Наименование S « Число ЦИКЛОВ XN Exchange, Increment Add- ress Обменять, увеличить адрес 2 2 XD Exchange, Decrement Add- ress Обменять, уменьшить адрес 2 2 XNXL Exchange, Increment Add- ress, Exchange L Обменять, увеличить адрес, обменять с L 2 2 XDXL Exchange, Decrement Add- ress, Exchange L Обменять, уменьшить ад- рес, обменять с L 2 2 2 XNCX Exchange, Increment & Compare Address. Exchange L Обменять, увеличить и срав- нить адрес, обменять с L -2 XDCX Exchange, Decrement & Com pare Address, Exchange L Обменять, уменьшить и срав- нить адрес, обменять с L 2 2 XNXY Exchange, Increment Add- ress, Exchange Y Обменять, увеличить адрес обменять с Y 2 2 LX Load X Загрузить X 1, 2 2
Продолжение табл. 10. 2 Описание Словесное Символическое Примеча- ние То же Операнд из текущей ячейки ЗУПВ засылается в регистр X А^М, Х-Х + 1 Пропуск, если Х=0 А*-*М, Х^-Х + 1 Пропуск, если Х=127 А<-М, X*—Х4-1 Пропуск, если Хе=0, Z, X~L А«-*М, Х«-Х-1 Пропуск, если Х=»127, Z, X~L А«-*М, X—Х-Н Пропуск, если Х=0 или X = Y, Z, X^L А«-*М, Х«—Х—-1 Пропуск, если Х=127 или Х== Y, Z, X*->Y А~М, Х-Х4-1 Пропуск, если Х=0, X*—Y Х*-М 1, 2, 6, 8 1, 2, 6, 8 1, 2, 6, 8 1. 2, 6, 8 1, 2, 6, 8, 19 1, 2, 6, 8, 19 1, 2, 6, 8 4
LY Load Y I, 2 LZ Загрузить Y Load Z I, 2 2 LAI Загрузить Z Load A, Immediate 1.. .3 3 LXI Загрузить А непосредст- венно Load X, Immediate 1.. .3 3 LYI Загрузить X непосредствен- но Load Y, Immediate 1.. .3 3 LZ1 Загрузить Y непосредствен- но Load Z, Immediate 1.. .3 3 LAL Загрузить Z непосредствен- но Load A through Link 1, 2 3 LXL Загрузить А по регистру L Load X through Link 1, 2 3 LYL Загрузить X по регистру L Load Y through Link 1, 2 3 LZL Загрузить Y по регистру L Load Z through Link 1, 2 3 LXA Загрузить Z по регистру L Load X from A 1 I LYA Загрузить X из A Load Y from A 1 1 LZA Загрузить Y из A Load Z from A 1 1 LLA Загрузить Z из A Load L from A 1 1 w Загрузить L из A
Операнд из текущей ячейки ЗУПВ Y*-M 4 засылается в регистр Y Операнд из текущей ячейки ЗУПВ Z+-M 4 засылается в регистр Z Символьно обозначенный операнд по- А*-13 3, 4 мещается в аккумулятор А Символьно обозначенный операнд по- мещается в регистр X Х*-13 3, 4 Символьно обозначенный операнд по- мещается в регистр У Y-*-I3 3, 4 Символьно обозначенный операнд по- мещается в регистр Z Z—13 3, 4 Содержимое ячейки ПЗУ с адресом, W—A, A^-(L) 4, 5, 1+ содержащимся в регистре L, помеща- L—L+1 ется в аккумулятор А Содержимое ячейки ПЗУ с адресом, X*-(L), L—L+1 4, 5 записанным в L, помещается в ре- гистр X Содержимое ячейки ПЗУ с адресом Y-(L), 4, 5 записанным в Lt помещается в ре- L*-L+l гистр У Содержимое ячейки ПЗУ с адресом, Z-(L), 4, 5 записанным в L, помещается в ре- L*-L+l гистр Z Содержимое А засылается в ре- X«-A 16 гистр X Содержимое А засылается в ре- Y*-A 16 гистр У Содержимое А засылается в ре- Z*-A 16 гистр Z Содержимое А помещается в 8 стар- ших бит регистра L L(16 : 9)<-A 15
W Мнемокод Наименование 1 Число ЦИКЛОъ XY Exchange Y I XL Обменять с Y Exchange L 1 1 ХАХ Обменять с L Exchange A and X 1 । XAY Обменять А с X Exchange A and Y 1 I XAZ Обменять А с Y Exchange A and Z 1 XAL Обменять А с Z Exchange A and L 1 INCX Обменять А с L Increment X 1 1 DECX Увеличить X Decrement X 1 t INXY Уменьшить X Increment X, 1 1 DEXY Exchange Y Увеличить X, обменять с Decrement X, Exchange Y Y 1 1 INCY Уменьшить X, обменять с Increment Y Y 2 2 DECY Увеличить Y Decrement Y 2 2 PSHA Уменьшить Y Push А 1. 2 2 PSHX Занести А Push X 1 2 2 - Занести X в
Продолжение табл, 10.2 «Описание Примеча- Словесное Символическое ние Обмен содержимым между регистра- X«-»Y ми X и Y Обмен содержимым между регистра- L«->Z, X ми L и Z, X Обмен содержимым между регистра- А^>Х ми А и X Обмен содержимым между регистра- A«-*Y ми А и Y Обмен содержимым между регистра- A^Z ми А и Z Обмен содержимого регистра А со A—L (16:9) старшим байтом регистра L Увеличение содержимого регистра X Х-Х— 1 2 на 1 Пропуск, если X—0 Уменьшение содержимого регистра Л Х*-Х—1 2 на 1 Пропуск, если Х=»127 Содержимое регистра Л увеличивает- Х*-Х+1 2 ся на 1 и обменивается с Y Пропуск, если Х=0, Содержимое регистра X уменьшается i -X 11 2 на 1 и обменивается с Y Пропуск, если Х==127, X~Y Содержимое регистра Y увеличивает- Y^-Y+l 2, 7, 8 ся на 1 Пропуск, если Y=0 Содержимое регистра Y уменьшается Y+-Y—1 2, 7, 8 на 1 Пропуск, если Y«127 Содержимое регистра А заносится в A-(S) 4, 13 стек S—S+l Содержимое регистра А заносится в X-(S) 4, 13 стек S-*-S+1
PSHY Push Y Занести Y 1, 2 2 PSHZ Push Z Занести Z 1, 2 2 PSHL Push L Занести L 1 3 POPA Pop A Извлечь A 1, 2 2 POPX Pop X Извлечь X 1, 2 2 POPY Pop Y Извлечь Y 1, 2 2 POPZ Pop Z Извлечь Z 1, 2 2 POPL Pop L Извлечь L 1 3 A Add Сложить 1 1 AC Add with Carry Сложить с переносом. 1 1 ASK Add, Skip on Carry Сложить, пропуск по пере- 1 1 ACSK носу Add with Carry. Skin on 1 1 Carry Сложить с переносом, про- AISK пуск по переносу Add Immediate, Skip on I. 3 3 Carry Непосредственно сложить н INCA пропустить по переносу Increment А Увеличить А 1 »
Содержимое регистра Y заносится в стек Содержимое регистра Z заносится в стек Содержимое L заносится в стек; а в L заносится содержимое регистров A, W Извлечь старший байт из стека и по- местить в А Извлечь старший байт из стека и по- местить в X Извлечь старший байт из стека и по- местить в У Извлечь старший байт из стека и по- местить в Z Два верхних байта стека заносятся в L Сумма содержимого аккумулятора и текущей ячейки ЗУПВ помещается в аккумулятор То же, что и А, но бит переноса при- бавляется к младшему разряду То же, что и А, но если бит перено- са^, то следующая команда про- пускается То же, что и АС, но следующая команда пропускается, если пере- нос = 1 ____________ Сумма содержимого А и символьно обозначенного операнда заносится в А Содержимое аккумулятора увеличива- ется на 1 Y-*(S) 4, 13 S*-S+l t ! +2 4, 13 L->(S+1, S) A, W->L S—S + 2 13, 14 S*-S—1, A*-(S) Пропуск, если S==31 4, 13 S—S-l, X^-(S) Пропуск, если S=31 4, 13 S—S—1, Y*-(S) Пропуск, если S=3I 4, 13 S-S-l, Z*-(S) Пропуск, если S=31 4, 13 S*-S—2 L—(S+ 1, S) 13 C, A^-A+M Q—1C Ю, 1 C,A*-A+M+C Q-*-IC 10, 1 С, A*-A+M Q—IC Пропуск, если C=J 10, 1 С, A-<-A+M-+-C Пропуск, если C=J 10, 1 A-*-A + I3 Q—IC Пропуск по переносу 3, 4, 10 it °+ 10
Мнемокод Наименование Длина, байт ca о с ч ч * X X ST SJ DC Decimal Correct (1) Десятичная коррекция (1) 1 1 DCC Decimal Correct (2) Десятичная коррекция (2) 1 1 AN Logical AND Логическое И 1 1 ANI Logical AND Immediate Непосредственное логиче- ское Й 1...3 1 OR Logical OR Логическое ИЛИ 1 1 EOR Logical Exclusive OR Исключающее ИЛИ 1 1 COM Complement Дополнение 1 1 SC Set Carry Установить перенос 1 1 1 RC Reset Carry Сбросить перенос 1 1 RAR Rotate A Right Циклически сдвинуть A вправо 1 1
Продолжение табл. 10.2 Описание Примеча- ние Словесное Символическое К содержимому аккумулятора добав- ляется величина 66ie A-<-A+66te Q—IC 10, 16 Содержимое аккумулятора модифици- руется по состоянию С и Q триггеров С Q 0 0 А*-А+(9А)1в 0 1 А*-А+(А0)16 1 0 A*-A+(FA)le 1 1 не изменяется 10, 16 Логическое И содержимого аккумуля- тора и текущей ячейки ЗУПВ засы- лается в аккумулятор А-АДМ 1 з, 4 Логическое И содержимого аккумуля- тора и символьно обозначенного опе- ранда заносится в аккумулятор А—Ад!3 Логическое ИЛИ содержимого акку- мулятора и операнда из текущей ячейки ЗУПВ заносится в аккумуля- тор А—А\/М 1 Исключающее ИЛИ (сумма по mod 2) содержимого аккумулятора А и опе- ранда из ЗУПВ помещается в А А-«-А VM 1 Обратный код аккумулятора заносит- ся в А А*-А 16 Триггер переноса устанавливается в 1 С^1 10 Триггер переноса устанавливается в 0 С—0 10 Содержимое аккумулятора А и триг- гера переноса С циклически сдвигает- ся вправо на 1 бит А(8:1)-*С t 1 16
RAL MDP Rotate A Lett Циклически сдвинуть A влево Move Digit Right Сдвинуть на цифру вправо 1 1 Л 1 MDL Move Digit Left Сдвинуть на цифру влево I Л SB Set Bit (п) Установить бит (п) 1, 2 2 RB Reset Bit (n) Сбросить бит (п) 1 2 2 В Branch Переход 1. 2 1. 2 BD1 Branch, Disable Interrupts Переход, запрет прерывания BL Branch and Link Переход и связь (переход к подпрограмме) 1, 2 3
Содержимое аккумулятора >1 и триг- гера переноса С циклически сдвигает- ся влево на 1 бит Содержимое аккумулятора А сдвига- ется вправо на 4 бита, и 4 младших бита из текущей ячейки ЗУПВ зано- сятся на свободное место в А Содержимое аккумулятора А сдвига- ется влево на 4 бита, и 4 старших бита из текущей ячейки ЗУПВ зано- сятся на свободное место в 4 Указанный бит в текущей ячейке ЗУПВ устанавливается в 1 Указанный бит в текущей ячейке ЗУПВ устанавливается в 0 Указываемый адрес помещается в ре- гистр Р То же, что и В, но запрещается пре- рывание Указываемый адрес помещается в ре- гистр Р. Предыдущее (увеличенное) содержимое регистра Р сохраняется в регистре L вместе с состоянием триг- гера G Предыдущее состояние реги- стра L заносится в стек » А(8:1)*-С 1 t А(8 :5)-*-А(4 : 1)' М(4: 1)-^А(8:5) А(8:5)-*-А(4 : 1) А(4: 1>-М(8:5) М--М V 2<~> М*-МД Р(7: 1)*-П (7: 1) Если 11 (8) ® 1, то Р( 14 : 8)*-12(7 : 1) Р(7: 1)^-1! (7: 1) Р(14 : 8)-*—12(7 : 1) Запрет прерывания L-*(S+1, S) S^-S + 2 P->L(15 : 9, 7: 1) C-*L(16) Если 11 (6) = I P(14 : 8)-*-SPu (7 : 1) P(7: l)*-SPi(7 : 1) Если II (6)=0 P( 12 : 8)^-11 (5 : 1) P(7: 1)*-I2(7: 1) P(13)—12(8) P <14)-*—-0 16 16, 18 16, 18 4 4 12, 16- 12, 1G 15, 16
Мнемокод Наименование на, Число циклов RT Return Возврат 1 3 RSK Return & Skip Возврат и пропуск 1 3 PTI Return, Enable Interrupts Возврат, разрешение преры- 1 3 вания NOP No Operation Нет операции 1 1 SKC Skip if Carry Пропуск по переносу 1 1 SKNC Skip if No Carry Пропуск по отсутствию пе- 1 1 SKZ реноса Skip if Zero 1 1 SKN2 Пропуск по нулю Skip if Non-Zero 1 1 SKP Пропуск по ненулю Skip if Positive Пропуск по плюсу Skip if Negative Пропуск по минусу 1 1 1 1 SKN
Продолжение табл. 10.2 Описание Примеча- ние Символ ическое Словесное Регистр Р и триггер С загружаются из регистра L. Два верхних байта стека извлекаются в регистр L P-*-L(15:9, 7: 1) C-*-L(16) S^-S—2 L-*-(S + l, S) 11 То же, что и RT, но следующая команда (т. е. команда, к которой происходит возврат) пропускается То же, что и RT, но еще разрешаются прерывания Операции не выполняются. Использу- ется признак условного перехода P*-L(15:9, 7: 1J C*-L(16) S+-S—2, L— (S+l. S) Пропуск следующей ко- манды P-*-L(15:9, 7: I) C-<~L(16) S^-S—2, L*-(S+1,S) Разрешить прерывания 11 Следующая команда пропускается, если триггер переноса С установлен в 1 Пропуск, если С = 1 8 Следующая команда пропускается, если триггер переноса С сброшен в 0 Пропуск, если С = 0 8 Следующая команда пропускается, если содержимое А равно 0 Пропуск, если А = 0 8 Следующая команда пропускается, если содержимое А не равно 0 Пропуск, если А=#0 8 Следующая команда пропускается, если старший бит А равен 0 Пропуск, если А(8)=0 8 Следующая команда пропускается, если старший бит А равен 1 Пропуск, если А(8) = 1 8
SKE BBT Skip if Equal Пропуск по равенству Branch if Bit (n) True Переход, если содержимое бита (п) истинно I 2, 1 3 1 2,3 BBF Branch if Bit (n) False Переход, если содержимое бита (п) ложно 2, 3 2,3 BC Branch if Carry Переход по переносу 2, 3 2,3 BNC .Branch if No Carry Переход по отсутствию пе- реноса 2, 3 2,3 BZ Branch if Zero Переход по нулю 2, 3 2,3 BN2 Branch if Non-Zero Переход по ненулю 2. 3 2,3 BP Branch if Positive Переход по плюсу 2, 3 2,3 BN Branch if Negative Переход по минусу 2, 3 2,3
Следующая команда пропускается, Пропуск, если А«»М 8 если содержимое А равно содержи- мому текущей ячейки ЗУПВ 9, 12, 16 Переход происходит, если указанный Если МЛ2«в-’’ = 1, то бит текущей ячейки ЗУПВ равен 1 Р(7: 1) —12(7: 1), • если 12(8) = 1, Р (14 : 8)13 (7 : 1) И, 9, 12, 16 Переход осуществляется, если ука- Если МЛ 2(и-1)=0. то танный бит текущей ячейки ЗУПВ равен 0 Р(7: I)-*—12(7 : 1), если 12(8) = 1, Р (14 : 8)13 (7 : 1) и, 9, 12, 16, Переход осуществляется, если триг- Если С= 1, то гер переноса С установлен в 1 Р(7: 1)-*~!2(7 : 1), если 12(8) = 1, Р(14 : 8)*-13(7 : 1) И, 8 Переход осуществляется, если триг- Если С=0, то 9, 12, 16,, гер переноса С сброшен в 0 Р(7: 1)-е—12(7 : 1), если 12(8) = 1, Р(14: 8) *-13 (7 : 1) И, 8 Переход осуществляется, если в ак- Если А=0, то 9, 12, 16, кумуляторе 0 Р(7: 1)-е-12(7 : 1), если 12(8) = 1, Р (14 : 8)13 (7 : 1) и, 8 Переход осуществляется, если в ак- Если А¥=0, то 9 12, 16, кумуляторе величина =5^0 Р(7: !)*-12(7: 1), если 12(8) —1, Р(14 : 8) *—13 (7 : 1) и, 8 Переход осуществляется, если стар- Если А(8)=0, то 9 12, 16 ший бит аккумулятора = 0 Р(7: 1)*-12(7: 1), если 12(8) = 1, Р(14 : 8) *-13(7 : 1) и, 9, 12, 16. Переход осуществляется, если стар- Если А (8) «1, то ший бит аккумулятора = 1 Р(7: 1 12(7 : 1), если 12(8)== 1, Р(14:8)*-13(7: 1) И, 8
Мнемокод Наименование Длина, байт Число I циклов I BNE Branch if Not Equal Переход по неравенству 2, 3 2,3 104 Digit I/O (C, D) Цифровой ввод—вывод (С, D) 2 2 IN Input (C, D) Ввод (C, D) 2 2 OUT Output (C, D) Вывод (C, D) 2 2 RIS Read Interrupt Status Чтение состояния преры- вания 2 2
Продолжение табл» 10.2 Описание Примеча- ние Словест ное Символическое Переход осуществляется, если число в А не равно числу в текущей ячейке ЗУПВ Если А=5^М, то Р(7: 1)*—12(7 : 1), и, ес- ли 12(8) «1, Р(14 : 8)*- *-13(7: 1) 9, 12, 16, 8 Приказ С передается к УВВ с номе- ром D. Биты 8...5 аккумулятора пере- даются в УВВ, а биты 1...4 принима- ются от УВВ I2->I/D(8: 1) А(8 : 5)’->I/D(8 : 5) А(4: 1)*-I/D(4: 1) 16, 17 Приказ С передается к УВВ с номе- ром D. Аккумулятор загружается байтом данных от УВВ. Если УВВ с номером D выключено, то передает- ся нулевой адрес устройства I2-*I/D(8: 1) A*-I/D(8: 1) 16, 17 То же, что и IN, но содержимое А выдается на УВВ I2->I/D(8: 1) A->I/D(8: I) 16 17 Аккумулятор загружается словом со- стояния прерывания от УВВ с самым старшим приоритетом из устройств, требующих обслуживания в данный момент I2->I/D(8: 1) A*-I/D(8: 1) 16, 17
ния размера массива Следующий пример иллюстрирует использование команд LAL и PSHL в такой подпрограмме: BL DW1 SUBR N Размер блока Последовательность вызова DWA1 > DWAl) SOURCE Двухбайтовый адрес источника DEST Двухбайтовый адрес при- емника SURB LYL LXL LZL LAL LAL PSHL Размер блока -► Y Адрес источника-*/, X Адрес приемника -* A, W A, W -* L, адрес возвра- та -* стек POPL RT Адрес возврата L Возврат из 15. Команды перехода и связи (вызова подпрограмм) существуют в двух форматах. Однобайтовый формат использует адреса из массива начальных адресов подпрограмм (см «Массивы данных») и позволяет переход в любое место памяти объемохм 16К. Двухбайтовый формат не использует массив на- чальных адресов подпрограмм Он позволяет выполнять переходы в «млад- шей» половине памяти (8К). Отметим, что ассемблер PPS-8 автоматически выбирает оптимальный формат команды перехода для всех типов команд пе- рехода (см. разд. 10.3). 16. За этими командами не может непосредственно следовать команда перехода В. Ассемблер PPS-8 автоматически вставляет однобайтовую команду NOP, если ему встречается команда В. 17. Все команды ввода—вывода требуют 2 байт. Второй байт выдается на микросхему ввода—вывода по сигналу на линии WHO (см. разд. 10 4). 18. Команды MDR и MDL могут быть ис- пользованы для сдвига строки двоично-деся- тичных цифр, что может потребоваться для нормирования числа, записанного в десятич- ном формате Пример приведен ниже LEFT LXI BOTTOM L7I BOTTOM LAI NEW DATA LOOP MDR XD В LOOP Синхронизация: 4 цикла/2 цифры 8 мкс/цифра 19. Сравнение регистров X и Y осуществляется только по 7 младшим битам. ‘) DW и DWA — ассемблерные обозначения псевдоопераций; DW — однобайтовое сло- во данных; DWA — двухбайтовый адрес, слова данных, транслируемый в 7 младших би- тов в первом байте и 7 старших— во.втором. 343
10.3. АДРЕСАЦИЯ И ПРОГРАММИРОВАНИЕ Стек данных. Первые 32 байта ЗУПВ (адреса 0 ... 31) организо- ваны как стек для облегчения обслуживания внешних прерываний и вложений подпрограмм. Стек работает по принципу «вошедший первым выходит последним» (LIFO). Имеются команды, которые обеспечивают занесение содержимого любого регистра в стек и за- грузку регистров из стека. Кроме того, в стеке автоматически за- поминается адрес возврата, когда вызывается подпрограмма или происходит прерывание, и он вызывается из стека, когда подпрог- рамма закончена. Текущий уровень вложения подпрограммы хра- нится в регистре связи L, а предыдущее содержимое регистра L за- носится в стек. 5-битовый регистр S используется как указатель стека. Его со- держимое увеличивается на 1 после того, как в стек заносится оче- редной байт, и уменьшается на 1 перед извлечением очередного бай- та. Указатель стека, таким образом, указывает последний байт, извлеченный из стека (или следующий байт, который будет занесен в стек). Если в указателе стека в результате выполнения команд РОРХ, POPY, POPZ или РОРА установится величина 31, то сле- дующая команда пропускается. Это дает возможность программно- го определения содержимого указателя стека для его использова- ния в программе возврата после аварии питания. Операнды ЗУПВ. Все текущие данные для программ PPS-8 хра- нятся в 2048-битовой (256-байтовой) памяти ЗУПВ. Возможна пря- мая адресация ЗУПВ объемом до 16К байт. Адрес байта на страни- це ЗУПВ (7 младших бит адреса) определяется содержимым регист- ра X. Адрес страницы ЗУПВ (7 старших бит адреса) определяется регистром Z или принимается равным нулю в зависимости от содер- жимого 8-го бита регистра адреса байта (1==адрес равен содержи- мому регистра Z, 0s страница 0). Хотя для всех способов адресации ЗУПВ используется единст- венная пара регистров (Z, X), система команд PPS 8 обеспечивает достаточную эффективность адресации операндов. Используя воз- можности обмена содержимым между регистрами У, L и Z, X, мож- но получить два полных (14-битовых) адреса и один однобайтовый (7-битовый), требуемые для загрузки/запоминания операндов. Од- на однобайтовая команда может выполнить за один цикл следую- щие функции: 1. Передать 8-битовый операнд из аккумулятора в ЗУПВ или обратно. 2. Увеличить или уменьшить адрес операнда. 3. Осуществить проверку на достижение границы страницы и произвести пропуск команды, если граница достигнута. 4. Проверить программу на окончание циклического участка (по равенству адресов) и осуществить пропуск в случае выполнения. 5. Выбрать другой байт адреса для поиска следующего операн- да ЗУПВ путем обмена содержимым регистров X с У или Z, X с L. 344
Такая организация эффективна, в частности, при обработке мас- сивов данных, т. е. когда имеются программные циклы. Примеры соответствующих программ приведены ниже. Пример 1. Пересылка массивов данных а) Один блок данных должен находиться внутри страницы 0 в соответст- вии с границами страниц: LZI SOURCE LXI SOURCE LYI DEST LOOP LNXY SNXY’ } 3 цикла/1 байт 'до 128 байт) В LOOP ) б) Массив данных может находиться в любом месте памяти: LZI DEST LXI DEST XL LZI SOURCE LXI SOURCE LYI END LOOP LNXL SNCX > 3 цикла/байт R LOOP J Пример 2. Очистка или установка массивов данных. а) Массив должен быть на нулевой странице в соответствии с границами страниц: BLOCK LXI LAI 0 (или начальная константа) LOOP SN > 2 цикла/байт В LOOP J б) Массив может быть р любом месте памяти: LZI BLOCK LXI BLOCK LYI COUNT ' LAI 0(или начальная константа) LOOP SNXY DEXY } 3 цикла/байт В LOOP ) Пример 3. Десятичное сложение. а) Первое слагаемое на нулевой странице, а второе—в произвольном мес- п памяти: LZI ADDEND LXI ADDEND LYI AUGEND LOOP RC LNXY DC AC DCC SNXY В . 6 циклов/2 цифры LOOP 345
б) Оба слагаемых расположены в произвольном месте памяти: LZI AUGEND LXI AUGEND XL LZl ADDEND LXI ADDEND LYI END RC LOOP LNXL DC AC DCC SNCX В LOOP 6 циклов/2 цифры Операнды ПЗУ. В PPS-8 имеется возможность для хранения констант в ПЗУ вместе с командами. Это важно по двум причинам: 1) ПЗУ значительно дешевле ЗУПВ; 2) все данные, которые должны быть сохранены на время отклю- чения питания, должны храниться в ПЗУ. Способ хранения и выборка данных (операндов) в ПЗУ харак теризуется значительной гибкостью. При разработке PPS-8, в часг ности, учитывались следующие типы операндов ПЗУ: 1. Непосредственные (символьные) операнды. Операнды этого типа хранятся или внутри последовательности команд, или в спе- циальном символьном массиве. Они вызываются командами с непос- редственной адресацией (LAI, LXI, AISK, ANI и т. а.). 2. Параметры подпрограмм. Операнды этого типа хранятся в ПЗУ сразу же за командой вызова подпрограммы (BL) и представ- ляют собой данные, которые должны быть введены в подпрограмму. Эти операнды доступны командам загрузки через регистр связи (LAL, LXL, LYL и т. д.). 3. Таблицы констант Эти данные не нуждаются в хранении внут- ри последовательности команд и могут быть размещены в любом удобном для программиста месте. Таблицы констант (такие, как коды символов или таблицы поиска данных), запомненные таким образом, доступны командам загрузки через регистр связи (LAL# LXL, LYL и т. д.). Заметим, что таблица адресов возврата может храниться в ПЗУ и быть доступной команде возврата (RT). Эту возможность иллюстрирует следующий пример. Задача. Один из N возможных контрольных символов получея от некоторого УВВ. Необходимо выбрать программу обработки, соответствующую данному символу. Пример программы, В ПЗУ заносятся две таблицы, построенные в соответствии со страничной организацией (рис. 10.4). Прежде всего символ ищется в таблице кодов символов CHAR содержащей коды всех разрешенных символов. Предположим, что символ, подлежащий распознаванию, хранится в ЗУПВ в ячейке TEMP нулевой страницы. 346
Таблица символов СИМ Нод сим дола 7 Нод симдола 2 Нод си идола 3 Нод спидола N Таблица адресов 0HARLOC Адрес ПЗУ N Рис. 10.4. Таблица поиска символа Адрес (1б-рачный код) ° ----1 / I Начальная устаноднд 2 । при дключении латания 3 -----J * Миссий команд 3F 40 4 > Операнды дон 6X6 4Е J 4F используется М л ► Операнды для LYI он J 5F Не используется до > Миссий спидолой ^Операнды для LZI,AI$K д£J ОХ Не используется 70 1 7Е Операнды для LAI, ANI 1F Не используется W 1 Адреса 87 > подпрограмм 82 I ойслужийания 83 прерываний 1____________________ АО Адреса а? I подпрограмм । одслужидания А7____прерыданиа АЗ 2____________________ Адреса ► подпрограмм (Ниты 7,..7) Affpeca > подпрограмм (Ните/ 8„.74) Миссий адреса# подпрограмм Рис. 10.5. Массивы данных PPS-8 347
LZI CHAR Загрузка адреса таблицы символов в LXI CHAR регистр L XL LXI TEMP Адрес символа LOOP LAL Выборка символа из CHAR 5 циклов на BNE LOOP Сравнение симво символ лов Индекс символа (его положение в таблице CHAR) теперь нахо- дится в регистре L. Эта величина используется как индекс для вы- борки адреса обрабатывающей программы из таблицы CHARLOC. Затем команда возврата (RT) позволит возвратиться в основную программу. Содержимое регистра L фактически соответствует индексу сим- вола плюс 1, т. е. таблица CHARLOC смещена на 1 по отношению к таблице CHAR. LAI LLA LXL LZI XL RT CHARLOC,U Загрузка адреса страницы CHARLOC в L Адрес из таблицы CHARLOC X PROCESS Адрес страницы -► Z Адрес подпрограммы -► L Переход к программе обработки Массивы данных. PPS-8 имеет уникальную особенность, позво- ляющую минимизировать объем микропрограммы для многобай- товых команд. Эта особенность позволяет использовать определен- ные данные рядом команд совместно благодаря доступу к общим мас- сивам данных в определенной области ПЗУ. Есть три типа таких массивов: массив команд, массив символов и массив начальных под- программ. Расположение их в ПЗУ показано на рис. 10.5. 10.4. ввод —вывод Цифровой ввод—вывод (104). Система PPS-8 разрабатывалась для связи с внешними устройствами через микросхемы ввода—вы- вода как общего, так и специального назначения. Микросхемы вво- да—вывода соединены с ЦП и ЗУПВ через системные шины данных I/D—1 ... 1/D—8. В ЦП PPS-8 имеется два типа команд ввода—вы- вода. Все команды ввода—вывода двухбайтовые и выполняются за 2 цикла. Второй байт команды расшифровывается в микросхеме ввода—вывода. Присутствие этого байта на шине I/D указывается ЦП сигналом на линии WHO. Выполняемая командой функция за- висит от типа адресуемой микросхемы ввода—вывода. Два типа команд ввода—вывода показаны на рис. 10.6. Команда цифрового ввода—вывода используется для обмена данными ЦП PPS-8 с мик- росхемами ввода—вывода PPS-4. Возможна адресация до 16 микро- схем ввода—вывода и выдача 16 различных приказов. В процессе обмена осуществляется двунаправленная 4-битовая (цифровая) пе- редача. Содержимое битов 5 ... 8 аккумулятора ЦП PPS-8 переда- 348
байт 1 Цифровой ffgoS- Sb/Sod (104) \ff 1 в 0 1 7 r 7] 87 654321 Адрес устройства Приказ 8 7 6 5 4 3 Z 1 BaamZ $айт1 Лабай/пяый 66ой-6ь/6о6 (IN, OUT) Iff -7 ff ff 1 7 ~ 8 7 6 5 4 3 2 1 Адрес устройства Ввод ила вывод Приказ 87 654321 Рис. 10.6. Формат команд ввода—вывода ется по шине UD, а биты 1 ... 4 аккумулятора загружаются данны- ми от микросхемы ввода—вывода. Побайтный ввод—вывод (IN, OUT). Это основные команды вво- да—вывода системы PPS-8. Они используются для адресации од- ной из микросхем ввода—вывода и выдачи одного из восьми при- казов, а также передачи одного байта данных между микросхемой ввода—вывода и ЦП. Четвертый бит второго байта определяет ре- жим ввода или вывода. Нулевой адрес устройства используется как команда общего вы- зова, на которую реагируют все микросхемы ввода—вывода PPS-8 (одна из таких команд — чтение слова состояния прерывания, упо- минаемая в разд. 10.7). Микросхема ввода—вывода общего назначения (GP I/O). Эго основная микросхема, имеющая 12 статических дискретных входов и 12 статических дискретных выходов. Микросхема QP I/O, ис- пользуемая как в системе PPS-4, так и в PPS-8, показана на рис. 9.9. 10.5. ПАРАЛЛЕЛЬНЫЙ КОНТРОЛЛЕР ДАННЫХ (PDC) Параллельный контроллер данных (PDC), показанный на рис. 10.7, является гибким устройством параллельного ввода—вы- вода для связи системы PPS-8 с ВУ или в другими системами PPS-8 в мультипроцессорных комплексах. Прибор обеспечивает два не- зависимых двунаправленных канала ввода—вывода, каждый из ко- торых работает в различных режимах параллельного обмена. Каж- дый канал состоит из 10 линий (совместимых с ТТЛ по уровням): 8 линий данных и 2 управляющие линии (РЛХ... DAa, САХ и СА2 и DBX ... DBa, СВг и СВ2). Каждый канал имеет свой буфер данных (8 бит) и функциональный регистр (8 бит); общим для двух каналов 349
является регистр состояния (5 бит). Функция (режим) каждого ка- нала программно управляема и может быть загружена в соответ- ствующий функциональный регистр под управлением ЦП. Возмож- на прямая адресация до 15 приборов PDC благодрая использова- нию четырех линий выборки микросхемы (ASx ... AS4), которые могут быть соединены соответствующим образом пользователем для выборки адреса прибора (адрес 0000 резервируется для приказов общего вызова типа приказа ЧТЕНИЕ СЛОВА СОСТОЯНИЯ ПРЕРЫВАНИЯ). Режимы ввода—вывода. Режимы канала А контроллера PDC описаны ниже. Соответствующие режимы канала В выбираются не- зависимо, однако только канал А может инициировать прямой дос- туп к памяти. Статический ввод (static) (рис. 10.8). Содержимое шины данных заносится в буфер данных в течение фазы Ф2каждого цикла ЦПРР8-8. Канал данных А Канал данных В ПА BA BA BA ВА ПА ВА ПА CA СА ВВ ВВ ВВ ВВ ВВ ВВ ВВ ВВ СВ СВ 12 3 4 5 676 АСК! №0 Шина командj'данных Рис. 10.7. Структурная схема-параллельного контроллера данных 350
йднсцинлодая задержка (минимум) *L\ Iff мЧаЛ\8 ВШев /у2 ррс —— \ прерывания ”* ---77 J едщеги характера — —— дА2 Двухциклсдая задержка Ф |7|г|.?|4кк1Жр|г[ф t CAj или £А2 дь/дорка мтг АСКО (из ЦП) । Ддухцинлвдая Р задержка & ЦП заираишдаел? адрес услтроис/пда же Рис. 10.8. Организация статического ввода: Минимальная длительность 7\ равна длительности цикла генератора; минимальная дли* тельность Т2 равна длительности 2,5 циклам генератора; максимальная длительность 7\ зависит от программы; время появления сигнала подтверждения прерывания ввода—вы- вода АСКО зависит от про!рам.мы ЦП может считывать данные с буфера в любое время. Каждая ли- ния управления в отдельности представляет собой линию запроса прерывания ЦП, а сигнал запроса прерывания генерируется пере- падом ТТЛ уровня с 0 до 1 на СД, или СА2. Временные диаграммы запросов прерывания приведены на рис. 10.8. Статический вывод (рис. 10.9). На шине данных сигнал форми- руется буфером данных, который может загружаться от ЦП в любое время. Обе линии управления могут передавать запросы прерыва- ния. Временные диаграммы запросов прерывания аналогичны слу- чаю статического ввода (рис. 10.8). Статический ввод—вывод (рис. 10.10). Данные линий DA6...DA6 загружаются в 4 старших бита буфера данных в течение фазы Ф4 каждого цикла PPS-8. На линии данных DAi ... DA^ постоянно пе- редаются 4 младших бита из буфера данных. ЦП может прочитать или загрузить буфер данных в любое время. Когда ЦП загружает буфер данных, он изменяет только 4 младших его бита. По обеим линиям управления поступают запросы прерывания в ЦП. Вре- менные диаграммы процесса прерывания аналогичны диаграммам статического ввода (рис. 10.8). 351
Ifrh-. 1!1>8 im Одноцикловая задержки ф2 *1 в Sb/ходов | данных 2 входа прерывания > одщего J характера Двух цикловая задержка Рис. 10 9 Организация статического вывода Синхронизируемый (clocked) ввод. Содержимое шины данных заносится в буфер данных по перепаду потенциала на линии СА2 с 0 на 1 (уровни ТТЛ). ЦП может прочитать данные из буфера в лю- бое время. Обе линии управления вызывают прерывание ЦП. Вре- менные диаграммы прерывания для CAi аналогичны случаю стати- ческого ввода (рис. 10.8). Линия управления СА2 может вызывать также запрос прямого доступа к памяти (ПДП) (только по каналу Л). Синхронизируемый вывод. Сигнал на шине данных формируется постоянно от буфера данных, который может загружаться от ЦП в любое время. Положительный импульс на линии CAt формируется каждый раз, когда буфер данных загружается из ЦП или (только для канала А) по каналу ПДП. По линии СА2 выдается запрос пре- рывания в ЦП. Временные диаграммы сигналов прерывания анало- гичны случаю статического ввода (рис. 10.8). Синхронизируемый ввод—вывод. Данные с линий DAb ... DA3 шины данных запоминаются в 4 старших разрядах буфера данных по перепаду с 0 на 1 (уровень ТТЛ) на линии СА2 (так же, как и для синхронизуемого ввода, рис. 10.11). На линии DAX ... DA^ постоян- Одноцинловая задержка (минимум) Одно цикловая задержка im РЯС Двухцинловая задержка ЯА5...ВА^ ЯA§...2JAtf CAj CAZ Цъ.л/Лв У 4 входа данных У 4 выхода данных 'I 2 входа I прерывателя । одщего характера Рис 10.10 Организация статического ввода—вывода 352
но поступают 4 младших бита из буфера данных. Положитель- ный импульс генерируется на линии САг каждый раз, как только буфер данных загружается процессором (то же самое, что и при син- хровыводе). ЦП может загрузить или прочитать буфер данных в любой момент. При разгрузке буфера данных изменяются только 4 младших бита. Линия СД2 используется для запроса прерывания в ЦП. Согласованный (handshake) ввод. Линии САХ и СА2 первоначаль- но находятся в состоянии 0 (ТТЛ-уровни). Информация с шины дан- ных заносится в буфер данных по перепаду на линии СА2 с 0 в 1. На линии СДГ устанавливается 1, как только буфер данных загру- жается вводимыми данными. ЦП может считать содержимое буфе- ра в любой момент после перепада по линии СА2 с 0 на 1. Линия САг снова переходит в состояние 0, когда содержимое буфера считано процессором (или запомнено в ЗУПВ по КПДП) при условии, что сигнал на СА2 уже перешел в состояние 0. Линия управления СА2 выдает запрос прерывания и/или (только для кана- ла А) запрос ПДП. Согласованный вывод. Сигнал на шине данных постоянно форми- руется буфером данных. Первоначально линии СДХ и СА2 находят- ся в состоянии 0. Линия С At затем переводится в состояние 1, ког- да ЦП загружает буфер данными или (только для канала А) бу- фер загружается через ПДП. СДХ сбрасывается в 0 по переходу с 0 на 1 на линии СА2. Буфер данных может быть снова загружен в л гобой момент после возврата СА2 в состояние 0. По линии СА2 пе- редается запрос прерывания и/или (только для канала 4) запрос ПДП. Прямой доступ к памяти (ПДП). Четыре режима (синхроввод, синхровывод, согласованный ввод и согласованный вывод) позво- ляют оптимизировать операции ПДП от канала А. Когда выбирается вариант ПДП в режиме синхроввода или согла- сованного ввода, каждый запрос ПДП выдается в течение 1,5 цик- ла после обнаружения перепада с 0 на 1 на линии СА2. Когда выби- рается вариант ПДП для режима синхровывода, то первоначаль- ный запрос выдается, как только функциональный регистр А за- гружен управляющим словом режима вывода и вариантом ПДП. Второй и последующие запросы выдаются в течение фазы Ф2, пред- шествующей возникновению логической I на СА{. Эги запросы бу- дут генерироваться по каждому акту вывода до тех пор, пока парал- лельный контроллер данных (PDC) не получит сигнал от конт- роллера прямого доступа о завершении обмениваемого массива. Функциональные регистры. Функция (режим) каждого канала программируется и заносится в соответствующий функциональный регистр. Каждый регистр загружается управляющим словом под Управлением ЦП. Поля каждого из функциональных регистров по- казаны на рис. 10.11. Как видно из рисунка, в каждом канале име- ется 8 основных режимов ввода—вывода; различные режимы обоих каналов могут быть заданы и будут выполняться одновременно. 12 Зак. Ю88 353
Бит Функциональный регистр А Функциональный регистр В 1...3 Указывает один из восьми основ- Указывает один из восьми основ- ны режимов ввода—вывода ны режимов ввода—вывода 4 Не используется Не используется б Управление прерыванием CAi Управление прерыванием СВ\ 6 Управление прерыванием СА2 Управление прерыванием СВ2 7 Управление прерыванием по окон- чании массива данных при ПДП Не используется 8 Разрешение ПДП * Функциональный регистр 4 в 7 в 5 4 3 2 1 I I II HI I I Режим напала А —Не используется __Управление прерыванием канала А —Управление ПДП канала А Функциональный регистр У 87ВВ4327 ЕЕГПТШ Режим канала У —Не используется _ Управление прерыванием канала У ---Не используются Рис. 10.11. Поля функционального регистра (управляющее слово) Регистр состояния 8 7 6 5 4-3 217 '—Не используются --------Условие конца пассива 8 канале А (1* переполнение данных в канале В ---------( В режимах согласованного вводов ^синхронизируемого Ввода или Ввода-вывода г 1= буфер В заполнен в режиме согласованного ....} ввода или любого синхронизируемого ввода ( 7^буфер В свободен в режиме согласованного v Вывода переполнение данных 6 канале А — s в режиме согласованного или {любого синхронизируемого ввода г 1=буфер А заполнен в режиме согласованного j или любого синхронизируемого ввода —————j 1*буфер А свободен в режиме t согласованного вывода Рие 10.12. Формат слова регистра состояния 354
Регистр состояния. Содержимое регистра состояния может быть передано в аккумулятор ЦП по программному запросу. Формат слова регистра состояния приведен на рис. 10.12. Набор команд параллельного контроллера данных. Параллель- ный контроллер данных получает от ЦП PPS-8 восемь различных приказов. Четыре из них относятся к приказам вывода и описаны ниже. 1. LFRA (LOAD FUNCTION REGISTER А) — загрузить функ- циональный регистр А. По этому приказу загружается функцио- нальный регистр А из аккумулятора ЦП и сбрасываются биты 4, 7 и 8 регистра состояния. 2. LFRB (LOAD FUNCTION REGISTER В)—загрузить функ- циональный регистр В. По этому приказу загружается функцио- нальный регистр В из аккумулятора ЦП и сбрасываются биты ре- гистра состояния. 3. LBRA (LOAD BUFFER REGISTER А) — загрузить буфер А. По этому приказу загружается буфер А из аккумулятора ЦП и сбрасывается 8-й бит регистра состояния. 4. LBRB (LOAD BUFFER REGISTER В) — загрузить буфер В. По этому приказу загружается буфер В из аккумулятора ЦП и сбрасывается 6-й бит регистра состояния. Четыре остальных приказа являются приказами ввода. 5. RBRA (READ BUFFER REGISTER А) — прочитать бу- фер А. Содержимое буфера А заносится в аккумулятор, а 8-й бит регистра состояния сбрасывается. 6. RBRB (READ BUFFER REGISTER В) — прочитать буфер В. Содержимое буфера В заносится в аккумулятор, а 6-й бит реги- стра состояния сбрасывается. 7. RSR (READ STATUS REGI STER) — прочитать регистр состояния. Содержимое регистра состояния помещается в аккуму- лятор, а биты 5 и 7 регистра состояния сбрасываются. 8. RIS (READ INTERRUPT STATUS) — прочитать состояние прерывания. При соответствующих условиях (см. разд. 10.7) сло- во состояния прерывания помещается в аккумулятор ЦП (этот при- каз имеет ту особенность, что его адресная часть содержит нулевой адрес устройства). 10.6. КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ (DMАО) Контроллер ПДП позволяет УВВ PPS-8 обращаться к ЗУПВ путем занятия цикла у ЦП без нарушения процесса выполнения ос- новной программы. Контроллер ПДП (рис. 10.13) управляет шиной адреса (A/Bt ... А/Вц) и двумя управляющими линиями (RIH и W/IO) в течение выполнения операций ПДП. Один контроллер ПДП обеспечивает управление восьмью каналами ПДП. Восемь линий запроса/подтверждения ПДП (DMA0 ... DMA7) обеспечивают двухстороннюю связь между УВВ и контроллером ПДП. Двухсторонняя связь по одной линии достигается использо- *2* 355
ванием разделения во времени и импульсного кодирования. Каж- дая линия (канал) ПДП имеет установленный номер в приоритет- ной структуре для разделения одновременно поступа сов. Каналы нумеруются по приоритету, причем канал iuuiv ш»» ет старший приоритет. Дополнительная линия запроса/подтверж- дения прерывания (DMRA) обеспечивает двухстороннюю связь конт- роллера ПДП с ЦП. В контроллере имеется восемь 14-битовых регистров адреса и восемь 8-битовых регистров длины зоны: по одному адресному ре- гистру и регистру длины зоны на канал ПДП. Каждый из этих ре- гистров может быть программно загружен процессором. Каждая ли- ния ПДП связана с двумя битами управления. Один из этих битов задает режим чтения или записи из ЗУПВ по запросу ПДП от соот- ветствующей линии ПДП. Другой бит применяется для задания специального циклического режима. Связанный с регистрами дли- ны зоны регистр хранения позволяет ЦП анализировать содержи- мое любого из регистров длины зоны. Когда какой-либо регистр Адресная шина Передатчики 5 Z6 25 24 22 21 20 19 Реги- стры Олины массива (8*8) ~ТР= Реги- стры старших. разрядов' адреса (8*0) Схема -+*- Сыдорки канала и управле- нии Родтвер- я ждение ч. прорыва- ния и уп- равление концом массива ---V Реги- стры . младших. разрядов адреса (8*8) Регистр хра- нения длины массива данных Приемники/передатчика Реги- стры режима и управ- -' ления RIHu №70(8*2) ЛИ АО ЛНА1 ЛМА2 ЛИАЗ^з]- лпА 4 ЛИА 5 ЛИА в ДНА 7 О II _ Дешифра- \тср команд R7H W/1O Шина команд/данных Рис. 10.13. Структурная схема контроллера прямого доступа к памяти Синхросигналы 356
Рис. 1014. Пример типичного применения контроллера прямого доступа к памяти длины зоны загружается процессором, его предыдущее содержимое передается в регистр хранения, откуда оно может быть прочитано процессором. На рис. 10.14 показано типичное применение контроллера ПДП. Для упрощения приведена только одна микросхема ввода—вывода (параллельный контроллер данных PDC), подключенная к контрол- леру ПДП. Когда параллельному контроллеру данных требуется ПДП, он подает импульс по линии DM АО в контроллер ПДП. Кон- троллер ПДП передает этот запрос в ЦП по линии DMRA. ЦП под- тверждает запрос ПДП по выполнении текущей команды, если толь- ко это не команда ввода—вывода. Если ЦП выполняет команду вво- да—вывода, он будет продолжать свою работу и подтвердит за- прос только после выполнения первой встретившейся команды, от- личной от команды ввода—вывода. Затем ЦП входит в состояние ОЖИДАНИЕ, в течение которого его формирователи адресной ши- ны, шины данных, линии RIH и WHO отключаются. Этот режим длится до тех пор, пока не будет выполнена операция ПДП. После получения контроллером ПДП сигнала подтверждения от ЦП вы- полняются следующие операции: 1) выдается сигнал подтверждения на то устройство из запросив- ших ПДП, которое обладает старшим приоритетом; 2) выдается на шину адреса содержимое соответствующего ад- ресного регистра; 3) выдаются сигналы на линии RIH и WHO (0 или 1 в зависи- мости от того, будет ли происходить по данному адресу ПДП чтение или запись); 357
4) микросхема ввода—вывода выдает или принимает данные на шину I/D. После передачи каждого байта контроллер ПДП увеличивает содержимое соответствующего адресного регистра и регистра длины зоны. Операции ПДП продолжаются до тех пор, пока не произой- дет одно из следующих событий: а) микросхема ввода—вывода снимет запрос ПДП; б) регистр длины зоны просчитает от 255 до 0; в) младший регистр адреса переходит из состояния «все едини- цы» в состояние «все нули»; г) произойдет прерывание типа 0 в ЦП; д) контроллер ПДП получит запрос на ПДП от канала со стар- шим по сравнению с обрабатываемым приоритетом. 10.7. ПРЕРЫВАНИЯ В системе PPS-8 обеспечивается многоуровневая приоритетная структура прерываний. В ЦП имеется три входных линии прерыва- ния (INTO, INTI, INT2), между которыми установлены фиксиро- ванные приоритетные взаимоотношения. Прерывание 0 имеет стар- ший приоритет, прерывание 2 — младший. Прерывания 0 и 1 при- меняются в специальных случаях, например при аварии питания и в режиме реального времени. Линия INT2 предназначена для од- ного-единственного запроса прерывания от приоритетно-согласован- ных устройств ввода—вывода. Прерывание 0. Это прерывание имеет наивысший приоритет и выделяется для запросов, требующих быстрого ответа, например, при аварии питания. Этот тип прерывания не зависит от программы и обслуживается после выполнения текущей команды1^ Прерывание поступает по линии INTO в виде перепада с 0 на 1. Прерывание 1. Это прерывание имеет более высокий приоритет по сравнению с прерыванием 2 в случае их одновременного появле- ния и принимается к исполнению после выполнения текущей коман- ды, если: а) прерывание типа 0 не ожидает обработки и б) преры- вания разрешены1*. Это прерывание, запрос о котором передается изменением состояния с 0 на 1 по шине INT1, предназначено для синхронизации в реальном масштабе времени. Прерывание 2. Наиболее низкое по приоритету прерывание, обслуживающее все запросы прерываний от микросхем ввода—вы- вода. Оно принимается к исполнению после выполнения текущей команды, если: а) прерывания типа 0 и 1 не ждут обслуживания, б) прерывания разрешены1). Прерывание вызывается единичным уровнем на линии INT2. Линия подтверждения АСКО предназна- чена для создания многоуровневой структуры прерываний вне ЦП. Логические схемы этой структуры находятся в микросхемах ввода— Прерывания не удовлетворяются при следующих условиях: непосред- ственно перед командой перехода В, сразу после команд пропуска или ADD и в течение операций ПДП (только INT1 и INT2), 358
вывода, требующих доступа к ЦП путем прерывания (например, па- раллельный контроллер данных, последовательный контроллер данных). Разводка связей в такой системе показана на рис. 10.1 и описана ниже. 1. Каждое устройство (источник прерывания), которое вклю- чается в такую структуру, должно выдавать сигнал запроса преры- вания (INT2). Сигналы 1NT2 от всех устройств объединяются по схеме ИЛИ и подаются на вход INT2 ЦП. 2. Каждое устройство, кроме того, имеет вход подтверждения АСК! и выход подтверждения АСКО. Эти входы соединяются для создания приоритетной структуры. Выход АСКО одного устройства подсоединяется к входу ACKI устройства с младшим приоритетом. Вход АСК! устройства с наивысшим приоритетом подсоединяется к выходу подтверждения прерывания АСКО ЦП. 3. Когда устройство формирует запрос прерывания, оно уста- навливает на линии INT2 единичный уровень. Любое число уст- ройств может одновременно запросить прерывание. 4. Когда запрос прерывания принимается к обработке, ЦП вы- дает одноцикловый импульс на выходе АС КО. Этот импульс распро- страняется с задержкой, равной 1 цикл/1 устройство по цепочке микросхем в направлении уменьшения приоритетов, пока не достиг- нет первого (т. е. со старшим приоритетом) устройства, пославше- го запрос. Это устройство не пропускает сигнал подтверждения даль- ше, обрывая таким образом цепочку приоритетов. СПИСОК ЛИТЕРАТУРЫ 1. Product Description, Parallel Processing System (PPS-8) Microcomputer, Rockwell International Corp., Anaheim, Ca., 1974. 2. Display Controller Circuit, Data Sheet, Rockweel International Corp., Anaheim, Ca., 1974. 3. 1200 bps Telecommunications Data Interface2 Data Sheet2 Rockwell In- ternational Corp., Anaheim, Ca., 1974. Глава 11 МИКРОПРОЦЕССОРНЫЕ НАБОРЫ IMP 4/8/16 и PACE В гл. 11 описывается микропроцессорный набор IMP 4/8/16 фирмы Natio- nal Semiconductor Corporation с секционной архитектурой. Основной секци- ей в этом семействе является 4-битовый регистр и арифметико-логическое устройство (РАЛУ). Объединяя несколько РАЛУ параллельно, можно стро- ить 4-, 8-, 16-битовые микросистемы. 16-битовая система IMP-16 получа- ется при соединении четырех РАЛУ. Центром системы является управляю- щая постоянная память УПЗУ, в которой хранится набор микропрограмм, используемых для реализации системы команд IMP-16. Большинство слож- ных команд, включая команды умножения, деления и команды с удвоенной точностью, используют два УПЗУ. Ввод—вывод осуществляется через 16-бя- 359
товую шину данных и 16-битовую адресную шину. Микропроцессор РАСЕ представляет собой улучшенный вариант IMP-16 с однокристальным ЦП. Материал этой главы частично основан на публикациях фирмы National Semiconductor Corporation1^ Всю ответственность за представленный здесь материал несет автор. 11.1. МИКРО-ЭВМ IMP-16 И СЕКЦИЯ РЕГИСТРОВОГО АРИФМЕТИКО-ЛОГИЧЕСКОГО УСТРОЙСТВА (РАЛУ) Общее описание. IMP-16C является 16-битовым параллельным процессором. Он собран на печатной плате с размерами 21,25 X X 27,5 см. Для связи с внешними устройствами на плате имеется разъем со 144 выводами. Структурная схема микро-ЭВМ IMP-16C показана на рис. 11.1 и включает: — центральный процессор (ЦП); — синхрогенератор; — входной мультиплексор; — буферный регистр данных; — флажки управления; — мультиплексор условного перехода; — внутреннюю память; — адресные ключи. Центральный процессор (ЦП) построен на основе МОП БИС кон- троллеров-процессоров общего назначения (GPC/P) фирмы Natio- nal Semiconductor, как это показано на упрощенной схеме рис. 11.2. Рис. 11.1. Структурная схема микро-ЭВМ IMP-16C Программы, рисунки и таблицы представлены фирмой National Se- miconductor Corporation. Все права сохранены. 360
данных (16fa/n) Рис. 11.2. Структурная схема ЦП IMP-16C В состав МОП БИС входят: управляющая постоянная память УПЗУ, четыре регистровых и арифметико-логические устройства (РАЛУ). Каждое РАЛУ является 4-битовым, а 16-битовое устрой- ство образуется параллельным объединением четырех РАЛУ. Для передачи большей части управляющей информации от УПЗУ к РАЛУ используется 4-битовая шина управления. Для расширения системы команд имеется возможность подсоединения второго УПЗУ. Синхрогенератор формирует синхронизирующие сигналы для МОП формирователей и ЦП. Синхроимпульсы используются также вне IMP-16C для синхронизации периферийных устройств с ЦП. Внешними по отношению к МОП БИС схемами, но входящими в микро-ЭВМ IMP-16C, являются флажки управления, общие как для микро-ЭВМ IMP-16C, так и для внешних цепей сопряжения. Эти флажки управления дополняют флажки состояния, которые на- ходятся в РАЛУ. Данные от периферийных устройств и от внешней памяти принимаются входным мультиплексором. Данные от внут- ренней памяти, размещенной на плате, поступают также через вход- ной мультиплексор к центральному процессору. Выходные данные, предназначенные для периферийных устройств внешней памяти, снимаются с 16-битового буферного регистра данных через разъем на плате. 16-битовая адресная шина также под- соединена к выходному разъему для адресации как внешней памя- ти, так и внешних устройств. Память IMP-16C, размещенная на плате, состоит из ЗУПВ объе- мом 256 ячеек и гнезд для подключения ППЗУ или ПЗУ объемом 512 слов. Максимальные возможности адресации 65 536 слов. Основные характеристики IMP-16. Длина слова 16 бит. Система команд: 43 основные команды, 17 дополнительных команд для расширенной конфигурации (макрокоманды, реализованные микропрограммой — резидентом). 361
Арифметика: параллельная, двоичная, с фиксированной запя- той, в дополнительном коде. Память: полупроводниковое ЗУПВ объемом 256 16-битовых слов; гнезда для полупроводникового ПЗУ емкостью 512 16-бито- вых слов; возможности адресации 65 536 16-битовых слов. Адресация: Размер страницы 256 слов. Возможны четыре спо- соба прямой и косвенной адресации: абсолютная; — относительная к программному счетчику; — относительная к аккумулятору 2 (индексная); — относительная к аккумулятору 3 (индексная). Типичное время выполнения команд: — сложение содержимого регистров — 4,55 мкс; — сложение содержимого ячейки памяти с содержимым в ре- гистре — 7,7 мкс; — ввод—вывод из регистра — 10,15 мкс. Ввод—вывод и управление: — 16-битовый порт ввода—вывода; — 16-битовая шина вывода данных; — 16-битовая шина адреса; — 6 флажков общего назначения; — 4 входа условных переходов общего назначения; — один общий вход прерывания; — один вход прерывания с пульта управления. Регистр и АЛУ (РАЛУ) Четыре 4-битовых РАЛУ составляют арифметическую секцию, показанную на рис. 11.3. Эта секция вклю- чает следующие основные части: — мультиплексор ввода—вывода; — стек (LIFO)\ — 16 флажков состояния, содержимое которых запоминается и восстанавливается как 16-битовый регистр: флажок связи (L), фла- жок переноса (CY)\ флажок переполнения (ОУ), 13 флажков обще- го назначения (2 из которых непосредственно доступны пользова- телю через разъем платы); — программный счетчик (PC); — регистр данных памяти (MDR); — регистр адреса памяти (Л4ДР); — четыре аккумулятора (АСО, АС1, АС2, АСЗ)*> — арифметико-логическое устройство (АЛУ); — сдвиговый регистр; — шины. РАЛУ имеет три внутренние шины: А, В, R. Шина А (шина операнда). Содержимое всех регистров РАЛУ мо- жет быть выдано на шину А; данные из верхней ячейки стека и от флажков состояния РАЛУ (объединенных в 16-разрядное слово) могут быть загружены как операнды. При выдаче на шину А дан- ные могут быть преобразованы в дополнительный код под действи- ем сигналов управляющей постоянной памяти УПЗУ. Содержимое 362
шины А может быть передано через АЛУ и сдвиговый регистр к ши- не /? или из РАЛУ к шине данных IMP-16C через мультиплексор ввода—вывода. Шина В (шина операнда). Содержимое всех регистров РАЛУ мо- жет быть выдано на шину В. Содержимое шины В может быть выда- но только в арифметико-логическое устройство (АЛУ). Шина R (шина результата). Шина R служит для передачи ре- зультата из АЛУ в один из регистров РАЛУ, стек и на флажки РАЛУ. Стек. Каждое РАЛУ имеет стек, который работает по принципу «последним занесен — первым выбран». Стек имеет объем 16 слов, и доступ к нему осуществляется через верхнюю ячейку. Стек на рис. 11.3 имеет разрядность 16 бит и образуется четырьмя 4-битовы- ми РАЛУ, объединенными в арифметическую секцию. 16-битовое слово данных поступает через шину R и возвращается через шину А. Когда слово поступает в верхнюю ячейку стека, 16 бит из верх- _ 10-ИщтоОия секция РАЛУ У 1 1 1 РАЛУЗ I I I РАЛУ 2 РАЛУ1 1 i ! \&1У'13'12 11'10'8'8 7?Л 3 2 7 0 Шина Уаняь/х' Рис, Н.З, Структурная схема арифметической секции IMP-16C 363
ней ячейки опускаются на одну позицию, а поступившие биты зани- мают верхнюю ячейку. При этом содержимое каждого более низко- го уровня (ячейки) заменяется содержимым более высокого уровня, а содержимое нижней ячейки теряется. При извлечении слова из стека имеет место обратный процесс; в нижнюю ячейку заносятся нули. Стек используется преимущественно для сохранения состояния при прерываниях и для временного запоминания адресов возврата из подпрограмм. Он может также служить для временного хране- ния данных при использовании соответствующих команд. Флажки состояния РАЛУ. Имеются 16 флажков состояния РАЛУ, которые могут заноситься в стек для хранения на время об- работки прерывания и передаваться обратно в соответствующие триггеры флажков после его завершения. При операциях над флажками они рассматриваются как полный 16-битовый регистр: флажки L (связь), CY (перенос) и 0V (переполнение) — это первый, второй и третий разряды соответственно, а остальные флажки об- щего назначения занимают 13 младших разрядов. Содержимое флаж- ков CY или OV может быть выдано на линию CYOV РАЛУ по флаж- ку управления выборки (SEL). Программный счетчик (PC) хранит адрес следующей после вы- полняемой команды. Его содержимое увеличивается на 1 непосред- ственно после выборки каждой текущей команды во время ее вы- полнения. Когда реализуется переход к другому адресу в основной программе, адрес перехода заносится в PC. Команда пропуска только увеличивает содержимое PC на 1, благодаря чему одна команда пропускается. Регистр данных памяти (MDR) и регистр адреса памяти (MAR). Регистр данных памяти MDR хранит данные, передаваемые из ос- новной памяти в процессор и обратно. При выборке данных испол- нительный адрес заносится в регистр адреса памяти (MAR), а ко- манда FETCH (ВЫБРАТЬ) выполняет пересылку информационного слова из определенной ячейки основной памяти в MDR. Наоборот, при записи данных в ячейку основной памяти слово данных поме- щается в MDR, а исполнительный адрес заносится в MAR и коман- да STORE (ЗАПОМНИТЬ) выполняет занесение слова данных в определенную ячейку памяти. Аккумуляторы (АСО ... АСЗ) хранят операнды, необходимые для выполнения арифметических и логических команд. При этом результат операции обычно временно запоминается в одном из че- тырех аккумуляторов. Слово данных может быть выбрано из ячей- ки памяти в аккумулятор или записано из аккумулятора в ячейку памяти. Участие конкретного аккумулятора в операции определя- ется программистом в соответствующей команде. Арифметико-логическое устройство (АЛУ) выполняет арифме- тические и логические операции: двоичное сложение, логические И, ИЛИ и Исключающее ИЛИ. Арифметические и логические опе- рации осуществляются микропрограммой, которая находитя в по- 364
стоянной управляющей памяти УПЗУ. В системе IMP-16C арифме- тические действия производятся в дополнительном коде. Информа- ция с шины А может быть получена в дополнительном коде под дей- ствием управляющего бита из УПЗУ. С выхода АЛУ информация передается на шину R через сдви- говый регистр и может быть занесена в стек или в любой из регистров РАЛУ. Сдвиговый регистр может выполнять сдвиг на один разряд вправо или влево в течение каждого машинного цикла. Мультиплексор ввода—вывода управляет двунаправленной пе- редачей данных, адресов и команд между РАЛУ и основной памятью или внешними устройствами в режиме разделения времени. Как по- казано на рис. 11.3, выходные данные поступают на шину данных с шины А, а входные данные коммутируются мультиплексором ввода—вывода на шину R. 11.2. УПРАВЛЯЮЩАЯ ПОСТОЯННАЯ ПАМЯТЬ (УПЗУ) Все микропроцессоры, описанные в предыдущих главах, выпол- нены по принципу встроенного набора команд. Каждая команда или группа команд реализуется аппаратурно в ЦП. Система IMP-16 построена на другом принципе, называемом мик- ропрограммированием. Центральным звеном микросистемы явля- Рис. 11.4. Структурная схема связи РАЛУ и УПЗУ 365
биты управления НинропроераН' ноев РВУ Состоялия Вшраш&налы ----\----- РаботаАЛУ Обо СВ/ cbz Юз Флажни В Вод- Вь/бод ВхВд яулотииленсора услббноео перехода быхи б шины Я Шина А Шина В Шина# Работа Работа стена Дополнение Деления ^^иш= шинь/ А Устанобка ±нак или ио/- Сброс р-— ~Вь/боб\ /ввод '^^Установившееся значение 'Установившееся значение 1/чинродинл (7,0 мне) Рис. П.5 Временные диаграммы управления ется еще более простая вычислительная система. Можно говорить об ЭВМ в ЭВМ. Внутренняя ЭВМ содержит управляющую постоян- ную память (УПЗУ), которая хранит набор микропрограмм, исполь- зуемых для выполнения системы команд процессора IMP-16. Упрощенная структурная схема, приведенная на рис. П.4, под- черкивает роль УПЗУ и четырех РАЛУ как части микро-ЭВМ IMP-16C. Между процессором, выполненным на МОП БИС, и други- ми частями оборудования, которые выполнены на ИС ТТЛ, вклю- чаются буферные регистры данных. Эти буферные регистры явля- ются логическими элементами с тремя состояниями, позволяющими непосредственно подсоединять входные шины. Первичное управление РАЛУ осуществляется через 4-битовую шину управления, по которой передаются четыре 4-битовых слова за машинный цикл в режиме разделения времени. Функции,^выпол- няемые этими битами управления, отображены на рис. Н.5. УПЗУ хранит микропрограммы для выполнения стандартного набора команд. Микропрограммы размещены в ПЗУ объемом 100 X X 23 бит. При выборке команды 9 старших бит слова команды пе- редаются в УПЗУ. Эти 9 бит содержат код операции и другие необ- ходимые биты управления командного слова. Биты команды дешиф- 366
рируются, а затем'схема управления адресом УПЗУ передает управ- ление на входную ячейку микропрограммы. Последовательность микрокоманд выполняется до тех пор, пока не будет выполнена дан- ная команда. Затем УПЗУ переходит к циклу выборки и выполне- ния следующей команды. Этот процесс непрерывно повторяется. 11.3. АДРЕСАЦИЯ ПАМЯТИ Набор команд IMP-16C обеспечивает прямую и косвенную ад- ресацию памяти. Для прямой адресации существует три различных модификации: адресация на нулевой странице или абсолютная, от- носительно программного счетчика и индексная. Способ адресации определяется полем XR формата слова команды, показанного на рис. 11.6. Адресация на нулевой странице. Значение поля XR — 00 опре- деляет абсолютную адресацию. При абсолютной адресации непо- средственно выбирается содержимое из ячейки памяти. В этом случае исполнительный адрес формируется установкой 8 ... 15 би- тов в нуль и использованием 8-битового поля смещения как абсо- лютного адреса. Этим способом можно адресовать до 256 слов (ячей- ки 0 ... 255). Адресация относительно программного счетчика. Признаком этой адресации является код поля XR = 01. Поле смещения трак- туется как число со знаком, причем знаковый бит (7 бит) предшест- вует 8 ... 15 битам слова, и исполнительный адрес формируется пу- тем сложения содержимого программного счетчика с числом в поле смещения. Данный способ адресации позволяет обращаться к ячей- кам памяти с номерами от —128 до +127 относительно значения программного счетчика. Однако к моменту формирования адреса содержимое программного счетчика будет уже увеличено на 1 и бу- дет указывать адрес следующей команды. По этой причине диапа- зон относительной адресации составляет от —127 до +128 относи- тельно адреса текущей команды. Индексная адресация. Индексная адресация осуществляется обращением к аккумулятору 2 или 3 (АС2 или АСЗ). В этом случае поле смещения снова интерпретируется как 8-битовое число со зна- ком от —128 до +127, причем знак (7 бит) располагается перед 8 ... 15 битами слова команды. Содержимое выбранного индексно- го регистра (АС2, когда XR = 102 и АСЗ, когда XR = 112) скла- дывается с числом, записанным в поле смещения, и полученный ис- полнительный адрес позволяет адресовать 65 536 ячеек памяти. Рис. Н.6. Формат команды обращения к УПЗУ 367
Таблица lit Адресация памяти Пеле XR Тип адресации Исполнительный адрес ЕА Диапазон 00 Абсолютная EA = disp (смещение) 0<disp<255 01 Относительно про- граммного счетчи- EA = disp+(PC) —128<disp<127 10 ка Относительно АС2 EA = disp-|- (АС2) — 128<disp<127 11 Относительно АСЗ EA = disp-j-(AC3) - 128<disp<127 Косвенная адресация. При косвенной адресации исполнитель- ный адрес (ЕА) сначала определяется так же, как и в случае пря- мой адресации. Ячейка памяти при этой адресации содержит число, которое затем служит адресом операнда. Косвенную адресацию реа- лизуют следующие команды: LOAD INDIRECT STORE INDIRECT JUMP INDIRECT JUMP TO SUBROUTINE INDIRECT — ЗАГРУЗИТЬ КОСВЕННО; — ЗАПОМНИТЬ КОСВЕННО; — ПЕРЕЙТИ КОСВЕННО; — ПЕРЕЙТИ К ПОДПРО- ГРАММЕ КОСВЕННО Краткое описание типов адресации приведено в табл.11.1. 11.4. СИСТЕМА КОМАНД Обозначения и символы. Символические обозначения, исполь- зуемые в системе IMP-16C для описания команд, содержит табл. 11.2. Обозначения даются в алфавитном порядке следования символов. Прописные буквы относятся к описанию полей слова команды, строч- ные — к описанию числовых значений соответствующих полей. При использовании обоих типов символов (строчных и прописных) в од- ном слове используются строчные (см. табл. 11.2). Переменные так- же обозначаются строчными символами. Описание команд. Основной набор команд IMP-16 включает во- семь функциональных типов команд: — загрузки и запоминания; — арифметические; — логические; — пропуска; — сдвигов; — передачи управления; — регистровых пересылок; — ввода—вывода. Можно расширить набор команд для микро-ЭВМ IMP-16C при использовании второго УПЗУ. Этот набор состоит из 17 команд, подразделяющихся на пять категорий: 368
— арифметические операции с удвоенной точностью; — операции загрузка и запоминание байта; — операции с отдельными битами; — операции обработки прерывания; — операции передачи управления. Основная система команд описана в табл. 11.3... 11.11. Таблица 11.2 Обозначения, используемые в описании команд Символическое обозначение Значение АСг Выделяемый рабочий регистр (АСО, АС1, АС2, АСЗ), где г*- номер аккумулятора, па который делается ссылка AR Адресный регистр, используемый для адресации памяти или пе- риферийного устройства сс 4-битовый код условия для команд условного перехода ctl Величина 7-битового поля управления для флажка, ввода- вывода и других команд CY Установка флажка переноса, если имеется перенос, обуслов- ленный командой (либо сложением, либо вычитанием) disp Величина смещения представляет собой операнд в команде, не обращающейся к памяти, или адресное поле в команде обра- щения к памяти. Это 8-битовый дополнительный код числа со знаком, исключая случай, когда упоминается базовая нулевая страница dr Номер рабочего регистра, служащего приемником, который указывается в поле слова команды. Рабочие регистры ограни- чены от 0 до 4; АСО, АС1, АС2, АСЗ еа Исполнительный адрес при прямой, косвенной и индексной ад- ресации. Его содержимое используется в течение выполнения команды (см. табл. 11.1) fc Номер флажка (см. табл. 11.14) INTEN Разрешающее состояние управляющего флажка прерывания ioreg Регистр ввода—вывода во внешнем устройстве L Флажок триггера связи L 369
Продолжение табл. 11.2 Символическое обозначение Значение 0 Индицирует установку флажка переполнения, если имеется пе- реполнение, обусловленное выполняемой командой (сложением или вычитанием) PC Содержимое программного счетчика. В течение формирования адреса его содержимое увеличивается на 1 по сравнению с ад- ресом предыдущей команды г Номер рабочего регистра (ЛСО, ЛС1, ЛС2, ЛСЗ), который ука- зывается в поле слова команды SEL Флажок, управляющий линией CYOV. Он используется для подключения бита переноса или переполнения к линии пере- носа и переполнения CYOV ЦП и подключения бита связи (L) при сдвигах sr Номер рабочего регистра источника (ЛСО, ЛС1, ЛС2, ЛСЗ), который указывается полем слова команды хг Когда код ненулевой, он определяет номер регистра, исполь- зуемого при индексной и относительной адресации памяти (см. табл. 11.1) ( ) Содержимое элемента в круглых скобках. (АС) — читается как «содержимое АС», (ЕА) — как «содержимое ЕА» 1 ] «Результат» Инвертирование (дополнение до 1) величины, расположенной справа —> «Заменить» <— «Быть замененным» @ Появление в поле операнда команды означает косвенную ад- ресацию Л Операция И V Операция ИЛИ V Операция Исключающее ИЛИ 370
Таблица 11.3 Команды загрузки и запоминания Команда Код' операции Операции Формат ассемблера LOAD Загрузить load indirect Загрузить косвенно 1000 (АСг)-(ЕА) LD г, disp (хг) 1001 (АСг)<—(ЕА) LD г, @ disp (хг) STORE Запомнить 1010 (ЕА)^(АСг) ST г, disp (хг) STORE INDIRECT Запомнить косвенно 1011 ((ЕА))-(АСг) ST г, @ disp (хг) Арифметические команды Таблица 11.4 Команда Код операции Операция Формат ассемблера ADD (ADD) — Сложить SUBTRACT (SUB)- Вычесть 1100 1101 (АСг)«-(АСг)+ +(ЕА), OV, CY (АСг)«—(АСг)Ч—(ЕА)+ 4-1, OV, CY ADD г, disp (хг) SUB г, disp (хг) Таблица 11.5 Логические команды Команда Код операции Операция Формат ассемблера AND И OR ИЛИ 01100 01101 (АСг)*-(АСг)Л(ЕА) (ACr)«-(ACr)V(EA) AND г, disp (хг) OR г, disp (хг) 371
Таблица 11.6 Команды пропуска Команда Код операции Операция Формат ассемблера Обращение к памяти INCREMENT AND SKIP IF ZERO Увеличить и пропустить, если нуль 011110 (ЕА)-(ЕА)+1; IF (EA)-=0. (PC)—(РС)+1 ISZ rlisD (хг) DECREMENT AND SKIP* IF ZERO Уменьшить и пропустить, если нуль 011111 (ЕА)НЕА)—1; 1F(EA) = O, (РС)*-(РС)+1 DSZ disp (хг) Обращение к регистрам SKIP IF GREATER Пропустить, если больше 1110 IF(ACr)XEA). (РС)~(РС) + 1 SKG г, disp (хг) SKIP IF NOT EQUAL Пропустить, если не равно 1111 1Р(АСг)=?£=(ЕА), (PC)—(PC) 4-1 SKNE г, disp (хг) Сокращенное обращение к регистрам SKIP IF AND IS ZERO Пропустить, если И рав- но нулю OHIO 1F Г(АСг)Д(ЕА)1 = 0. (PC)—(PC) 4-1 SKAZ г, disp (хг) Таблица 11.7 Команды передачи управления Команда Код операции Операции Формат ассемблера Переходы JUMP Перейти 001000 (РС)-ЕА JMP disp (хг) JUMP INDIRECT Перейти косвенно JUMP ТО SUBROUTINE 001001 (РС)-(ЕА) JMP @ disp (хг) Перейти к подпрограмме 001010 (STK)—(PC); (РС)«~ЕА JSR @ disp (хг) JUMP ТО SUBROUTINE INDIRECT Перейти к подпрограмме косвенно 001011 (STK)-(PC); JSR (Э> diсп (хг) (PC)—(ЕА) 372
Продолжение табл. И.7 Команда Код операции Операции Формат ассемблера Вет ление BRANCH-ON CONDITION Перейти по условию 0001 Если СС истинно (PC)«-(PC)-(-disp ВОС сс, disp Возвраты RETURN FROM INTER- RUPT (РС)«— (STK) + ctl RT1 ctl Вернуться’из прерывания RETURN FROM SUB- 000000010 Установка флажка прерывания ROUTINE Вернуться из подпрограм- 000000100 (PC)*— (STK)H-ctl RTS ctl мы JUMP ТО SUBROUTINE IMPLIED Перейти к включенной в программу подпрограмме 000000111 (STK)*-(PC); (PC)- FF80ls4-ct! JSRI ctr Коды условий ветвления программ Таблица 11.8 Код условия Проверка условия Замечания 0000 0001 0010 ООН 0100 0101 оно 0111 1000 1001 Линия прерывания=1 (АС0)=0 (АС0)>0 0-й бит АС0= 1 1-й бит АС0= 1 (АС0)=/=0 Линия прерывания с пульта управления=1 Запуск пульта управления =1 Линия переполнения стека =1 Разрешение прерывания =1 Прерывание не нужно прове- рять макрокомандой 1010 1011 1100 1101 Перенос/переполнение= 1 (АС0)^0 Перенос, если SEL=0, перепол- нение, если SEL=1 1110 1111 Пользователь Предназначено для использова- ния в общих целях 373
Таблица 119 Команды сдвига Команда Код операции Операнд Формат ассемблера SEL=0 SEL=1 ROTATE LEFT Циклический сдвиг влево (disp>0) 010110 (ACr0) *- (АСг16), (ACrn)-(ACrn_1) (ACr0)*-(L), (L)<-(ACr15), (АСгп)<-(АСгп_!) ROL г, m ROTATE RIGHT Циклический сдвиг вправо (dispcO) 010110 (АСг16)«—(АСг0), (АСгп) +- (АСги-ц) (ACru)*-(L), (L)4-(ACr0), (A Сгп)+-(АСгп+1) ROR г» m SHIFT LEFT Сдвиг влево (disp>0) 010111 (АСгп)<-( АСгд-i), (АСг0)<-0 (L)<-(ACr15), (АСгд)«-(АСгд_ j), (АСго)-О SHL г, m SHIFT RIGHT Сдвиг вправо (disp>0) 010111 (АСг16)<-0, (АСг п) ♦- (АСгп+1) (ACr]5)+-(L), (L)*-0, (АСгп) <- (ACrn4-i) SHR г, m Примечание. Для всех команд сдвига и циклического сдвига m озна- чает число позиций, на которое производится сдвиг, и равен абсолютной вели- чине disp (смещение). Таблица 11.10 Команды регистровых пересылок Команда Код операции Операция Формат ассемблера Регистр—стек. PUSH INTO STACK 010000 (STK)*-(ACr) PUSH г Занести в стнк из ре- гистра PULL FROM STACK 010001 (ACr)^-(STK) PULL г Извлечь из стека EXCHANGE REGI- 010101 (STK)-(ACr), XCHRS г STER AND STACK Обменять содержимым регистр и стек Регистр—непосред- ственный операнд LOAD IMMEDIATE 010011 (ACr)«-(STK) (ACr)«-disp LI г, disp Загрузить непосредст- венно (включая знак) 374
Продолжение табл. 11.10 Команда Код операции Операция Форма ассемблера ADD IMMEDIATE, SKIP IF ZERO Сложить непосредст- венно и пропустить, если нуль COMPLEMENT AND ADD IMMEDIATE Инвертировать и сло- жить непосредствен- но 010010 010100 (АСг)«-(АСг)4- 4-disp (включая знак), OV, CY; если (АСг) =0, (PC)-е-(PC) 4-1 (АСг)<-~(АС)4- 4- disp (включая знак) AISZ r, disp Cai r, aisp Регистр—регистр ОР1 ОР2 ОРЗ REGISTER ADD Сложить содержимое пагилтплп ООН 0 00 (ACdr)-«-(ACsr) 4- 4-(ACdr), OV, CY RADD st, dr pci ис 1 puts REGISTER EXCHA- NGE Обменять содержимым Г\ О Г*ТЛ РТ П LI ООН 1 00 (ACsr)-e-(ACdr), (ACdr)«-(ACsr) RXCH sr, dr pci ис । ры REGISTER COPY Переписать из реги- ООН 1 01 (ACdr)«-(ACsr) RCPY sr, dr стра REGISTER EXCLU- SIVE OR Выполнить Исключа- ющее ИЛИ над содер- жимым регистров REGISTER AND Логическое И содер- жимого регистров ООН ООН 1 1 10 11 (ACdr)*-(ACsr),V (ACdr) (ACdr)<-(ACsr) A A (ACdr) RXOR sr, dr RAND sr, dr Таблица 11.11 Команды ввода—вывода, останова и флажковые команды Команда Код операции Операция Формат ассемблера Ввод — вывод REGISTER IN Ввод в регистр REGISTER OUT Вывод из регистра 000001000 000001100 (AR)«-ctl4-(AC3), (ACO)«-(IOREG) (AR)«-ctl4-(AC3), (IOREG)«-(ACO) RIN сП ROUT сП Останов HALT Остановить 000000000 Процессор останавли- вается HALT 375
Продолжение табл ПЛ Команда Код операции Операция Формат ассемблера Флажки состояния PUSH STATUS FLAGS INTO STACK Занести флажки в стек PULL STATUS FLAGS FROM STACK Извлечь флажки из стека 000000001 000000101 (STK)<-(флажки состоя- ния) (флажки состояния)*- (STK) PUSHF PULLF Управление фла- жком SET FLAG Установить фла- жок PULSE FLAG Изменить флажок ОР1 00001 00001 ОР2 0 1 fc устанавливается (AR)«-ctI fc изменяется (AR)—сП SFLG fc PFLG fc 11.5. ОПЕРАЦИИ ВВОДА — ВЫВОДА Команды ввода—вывода. Операции ввода—вывода выполняются с помощью макрокоманд ввода RIN в регистр и вывода ROUT из ре- гистра. Они сходны с командами запоминания STORE и загрузки LOAD в том, что адресуются к определенному прибору и вызывают обмен данными. Исполнительный адрес УВВ определяется сумми- рованием содержимого аккумулятора АСЗ и 7-битового управляю- щего поля команд RIN и ROUT. Временная диаграмма выполнения этих команд показана на рис. 11.7. Имеются 16 бит для адреса и кода приказа. Хотя возможны и другие варианты, формат, описанный здесь, удобен для использо- вания во многих случаях. Младшие 3 бита определяют приказ для УВВ, а биты 3 ... 6 являются адресом устройства (рис. 11.8). Каждое внешнее устройство декодирует адресное поле команды ввода—вывода, и если флажки записи или чтения внешнего устрой- ства установлены, то данное устройство начинает выполнение опе- рации. 3-битовый приказ предусматривает 8 возможных вспомога- тельных операций для ввода—вывода, например, такими приказами могут быть чтение данных, чтение состояний, сброс устройства, пе- ремотка ленты, возвращение на одну позицию или запись данных. Выбор различных приказов предоставляется программисту систе- мы. 4 бита адресного поля разрешают прямую адресацию 16 внешних устройств, однако, загрузив аккумулятор 3 (содержимое которого 376
Начало команды Ми нр о циклы ним (Читать данные из памяти) Начало следую- щей команды LDAP (Загрузить адрес- ный регистр) Арх (Выдать адрес на шину) \ А врос команды Адрес PH РДР (для RIN) или МАРР (для PGUTJ (Читать или зали!__ са/ль данные из МВ) для ROUT,(AC(M-~-bbO В 4 для RlN,W-*fACO) 3 Т7 Рис. 117. Временные диаграммы выполнения команд RIN и ROUT складывается с битами 0 ... 6 команды) 16-биговой величиной перед выполнением команд RIN или ROUT, можно получить до 65 536 ад- ресов. Передача данных на периферийные устройства. Данные внеш- него устройства становятся доступными при выставленных внешним устройством флажках чтения или записи и известном адресе уст- ройства. Передача данных осуществляется командами RIN и ROUT в течение тактов Т7 (ввод) или 7\ (вывод) соответственно (рис. 11.5). Управление внешним устройством может быть осуществлено путем использования поля приказа команды (рис. 11.8) или введением управляющего флажка общего назначения, соответствующего функ- ции управления внешним устройством, которое может затем анали- зироваться командами SFLG и PFLG. Аналогично состояние внеш- него устройства может быть определено с помощью приказа чтения состояния шины данных или введением одного из условных пере- ходов общего назначения и использованием команды условного пе- рехода ВОС. (Флажки управления и входы условного перехода #1 1 _1____1____I---1---1---LZ Дополнительное адресное поле 6 \ I I * р I \ ° Адрес устройства Приказ Поле управления (с И) Рис. 11.8. Формат слова ввода—вывода 377
Таблица 11.12 Фрагмент программы считывания символов с телетайпа Метка Команда Комментарии > 9 ? 9 > START: LI 3, TTY AD Определение приказов для УВВ 5 = Сброс 2=Чтение данных 4 Разрешение ТТ для считывающего с ленты устройства 3 = Запись данных TTYAD = адрес ТТ в битах 3...6 Cl = 1 (перейти, если АС0=0) Загрузить АСЗ адресом TTY READ: ROUT 5; LI, 2,8 ROUT 4; Сбросить телетайп (поле прика- за = 5) Установить счет до 8 бит Разрешить считывание с ТТ 1 INPUT: RIN 2; BOC C2,+2; JUMP READ; JSR DELAY; ROUT 3; Считывание данных телетайпа Контроль стартового бита; С2 обра- щается к АС0 = 0 Повторное считывание данных (пока не будет обнаружен стартовый бит) Стартовый бит найден: задержка для синхронизации Посылка бита на печать DELAY: JSR DELAY; RIN 2; SHR 0,1; AISZ 2, —Г JMP INPUT; * 9 Задержка программы на время выда- чи 1 бита Считывание данных телетайпа Сдвиг данных на одну позицию Проверить выполнение Если не выполнено, считать данные Начало подпрограммы задержки могут быть использованы для выполнения очень экономичной пос- ледовательной передачи данных без использования шины данных.) Функции, выполняемые в результате действия приказа ввода— вывода, различны. Например, приказ ЧТЕНИЕ ВНЕШНЕГО УСТ- РОЙСТВА для магнитного диска обычно вызывает поблочную пе- редачу данных. Наоборот, подобный приказ телетайпу, как прави- ло, вызывает познаковую передачу. Использование команд ввода — вывода проиллюстрируем примером. Рассмотрим случай считыва- ния символов из последовательного телетайпа и немедленной пере- дачи их обратно (отражение). Эта процедура осуществляется с по- мощью фрагмента программы, показанной в табл. 11.12. Первые несколько строк правой части программы определяют команды ввода—вывода для телетайпа. Предполагается, что телетайп посы- лает данные последовательно по линии, соответствующей 15-му биту. 378
11.6. СИСТЕМА ПРЕРЫВАНИЯ Общие характеристики. Система IMP-16C распознает один уро- вень прерывания. Общий запрос прерывания вызывается сигналом запроса прерывания по входу INTRA устройства обработки пре- рывания. Возможно также прерывание с пульта управления по вхо- ду CPINT. Выполнение обоих типов прерываний описано ниже. Внешнее устройство (или внешний источник) может послать запросы прерывания к IMP-16C по линии INTPA. Если флажок разрешения прерывания установлен (т. е. нет другого прер вания, которое обслуживается), запрос прерывания фиксируется тригге- ром и ожидает обслуживания. В течение следующего цикла выбор- ки команды процессор сбрасывает флажок разрешения прерывания (INTEN) и передает управление ячейке 1 основной памяти. В то же время содержимое программного счетчика заносится в стек. Коман- да в ячейке 1 основной памяти обычно начинает программу обслу- живания прерывания или осуществляет переход к программе об- служивания. В IMP-16C переполнение стека также вызывает прерывание. Программа обслуживания прерывания может обнаружить этот тип прерывания с помощью команды ВОС (ПЕРЕХОД ПО УСЛОВИЮ', при этом СС — 8 (стек полный). Последовательность прерывания проиллюстрируем следующим примером. Пример запроса прерывания и обслуживания. Рассматривается датчик времени (таймер), который задает временные интервалы по- сылкой импульсов прерывания в процессор. Таким датчиком мо- жет быть предварительно устанавливаемый счетчик, который вы- дает сигнал после того, как подсчитает заданное число импульсов. Этот сигнал будет использован как запрос прерывания. Рассмотрим использование этого таймера для квантования во времени некоторого сигнала (через равномерные промежутки). Датчик времени генерирует сигналы прерывания, а подпрограмма обработки считывает содержимое аналого-цифрового преобразова- теля, на вход которого подается обрабатываемый сигнал. Фрагмент программы (табл. 11.13) показывает, как реализуется эта задача. Датчику времени отводится нулевой бит шины данных, чтобы исполь- зовать его как сигнал состояния датчика. Этот сигнал также под- водится к общей линии запроса прерывания. Состояние прерыва- ния от датчика времени читается с нулевого бита шины данных с помощью приказа ЧТЕНИЕ СОСТОЯНИЯ. (Заметим, что другие устройства могут использовать другие биты шины данных, чтобы реагировать одновременно на этот приказ. Биты данных могут быть затем проверены, чтобы определить устройства, запрашивающие обслуживание прерывания.) Первые несколько строк программы являются комментариями, которые описывают различные коды приказа и адреса, присвоенные датчику времени и АЦП. Остальные строки выполняют основные операции по организации и обслуживанию прерываний. 37?
Таблица 11.13 Фрагмент программы организации и обслуживания прерывания Метка Команда Комментарии 2 3 3 ч » > Последовательность прерываний для датчика времени и равномерной вы- борки RTCs адрес датчика времени ADCs адрес АЦП 2 s начало отсчета (приказ ввода- вывода) 1= приказ считывания данных 0s приказ проверки состояния пре* рываний C3s3; СС равен 1 для бита 0 АСО Состояние прерываний определяется битом 0 шины LOC 1: | Осн ? Подпрогрг JMP INTR: эвная программа: SFLG 1; LI 3, RTC; ROUT 2; 1мма обслуживания: Эта команда в ячейке X' 0001 Разрешение системе прерываний Загрузка АСЗ адресом датчика Начало работы таймера ? Подпрогр LI 3, 0; RIN 0; ВОС СЗ, CLKINT; амма обслуживания датчика: Очистка АСЗ перед выполируем команды ввода RIN Чтение данных с шины для проверки состояния прерывающего устройства Переход к обслуживанию датчика, если бит 0= I CLKINT; 5 Продолжи п LI 3, RTG ROUT 2; LI 3, ADC RIN 1; JSR SAMPLE; RTI ; ние обработк и других [рерываний Загрузка АСЗ адресом датчика Повторный старт таймера Загрузка адреса АЦП Чтение данных АЦП Переход к подпрограмме обработки выборок данных Возврат из прерывания SAMPLE: . . . . ж . * • • • • . •, Начало подпрограммы обработки дан- ных АЦП 380
11.7. МИКРОПРОЦЕССОРНЫЙ НАБОР РАСЕ Общая характеристика. РАСЕ (Processing and Control Element) является однокристальным 16-битовым микропроцессором, разме' щенным в стандартном герметическом керамическом корпусе с 40 выводами типа DIP. Кремниевая подложка и стандартная р-канальная технология повышенной точности гарантируют высокие надежность и произво- дительность микропроцессора, имеющего следующие основные ха- рактеристики: — 16-битовое слово команды: обеспечивает гибкость адреса- ции и скорость обработки; — 8- или 16-битовое слово данных: гарантирует широкое приме- нение; — мощная система команд: содействует эффективному програм- мированию; — общая адресация к памяти и ВУ: обеспечивает эффективность команд ввода—вывода; — совпадение части команд с базовым набором IMP-16C: обес- печивается программная совместимость; — 4 аккумулятора общего назначения: уменьшают количество обращений к памяти; — стек из 10 слов: обеспечивает обработку прерываний и запо- минание данных; — 6 векторных уровней приоритета прерывания: упрощены об- служивание прерывания и соответствующая аппаратура; — программнодоступные регистры состояний: могут быть сох- ранены, проверены или модифицированы; — 2-мкс микроцикл: обеспечивает быстрое выполнение команд; — можно использовать ПЗУ DM 8531 объемом IK X 16: тре- буется единственный корпус памяти; — два входа синхронизации: минимизация внешних компонен- тов. Структурная схема типовой системы РАСЕ показана на рис. 11.9, а центрального процессора (ЦП) — на рис. 11.10. Имеются семь регистров данных, четыре из которых непосредственно находятся е распоряжении программиста (аккумуляторы АСО ... АСЗ) для хранения данных и формирования адресов: АСО — главный рабо- чий регистр, АС1 — второй рабочий регистр, АС2 и АСЗ — стра- ничные указатели или вспомогательные регистры данных. Осталь- ные три регистра — программный счетчик и два временных регист- ра—используются блоком управления для реализации набора ко- манд системы РАСЕ. Дополнительные возможности для хранения данных обеспечиваются стеком из 10 слов, реализованным по прин- ципу «последним заносится — первым считывается». Уникальная способность АЛУ РАСЕ состоит в возможности ра- ботать с 8 или 16 битами данных, что устанавливается программис- том с помощью флажка состояния. Указанная возможность позволя 381
ет использовать систему РАСЕ для символьно-ориентированных и других 8-битовых применений. Состояния. Все биты состояния и биты управления для РАСЕ сосредоточены в единственном регистре флажков состояния, содер- жимое которого может быть загружено в любой аккумулятор или стек или извлечено из них. Это позволяет осуществить удобную про- верку, маскирование и хранение состояний. К тому же ряд битов состояния может быть проверен непосредственно командой условного перехода BRANCH, а любой бит в отдельности может быть установ- лен или сброшен. Функции каждого бита в регистре флажков сос- тояний показаны в табл. 11.14 и кратко описаны ниже. Флажок переноса устанавливается в зависимости от результата арифметической операции с двоичными или двоично-десятичными числами и служит входным сигналом переноса для этих команд. Флажок переполнения устанавливается, если имеется переполне- ние в результате выполнения команд двоичной арифметики. Фла- жок связи служит однобитовым расширителем для команд сдвига и циклического сдвига. Флажок BYTE используется в качестве при- знака 8-битовой длины данных в командах обработки данных, в то время как в арифметических операциях для формирования адреса сохраняется 16-битовая длина данных. При побайтовой обработке данных изменения флажков переноса, переполнения и связи осно- ваны на анализе только восьми младших бит данных. Четыре флажка — биты 10 ... 14 могут выполнять функции, которые назначаются программистом. Эти флажки подсоединены к выходным контактам и могут быть использованы для непосредст- Рис. 11.9. Структурная схема системы РАСЕ ' 382
7^5в) Й>— < VeB(+86) [W>— Уе^120Ш>— 5TEL — ПЕНИ— PS/SH— ШТ 0 — ШТ1— №еш) — 01TZ —. стотя £>** UNK — 1ЕЯ—~ CARPY —, яшм — 9VF —; [g>-» ямк ГГ>^— IDS ODS Е>“*— EXTEND |~27>- bps [7Г>-- винт |77>--- ннalt Г7>^— $00 $01 ^02 $03 $04 $05 $06 $01 $08 $09 $10 $11 $12 $13 $14- $15 CLK \Z5^ HCLK [7£ о 1 2 3 И С I Регистр команв буферы банных 66об a - бы 6 о ба • 6 7 в 6 1Q 11 1Z 13 /4 16 § в I Формирование абресов микрокоманв Регистр абресамик- рокоманбы Память микроко- манб Логическая схема управления Формирование синхроимпульсов временной регистр 7 временной регистр Z Программный счетчик Аккумулятор АСО Аккумулятор АС1 Аккумулятор ACZ Аккумулятор АСЗ Шина результата Стен на 70 слов АЛУ и теле Регистр состояния и флажков управления нт5втч NiR^ н//?ъ Рио. 11.10. Структурная схема микропроцессора РАСЕ 383
венного управления функциями системы или могут служить флаж- ками состояния программы. Биты 0 и 15 регистра состояний не используются аппаратурно и всегда представляются логичес- кой 1. Флажки разрешения прерываний объяснены в разд. «Пре- рывания». Управление. Особенностью функционирова ния микропроцес- сора РАСЕ является быстрый доступ и выборка команды из внеш- него программного ЗУ и выполнение операций, предусмотренных этими командами. Эти две процедуры выполняются под управлением микропрограммы (при этом не предусмотрено микропрограммиро- вание пользователем). Микропрограмма подобна таблице состояний: она вырабатывает последовательность управляющих сигналов, не- обходимых для выполнения каждой команды. Она хранится в про- граммируемой логической матрице и состоит из микропрограмм вы- борки и выполнения команды ЦП. Под воздействием микропрограммы выборки адрес команды пе- редается из программного счетчика на шины ввода—вывода и на- чинается ввод данных. Когда код команды появляется на шине данных, микропрограмма выборки загружает его в регистр команд. Код операции команды преобразуется схемой формирования адре- са в адрес соответствующей микропрограммы выполнения команды. На последнем шаге микропрограммы этот адрес загружается в мик- ропрограммный адресный регистр, что вызывает переход к соответ- ствующей микропрограмме выполнения команды. Микропрограм- ма выполнения команды состоит из одной или более микрокоманд, которые выполняют функции, требуемые командой. Например, мик Биты состояний Таблица 1114 Бит регистра Наименование флажка Функция 0 «1» He используется — всегда логическая 1 1 lEi Разрешение прерывания 1-го уровня 2 1Е2 Разрешение прерывания 2-го уровня 3 Разрешение прерывания 3-го уровня 4 lEt Разрешение прерывания 4-го уровня 5 Разрешение прерывания 5-го уровня 6 OVF Переполнение 7 CRY Перенос 8 LINK Связь 9 IEN Общее разрешение прерывания 10 BYTE 8-битовая длина данных 11 Fn Флажок 11 12 F12 Флажок 12 13 F и Флажок 13 14 F14 Флажок 14 15 «1» Всегда логическая 1, выбираемая для прерывания 0-го уровня 384
Таблица 11.15 Условия ветвления программы Номер состояния Мнемокод Состояние 0 STEL Стек заполнен 1 REQ0 Содержимое АСО равно нулю1 2 P1IGN Содержимое АСО имеет положительный знак2 3 BIT0 Бит 0 АСО установлен 4 BIT1 Бит 1 АСО установлен 5 NREG0 Содержимое АСО не равно нулю 6 В1Т2 Бит 2 АСО установлен 7 CONTIN Ввод продолжается 8 LINK Флажок связи установлен 9 IEN Флажок IEN установлен 10 CARRY Флажок переноса установлен 11 NSIGN Содержимое АСО имеет отрицательный знак2) 12 OVF Флажок переполнения OVF установлен 13 JC13 Вход /С1з установлен 14 JC14 Вход /С|4 установлен 15 Вход /Cis установлен 1) Если используется 8 битовый формат данных, то проверяются только 0 ..7 биты А СО. 4 Бит 7 является знаковым (вместо бита 15), если используется 8-битовый формат данных ропрограмма для команды сложения содержимого регистров пре- дусматривает подключение двух аккумуляторов к шине данных, обусловливает выполнение в АЛУ операции сложения, устанавли- вает флажки переноса и переполнения и заносит результат в ука- занный аккумулятор. Управляющая логическая схема интерпретирует микрокоман- ды, выполняющие эти операции. Конечным шагом выполнения ко- мандой микропрограммы является переход к микропрограмме вы- борки, которая организует выборку следующей команды. Каждый микроцикл занимает 2 мкс, а чтобы выбрать и выполнить машинную команду, обычно требуется четыре или пять микроциклов. Другими функциями, выполняемыми микропрограммой, явля- ются обслуживание прерывания и установка системы в начальное состояние. Микропрограмма управляет работой мультиплексора условного перехода, который используется для определения 16 сос- тояний для команды условного перехода BRANCH. Состояния, ко- торые могут быть проверены, показаны в табл. 11.15, кроме того предусмотрены четыре входа в микросхему, которые используются для проверки внешних флажков состояния системы. Управляющая схема в любое время может быть установлена в исходное состояние сигналом на входе NINIT. В результате в нуль устанавливаются схема адресации стека, все флажки и програм- мный счетчик, стробы принимают значения ЛОЖНО, а уровни раз- 13 Зак. 1088 335
решения прерывания — значения ИСТИННО. Этот сигнал должен всегда использоваться для начальной установки после включения питания. Первая команда после установки в исходное состояние вы- бирается из нулевой ячейки. Прерывания. В микропроцессоре РАСЕ предусмотрена шести- уровневая векторная приоритетная система прерываний, которая обеспечивает автоматическое распознавание уровня прерывания и выдачу или снятие разрешения на прерывание всем устройствам одного уровня независимо от других уровней прерывания. Возмож- ность выдачи разрешения на индивидуальное прерывание обеспечи- вается регистром состояния для каждого уровня, как показано на рис. 11.11, а общее разрешение прерывания (IEN) предусмотрено для всех пяти низших уровней как одной группы. Использование инверсных единичных сигналов запроса прерывания допускает объединение по схеме ИЛИ нескольких источников на каждом вхо- Рис. 11.11. Логическая схема прерывания 386
Таблица 11.16 Расположение указателей уровней прерывания в памяти Ячейка Программа обслуживания прерывания 8 7 6 5 4 3 2 1 0 Программа обслуживания прерывания 0-го уровня Указатель программного счетчика для прерывания 0-го уровня Указатель прерывания 5-го уровня Указатель прерывания 4-го уровня Указатель прерывания 3-го уровня Указатель прерывания 2-го уровня Указатель прерывания 1-го уровня Не используется Команда начальной установки де. Когда появляется запрос прерывания, он устанавливает соот- ветствующим образом ключ запроса прерывания при условии, что соответствующее прерывание разрешено. Ключ устанавливается любым импульсом, превышающим по длительности период синхро- генератора, что облегчает «захват» узкого управляющего импульса. Если бит общего разрешения прерывания установлен, т. е. IEN == 1, то запрос прерывания начинает обслуживаться. В течение после- довательности обслуживания прерывания на выходе приоритетно- го шифратора вырабатывается адрес, который используется для доступа к указателю запроса прерывания наивысшего приоритета (IRq — наивысший приоритет, IR3 — наинизший приоритет). Ука- затели хранятся в ячейках 2 ... 7 (см. табл. 11.16) для запросов прерываний 1 ... 5 и 0 соответственно. Указатель содержит на- чальный адрес программы обслуживания прерывания для каждого уровня прерывания. Перед выполнением программы обслуживания прерывания содержимое программного счетчика заносится в стек, а флажок IEN устанавливается в нулевое состояние. Программа обслуживания прерывания может установить флажок IEN после отключения разрешения прерывания для обслуживаемого уровня (или сбросом запроса прерывания). (Разрешение прерывания может быть сброшено или установлено командами PELG и SELG.) Немаскируемое прерывание нулевого уровня IRQ является ис- ключением из этой процедуры прерывания. Указатель в этом случае указывает ячейку памяти, используемую в качестве программно- го счетчика (содержимое программного счетчика в этом случае не заносится в стек для сохранения состояния процессора), за которой следует программа обслуживания прерывания нулевого уровня. Флажок разрешения прерывания IRo сбрасывается, когда про- исходит прерывание нулевого уровня (сигнал IEN не оказывает влияния), и может быть установлен адресацией (неявной) флажка состояний 15. Это осуществляется одной из команд (обычно коман- дой JMP@) путем возврата из программы обслуживания прерыва- 13* 387
Мнемокод Наименование Операция ВОС JMP JMP @ JSR JSR @ RTS RTI Команды перехода Branch On Condi’ Перейти по усло- tion вию Jump Перейти безуслов- но Jump Indirect Перейти косвенно Jump to Subroutine Перейти к подпро- грамме Jump to Subroutine Перейти к подпро- Indirect грамме косвенно Return from Sub- Возврат из подпро- routine граммы Return from Inter- Возврат из преры rupt вания (РС)^-(РС)+disp, если условие сс выполняется (РС)^-ЕА (РС)^(ЕА) (STK)^-(PC), (РС)^-ЕА (STKWPC), (РС)-(ЕА) (PC)^(STK)+disp (PC)*-(STK) -h disp, IEN = 1 SKNE SKG SKAZ ISZ DSZ Команды пропуска Skip if Not Equal Пропустить, если не равно Skip if Greater Пропустить, если больше Skip if AND is Пропустить, если Zero логическое и рав- но нулю Increment and skip Увеличить и про- if Zero пустить по нулю Decrement and Уменьшить и про- skip if Zero пустить по нулю Если (АСг)У-(ЕА), (PC)*-(PC) + 1 Если (AC0)>(EA), (PC)-(PC) + 1 Если ?(АС0)д A(EA)] =0, (PC)*-(PC) + I (EA)-(EA) + 1, если (EA)=0, (PCWPQ + l (EA)«-(EA) —1, если (EA)=0, (PC)+-(PC) + 1
Формат ассемблера Формат слова команды ВОС сс, disp JMP disp(xr) JMP @ disp(xr) JSR disp(xr) JSR @ disp(xr) RTS disp R П disp 15141312111009080706050403020100 0 1 0 0 | cc | disp 0 0 0 1 1 0 xr disp 10 0 110 0 0 0 1 0 1 10 0 10 1____________________ 1 0 0 0 0 0 0 0 disp | 0 11111 SKNE r, disp (xr) SKG 0, disp(xr) SKAZ 0, disp (xr) ISZ disp (xr) DSZ disp (xr) 1111 r xr disp 10 0 111 10 1110 1 0 0 0 1 1 10 10 11
A ISZ Add Immediate, Skip if Zero Сложить непосред- ственно и пропу- стить по нулю (АСг)—(АСг) + 4-disp, если (ACr) = 0, (PC)— *-(РС)-Ь 1 LD LD @ ST ST@ LSEX Команды обмена данными с памятью Load Загрузить Load Indirect Загрузить косвен- но Store Запомнить Store Indirect Запомнить косвен- но Load with Sign Загрузить co зна- Extended ковым расширени- ем (АСг)*-(ЕА) (АС0)*-((ЕА)) (ЕА)*-(АСг) (ЕА)*~(АС0) (АСО)^-(ЕА), 7-й бит расширения Команды обработки данных памяти AND AND Логическое И (АС0)«—(АСО)А А(ЕА) OR OR Логическое ИЛИ (АСО)—(АСО) V V(EA) ADD Add Сложить (АСг)—(АСг) + + (ЕА), OV, CY SUBB DECA Subtract with row Decimal Add Bor- Вычесть с заемом Десятичное сложе- ние (АС0)-(АС0) + + ~(EA)+(CY), OV, CY (АСО)—(АС0)+ +xo(EA)+1o(CY), OV, CY
AISZ r, disp О 1 I 1 1 Oi г LD г, disp (хг) LD 0, @ disp (хг) ST г, disp (хг) ST 0, disp (хг) LSEX 0, disp (хг) 1 1 О O| г I 1 хг 1 disp j 1O1OOQ 1 1 0 1 1 г 1 0 1 1 0 и 10 11 11 AND 0, disp (хг) OR 0, disp (хг) ADD г, disp (хг) SUBB 0, disp (хг) DECA 0, disp (хг) 1 0 1 0 1 0| хг | disp 1 10 10 0 1 1110. 10 0 10 0 1 0 0 0 10
о Мнемокод Наименование Операция LI RCPY RXCH XCHRS CFR GRF PUSH PULL PUSHF PULLF Команды, обмена данными регистров Load Immediate Загрузить непо- средственно Register Сору Переписать из ре- гистра в регистр Register Exchange Обменять содержи- мым регистры Exchange Regis- Обменять содержи- ter and Stack мым регистр и стек Copy Flags into Переписать в ре- Register гистр из регистра флажков Copy Register into Переписать из ре- Flags гистра в регистр флажков Push Register onto Занести в стек из Stack регистра Pull Stack Извлечь из стека в into Register регистр Push Flags onto Занести в стек из Stack регистра флажков Pull Stack into Извлечь из стека Flags в регистр флажков (ACr)-<-disp (ACdr)-«-(ACsr) (ACdr)<-(ACsp), (ACsr) -«-(ACdr) (STK)^-(ACr), (ACr) «-(STK) (ACr)^-(FR) (FRHACr) (STKWACr) (ACr)^-(STK) (STKWFR) (FR)-*-(STK) Команды, обработки данных регистров RADD Register Add Сложить содержи- мое регистров (ACdr)ACdr)+ (ACsr), OV, CY
Формат ассемблера Формат слова команды LI г, disp RCPY sr, dr RXCH sr, dr XCHRS r CFR г CRF r PUSH r PULL r PUSHF PULLF 15141312111009080706050403020100 0 1 0 1 0 0| r 1 disp 0 10 1 1 1 dr| I I He использует- sr 1 СЯ 0 110 11 0 0 0 1 1 1 r He используется 0 0 0 0 0 1 0 0 0 0 1 0 0 110 0 0 0 110 0 1 0 0 0 0 1 1 He используек. 0 0 0 1 0 0 RADD sr, dr 0 1 1 0 1 01 dr| sr I He использу- 1 1 1 ется
RADC RAND RXOR CAI Register Add with Сложить содержи- Carry мое регистров и перенос Register AND Логическое И со- держимого регист- ров Register EXCLU- Исключающее SIVE OR ИЛИ содержимого регистров Complement and Инвертировать и add Immediate сложить непосред- ственно (ACdr)(ACdr) 4- -h (ACsr) +(CY), OV, CY (ACdr)^-(ACdr) A A (ACsr) (ACdr)-«-(AC dr) V V (ACsr) (ACr)-< (ACr) + + disp SHL SHR ROL ROR Команды сдвига Shift Left Сдвиг влево Shift Right Сдвиг вправо Rotate Left Циклический сдвиг влево Rotate Right Циклический сдвиг вправо (ACr)<-(ACr) co сдвигом влево на n разрядов (АСг)<-(АСг) со сдвигом вправо на п разрядов (АСг)^-(АСг) со сдвигом влево на п разрядов (АСг)*-(АСг) со сдвигом вправо на] п разрядов HALT SFLG PFLG Другие команды HALT Останов Set Flag Установить фла- жок Pulse Flag Изменить флажок Останов (FR)rc*-l (FR)fc—1, (FR)tc-'-O
0 1110 1 L о 1 о 1 о 1 0 10 110 0 1110 0 Г disp 0 0 10 1 QjTj П гт| 0 0 10 11 001000 0 0 1 0 0 1 О О О О О 0| Не используется О 0 1 1 | fc | 1 | Не используется 0 0 1 11 fc I О I
ния //?0, перед тем как другое прерывание будет обнаружено. Этот уровень прерывания обычно вводится с пульта управления, он всег- да прерывает выполнение программы и не воздействует на регистр состояния системы. Программа обслуживания пульта управления интерпретирует и выполняет функции, указанные с пульта управле- ния переключателями, и визуально отображает выбранные данные на световом табло. Прерывание нулевого уровня генерируется, ког- да на линии NHALT нулевой уровень. Ввод и вывод данных. Все данные между микропроцессором РАСЕ, внешней памятью или периферийными устройствами пере- даются по 16 линиям данных (£)00—£>15) и синхронизируются че- тырьмя сигналами управления (NADS, IDS, ODS, EXTEND). Данные передаются в течение каждой выборки команды и в течение выборки данных по команде обращения к памяти. Эту группу команд МП РАСЕ следовало бы назвать группой обращения к уст- ройствам ввода—вывода, так как все пересылки данных из памяти, ВУ~ или шины данных центрального процессора осуществляются с помощью этих команд. Эта унифицированная магистральная архи- тектура отличается от организации многих других процессоров и мини-ЭВМ, в которых один тип команды (группа команд ввода— вывода) используется для связи с ВУ, другой (группа команд обращения к памяти) — для связи с памятью. Преимуществом подхода, используемого в РАСЕ, является то, что вся группа команд обращения к памяти может использоваться и для обращения к внешнему устройству. Поэтому команда DSZ (УМЕНЬШИТЬ И ПРОПУСТИТЬ, ЕСЛИ НУЛЬ) может быть ис- пользована для уменьшения содержимого регистра внешнего уст- ройства, а команда SKAZ (ПРОПУСТИТЬ, ЕСЛИ ЛОГИЧЕСКОЕ И РАВНО 0) — для проверки содержимого регистра состояний ВУ. Команды LD (ЗАГРУЗИТЬ) и ST (ЗАПОМНИТЬ) использу- ются для простой передачи данных. Весь процесс ввода—вывода состоит по существу из процесса передачи выходного адреса и следующей за ним передачи данных. Синхроимпульс CLK "1 I 1 Г Строй адреса NAPS L— I Адрес данных WA Строй Мода-IBS/ОРЗ Стабильное чтение г- дгМа ---------------1 Выходные данные Входные данные Расширение EXTEND ШЯШШ 'ШШ 1 Стабильное чтение I— Дополнительное расширение на ----N синхроимпульсов Гн? 11.12. Временные диаграммы работы МП РАСЕ при обмене 392
Адрес указывает ячейку памяти или ВУ. Распределение памяти все- цело определяется пользователем (в пределах требований для ука- зателей прерывания). Наиболее простое распределение состоит в назначении всех адресов от 00ЭЭ16 до 7FFF16 для адресации памя- ти и всех адресов от 800Э1о до FFFF16 для адресации ВУ. В этом случае старший бит адреса определяет память или ВУ. Могут быть использованы различные схемы дешифрирования адреса, завися- щие от числа ПЗУ, ЗУПВ и ВУ и их конкретного применения. Как слова адреса, так и слова данных передаются и принимаются в виде 16-битового параллельного кода по шине данных (£)00 ... £)13). Если передается 8-битовая информация, неиспользованные биты трак- туются как не имеющие значения биты, а 8-битовая длина данных выбирается программным способом. Операции передачи данных синхронизованы сигналами NADS (Adress Data Strobe — строб адреса), IDS (Input Data Strobe — строб ввода данных), ODS (Output Data Strobe—строб вывода данных) и Extend (расширение), как показано на рис. 11.12. Адрес выдается на 16 линий данных. Сигнал NADS вырабатывается в середине цик- ла выборки адреса и может быть использован для стробирования адреса с помощью адресных ключей. Ряд микросхем памяти имеют встро°нные адресные ключи, поэтому нет необходимости для выпол- нения этой функции извне. Стробы ввода и вывода данных опреде- Таблица 11.18 Программа двоичного умножения Метка Команда Комментарии CONST: WORD X'FFFF Константа для сложения с удвоен- ной точностью START: LI Rl. 0 LI R3. 16 CAI RO. 0 Очистка регистра результата Организовать счетчик циклов в АСЗ Образовать обратный код множителя LOOP; RADD Rl. Rl RADC RO. RO BOC CARRY.TEST RADD R2.R1 SUBB RO.CONST Сдвиг результата влево в триггер пе* реноса Сдвиг переноса в регистр множи- теля и бита множителя в триггер пе- реноса Проверка для сложения Прибавить множимое к результату Добавить перенос к старшим разря- дам результата (вычесть обратный код) TEST: AISZ R3. —1 JMP LOOP Уменьшить содержимое счетчика цик- лов Повторить цикл 393
ляют направление передачи данных и могут быть использованы в качестве сигнала разрешения буферов ввода—вывода с тремя сос- тояниями и ключей данных в регистрах или памяти, требуемых для проектируемой системы. Вход EXTEND позволяет расширить цикл ввода—вывода на несколько синхроциклов с целью адаптации к различным ЗУ и ВУ или интерфейсу прямого доступа к памяти. Команды. Система команд РАСЕ приведена в табл. 11.17. Часть из них совместима с командами IMP-16 (табл. 11.3 ... 11.11). Простой пример программы двоичного умножения показан в табл. 11.18. Эта программа умножает 16-битовое число из АС2 на 16-битовое число из АС1 и записывает 32-битовый результат з АСО (старшие биты) и АС1 (младшие биты). Время выполнения 1 мс. СПИСОК ЛИТЕРАТУРЫ 1. IMP-16C Application Manual National Semiconductor Corp., Santa Clara, Ca., 1974. 2. PACE Users Manual, National Semiconductor Corp., Santa Clara, Ca., 1975.
Часть III НОВЫЕ МИКРОПРОЦЕССОРЫ И СПЕЦИАЛИЗИРОВАННЫЕ МИКРОСИСТЕМЫ Мини-ЭВМ PDP-11 и микро-ЭВМ LSI-11. Микропроцессорный набор F8. Микроконтроллер SMS. Биполярный микропроцессорный набор Intel 3000. Микропроцессор IM6100 и мини-ЭВМ PDP-8. Глава 12 МИНИ-ЭВМ PDP-11 и МИКРО-ЭВМ LSI-11 В гл. 12 описаны две программно-совместимые системы мини ЭВМ-PDP-11 и микро-ЭВМ LSI-11. Это 16-разрядные машины с мощной системой команд и большим набором способов адресации. ЭВМ PDP-11 является машиной с жесткой логикой, в то время как в LSI-11 применено микропрограммирование с использованием управляющего ПЗУ (УПЗУ) для выполнения команд системы PDP-11. Система команд, бо- лее представительная, чем в любой мини- или микро-ЭВМ, содержит свыше 400 команд. Все команды PDP-11 и LSI-11 принадлежат к одному множеству команд. Так как ЦП может четко управлять регистрами внешних устройств то команды, используемые для обмена с памятью, могут также использовать- ся для обмена данными с регистрами внешних устройств. Подробно описаны архитектура системы, программирование и примеры интерфейсов. Представленный в главе материал из фирменных источников адапти- рован автором под его ответственность1'. 12.1. МИНИ-ЭВМ PDP-11 Операционные особенности. Все ЭВМ семейства PDP-11 имеют следующие особенности: 1. 16-битовое слово (два 8-битовых байта). 2. Возможна обработка слов или байтов. Осуществлено очень эффективное обращение к 8-битовым символам без необходимости циклических сдвигов вправо или влево, обмена или маскирования. Х) Программы, рисунки и таблицы любезно предоставлены фирмой Dr gital Equipment Corporation. Все права сохранены. 395
3. Асинхронный принцип функционирования. Компоненты сис- тем работают с наибольшей возможной скоростью; замена уст- ройств более быстродействующими обеспечит повышение скорости функционирования без каких-либо изменений в аппаратурном и программном обеспечении. 4. Модульное компонентное проектирование обеспечивает мак- симальную легкость и гибкость конфигурирования системы. 5. Стековая обработка. Аппаратурное обращение к группе пос- ледовательных ячеек памяти позволяет легко обрабатывать дан- ные, подпрограммы и прерывания. 6. Прямой доступ к памяти (ПДП). Структура ЭВМ предусмат- ривает использование блоков прямого доступа к памяти. 7. Восемь регистров общего назначения (РОН) на быстродейст- вующих интегральных схемах используются для реализации акку- муляторов и формирования адресов. 8. Автоматическое приоритетное прерывание. Четырехканаль- ная многоуровневая система позволяет группировать линии пре- рываний в соответствии с требованиями. 9. Векторное прерывание. Обеспечена быстрая реакция системы прерывания без участия аппаратурных средств. 10. Одно- и двухоперандные команды. Реализован мощный и удобный набор команд программирования. 11. Автоматический повторный запуск при отказе источника питания. Обеспечивается аппаратурное обнаружение и програм- мная защита при колебаниях напряжения в сети переменного тока. Все составные части и периферийные устройства вычислитель- ной системы связаны и сообщаются друг с другом при помощи про- стой быстродействующей общей шины (магистрали), что определя- ет многие преимущества машины PDP-11. Адреса, данные и управ- ляющая информация передаются по 56 линиям этой шины. Форма связи принята одной и той же для любого устройства, подключенного к шине. Процессор использует ту же последователь- ность сигналов для связи с памятью и с внешними устройствами. Внешние устройства также используют эту последовательность сигналов, когда связываются с процессором, памятью или другими внешними устройствами. Каждому устройству, включая ячейки памяти, регистрам процессора и регистрам внешних уст- ройств присваивается адрес на общей шине. Таким образом, к ре- гистрам внешнего устройства можно легко обращаться как к ОЗУ центрального процессора. Все команды, которые применяются для обмена данными с ОЗУ, можно применять также для обмена дан- ными с регистрами внешнего устройства. Это, в частности, являет- ся характерной особенностью, соответствующей специальному на- значению команд PDP-11 для обработки данных в любой запоми- нающей ячейке как в аккумуляторе. При помощи двунаправленных и асинхронных связей устрой- ства могут передавать, принимать и обмениваться данными по общей шине независимо от процессора. Например, электронно-лучевой 396
ff) Рис. 12.1. Структурная схема процессора: а —упрощенная внутренняя структура; б —потоки данных 397
дисплей может возобновить свои массивы данных с дискового фай- ла пока центральный процессор выполняет другие операции. Бла- годаря организации работы по асинхронному принципу общая шина позволяет согласовать работу устройств с различным быстродей- ствием. Введение в систему. Вся вычислительная система организована вокруг единственной шины, называемой общей шиной. Процессор, память и все внешние устройства используют раздельно во времени эту общую шину. Она позволяет процессору рассматривать внеш- ние устройства как активные ячейки памяти, которые выполняют специальные функции. При этом внешние устройства могут адре- соваться как ячейки памяти. С другой стороны, команды обращения к памяти могут прямо воздействовать на регистры управления, сос- тояния или данных во внешних устройствах. Машинное слово содержит 16 разрядов. Восемь общих регист- ров ... /?7 входят в состав ЭВМ. Все регистры программно до- ступны и могут быть использованы как аккумуляторы, указатели ячеек памяти или как индексные регистры полного формата. Ре- гистры Rq ... /?5 используются в качестве регистров общего на- значения (РОН), шестой и седьмой регистры используются как указатель стека и программный счетчик соответственно: R6 = SP (указатель стека) R7 н= PC (программный счетчик) На рис. 12.1, а показана упрощенная структурная схема про- цессора, разделенная на пять функциональных областей: общая шина, интерфейс, канал данных, регистры общего назначения, уст- ройство управления и синхронизации. Вся передача информации осуществляется по каналам данных. Внутренний интерфейс (интер- фейс общей шины) и регистры общего назначения связаны только каналами данных, так что многократный обмен данными образует поток информации в виде восьмерки (рис. 12.1,6). Этот поток идет от общей шины к нижней части канала данных, от верхней части Поле адреса Поле ходи операции Спосод Резиспгр О) адресации Рис. 12.2. Формат команды 398
канала данных к регистрам общего назначения, от регистров общего назначения к нижней части канала данных и от верхней части кана- ла данных к общей шине. Адресация осуществляется через регистры общего назначения. Эти регистры (РОН) можно использовать как индексные регистры или как последовательные указатели списков для обеспечения досту- па к данным в табличной форме. Модификация адресов может вы- полняться прямо в этих регистрах. Основной формат команды с одним операндом показан на рис. 12.2, а\ 3 бита используются для кодирования номера регистра и 3 бита—для обозначения способа адресации. 12.2. СПОСОБЫ АДРЕСАЦИИ Прямая регистровая адресация. Регистры общего назначения могут быть использованы как обычные аккумуляторы для работы с многократно используемыми величинами. При этом способе опе- ранд хранится прямо в регистре. Ассемблер интерпретирует коман- ды формата OPR R как операции с регистрами общего назначения. Символ R опреде- ляет наименование регистра, и OPR используется для мнемониче- ского представления основной команды. Пример. Операция преобразования в обратный код COM R2. Команда преобразует в обратный код содержимое регистра /?2. Пример показан на рис. 12.3. Операндом этой операции является число 014. Непрямая, или косвенная, адресация. Операнды, указанные для адресации (косвенный адрес), отмечаются символом Таким обра- зом, команда, записанная в виде OPR @ R или OPR (R), означает косвенную регистровую адресацию, содержимое регистра является адресом операнда. Пример. COM @ R2. Число 1234 является операндом, который необхо- димо преобразовать в обратный код (рис. 12.3). Индексная адресация. Регистры общего назначения можно ис- пользовать в качестве индексных регистров для осуществления возможности произвольного доступа к данным в таблицах или сте- ках. Команда вида OPR X(R) указывает на индексный способ адресации. Исполнительный адрес является суммой X (адрес ячейки памяти) и содержимого указы- ваемого регистра R. В рассматриваемой ЭВМ ассемблер переводит индексную коман- ду в два двоичных слова, как показано на рис. 12.2, б. 399
Реыстрьг ом я* Рб я, Рис. 12.3. Режим адреса- ции ftaMBmh В качестве примера предположим, что необходимо выполнить на ЭВМ команду образования обратного кода СОМ 112 (R2). Предположим, что индекс- ный регистр /?2 содержит число 014. Следовательно, исполнительный адрес операнда является суммой 112 + 014 = 126. В общем случае исполнительный адрес М равен М = X + (R). Этот пример показан на рис. 12.3. Исполнительный адрес равен 126, а операнд, который необходимо преобразовать в обратный код, — 200 Индексная адресация может быть косвенной. Тогда она зада- ется командами вида OPR @ X(R). Исполнительным адресом является содержимое индексного ре- гистра М, адрес которого равен X + (R). Пример. СОМ @ 112 (R2). Содержимым R2 является 014 (рис. 12.3). Ин- дексный адрес: 112 + 014 = 126. Поэтому исполнительный адрес равен 200, а операнд, который необходимо преобразовать в обратный код, равен 777, Индексация очень полезна в программных циклах и при опе- рациях со списками данных. Предположим, что необходимо выпол- нить одну и ту же операцию при каждом прохождении цикла, но каждый раз над следующим элементом списка. Для модификации команды достаточно увеличивать содержимое индексного регистра каждый раз, когда программа завершает цикл. Величина X пред- ставляет начальный адрес списка (в первом примере это 112). Вна- чале содержимое индексного регистра должно быть равным 0, после первого прохода оно будет увеличено до 1, после второго — до 2 и т. д. Это модифицирует операцию следующим образом: Первый проход СОМ 112 Второй проход СОМ 113 Третий проход СОМ 114 400
Увеличение индексного регистра на единицу происходит авто- матически, если он запрашивается командой, и называется авто- индексацией. Автоиндексация с увеличением и уменьшением. Автоматическое увеличение адреса обеспечивает автоматическое перемещение ука- зателя по последовательным элементам таблицы операндов. Авто- индексация может быть использована в индексной операции или в операции адресации основного регистра. При таком способе адресации адрес операнда берется из регистра общего назначения и затем содержимое регистра уве- личивается для получения адреса следующего слова. Команды вида OPR (R) + означают адресацию с автоматическим положительным прираще- нием. Аналогично команда вида OPR—-(R) означает адресацию с автоматическим отрицательным приращени- ем. В этих режимах может использоваться также косвенная адре- сация. Команды в этом случае будут иметь вид OPR @ (R) + OPR @ — (R). Непосредственная адресация. Непосредственная адресация обес- печивает экономию времени и места в памяти при необходимости выборки операндов-констант, что достигается включением этих констант в саму команду. В данной ЭВМ ассемблер' воспринимает адресные выражения вида #п как непосредственные операнды: OPR # п. Эта команда набирается из двух машинных слов, причем второе слово содержит операнд п. Абсолютная, относительная и косвенно-относительная адреса- ция. Это стандартные способы адресации, и здесь мы приведем толь- ко вид соответствующих команд. Абсо л ютн а я а др есац и я OPR @ # А, Относительная адресация (относительно счетчика команд) OPR А. Косвенная относительная адресация OPR @ А. Эти команды состоят из двух машинных слов, причем второе сло- во содержит смещение А. 401
123. СИСТЕМА КОМАНД И ПРИМЕРЫ ПРОГРАММИРОВАНИЯ Система команд. В ЭВЛА имеется регистр состояния процессора (PS) (рис. 12.4), в котором содержится информация о текущем уров- не приоритета, результатах предыдущих операций и индикации обнаружения захвата выполняемой команды при отладке прог- раммы. Четыре бита PS выделены для управления по результатам выполнения команд. Эти биты имеют следующее наименование и значение: Z — если результат был равен 0; N — если операция дала отрицательное число; С — если в результате операции появился перенос из старшего бита; V — если в результате операции появилось арифметическое переполнение. Система команд приведена в табл. 12.1. Отметим следующие особенности: 1. ЭВМ имеет группу двухоперандных команд. Например, ко- манда MOV src, dst берет операнд из «источника» (src) и переносит (MOV) его в «приемник» (dst). Способы адресации для источника и приемника информации совпадают с аналогичными способами для команд с одним операндом. Адресация регистров общего назначения OPR RX, RY. Косвенная адресация: OPR@ RX, @RY или OPR (RX), (RY). Индексная адресация: OPR A (RX), В (RY). Косвенно-индексная адресация: OPR @ A (RX), @B (RY). Автоиндексация с увеличением: OPR (RX) +, (RY) +. Косвенная автоиндексация с увеличением: OPR @ (RX) +, © (RY) +. Автоиндексация с уменьшением: OPR — (RX), — (RY). Косвенная автоиндексация с уменьшением: OPR © — (RX), @ - (RY). Непосредственная адресация: OPR ф С, DEST. Абсолютная адресация: OPR @ # A, DEST. Относительная адресация: OPR A, DEST. Косвенная относительная адресация: OPR @ A, DEST. 2. Команда может адресовать полное слово или байт (В). По- этому адреса полных слов всегда четны. 3. Команды связи с подпрограммой JSR и RTS и специаль- ные команды будут описаны отдельно. Т п Z 7 с Приоритет Рис. 12.4. Регистр состояния процессора 402
Таблица 12.1 Система команд PDP-11 Мнемокод Функция команды Код операции Коды условий Длитель- ность, мко Z N С V ГРУППА КОМАНД С ДВУМЯ ОПЕРАНДАМИ: OPR, src, dst1 MOV(B) MOVe (Byte) Переслать (байт) (src)-*(dst) . 1SSDD3 t p — 0 2,3 СМР(В) CoMPare (Byte) Сравнить (байты) (src)->(dst) .2SSDD 4 4 4 t 2,3* В1Т(В) Bit Test (Byte) Побитовая проверка (байта) (src) A (dst) .3SSDD 4 4 - 0 2,9* В1С(В) Bit Clear (Byte) Побитовый сброс (байта) -(src) Д (dst)-»(dst) .4SSDD 4 4 - 0 2,9 BIS(B) Bit Set (Byte) Побитовая установка (байта) (src) V (dst)(dst) .5SSDD 4 4 - 0 2,3 ADD ADD Сложить 06SSDD 4 4 4 t 2,3 SUB Вычесть (dst) — (src)-> (dst) 16 SSDD 4 4 4 2,3 УСЛОВНЫЕ ПЕРЕХОДЫ: Вхх 1 ос BR BRanch (unconditionally) Безусловный переход loc-ЧРС) Branch if Not Equal (Zero) Переход, если не равно (0) 1ос-*(РС). если Z = 0 0004ХХ 1 2,6 BNE 0010ХХ 2,6 BEQ Branch if Equal (Zero) Переход, если равно (0) 1ос-*(РС), если Z = 1 0014ХХ 2,6 BGE Branch if Greater or Equal (Zero) Переход, если больше или р в- но (0) 1ос->(РС), если NVV=1 0020ХХ 2,6 BLT Branch if Less Than (Zero) Переход, если меньше (0) loc-»(PC), если NtfV = l 0024ХХ 2,6 BGT Branch if Greater Than (Zero) Переход, если больше (0) loc-*(PC), если Z V (NVV) = 0 0030ХХ ' 2,6 BLE Branch if Less than or Equal (Zero) Переход, если меньше или равно (0) 1ос-»(РС), если ZV(NVV) = 1 0034ХХ 2,6 BPL Branch if PLus Переход по плюсу 1ос-*(РС), если N=0 1000ХХ 2,6 403
Продолжение'табл. 12.1 Мнемокод Функция команды Код операции Коды условий л |x Z N с 1 BM1 BHI BLOS BVC В VS BCC (или BHIS) BCS (или BLO) JSR RTS Branch if Minus Переход по минусу loc-*(PC), если N = 1 Branch if Higher Переход, <сли больше loc->(PC), если CVZ = 0 Branch if LOwer or Same Переход, если меньше или равно 1ос-»(РС), если CVZ = 1 Branch if oVerflow Clear Переход, если в бите переполне- ния 0 1ос->(РС), если V = 0 Branch if oVtrflow Set Переход, если в бите перепол- нения установлена 1 loc-^(PC), если V = 1 Branch if Carry Clear Переход, если в бите переноса установлен 0 1ос->(РС), если С = 0 Branch if Carry Set Переход, если в бите переноса установлена 1 1ос-»(РС), если С = 1 ОБРАЩЕНИЕ К ПОДПРОГРА] Jump to SubRoutine Переход к подпрограмме (dst)->(tmp), (reg) | (PC)->(reg), (tmp)-*(PC) ВОЗВРАТ из подпрогр; ReTurn from Subroutine Возврат из подпрограммы (reg)-»(PC), t (reg) 1004ХХ 2,6 1010ХХ 2,6 1014ХХ 2,6 1020ХХ 2,6 1024ХХ 2,6 1030ХХ 2,6 1034ХХ 2,6 ЧМЕ: JSR, reg, dst 004RDD 4,4 \ММЫ! RTS, reg 00020R 3,5 ГРУППА КОМАНД С ОДНИМ ОПЕРАНДОМ: OPR, dst CLR(B) СОМ(В) INC(B) DEC(B) CLeaR (Byte) Очистить (байт) 0—>(dst) COMplement (Byte) Обратный код (байта) ~(dst)-*(dst) INCrement (Byte) Приращение (байта) (dst) + l->(dst) DECrement (Byte) Уменьшение (байта) (dst) — 1 -"(dst) .050DD 1 0 0 0 2,3 .051DD t 0 0 2,3 052DD $ t — t 2,3 .053DD J — t 2,3
Продолжение табл 12.1 Мнемокод Функция команды Код операции Коды условий Длитель- ность, мкс 7 N V NEG(B) ADC(B) SBC(B) TST(B) ROR(B) ROL(B) ASR(B) ASL(B) JMP(B) SWAB NEGate (Byte) Дополнительный код (байта) ~(dst) + 1 -► (dst) ADd Carry (Byte) Прибавить перенос (к байту) (dst) + (C)-> (dst) SuBtract Carry (Byte) Вычесть перенос (из байта) (dst) — (C)-»(dst) TeST (Byte) Проверить байт 0 —(dst) ROtate Right (Byte) Циклический сдвиг вправо (бай- та), т е. сдвиг вправо на 1 бит, включая С ROtate Left (Byte) Циклический сдвиг влево (байта), т. е. сдвиг влево на 1 бит, включая С Arithmetic Shift Right (Byte) Арифметический сдвиг вправо (байта), т. е. сдвиг вправо, включая знаковый бит Arithmetic Shift Left (Byte) Арифметический сдвиг влево (байта), т. е. сдвиг влево, вклю- чая знаковый бит JuMP Переход (dst)(PC) SWAp Bytes Поменять местами байты слова ОПЕРАТОРЫ КОДОВ •054DD 1 | 1 t 2,3 .55DD t t t t 2,3 •056DD t t t t 2,3 •057DD 0 0 2,3 .060DD t J J J 2,3 .061DD J | J ф 2,3 .062DD 2,3 .063DD t t t t 2,3 0001 DD 1,2 0003DD 0 0 2,3 УСЛОВИЙ: I OPR | 1,5 Операторы кодов условий устанавливают или сбрасывают комбинации ко- дов условий Если S=l, то выбранные биты устанавливаются в 1; при S = 0 эти биты сбрасываются в 0. Биты кодов условий соответствуют следующим битам: Формат команд управлении кодами состоянии °\ , .gl , /1 I4 S Z V С 15 5 4 5 Z 1 в Так, SEC = 000261 устанавливает в 1 бит С и не влияет на другие биты условий (CLC=000241 сбрасывает в 0 бит С). 405
Продолжение табл. /2.1 Мнемокод Функция команды Код Коды условий L операции / N С V Дли' НОС1 мкс ГРУППА ОПЕРАЦИЙ: OPR HALT HALT Стоп 000000 1.8 WAIT Процессор останавливается, (R0) и адрес останова отображается на ин- дикаторах пульта WAIT Ждать Процессор освобождает шину и ждет прерывания ReTurn from Interrupt Возврат после прерывания t(PC), t (PS) 000001 1.8 RTI 000002 t t t t 4,8 ЮТ RESET Input Output Trap «Захват» при вводе—выводе (PS) 1 , (PC) | . (20)-(РС), (22)-»(PS) RESET Приведение в исходное состояние. Процессор вырабатывает импульс INIT 000004 000005 1 t t t 9,3 20 мс EMT EMulator Trap Захват при эмуляции (PS) I; (PC) 1, (30)->(РС), (32)-> (PS) 104000— 104377 I t t t 9,3 TRAP TRAP Захват (PS) I; (PC) I; (31)-(PC); (36)-»(PS) 104400— 104777 t : t t 9,3 Примечание (из книги Б. Соучек. Мини-ЭВМ в системах обработки информации. — М: Мир, 1976). 1. (XXX) — содержимое ячейки или регистра XXX: sre — ячейка-источник dst — ячейка-приемник 1 ос — ячейка памяти tmp — внутренний регистр процессора reg или R — общий регистр DD, SS — адреса ячеек dst, sre XX —смещение (8 разрядов) Л — логическое И V — логическое ИЛИ V — Исключающее ИЛИ —логическое НЕ | — занесение в стек i — извлечение из стека. 2. Точка перед кодом операции обозначает бит слова/байта; при опера- ции с байтами устанавливается в 1 (т. е. к коду операции добавляется 100000). 3. Знаки в столбце кодов условий: t — бит может меняться в зависимости от конкретных особенностей команды и адресов. ____— бит не меняется. 0,1 —бит устанавливается в 0 или 1. 4. Длительность выполнения операций зависит от особенностей команд и адресов и приводится в соответствующих фирменных материалах. 406
Вхо9нм тиблицц .Выходам таблица HABLE АВрео JTABLE+1000 Пример программы. В данном при- мере демонстрируется построение таб- лицы (гистограммы), показывающей частоту появления каждого из зна- чений, находящихся в другой табли- це и лежащих в диапазоне величин 1 ... 100. Величины вне диапазона 1 ... 100 отбрасываются. Программа приведена в табл. 12.2, а структур- ная схема показана на рис. 12.5. Вся программа разбита на 6 ча- стей: а) Начальный цикл программы используется для очистки выходной таблицы. Команда MOV # OTABLE, RO помещает адрес OTABLE в ре- гистр Ro. Команда MOV # —Ю0, R1 помещает число —100 в регистр Rx. б) Команда CLR (R0) + очи- щает первую ячейку OTABLE. Кроме того, она дает положительное при- ращение содержимому регистра Ro, в результате чего оно становится рав- ным OTABLE + 1 (подготовка к сле- дующему обращению). в) Команды INC Rl, BNE CLOOP выполняют счет циклов до тех пор, пока содержимое Rx не изменится от начальной величины —100 до 0. г) Команда MOV # TABLE, R0 Рис. 12.5. Структурная схема помещает адрес 1TABLE в регистр алгоритма построения гисто- Ro. Следующие две команды загру- граммы жают в регистр Rj величину — 1000, а в R2— величину 100. Этим задаются исходные параметры для анализирующей части программы. - лл&а.— д) Следующие четыре команды берут одну величину из IT ABLE и проверяют, лежит ли она в диапазоне 0... 100. Если она находится в этом диапазоне, то команда ASL R4 умножает ее на два (адреса полных слов четные). Команда INC OTABLE (R4) добавляет еди- 407
Таблица 12.2 Программа построения гистограммы HIST: MOVttOTABLE, RO MOV# —100., Rl CLOOP: CLR (R0) + INC (Rl) BNE CLOOP MOV#ITABLE, R0 MOV# —1000., Rl MOV#100., R2 HLOOP: MOV (R0) + , R4 BLE NOCOUNT CMP R4, R2 BGT NOCOUNT ASL R4 INC OTABLE (R4) NOCOUNT: INC Rl BNE HLOOP HALT Организация очистки выходной таблицы В выходной таблице 100 величин Установить в 0 Приращение и проверка окончания Если не конец, продолжить очистку Установить входной указатель Длина таблицы Наибольшее входное значение Взять следующую входную величину Отбросить, если меньше или равно 0 Сравнить с наибольшим значением Отбросить, если больше 2 байта на каждую величину в таблице Дать приращение соответствующему эле- менту Входные данные все? Если нет, продолжить анализ Гистограмма построена ницу к исполнительному адресу OTABLE + 2- (1TABLE + /), где i означает, что анализируется i-й член таблицы ITABLE. е) Три последние команды считают число цилов и, когда рабо- та выполнена, останавливают программу. 12.4. СТЕК, ПОДПРОГРАММЫ И ПРЕРЫВАНИЯ Стек представляет собой динамический линейный (последова- тельный) список данных, допускающий доступ к нему с одного кон- ца. Стек называют также магазинной памятью или списком типа «вошедший последним выходит первым». Запоминание в стеке и выборку из него называют занесением ( |) и извлечением (| ) соот- ветственно. Эти операции проиллюстрированы на рис. 12.6. К стеку возможно обращение только через одну ячейку — верх- нюю. Адрес этой ячейки хранится в регистре общего назначения /?6, который используется как указатель стека (SP). С помощью SP стек можно использовать для хранения информации или для выборки ее из стека. Пример 1. Нужно сохранить в стеке содержимое регистров Ro ... R4. Часть программы, решающая эту задачу, приведена в табл. 12.3. Эта программа заносит содержимое регистров Ro ... R4 в стек, причем Ro находится в верху стека. Пример 2. Извлечь содержимое регистров Ro ... R4 из стека. Фрагмент программы для этой операции показан в табл. 12.4. За- метим, что в первом примере применялась автоиндексация с умень- шением, которая использовалась так, чтобы SP каждый раз ука- 408
зывал на один адрес выше верха стека. Во втором примере приме- няется автоиндексация SP с увеличением, которая использует- ся так, чтобы SP указывал каждый раз адрес на 1 ближе ко дну стека. Стек используется в трех случаях: 1. При программировании задачи, как это показано на приме- ре (табл. 12.3 и 12.4). 2. Автоматически, при выполнении команд работы с подпро- граммами JSR и RTS. 3. Автоматически, при прерывании. Таблица 12 3 Программа записи содержимого регистров в стек SAVE MOV R4, —(SP) Содержимое Rs было занесено командой MOV R3, —(SP) JSR и будет в самом низу стека. Над ним MOV R2, — (SP) будут по порядку R4, R3, R2, Ri, Ro. Ro на- MOV Rl, —>(SP) ходится в верху стека MOV RO, — (SP) Таблица 12.4 Программа извлечения содержимого стека MOV (SP) + , R0 Содержимое регистров восстанавливается в об- MOV (SP) +, R1 ратном порядке по сравнению с их занесением MOV (SP) +, R2 в стек MOV (SP) + , R3 MOV (SP)+, R4 409
Подпрограммы и стеки. Команда вызова подпрограммы имеет вид JSR reg, dst. Во время исполнения этой команды устройство управления ЭВМ автоматически выполняет следующие действия: dst->(tmp), где tmp — внутренний регистр процессора, reg | Содержимое регистра заносится в стек процессора. (PC)->(reg)B программном счетчике PC находится адрес, следующий за JSR, теперь этот адрес запоминается в регистре. Он будет использован как адрес возврата из подпрограммы. (tmp)->(PC)Осуществляется переход к подпрограмме, находящей- ся по указанному в команде адресу. Следует обратить внимание на то, что для хранения адреса воз- врата используется регистр. Исходное содержимое этого регистра автоматически передается для запоминания в стек. По команде возврата из подпрограммы RTS reg производятся следующие операции: (reg)PC Адрес возврата передается в программный счетчик, f (reg) Старое содержимое регистра восстанавливается путем извлечения его из стека. Пример подпрограммы умножения 16-битовых целых чисел без знака приведен в табл. 12.5. Первая команда — переход к подпро- грамме. Далее следуют три ячейки, в которых хранятся адреса мно- жимого, множителя и произведения. В данном примере для хране- ния адреса возврата используется регистр Т?5. Следует обратить внимание на следующие важные особенности работы подпрограммы со стеком. Таблица 12.5 Подпрограмма умножения с удвоенной точностью JSR R5, MULT .WORD MCAND .WORD MPLIER .WORD PROD MULT: CLR RO MOV @ (R5)+ , R1 MOV © (R5)+ , R2 MOV# —16., R3 MLOOP: ASL RO ROL R1 BCC NOADD ADD R2, RO ADC R1 NOADD: INC R3 BNE MLOOP MOV (R5) + , R2 MOV RO, (R2) + MOV Rl; (R2) RTS.R5 Адрес множимого Адрес множителя Адрес произведения Переслать множитель в Ri Переслать множимое в /?2 Установить счетчик Сдвиг для умножения с двойной точностью Умножение путем сдвига и сложения Сложением управляет старший бит Если он равен 1, добавить множимое Сохранить 32-битовое произведение Конец? Если нет — продолжить Взять адрес для записи произведения Записать младшую часть Записать старшую часть Возврат к вызвавшей программе 410
fl Процесс 2 окончи- О бается номанОой ЧОО RTI (лрерыОание завершено)^ О РО восстаяавлибается значение Р01, 5Z7-*- 6 регистре состояния ОосстанаОлиОается Р8Ь ОозоОноОляется Оыоол- нение процесса 7 Ро . Z ПМЦеСС 7 ЗаНПН- чиоает раОоту номачПой RTl, О flocста- щу наОлиОается РС0 и PS0, ёоэа&ноВ- ляется Оылолнение процесса О$р_^Ро О. Процесс 7 ооОоОож- О бает стен от Орененяо храниО- ЧОО шихся Обличая ГЕо и TEf ЗР-^ Ро Программа Рис. 12 7. Стек и обслуживание устройств при вложенных прерываниях Вызов подпрограмм обеспечивает автоматическую работу с вложенными подпрограммами, возможность повторного вхожде- ния и использование нескольких точек входа. Подпрограммы мо- гут сами вызывать свои подпрограммы (или даже сами себя) на лю- бом уровне вложения без необходимости специального выделения мест для хранения адресов возврата при каждом обращении к под- программе. Механизм вызова подпрограмм не изменяет каких- либо фиксированных ячеек памяти, что обеспечивает возможность 411
повторного вхождения в подпрограмму. Это позволяет нескольким прерывающим друг друга вычислительным процессам использовать одну и ту же подпрограмму. Прерывание и стеки. ЭВМ имеет 4 приоритетных уровня преры- вания. Поэтому запросы более высокого уровня могут прерывать обслуживание прерывания более низкого уровня, причем при окон- чании обслуживания более высокого уровня управление автомати- чески возвращается к программе обслуживания прерывания более низкого уровня. Каждый р'аз, когда происходит прерывание, процессор автома- тически передает в стек текущее состояние центрального процес- сора PS и текущее содержимое программного счетчика PC. Каждая программа обработки прерывания оканчивается коман- дой возврата из прерывания RTI. По этой команде выполняются следующие операции: SP | (PC) По содержимому стека восстанавливается содержимое программного счетчика. SP t (PS) По содержимому стека восстанавливается слово состоя- ния процессора. Пример использования стека для обслуживания нескольких вложенных друг в друга прерываний и для временного хранения данных приведен на рис. 12.7. Следует обратить внимание на то, что указатель стека SP всегда указывает на верхнее слово стека. 12,5. ИНТЕРФЕЙС ОБЩЕЙ ШИНЫ Общая шина. Общая шина — это единственная шина PDP-11, которая связывает между собой все внешние и запоминающие уст- ройства, а также центральный процессор. Для связи со всеми ви- дами запоминающих и внешних устройств процессор использует один набор сигналов. Важной особенностью является то, что и про- цессор, и внешние устройства используют одинаковый способ свя- зи. Вследствие этого для обращения к памяти и для обращения к внешним устройствам используется один и тот же набор команд. Каждому из регистров состояния устройства, каждому регистру управления устройством и каждому регистру данных присвоены индивидуальные адреса как ячейкам памяти. Например, команда MOVB RO, PUNCH загружает в буферный регистр перфоратора 8-битовый код символа, находящийся в регистре Ro. Другие ко- манды служат для контроля за состоянием перфоратора, так что программа может определить, когда операция перфорирования за- кончится. Общая шина состоит из 56 сигнальных линий. Все устройства, включая процессор, подсоединены к этим линиям параллельно (рис. 12.8). «Двунаправленность» 51 сигнальной линии позволяет передавать по ним сигналы в обоих направлениях. Остальные 5 од- 412
Аг~ Адресный регистр шины _____с* Схема синхронизации шины Л\------- Каналы переда- чи данных BfL Управление приори- тетом шин Овщая шина А + с + D Регистр ОЗУ Л Память Устройство Буферный регистр Логическая схема устройства Селектор адреса Процессор Рис. 12 8. Структурная схема общей шины: А — адресная информация; С — сигналы управления и синхронизации; D — данные, Т — сигналы управления обменом; G — разрешение занятия шин ненаправленных линий используются для управления приорите- том шины. Все 56 сигналов и их функции представлены в табл. 12.6. Сигналы обмена данными. Адресные линии используются веду- щим устройством для выборки ведомого устройства, с которым пред- стоит установить связь. Линии А (17 : 01) однозначно определяют 16-битовое слово. При операциях с байтами Аоо определяет байт, к которому происходит обращение. Как правило, внешним устрой- ствам приписываются адреса из области 760000—777777. Распре- деление адресов показано на рис. 12.9. Линии данных D (15 : 00) используются для передачи инфор- мации между ведущим и ведомым устройствами. Линии управления С (1 : 0) задают одну из четырех возможных операций обмена (два режима ввода и два вывода). Линии синхронизации ведущего и ведомого устройств. Все про- цессы на шине асинхронны и определяются взаимодействием управ- ляющих сигналов. Каждый раз, когда ведущее устройство генери- рует сигнал MSYN, ведомое устройство отвечает сигналом SSYN. При получении ответа от ведомого устройства сигнал ведущего уст- ройства снимается. На рис. 12.10 показаны временные диаграммы для двух основных операций: DAT1 (прием данных из ведомого устройства в ведущее) и DATO (передача данных из ведущего уст- ройства в ведомое.) Пример операции DATO. Ведущее устройство задает управ- лению выполнение операции DATO, а также адрес определенного ведомого устройства и подлежащие передаче данные. Затем веду- щее устройство вырабатывает сигнал MSYN. Этот сигнал воспри- нимается ведомым устройством, распознавшим свой адрес, после чего оно производит прием данных и посылку сигнала SSYN. Ве- 413
Таблица 12.6 Сигналы общей шины Название Обозначение Источник Приемник Синхронизация Функция Сигналы Address обмена данньи\ ли (для перед* 1чи данных в ведущее устройство или оС >ратно) Адрес Data А (17:00) Ведущий Все MSYN Выбор ведомого устрой- ства Данные Control D (15:00) Ведущий Ведомый Ведомый Ведущий MSYN (DATO, DATOB) SSYN (DATI, DATIP) Управление Master sync С (1:0) Ведущий Ведомый MSYN Выбор вида обмена Синхронизация ведущего Slave sync MSYN Начало обмена Старт и строб-сигналы А, С и D Синхронизация ведомого Parity available SSYN Ведомый Ведущий Данные приняты (DATO, DATOB), имеются дан- ные (DATI, DATIB) Ответ на MSYN Есть бит четности Parity bit РА Ведущий Ведомый Аналогична синхрониза- ции данных Указывает, что данные сопровождаются битом четности Бмт четности РВ То же Передача разряда четно- сти
Сигналы приоритета обмена (для передачи управления шиной ведущему устройству, выбранному схемой приоритета) Nonprocessor request Непроцессорный запрос NPR Любой Процессор Асинхронно Высший приоритет запро- са шин Bus request Запрос шин BR (7:4) Запрос управления шина- Nonprocessor grant Разрешение непроцессорного NPG Процессор Следующий Параллельно с обменом ми Передача управления ши- прерывания Bus grant Разрешение шинам BG (7:4) ведущий То же данными После команды нами То же Selection acknowledge Подтверждение выбора SACK Следующий Процессор Ответ на NPG или BG Подтверждает получение Bus busy Шины заняты BBSY ведущий Ведущий Все Кроме времени передачи разрешения и запрещает дальнейшие разрешения Сигнализирует, что ши- Interrupt Прерывание INTR Процессор управления После появления BBSY ны находятся под управ- лением Передает управление ши- (но не после NPR) уст- ройство может выпол- нить несколько обменов нами программе обработ- ки прерывания в процес- соре до того, как откликнется на INTR
Венторы прерываний для телетайпа и перфоленточных устройств ООО 000 ООО 037 ООО 0407' ООО 057 ООО 060Я' ООО 077 ООО 100 7' векторы непредвиденных прерывании Ячейки связи с системными программами векторы прерываний 4 10 14 го 24 30 34 во 54 70 74 Ошибка Резервная команда Прослеживание Прерывание при вводе-выводе отказ литания Прерывание при эмуляции Непредвиденное прерывание Клавиатура телетайпа Печатающее устройство Устройство считывания с перфоленты Ленточный перфоратор DOO ООО 017 020 067 040 057 ООО 077 100 717 120 137 140 157 760 777 ООО 377 777 ООО 777 .ООО 777 ООО 777 ООО 777 ООО 777 ООО 777 ООО Основной блок блок памяти ООО 170. ООО 177 . ООО 200 > 777 Память, УК Память, УК Память, УК Память, УК ООО 270. ООО 277 . ООО 300 • венторы прерываний венторы прерываний Память, 4 К Память, УК Адреса регистоов устройств,4А ООО 374 ООО 377 ,760 753 764 ООО 777. ООО' 757 770 777 > ООО- Свободна Зар 6 зервировунь/ иля устройств пользователя 773 J74 777 777 777х ООО7 550 777 Зарезервировано для адилтерод внешних устройств '(ООО 770 000 174) (ООО 270 000 274) Пе заи/ищены стена 777 550 Зарезервированы для устройств фирмы ЛСС Зарезервированы для устройств фирмы ЛСС 777 777 777 777 777 567 577 700 710 7Z0 Адреса телетайпа и лерфоленточных устройств 777 777 775 777 Рис. 12.9. Распределение адресов памяти ЭВМ Устройства яяз -у считывания ряв 7 с перфоленты pps ъ Перфоратор ррв 7 ленты ткз ^Клавиатура ткв 7 телетайпа tps > Печата/оыее тро 7 устройство ~ регистр Сверхоперативная память - длина каждой аз 76 ячеек равна одному ело Ср Рб'Уназатель стена Rf Программный счетчик 777 777 777 777 777 777 777 777 •777 550 552 554 556 560 562 56ч 566 ......_ 570 В 777 571 Клавишный Rq Ry Временное хране- ние программ на исходя, языке и тп. 777. 775 U 777 777 Резисторы состояния
яыъшшв веодходимо обеспечить опережение Адпрг+ #Рмя не менее 75нс, тан нак S5YN ^появление (Г)—I т*е,п омви/юся ратше Лита /isy//m ов Данные (?) 15внсмин^ SSYRU?) 75нс нин. ведомый Адрес* •ьуправление (R) HSYN(R) Данные (Г) SSYN(T) Цинл памяти (R)-принят (7)-передан He менее 75нс для ведомого восстановление Г (запись) 1 а) ведущий Адрес и управление ЖМ(7) все временные соотношения приблизительны, время распространения по шине преувеличена, Цинл чтения не производится для регистров устройств, а цинл восстановления-для ЛДПР 75нс мин. Данные (Г) 150 нс мин. SSYH(H) ведомый Адрес и управление (Я) M3YR (R) Данные SSYH(T) Цинл памяти 75 нс мин I Чтение восстановление .... (разрушение) (запись) I —....-— — 1 — —* (R)-принят все временные соотношения приблизительны т ппврдш время распространения по шине преувеличено, и-передан чтения не выполняется для регистров устройств или в случае установни триггера паузы Временные диаграммы взаимодействия ведомого (приемного) и 6) Рис. 12.10. ведущего (передающего) устройств: а — при вводе (DAT1); б — при выводе.(DATO) U Зак. 1088 417
Времярм О - й § ЯЯ7- т Рис. 12.11. Временная диаграмма ти* пичного обмена DATI (ввод данных) ОВсцая aww Рис. 12.12. Структурная схема интер- фейса общей шины 418
AfgL -с- AfpL *с АщЬ -с X/jZ -°“ Aqs^ AffjL HSYHL 9 SSY* запрет -SELECT 4 H -----SELECT в H AmL -с AqiL -с Aq0L -с С! L -< СО L -< ввод H Се.лентор адреса 15____________________О Регистр I I Распределение дилюв О регистре SELECT ОН -----SELECT 2 H Выдача данных на шину Шина Синхро- низация млад- Вывод младших разрядов Н Вывод старших разрядов н Выдача данных на шину Шина BfsC Синхро- зация стар- ших раз- рядов Рис. 12.13. Логическая схема основного интерфейса. Буква после обозначений указывает уровень логической единицы (// — высокий; L—; низкий) дущее устройство, получив сигнал SSYN, снимает сигналы управ- ления, адреса, данные и MSYN. Ведомое устройство, обнаружив снятие MSYN, в свою очередь снимает SSYN. Обнаружив снятие SSYN, ведущее устройство продолжает свою работу. Пример операции DATI. Операция аналогична рассмотренной выше и схематически изображена на рис. I2.ll. Основной интерфейс и селектор адреса. Когда используется ос- новной интерфейс, запись и чтение осуществляются программно и регистр задается адресом на общей шине. Как показано на рис. 12.12, основной интерфейс использует селектор адреса для де- кодирования адресных линий общей шины и для управления зане- сением информации в регистр, а также для выдачи выходной инфор- мации из регистра на линии данных. Селектор адреса обеспечивает выдачу стробирующих сигналов для четырех регистров внешних устройств. Структурная схема се- лектора адреса изображена на рис. I2.13. Линия Аоо используется 14* 419
для управления выбором байтов. Линии Л01 и А02 используются для селекции одного из четырех адресуемых регистров устройства (SELECT 0, 2, 4 и 6). Линии А (12 : 03) используются для выборки конкретного устройства. Код адреса устройства определяется пе- ремычками на селекторе. Адресные линии А (17 : 13) должны быть в единичном состоянии. Линии С (1 : 0) определяют тип операции (ввод или вывод). Сигнал MSYN приходит от ведущего устройства, а ведомое уст- ройство отвечает сигналом SSYN. С правой стороны рис. 12.13 показана передача седьмого бита регистра данных устройства на линию общей шины DQ1. Схема пе- редачи аналогична и для других 15 бит. 12.6. ПРОГРАММНЫЙ ОБМЕН С ВНЕШНИМИ УСТРОЙСТВАМИ Передача данных между внешним устройством и общей шиной осуществляется одним или несколькими регистрами в устройстве, которые могут быть регистрами данных, как в примере, или ре- гистрами управления — состояния (CSR). Управляющее слово и слово состояния хранится в одном из 16-битовых регистров CSR. Предпочтительное назначение битов слова показано на рис. 12.14, а, а точное их назначение меняется в зависимости от конкретного уст- ройства. На рис. 12.14, б показан регистр управления и состояния быстродействующего считывателя с перфоленты. Теперь рассмотрим примеры программного обмена с этим уст- ройством. Последнее содержит регистр управления и состояния, ко- торому дадим символическое наименование PRS, и регистр данных с символическим названием PRB. Пример. Посимвольный ввод. Программа для этого случая по- казана в табл. 12.7. Символы должны заноситься последовательно в список с начальным адресом BUFFER. Когда будет достигнут Рис. 12 14. Регистр управления и состояния (CSR): а — предпочтительное распределение функций битов, б — CSR для быст считывания с перфоленты 420
Таблица 12 7 Программа ввода данных со считывателя перфоленты MOV R, — (SP) - Сохранить R в стеке MOV# BUFFER, R Передать указатель входного буфера в ре- гистр R START: INC PRS Старт считывателя LOOP: BIT PRS, #'00 200 Проверка битов «исполнено» и «ошибка» BEQ LOOP Если биты не установлены, пройти дальше BMI FRROR Переход по минусу к программе обработки ошибок MOVB PRB, (R) -f- Передать байт из буферного регистра уст- ройства в буфер пользователя и дать поло- жительное приращение указателю CMP#LIM1T, R Проверка на конец буфера BGE START Принять следующий символ MOV (SP) + , R Восстановить R адрес LIMIT списка, дальнейший ввод символов должен прекра- титься. Отметим следующие важные особенности: 1. Команда INC PRS установит нулевой бит в регистре PRS. Этот бит укажет устройству на необходимость чтения одного сим- вола. 2. Команда BITPRS, 41= 100200 проверяет содержимое регист- ра PRS на равенство числу 100200. Этот регистр хранит биты BUSY (занято) и DONE (исполнено). 3. Команда MOVB PRB, (R) + передает 1 байт (символ) из ре- гистра данных считывателя PRB в ячейку BUFFER. Она также уве- личивает на единицу R, подготавливая адрес BUFFER + 1 для ввода следующего символа. Пример. Посимвольный вывод на ленточный перфоратор. Программа показана в табл. 12.8. Ее работа аналогична программе, приведен- ной в предыдущем примере. Таблица 12.8 Программа вывода на ленточный перфоратор MOV R0, -(SP) Сохранить Rq MOV Rl, -(SP) Сохранить Ri MOV NCHAR, R0 Передать число символов в Re MOV BUFFER, Rl Адрес буфера — в Ri LOOP: BIT PPS, #100 200 Проверка битов готовности устройства и ошибки BEQ LOOP Если биты установлены, пройти дальше BMI ERROR Переход по ошибке MOVB (Rl)+, PPB Вывести символ, дать приращение указате- лю DEC R0 Вычесть 1 из счетчика символов (и устано- вить коды условий) BGT LOOP Если больше 0 — повторить MOV (SP)+, Rl Восстановить Ri MOV (SP)+, R0 Восстановить Ro 421
Рис. 12 15. Структурная схема программно-управляемого интерфейса Интерфейс программируемого устройства. На рис. 12.15 приве- ден пример работы программно-управляемого интерфейса с анало- го-цифровым преобразователем. Интерфейс использует 3 адреса. Один адрес (ADMUX) предназначен для. регистра мультиплексо- ра, который используется для выборки одного из 64 аналоговых входов. Второй адрес (ADDBR) используется для регистра (ADDBR) цифрового выхода преобразованного сигнала, а третий адрес (ADCSR) приписан однобитовому регистру управления и состояния. Программа инициирует следующие процедуры: сигнал START CONVERSION (начать преобразование) генерируется в интерфей- се синхросигналом CLOCK ADMUX, который загружает регистр мультиплексора, проверяет блт готовности (READY) (т. е. преоб- разование завершено) и после установки бита передает данные с цифровых выходных линий АЦП процессору. Программа данно- го примера приведена в табл. 12.9. Ячейка INPUT содержит номер требуемого аналогового входа. Приоритетный обмен и прерывание. Общая шина включает 13 линий, называемых приоритетными линиями обмена (табл. 12.6). Пять из них являются приоритетными линиями запросов шины: BR (7 : 4) и NPR, а пять других — линиями соответствующих им подтверждений: BG (7 : 4) и NPG. которые процессор использует для ответа на конкретные запросы. 422
Таблица 12.9 Программа для программно-управляемого обмена с АЦП MOV INPUT, ADMUX READY: TSTB ADCSR BPL READY MOV ADDBR, R4 Выбрать аналоговый вход Проверить окончание преобразования Нет, проверить снова Да, принять данные Любое устройство одного и того же приоритетного уровня про- пускает сигнал разрешения к следующему устройству, подключен- ному к линии, пока оно само не выставит запрос на шину. В этом случае запрашивающее устройство блокирует сигнал от следующих устройств и принимает на себя управление шиной. Пример такой приоритетной цепочки приведен на рис. 12.16. Наивысший приори- тет имеет сигнал NPR, затем приоритет понижается от уровня 7 к уровню 4. Каждый приоритетный уровень имеет пару своих ячеек преры- вания в памяти. Эти векторы прерываний показаны в списке адре- сов на рис. 12.9, Два последовательных слова, начальный адрес про- граммы обслуживания прерывания и новое слово состояния про- цессора хранятся по адресу вектора прерывания. Устройство может вызывать процедуру обслуживания прерыва- ния в любое время, когда оно получает управление общей шиной с помощью одной из линий запросов BR. Временная диаграмма для этого случая приведена на рис. 12.17. Принципы взаимодейст- вия устройств следующие: 1. Устройство, которое должно быть выбрано как передающее, устанавливает сигнал INTR и адрес вектора на линиях D, одновре- менно сбрасывается SACK и устанавливается BBSY. На SACK должен сохраняться высокий уровень, пока не установится INTR. Рис. 12.16. Пример приоритетной цепочки 423
2. Процессор воспринимает INTR и устанавливает сигнал SSYN, когда примет данные (вектор прерывания). 3. Устройство, вызвавшее прерывание, воспринимает сигнал SSYN и сбрасывает сигнал INTR линии D и BBSY, Этим дости- гается активная передача общей шины в распоряжение процессора. 4. Процессор сбрасывает SSYN, когда сброшено INTR, и на- чинает обслуживание прерывания с запоминанием текущего со- держимого регистров PC и PS в стеке и заменой его затем содер- жимым ячеек, определенных как вектор прерывания. Модуль управления шиной и прерыванием. Он содержит цепи и логические схемы, необходимые для формирования запросов на шину, а также для осуществления управления общей шиной. Мо- дуль содержит две полностью независимые схемы запросов и под- тверждения (каналы А и В) для организации управления общей шиной. Схема управления прерыванием может использоваться с одним или двумя каналами запросов и при этом обеспечивать собственным адресом вектора прерывания каждого канала. На рис. 12.18 приведена структурная схема модуля с внутренней связью для двухканального прерывания. Интерфейс, обслуживаемый по прерыванию. На рис. 12.19 по- казан пример интерфейса с АЦП, обслуживаемый по прерыванию. Основное различие между этим интерфейсом и интерфейсом для программно-управляемого обмена (рис. 12.15) состоит в дополни- тельном модуле управления прерыванием. Интерфейс, обслуживае- УстройстВо BBSY(RW) SACK(7) INTR (7) Данные(Т) 6SYN(R) Ведущий — процессор Процессор SACKfRY IN7R(R)‘ Данные^ BSYNfjY (R) “ прием_____________ (Г) - передача Все Временные соотношения приблизительны. Время распространения по шине преуЗелииено. Рис. 12.17. Временная диаграмма работы с прерыванием 424
Сброс A Прерывание А Лоеры- - да ние А _ разрешено В Gif Вход- В Gif, Выход Управление шиной А Шина BHif. в ........— S$W-c Прерыва- ние В \ Прерыва- ние В разрешено BGfy Вход Управление шиной В Ведущее A Ведущее || Примечания: 7, Запрос произведен на уровне О 2, Прерывания от напала А отсылают- ся н ячейне 700> от напала в— к ячейке ЮУ Перемыч-Гт. ни адре~р~б В Gy Выхода--- /V следующему устройству film! Старт прерывания А Сброс В ры^ ПеремычнаЫ) ее огсугствие^ Управление прерыванием Выполнено прерываниеА выполнено прерывание В Рис. 12.18. Модуль управления шинами и прерываниями BBSY SSYH 7\ЗАСН ---------- | [6G-BP Управле- штя П<75:00> Готово ние пре- рыванием Л4>7 1 Преобразование завершено I I А<77:00> С<7:0> HSYN SSYP Строб ADDBR Синхроим- пульс ADMUX 07 Отрав ADCSR 05 05 Выходные Вентили ВО 09 I 00 Выходные Вентили 00 Регистр В <75100> 06______ Входные вентили 00 Цифровые выходные линии Пу он преобра- зования Линии адреса мульти- пленсора I § t I I pl 1! 11 I________J Рис. 12.19. Структурная схема обработки прерываний через интерфейс 425
Таблица 12.10 Программа обмена по прерыванию ADCVEC: ADCSER 240 Установить область векторов АЦП В слове состояния задан уровень приори- тета 5 MOV BUFSTRT, BUFADR CLR ADMUX MOV# 100, ADCSR Далее следует основная программа Задается начальное значение указателя бу- фера Запуск мультиплексора с канала 0 Разрешение прерывания ADCSER: MOV ADDBR, @BUFADR CMP BUFADR, BUFSTRT+174 BEQ DONE ADD#2, BUFADR , INC ADMUX RTl DONE: CLR ADCSA Сбор данных Последнее значение? Да, переход к DONE Нет, дать положительное приращение ука- зателю Дать положительное приращение мульти- плексору и инициировать преобразование Сбросить разрешение прерывания Далее следуют программы обработки дан- ных Примечание. Используются адреса ADCSR, ADMUX и ADDBR. Они соответствуют регистрам устройств в интерфейсе. BUFSTRT содержит началь- ный адрес буфера Ячейка BUFADR используется программой обслуживания устройства. ADCVEC — адрес, заданный перемычками в модуле управления прерываниями и содержащий адрес программы обслуживания устройства, обо- значенной ADCSER Таблица 1211 Программа обмена через КПДП LOOP: MOV #401, DKS MOV#BUFADR, DKMA MOV#BUFCNT, DKWC MOV#BLKNO, DKDA BIT#DKMSK, DKS BEQ LOOP BIT#DKEMSK, DKS BNE ERROR Прочитать блок данных (функция 1) с уст- ройства 1 Передать адрес буфера в регистр адреса памяти Передать число слов в регистр счета слов Передать номер блока в регистр адреса устройства. Этим запускается обмен, когда необходимы данные Проверка битов окончания и ошибки Если биты не установлены, пройти дальше Проверка битов любой ошибки При любой ошибке производится переход, данные находятся в буфере с адресом BUFADR 426
мый по прерыванию, позволяет процессору выполнять несовмес- тимые операции других программ, пока АЦП осуществляет свой рабочий цикл. Процессор реагирует на сигнал готово (READY), т. е. преобра- зование завершено) от АЦП, обменивается с АЦП данными и ана- лизирует их. Дополнительный триггер используется для разреше- ния или запрещения прерывания (шестой бит регистра управления и состояния). Типичная программа обслуживания прерывания показана в табл. 12.10. Она выполняет прием данных от АЦП и переход к про- грамме обработки данных после окончания последнего цикла пре- образования АЦП. Обмен массивами данных. Быстродействующие устройства с блочным обменохм информации используют общую шину для пере- дачи данных между устройством и памятью по каналу прямого до- ступа (ПДП). Эти устройства содержат адресуемые регистры, ко- торые управляют потоком данных. Типичный набор таких регистров следующий: 1. Регистр управления и состояния (DKS). 2. Регистр адреса памяти (DRMA). 3. Регистр счетчика слов (DKWC). 4. Регистр адреса устройства (DKDA). Загруженный регистр адреса устройства обычно инициирует обмен, который затем будет происходить без вмешательства про- цессора. Устройство выставляет запрос на прерывание без учас- тия процессора по общей шине» Запросы, если они разрешены, управляют передачей данных между устройством и памятью. Эти запросы перемежаются с запросами на управление общей шиной, поступающими от процессора. Сигнал DONE (исполнено) или Ги- ты ошибки устанавливаются в CSR по окончании передачи или при возникновении ошибки. Они могут вызвать прерывание и могут быть проверены, чтобы выяснить необходимость вмешательства оператора. Программа для этого вида обмена приведена в табл. 12.11. Пер- вая ее половина инициирует передачу по каналу прямого доступа в память. Следующая часть представляет цикл, который проверя- ет, выполнен ли обмен. Обмен осуществляется без вмешательства программы как процедура, идущая параллельно с циклом проверки. 12.7. МИКРО-ЭВМ LSI-11 Основные микросхемы. Технология больших интегральных схем (БИС) позволила достигнуть высоких параметров и надежно- сти при большей плотности компоновки и малой стоимости. Фирма Digital Equipment Corporation достигла успехов в этой технологии благодаря созданию микропроцессорного набора по структуре и функциям ЭВМ PDP-11. Это семейство состоит из четырех различ- ных микросхем, каждая в корпусе с 40 двухрядными выводами. 427
Это микросхемы управления, данных и две микросхемы памяти для микропрограмм (ПЗУ микрокоманд). Микросхема управления. Эта микросхема обеспечивает формиро- вание последовательности адресов микрокоманд для ПЗУ микро- команд и управление внутренним портом доступа к данным. Она со- держит: — программируемую логическую матрицу (ПЛМ), обеспечи- вающую механизм декодирования для формирования адресов мик- рокоманд; — адресный счетчик, используемый для хранения адреса ячей- ки в памяти, содержащей выбираемую команду; — регистр возврата, используемый для хранения адреса возвра- та из подпрограммы; — логическую схему управления доступом к данным, обеспечи- вающую сигналами управления и синхронизации порт доступа к данным; — логическую схему прерывания, обеспечивающую управление посредством трех внутренних флажков процессора и четырех внеш- них флажков системы. Микросхема данных. Микросхема данных объединяет каналы, ре- гистры и логические схемы для выполнения микрокоманд. Она включает: — файл оперативных регистров, представляющий собой сово- купность регистров для хранения часто запрашиваемых данных; — АЛУ, выполняющее арифметические и логические операции, необходимые при выполнении команд; — логическую схему флажков состояния, управляющую словом состояния по результатам из АЛУ; — порт доступа к данным, обеспечивающий доступ к шине ад- реса данных. Микросхема памяти микрокоманд. Эта микросхема служит для хранения кодов микрокоманд выполнения основного набора команд ЭВМ PDP-11/35, 11/40, резидентной отладочной программы ODT, поставляемой фирмой, резидентной программы преобразования ко- дов (ASCII) и программы обслуживания пульта оператора, про- граммы-загрузчика. Пятая дополнительная микросхема памяти может подсоединять- ся к процессору LSI-11 для расширения системы команд включением арифхметических команд с фиксированной и плавающей запятыми. Принципы построения общей шины LSI-11. Шина является прос- тым, быстродействующим, легко используемым средством обмена между модулями LSI-П. Все модули LSI-11, соединенные в общую двунаправленную магистральную структуру, принимают одинаковые сигналы интерфейса. Типичная структура системы, в которой моду- ли процессора, памяти и интерфейса внешних устройств подключены к общей шине, показана на рис. 12.20. Шина данных и линии управления являются двунаправленными линиями с открытым коллектором и рассматриваются ниже. Шина со- 428
Устройством наивысшим Рис. 12.20. Шины системы LSI-11 и структура приоритета стоит из 16 линий данных — адреса 18 линий управления — синхро- низации и служебных линий. Линии сигналов управления передают 2 взаимосвязанных сигнала установления обмена (с помощью четы- рех выводов), которые обеспечивают функционирование системы приоритета ввода—вывода. Высшим приоритетом обладает модуль, непосредственно подключенный к модулю микро-ЭВМ. Устройства с высшим приоритетом разрешают прохождение сигнала к устрой- ствам с более низким приоритетом только в том случае, если они не требуют обслуживания. Например, модуль А, показанный на рис. 12.20, является устройством с наибольшим приоритетом и способен вызвать прерывание работы процессора (когда прерыва- ния разрешены) или выполнить передачу данных через КПДП в любое время. Модули В и С имеют более низкие приоритеты и мо- гут принимать сигнал разрешения, когда модуль А не требует об- служивания. Обычно модуль С может принять сигнал разрешения, когда ни модуль Д, ни модуль В не требует обслуживания. Адресные слова и слова данных (или байты) передаются по 16-битовой шине с разделением во времени. Например, во время программной передачи данных процессор сначала устанавливает на шине адрес в течение определенного интервала времени. По окон- чании времени выдачи адреса процессор выполняет программный обмен входными или выходными данными, обмен данными асинхро- нен и требует ответа от адресуемого устройства. Эти функции выпол- няют сигналы синхронизации и управления шиной. Процессорный модуль способен работать непосредственно на шесть устройств вдоль шины. Устройства или память могут быть установлены в любой разъем вдоль этой шины, однако специальные сигналы управления выборкой блока памяти не позволяют уста- навливать память за пределами первых шести мест. Процессор содержит вентили адресов памяти и дешифратор адре- са, которые позволяют адресоваться к обоим модулям ЗУПВ по 4К, 429
и генерирует сигналы селекции банков данных на шине. Эти сигна- лы могут выделять банки данных по 4К, максимальный объем кото- рых может достигать 32К. Шина обеспечивает интерфейс с векторным прерыванием для любого устройства. Поэтому не требуется специального устройства приоритета для установления процесса прерывания1*. Это приводит к значительной экономии времени обслуживания, когда многие уст- ройства требуют обработки прерывания через общую шину. Когда устройство получает сигнал разрешения прерывания, оно пересы- лает в процессор свой вектор прерывания. Вектор указывает два адреса ячеек, которые содержат слово нового состояния процессора и начальный адрес подпрограммы обслуживания прерывания от дан- ного устройства. Каждая линия входных сигналов функционирует как внешняя линия прерывания, воздействующая через триггеры Шмидта на про- цессорный модуль. Эта сигнальная линия может соединяться с ис- точником высокой частоты, такой как частота обмена по линии, и использоваться как линия прерывания реального времени. Вентиль процессорного модуля разрешает или запрещает это прерывание. Когда разрешение имеется, устройство, соединенное с этой линией, имеет наивысший внешний приоритет прерывания. Вектор прерывания 1008 предназначен для этой функции, и запрос прерывания через внешнюю линию заставляет загрузить PC и PS новыми словами из ячеек Ю08 и 1028. Операции ввода—вывода. Каждая команда процессора требует выполнения одной или более операций ввода—вывода. Первой не- обходимой операцией является прием входных данных (DATI), во время которого извлекается команда из ячейки, адресуемой прог- раммным счетчиком (PC или /?7). Эта операция вызывает цикл шины DATI. Если ни один операнд не передается в память или в устройство ввода—вывода, то ни одного дополнительного цикла шины не тре- буется для выполнения команды. Однако если обмен с памятью или УВВ необходим, то используются дополнительные циклы DATI, цикл паузы ввода данных DAT1O (В) или цикл передачи выходных данных (DATO). Между этими циклами процессор может обслужи- вать запросы канала ПДП. Кроме того, процессор может обслужи- вать запросы прерывания перед циклом шины команды FETCH DATI, когда седьмой бит слова PS равен нулю. Ниже описаны типы циклов шины. Заметим, что последовательности операций ввода— вывода между процессором и памятью и процессором и внешними устройствами идентичны. Циклы DATO (или DATOB) эквивалентны операциям записи, а циклы DATI эквивалентны операциям считы- вания. В результате циклы DATIO (В), обеспечивают выполнение операции, эквивалентной операции чтение—модификация адреса — 1) В этом случае не требуется дополнительная подпрограмма определе- ния номера устройства и нахождения по нему начального адреса подпрограм- мы обслуживания прерывания данного устройства и т. д. (Прим, пер.) 430
запись. Следовательно, отпадает необходимость в формировании адреса при каждом обращении к памяти. Операции ввода. Временная последовательность при выполне- нии операции DATI проиллюстрирована на рис. 12.21 и в табл. 12.12. Эти операции асинхронны и зависят от успешного завершения пре- дыдущей операции. Процессор ожидает, пока адресуемая память или устройство не установит сигнал BREPLY L в ответ на запрос ввода (BDIN L). Обычно время для этого составляет 10 мкс. Однако, если сигнал BREPLY не устанавливается, в течение этого времени (оши- бочная ситуация), в процессор поступает прерывание по непредви- денным условиям через ячейку 4 и сбрасываются сигналы шины. Временные диаграммы для этого случая показаны на рис. 12.21. Заметим, что сигнал BWTBT L не устанавливается во время выдачи адреса, он всегда указывает, что должна быть выполнена передача входных данных. Циклы DATIP являются частью цикла DATI операции чтение — модификация—запись. Адрес и входное слово извлекаются первыми подобно тому, как это происходит в цикле DATI, однако сигнал В SYNC L остается в активном состоянии после завершения пере- дачи входных данных. Поэтому адресное устройство остается под- ключенным и вывод данных осуществляется без какого-либо указа- ния адреса устройства. После окончания вывода данных устройство сбрасывает сигнал BSYNC L, завершая цикл DATIP. Операции вывода. Временная диаграмма, необходимая для цик- лов шины DATO и DATOB, приведена на рис. 12.22. Как и при опе- рации ввода, отсутствие сигнала BREPLY L в течение 10 мкс после установления сигнала BDOUT L свидетельствует об ошибке, при- водящей к непредвиденному прерыванию через ячейку 4. Времен- ные диаграммы для этого случая показаны на рис. 12.22. Заметим, что сигнал BWTBT L должен быть установлен в тече- ние времени выдачи адреса для указания того, что можно осущест- влять передачу выходных данных. Если необходимо выполнить DATOB, то BWTBT L остается в том же состоянии для продолже- ния цикла шины, однако если необходимо выполнить DATO (од- нократный обмен), то BWTBT L сбрасывается во время оставшейся части цикла. Операции прямого доступа к памяти. Операции ввода—вывода канала прямого доступа к памяти осуществляются между внешним устройством и памятью системы. Устройство может обмениваться данными с памятью объемом 4К процессорного модуля или каким- либо модулем ЗУПВ вдоль шины. Временная последовательность операций для выполнения передачи данных точно такая же, как уже описанная для циклов шины при вводе—выводе, за исключени- ем того, что устройство, а не процессор управляет операцией. Ад- ресация памяти, синхронизация и управляющие сигналы функцио- нирования и ответов на запросы обеспечиваются логической схе- мой, содержащейся в модуле интерфейса устройства ПДП, причем 431
BBALO-t BBIN - BREPLY .. BBS7 - (или 5BS0) A Рис. 12 21. Последовательность сиг- налов цикла ввода: Управляющим уровнем сигналов шин LSI-11 является низкий (L) , BDALO-Ш ули BOALQ-7) j[^pec\ данные к BSYNC______Г BB0UT_______ BREPLY_______ , BBST k------- (или В№ТВТ-^игнал В AT OB Рис. 12.22. Последовательность сигна- лов цикла вывода Сигналы шины микро-ЭВМ LSI—11 Таблица 12.12 Сигнал шины Функция сигнала BDAL 0—15 L BWTBT L BHALT L BBS7 L BREF L BD1N L BDOUT L BSYNC L BREPLY L BINT L BIAK I L Bl AR О L BINIT L BDMR L BDMG I L BDMG 0 L BEVNT L BPOK H BDCOR II Линии буферов данных—адресов. Адреса и данные вы- даются раздельно во времени по этим 16 линиям шины Сигнал управления запись—байт. Во время передачи ад- реса по этому сигналу осуществляется запись, во время передачи данных выдается байт Линия продолжения—останова. Устройство может по этой линии вызвать останов процессора Сигнал выборки ВУ — адреса свыше 4К Выделение регенерации. Этот сигнал подавляет сигнал SBSO-6L, когда осуществляется регенерация памяти Сигнал управления вводом данных Сигнал управления выводом данных Сигнал синхронизации. Микропроцессор или модуль ПДП вырабатывает этот сигнал во время выдачи адре- сов и данных при операциях ввода—вывода Управляющий сигнал ответа. Этот сигнал является от- ветным на сигналы В DIN L или BDOUT L Запрос прерывания Разрешение прерывания, вход Разрешение прерывания, выход {Взаимосвязанные сигна- лы, вырабатываемые в ответ на сигнал BINT L Начальная установка. Этот сигнал вызывает очистку про- цессора и начальную установку всех системных уст- ройств Запрос ПДП Разрешение ПДП, вход Разрешение ПДП, выход Взаимосвязанные сигна- лы, вырабатываемые в ответ на сигнал BDMR L Вход внешней линии контроля четкости в процессор Питание в порядке. Выдается, когда питание по пере- менному току нормально Источники питания постоянного тока в порядке. Этот входной сигнал вырабатывается источником питания, когда постоянные напряжения обеспечивают выполне- ние функций системой .432
не требуется передача процессору адреса и данных во время опера- ции ПДП. Прерывания. Устройство может прервать работу процессора только тогда, когда прерывания разрешены и устройство является самым первым, требующим обслуживания прерывания. Седьмой бит слова PS микро-ЭВМ равен 1, когда внешнее прерывание невоз- можно. Самый высокий приоритет имеют устройства, подключенные непосредственно к процессору вдоль шины. Однако внешняя линия контроля четности является самой приоритетной линией внешнего запроса прерывания. Любое устройство, которое может прервать процессор, может также прервать выполнение обслуживания уст- ройства более низкого приоритета, если седьмой бит слова PS равен 0; следовательно, при такой структуре возможно вложение преры- ваний любого уровня. Каждое устройство обычно содержит управ- ляющий регистр состояния (CSR), в состав которого входит и бит раз- решения прерывания. Он должен быть установлен в единицу про- граммно, чтобы устройство смогло выставить запрос прерывания. СПИСОК ЛИТЕРАТУРЫ 1. PDP-11 Handbook, Digital Equipment Corp., Maynard, Mass., 1974. 2. PDP-11 Unibus Interface Manual, Digital Equipment Corp., Maynard, Mass., 1974. 3. LSI-11 Microcomputer, Digital Equipment Corp., Maynard, Mass., 1975. Глава 13 МИКРОПРОЦЕССОРНЫЙ НАБОР F8 Глава 13 знакомит читателя с 8-битовым микропроцессорным набором F8 фирмы Fairchild. ЦП содержит два порта ввода—вывода и 64 регистра об- щего назначения, он связан посредством 8-битовой шины с ПЗУ и микросхе- мами интерфейса памяти. Интерфейс памяти содержит 16-битовую адресную шину для наращивания памяти. Каждая запоминающая схема имеет локаль- ный таймер для генерирования программно-управляемых задержек. Каждое ПЗУ имеет линию прерывания, и запросы прерывания могут быть взаимно вложены в любом порядке, образуя приоритетные уровни системы приорите- та прерываний. В каждой локальной схеме управления прерыванием есть 16-битовый адресный вектор прерывания. Описана система команд микропроцессора F8 и даны примеры программирования. В материалах этой главы частично использованы адаптированные авто- ром публикации фирмы Fairchild Camera and Instruments Со1). За опублико- вание материалов в таком виде ответственность несет автор. 1) Программы, рисунки и таблицы являются материалами фирмы Fair- child Camera and Instruments Co. (1975). Все права сохранены. 433
13.1. ОБЩЕЕ ОПИСАНИЕ Микропроцессорный набор F8 изготовляется на базе п-каналь- ной МОП технологии. Некоторые его характеристики и параметры приведены ниже: — 8-битовая организация системы данных; — время выполнения команды — 2 мкс; — более 70 команд; — 64 регистра общего назначения (РОН) с режимами записи и чтения; — двоичные и десятичные арифметические и логические опера- ции; — внутренний генератор синхронизирующих импульсов; — внутренняя установка при включении питания и сбросе; — наличие каналов ввода—вывода; — многоуровневая система прерывания; — программно-управляемые счетчики интервалов. Полная микропроцессорная система, собранная на базе компо- нентов F8, требует всего 2 интегральные схемы. При использовании дополнительных компонентов набора F8 могут быть созданы более мощные системы. Семейство БИС F8 включает: 1. 3850 — центральное процессорное устройство (ЦП). 2. 3851 — ПЗУ. 3. 3852 — интерфейс динамической памяти. 4. 3853 — интерфейс статической памяти. 5. 3854 — канал прямого доступа к памяти (КПДП). Эти микросхемы можно использовать для построения 8-бито- вой микро-ЭВМ. Для увеличения возможностей системы могут быть легко подсоединены дополнительные полупроводниковые компо- ненты, такие, например, как память. БИС центрального процессора- ЦП содержит следующие узлы: — аккумулятор; — 64 регистра, образующих сверхоперативное запоминающее устройство (СОЗУ); — 2 порта ввода—вывода; — схему управления прерыванием; — схему определения момента подачи питания; — цепи синхронизации, параметрами которых можно управлять одним из трех способов: с помощью 7?С-схем, кварцевого генератора или внешнего задающего генератора. Шины данных ЦП. Структура каналов передачи данных между всеми главными функциональными блоками ЦП показана на рис. 13.1. Данные этих микросхем передаются из блока в блок по четырем шинам. Шина резулыпата принимает результаты действий, выполненных арифметико-логическим устройством (АЛУ), и позволяет осущест- вить запись в один из приемных регистров, связанных с системой. Данные этой шины передаются либо в регистр состояния IF, либо 434
Рис, 13.1. Структурная схема ЦП F8 в аккумулятор ми в регистр СОЗУ, либо в регистр косвенной адреса- ции СОЗУ, либо на шину данных через стробируемые вентили для последующей стробируемой передачи порту ввода—вывода или для передачи через внешнюю шину данных в остальные БИС системы F8. Левая мультиплексируемая шина позволяет передать содержи- мое аккумулятора в один из портов операндов АЛУ. По этой шине через АЛУ на шину результатов передается содержимое регистра состояния. Правая мультиплексируемая шина предназначена для передачи второго операнда в АЛУ. Этот операнд может быть вызван из ре- гистра СОЗУ, из регистра адреса СОЗУ, из регистра команд (ис- пользуемого только тогда, когда требуемые операнды содержатся в команде с непосредственной адресацией) или с шины данных через вентили передачи данных. Шина данных позволяет получать операн- ды либо от других микросхем микропроцессорной системы, либо от портов ввода—вывода, имеющихся в ЦП. Шина данных является основным средством обмена 8-битовыми словами между ЦП и остальными БИС микропроцессорной системы. Она также передает данные из портов ввода—вывода ЦП в аккуму- 435
лятор. Данные, вводимые в ЦП, могут выбираться из ПЗУ, ЗУПВ или интерфейса. По шине данных передается информация 3-х типов: — данные (операнды); — адреса портов ввода—вывода, используемые для выборки порта ввода—вывода, указанного командой ввода—вывода; — адреса программы, передаваемые вовремя выполнения команд ветвления и при прерывании. Информация поступает в ЦП и выдается из него через шину данных. Регистры ЦП. Основные регистры ЦП и их взаимосвязь с шина- ми показаны на рис. 13.1. ЦП содержит следующие регистры: — аккумулятор; — АЛУ; — регистр состояния W\ — регистры СОЗУ и регистр косвенной адресации СОЗУ (ISAR); — порты ввода—вывода. Ниже приведено описание каждого из этих регистров. Аккумулятор представляет собой 8-битовый запоминающий регистр. Он сохраняет результаты действий АЛУ и позволяет осу- ществлять двухсторонний обмен данными с буферной памятью СОЗУ, основной памятью и портами ввода—вывода. Содержимое аккумулятора при этом может быть сдвинуто или преобразовано в обратный код. Арифметико-логическое устройство (АЛУ) представляет собой 8-битовую, параллельную логическую схему, используемую для вы- полнения команд микропроцессора F8. Оно может выполнять как двоичное, так и десятичное сложение (ADD). Кроме того, могут вы- полняться операции преобразования в обратный код, логического И (AND), логического ИЛИ (OR), Исключающего ИЛИ (XOR) и опе- рации увеличения, сравнения и уменьшения кодов. Один из операн- дов в АЛУ обычно поступает из аккумулятора. Другим источником операнда может быть буферная память СОЗУ, основная память данных, регистр косвенной адресации или регистр команд. Резуль- таты из АЛУ передаются в аккумулятор через шину результатов. Регистр состояния W запоминает данные о состоянии результата арифметических или логических операций (рис. 13.2). иг - И'? г2 И? WB Бит управления прерыванием ICB ПЕРЕПОЛНЕНИЕ ноль ПЕРЕНОС ЗНАК 2* 23 Z2 2f 2° Рис. 13 2. Регистр состояния 436
В системе F8 существует четыре признака состояния, а именно: ЗНАК, НУЛЬ, ПЕРЕПОЛНЕНИЕ, ПЕРЕНОС. Пользователь мо- жет проверить любой из этих признаков или любую их комбинацию. Логический смысл этих 4 битов следующий: а) ЗНАК — устанавливается старшим разрядом результата, равным 0 (положительный результат), б) НУЛЬ — устанавливается результатом, равным нулю, в) ПЕРЕНОС — устанавливается переносом, поступающим из старшего разряда, г) ПЕРЕПОЛНЕНИЕ — устанавливается операцией суммиро- вания по модулю 2 переноса из 7-го и 8-го разрядов. Является инди- кацией изменения знака в знаковой арифметике. Имеется также бит управления прерыванием (ICB), используе- мый для маскирования прерывания. Если бит ICB установлен, ЦП воспринимает прерывание. При нулевом значении бита прерывания не воспринимаются. Регистры СОЗУ и регистр косвенной адресации СОЗУ. ЦП имеет 64 8-битовых регистра. Системы, требующие больше чем 64 байта ЗУПВ, могут быть расширены за счет дополнительной памяти, такой как 2102, связанной с ЦП через интерфейс памяти (Ml) системы F8. Существует два типа адресации регистров СОЗУ: прямая адресация младших 12 байт СОЗУ. косвенная адресация любого из 64 байт СОЗУ. Прямая адресация осуществляется однобайтовой командой. Первые 4 бита представляют собой код операции, а остальные биты указывают адрес регистра СОЗУ. Косвенная адресация регистров СОЗУ также осуществляется в одном байте. В этом случае, однако, регистр косвенной адресации (ISAR) указывает требуемый регистр СОЗУ. Структура регистров СОЗУ представлена на рис. 13.3. Сле- дует обратить внимание на то, что только младшие регистры СОЗУ могут иметь прямую адресацию. Все 64 регистра СОЗУ в то же время могут иметь косвенную адресацию с использованием 6-битового регистра косвенной адресации. Специальные задания, используемые в определенных командах, позволяют подсоединять программный счетчик, регистр стека, регистр состояния и счетчик данных к СОЗУ. Это позволяет организовать систему с многоуровневой программной обработкой прерываний. Регистры Q и К в основном используются для запоминания 16-битовых адресных векторов, получаемых либо из программного счетчика, либо из регистра стека. Регистр Q образуют регистры 14 и 15 СОЗУ, а регистр К — ре- гистры 12 и 13. Регистры 10 и 11 СОЗУ составляют регистр Н, а регистр 9 является регистром J. Команды обращения к памяти имеют доступ к 65536 байтам ос- новной памяти, используют 16-битовый адрес, содержащийся в счетчиках данных микросхемы памяти. Адреса могут быть загру- жены в 16-битовые счетчики данных из одного или двух регистров СОЗУ, относящихся к //- или Q-типу. Регистр 9 СОЗУ может быть использован для запоминания данных регистра состояния во время 437
выполнения стандартной программы прерывания. Команды, в кото- рых код операции означает, что адресация СОЗУ производится 6-битовым содержимым регистра косвенной адресации, выполняв ются одним из следующих трех способов: 1. Косвенная адресация с помощью регистра ISAR. 2. Косвенная адресация с помощью регистра ISAR с последую- щим увеличением содержимого ISAR (3 младших бита) в конце выполняемой команды. 3. Косвенная адресация с помощью регистра ISAR с после- дующим уменьшением содержимого ISAR (3 младших бита) в конце выполнения команды. Таким образом, регистр ISAR является указателем увеличения или уменьшения для регистров СОЗУ. Младшие 3 бита ISAR обра- зуют счетчик по модулю восемь, когда используются способы адре- сации с уменьшением или увеличением ISAR. Например, если ISAR содержит 308, программа увеличения обратится к этой ячейке и увеличит ISAR до 318, а программа уменьшения обратится к той же ячейке и уменьшит младшие 3 бита ISAR до значения 278. Когда регистр ISAR используется для косвенной адресации регистров СОЗУ, может быть использован один из трех способов адресации, рассмотренных выше. Во всех трех случаях ISAR формирует адрес регистра СОЗУ. Эти способы следующие: содержимое ISAR неизменно, содержимое ISAR увеличивается на 1 после выполнения опе- рации, содержимое ISAR уменьшается на 1 после выполнения операции. Порты ввода—вывода. ЦП имеет 2 двунаправленных порта вво- да—вывода. Каждый порт используется либо для приема данных з 10 11 1Z Тб 10 15 Регистр J - — AZ / р5гистр # - у Регистр @ Соединен с регистром состояния Соединен со счетчиком данных Соединен с программным счетчиком Соединен с регистром стена и счет чином данных Рис. 13 3. Сверхоперативная регистровая память 438
от внешних устройств, либо для выдачи данных во внешние цепи. Вентили на выходной стороне позволяют выдавать 8 бит данных одновременно. Порты ввода—вывода ЦП непосредственно выбираются цепями управления, когда выполняются команды OUTS или INS с операн- дом 1 или 0. Поэтому ввод и вывод осуществляются ими быстрее, чем другими портами ввода—вывода. Портам ввода—вывода ЦП присвоены 4-битовые адреса 0000 и 0001. 13.2. ПЗУ И ИНТЕРФЕЙС ПАМЯТИ (МГ) Общая характеристика. ПЗУ и интерфейс памяти Ml образуют память в системе F8. Для обеспечения взаимодействия памяти и ЦП необходимо подсоединить к шине данных системы F8 ряд регистров. Этими регистрами могут быть: 1. Программный счетчик (РС0). 2. Регистр стека (PG). 3. Счетчик данных (DC). 4. Сумматор. Каждая БИС — ПЗУ типа 3851, интерфейс динамической памяти типа 3852 и интерфейс статической памяти типа 3853 — содержит эти функциональные регистры. Кроме того, ПЗУ 3851 и интерфейс 3853 содержат приоритетные схемы прерывания (рис. 13.4, 13.5, 13.6). Организация передачи данных. Все три БИС (3851, 3852, 3853) характеризуются одинаковой организацией передачи данных, как показано на рис. 13.4 ... 13.6. Основные регистры каждой из этих микросхем связаны тремя 16-битовыми шинами и одной 8-битовой шиной. Описание этих трех шин и их функций приведено ниже. Шина передачи адреса. Эта 16-битовая шина передает адрес от шины данных в программный счетчик, регистр стека или счетчи- ки данных. Кроме того, содержимое сумматора и шины адреса мо- жет быть передано в эти регистры через шину передачи адреса. Шина адреса. Эта шина получает адреса из программного счет- чика, регистра стека и счетчиков данных и передает их в сумматор. 16 линий шины часто используются для обращения к памяти либо от программного счетчика, либо от счетчиков данных. В ПЗУ стар- шие 6 разрядов адресной шины используются для выбора страницы ПЗУ (одной из 64 1024-байтовых страниц). Младшие 10 разрядов служат в качестве адреса ПЗУ. В схемах интерфейса памяти 16-раз- рядная адресная шина служит для управления внешней памятью. Разбиение на страницы микросхем интерфейса памяти не осущест- вляется. Смеситель используется для подключения либо программного счетчика, либо шины передачи адреса к регистру стека. Шина данных. 8-разрядная шина данных — это основной канал передачи 8-битовых слов между различными БИС в системе F8. 439
Каждая из трех БИС (3851,3852 и 3853) содержит по 4 порта различ- ного назначения. Они подсоединены через шину данных к акку- мулятору ЦП. Шина данных также позволяет выполнить обмен 8-разрядными адресами между схемами системы F8. Четыре шины стробируются сигналами, генерируемыми управляющей схемой, которая рассматривается в следующем разделе. Схема синхронизации и управления. БИС 3851, 3852 и 3853 по принципу работы являются последовательностными схемами. Логические состояния этих схем выбираются пятью линиями уп- равления ЦП. ЦП также является для этих схем источником син- хронизации (сигналы синхронизации Ф и записи WRITE). В каждом цикле команды (при наличии сигнала записи WRITE) пять управ- ляющих линий выбирают адрес ячейки управления ПЗУ, имеющей- ся в каждой микросхеме. Ее содержимое передается на линии управ- ления, используемые для внутреннего стробирования логических Рис. 13.4 Структурная схема ПЗУ 3851 440
Рис. 13.5. Структурная схема микросхемы интерфейса памяти 3852 F8 Шина передачи адреса (16 вит) Програм- мный пп счетчик PC о 5 Вентили переда- чи Смеситель Сумматор ) Старший сайт, вентили передачи Демуль- типлек- сор* адреса Й5 [Смеситель шин | \ я Счетчик Счетчик данных 1 данных2 Регистр -п стека PCf ]рмеситель ишн\ 15 8 Младший Вайт, Вентили передачи в 8 Адресная тина (16 дат) Шана данных и 16 УПЗУ Управ- ленае памятью r~g~~ir~^~l г—LL__ Тал Управле- биты ферма- | мер “"° ппо~ □ОСО 11 Л й родителя II адреса прерывания ние пре- рыванием 7 I В 1 £ а $ §?J§ & 1ms Il Й itp1 Рис. 13.6. Структурная схема микросхемы интерфейса памяти 3853 F8 441
схем. Линии синхронизации используются для определения после- довательности логических состояний схемы. Программный счетчик (РС0). Программный счетчик хранит ад- рес следующего байта команды, который необходимо извлечь из памяти. После выполнения цикла выборки содержимое програм- много счетчика автоматически увеличивается. Существует четыре способа модификации содержимого программного счетчика управ- ляющей программой: 1) из ЦП через шину данных, используя команду условного перехода: 2) из регистра адреса памяти, используя команду безусловного перехода JMP или непосредственного обращения к подпрограмме PI; 3) из указателя стека с помощью команды извлечения POP; 4) из СОЗУ, используя команды прямого обращения к подпро- грамме РК или загрузки LR. Регистр стека (PCj). Регистр стека непосредственно соединен с программным счетчиком и принимает его содержимое во время обработки прерывания или при выполнении команд PUSH (PI) или РК. Назначение регистра стека состоит в упрощении формиро- вания стека адресов. Существует два источника данных для регистра стека. Инфор- мация обычно заносится из программного счетчика через смеситель шин в регистр стека по команде занесения. Регистр стека может быть также загружен командой прямо с шины передачи адреса. Эти сред- ства дают возможность загрузить регистр стека до выполнения команды возврата из подпрограммы POP в основную программу более высокого уровня. Существуют команды для передачи данных в обоих направлени- ях между регистром стека и СОЗУ Счетчик данных (DC). Система содержит счетчик данных для обращения к памяти по адресам. Имея длину 16 битов, счетчик мо- жет обращаться ко всем 64К байтам памяти. Существует группа команд, использующих счетчик DC для извлечения операндов из памяти. Содержимое DC увеличивается на единицу в конце цик- ла выборки информации из ЗУ, таким образом указывается следую- щая выбираемая ячейка памяти. Это удобно, так как цикл управ- ления для передачи некоторого объема информации не требует дополнительной команды для увеличения DC, Специфичные команды подключают счетчик DC к двум регист- рам ЗУ, размещенным в СОЗУ ЦП и обозначенным как регистры Н и Q. Информация о размещении данных может либо храниться в этих ячейках, либо заноситься в DC до пуска программы, которая будет извлекать данные из основной памяти. Каждый из интерфейсов памяти типа 3852 или 3853 имеет по два счетчика данных — оперативный и неоперативный. Оба они имеют 16-битовую длину. Оперативный счетчик данных, используемый для связи с ЦП и для доступа к памяти, загружается непосредственно 442
операндом команды с использованием команды DCI. К тому же счетчик данных может подключаться к СОЗУ и отключаться от него с помощью команд LR DC, Н; LR DC, Q; LR Н, DC и LR Q, DC. Команда XDC означает обмен информацией между оперативным и неоперативным счетчиками данных. Оперативный счетчик полу- чает приращение на 1 в результате каждого обращения к памяти, в то время как с неоперативным счетчиком этого не происходит. Сумматор. Каждый раз, когда программный счетчик или счетчик данных используется для выборки данных из памяти, его содержи- мое либо увеличивается, либо модифицируется в зависимости от типа выполняемой команды. Сумматор принимает содержимое счет- чика по адресной шине, увеличивает его на 1 и передает обратно в соответствующий счетчик. Приращение осуществляется по всему 16-битовому полю. Во время выполнения команд BR и ADC к преж- нему содержимому регистра в сумматоре добавляется 8 бит (век- тор смещения) и затем результат возвращается в регистр. В обоих случаях 8-битовый вектор представлен в дополнительном коде, причем вектор смещения может иметь значение от —128 до +127. Адресуемые порты. Микросхемы типа 3851, 3852 и 3853 содержат по 4 адресуемых порта. Они представляют собой 8-битовые регист- ры, связанные с шиной данных и подключаемые к сумматору ЦП группой команд. Обращение к каждому порту осуществляется 8-битовым адресом. Старшие 6 битов адреса адресуют микросхему, в которой размещен порт, остальные два выбирают один из четы- рех портов. Адреса портов обозначаются следующим образом: ХО, XI, Х2, ХЗ, где X — 6-битовое двоичное число. В каждый из портов может быть записана информация с помощью команд вы- вода. Содержимое портов ввода—вывода может быть считано по командам ввода. Этот программно-управляемый обмен проис- ходит между портами и аккумулятором ЦП. В ПЗУ в качестве 8-битовых портов ввода—вывода используются только 2 порта. Другие 2 порта используются в качестве 8-битового таймера и локальной схемы управления прерыванием. В микро- схеме 3852, интерфейсе динамической памяти, один порт использу- ется для управления схемой оперативной регенерации и для вы- бора режима управляющей схемы ПДП. Из остальных портов один может использоваться как 8-битовый регистр промежуточного за- поминания. Остальные порты не используются. В микросхеме 3853, интерфейсе статической памяти, один порт является тайме- ром, а другой — локальной схемой управления прерыванием. Кроме того, два порта используются в качестве программируемого адресного вектора прерывания. В табл. 13.1 перечислены адреса портов и их основные функции. Логическая схема выбора страницы. Логическая схема выбора страницы необходима в системе F8 для обращения к памяти и для управления шиной данных. Микросхемы ПЗУ осуществляют логи- ческий выбор страницы самостоятельно, сравнивая 6 старших бит адреса с 6-битовым номером страницы. Этот номер страницы выби- 443
Таблица 13.1 Распределение функций портов Адрес порта Функция ПЗУ 3851 Х00и Порт А ввода—вывода ПЗУ Х01 Порт В ввода—вывода ПЗУ Х10 Локальная схема управления прерыванием ПЗУ, XII Таймер ПЗУ Интерфейс динамической памяти 3852 ОС 8-битовый регистр 0D Управляющие биты для регенерации и ПДП 0Е Не используется 0F » » ОС Интерфейс статической памяти 3853 Вектор прерывания, старший байт 0D Вектор прерывания, младший байт 0Е Локальная схема управления прерыванием 0F Таймер интерфейса ’> X является 6-битовым числом, не равным 0. рается пользователем. Сигналы шести старших адресных линий сравниваются с номером страницы ПЗУ в блоке выбора страниц, где определяется необходимость формирования управляющих сиг- налов выборки. Схема выборки страниц является внешней для микросхем ин- терфейсов памяти 3852 и 3853 и предоставляет пользователям пол- ную свободу при адресации памяти. Внутренняя логическая схема интерфейса памяти тем не менее вырабатывает сигнал выбора страницы. Он используется для управ- ления шиной данных в то время, когда ЦП запрашивает содержи- мое программного счетчика или счетчика данных. Несколько команд пересылают данные из программного счетчика и счетчика данных в СОЗУ. Если адрес в запрашиваемом регистре находится внутри области памяти данного интерфейса памяти (определяемого линией выбора страницы), то эта схема «откликнется». Это справед- ливо и для ПЗУ, хотя там выборка страниц производится внутренней схемой. Микросхемы интерфейса памяти 3851 и 3852 имеют вывод REGDR, к которому должна быть подключена линия выборки страниц. Сигнал по этому входу передается в двух направлениях. Он может одновременно использоваться для управления буфером и формирователем шины данных. Микросхема ПЗУ также имеет вывод DBDR для управления буферным формирователем шины данных. Локальный таймер. Каждая микросхема памяти (ПЗУ и интер- фейсов памяти) имеет свой локальный таймер для генерирования запрограммированных задержек. Для программиста таймер — это 444
8-битовый регистр, адресуемый командой вывода F8 по особому ад* ресу порта таймера. Коды задержки, выработанные программой, загружаются в ак- кумулятор, а затем заносятся в таймер. Эту функцию выполняет команда вывода с обращением по номеру порта таймера. После за- грузки таймер начинает отсчет времени в обратном порядке. Таймер работает непрерывно. Он выдает сигнал прерывания в конце каж- дого своего цикла (3,953 мс). Однако, когда выполняется команда вывода OUTS с номером порта таймера как с операндом, таймер останавливается специальным импульсом и локальная логи- ческая схема управления прерыванием снимает накопленные зап- росы прерывания от таймера. Таймер продолжает отсчет времени от этого импульса и генерирует запрос внутреннего прерывания. Затем таймер начинает все сначала и продолжает так функциони- ровать с периодом 3,953 мс (для систем с частотой 2 МГц). Если разряд ICB в ЦП не установлен или локальная логиче- ская схема управления прерыванием не установлена для преры- вания таймера, то запросы прерывания от таймера будут накапли- ваться схемой управления прерыванием. Когда же логическая схема управления прерыванием будет в конце концов установлена, микро- схема памяти затребует обслуживания прерывания. Этот запрос будет удовлетворен, когда будет установлен разряд ICB в ЦП. Время задержки можно выбирать в интервале 0 ... 254 единиц счета. Таймер очищается после каждых 31 синхроимпульса Ф. Поэтому счетчик может отсчитать до 7905 синхроимпульсов. (Для системы, работающей на частоте 2 МГц, период синхроимпульсов Ф составляет 500 нс.) Большая длительность достигается подсчетом многократных прерываний по мере того, как они происходят. Таймер можно остановить, если загрузить во все его разряды еди- ницы. 13.3. СИСТЕМА КОМАНД И ПРОГРАММИРОВАНИЕ Обозначения. Назначения переменных операндов приведены в табл. 13.2, а в табл. 13.3 даны используемые форматы констант. Набор команд представлен в табл. 13.4...13.13. Таблица 13.2 Назначение операндов Операнды | Назначение i Непосредственное значение ГП n-й регистр СОЗУ, п лежит в пределах ог 0 до 63 X Регистр-источник Y Регистр назначения а Адрес t Условие проверки, используемое в командах условного пере- хода BRANCH d Цифровая величина, используемая только в формате табли- цы 00 Обращение к таблице 00 для приема чмо- ' 445
Таблица 13.3 Форматы констан/ Константы1 Назначение Возможная форма one* ранда H‘d‘ 16-рнчная величина, d может быть одной из цифр 0—9, А, В, С, D, Е, F D*d‘ Десятичная величина, d может быть одной из цифр 0—9 du ОМ4 В-ричная величина, d может быть цифрой из 0—7 C*d* Символ: 8-битовый символ в коде ASCII B*d* Двоичная величина, d может быть 1 или 0 T‘d* Отсчет таймера Каждый символ представлен 4 битами Если это необходимо, то для представле- ния полного значения операнда может использоваться более чем одна цифра. Например: 16-битовое двоичное число ОНО ООП 0100 1001 может быть записано в 16-ричном коде как НЧ349’. Примеры программирования Проверка I в б-м или 4-м бите: LR NI BNZ A, R В’00101000’ Проверка 1 в 6-м и 4-м битах: LR A, R NI В’00101000’ XI BZ В’00101000’ Проверка 0 в 6-м бите регистра: LR A, R NI BZ В’00100000’ Проверка, является ли содержи- LR A, R мое регистра R больше, чем CI В’01110000’ 6’01110000’ (+-112): ВМ В этом случае нет необходимости в проверке переполнения Проверка на равенство А=В (со знаком или без): А находится в аккумуляторе CI В BZ EQUAL Сравнение с В Если флажок нуля установлен, io перейти по метке EQUAL Если не равен Проверка Л>В (без знака): CI В BNC Y1 Если А>В, то перейти на Y1 Если А<^В 446
Код операции Операнд( ы) 3 i’l sS Символическое описание SR 1 12 Сдвинуть вправо на 1 разряд SR 4 14 Сдвинуть вправо на 4 разряда SL 1 13 Сдвинуть влево на 1 разряд SL 4 15 Сдвинуть влево на 4 разряда COM 18 ACC— (ACC)®H‘FF* LNK 19 ACC—(ACQ4-CB INC IF АСС—(АСС)+1 LIS I 7i ACC—H‘i‘ CLR 7C ACC—Н‘00* LI ii 20 ACC—H‘ii‘ ii N1 ii 21 11 АСС—(АСС)дН‘п‘ 01 ii 11 22 АСС—(ACC)vH‘ii‘ XI ii ii 23 АСС—(ACC)®H‘ii* Al ii ii 24 ACC— (ACC)+H‘ii‘ ii (двоичное сложение) CI u 25 H‘ii‘+(ACC)4- 1 ii
ВиГЬ' состояния Комментарий Перепол- нение Нуль о X 0. & X 2 0 1/0 0 1 0 1/0 0 1 0 1/0 0 1/0 0 1/0 0 1/0 0 1/0 0 1/0 Дополнение (обратный код) 1/0 1/0 1/0 1/0 Бит переноса прибавляется к АСС~ 1/0 1/0 1/0 1/0 Приращение — — — -- Загрузка непосредственная коротки: операндов (ДСС0...ЛСС3) — - — — Очистка АСС — — — - Загрузка непосредственная 0 1/0 0 1/0 Логическое И непосредственное 0 1/0 G 1/0 Логическое ИЛИ непосредственное 0 1/0 0 I/O Исключающее ИЛИ непосредственное I/O 1/0 1/0 1/0 Сложение непосредственное 1/0 1/0 1/0 1/0 Сравнение непосредственное и уста новка битов состояния IF
448 Таблица 13.5 Команды обращения к регистрам СОЗУ Код операции sT о Машинный формат Символическое описание Биты состояния Комментарии Перепол- нение Нуль Перенос X го л У»х Общая форма команды загрузки LR Допустимые форматы операндов записаны ниже А,г1) 4г АСС«-(г) — — — — A,KU 00 АСС—(г12) — — — — A,KL 01 АСС-(г13) — — — — A,QU 02 АСС-(гМ) — — — — A,QL 03 АСС«-(г15) — — — — г, A 5г г «-(ЯСС) — — — — KU,A 04 г12«-(АСС) — — — — KL,A 05 г13«-(АСС) — — — — QU,A 06 г14«—(АСС) — — — — QL,A 07 г15«—(АСС) — — — — AS r Сг АСС—-(АСС) + (г) (двоичное) 1/0 1/0 1/0 1/0 Двоичное сложение ASD г Dr АСС—(АСС) + (г) (десятичное) 1/0 1/0 1/0 1/0 Десятичное сложение NS г Fr АСС—(АСС) Л (г) 0 1/0 0 1/0 Логическое И XS г Ег АСС-(АСС) ©(г) 0 1/0 0 1/0 Исключающее ИЛИ DS г Зг r-(r)+H‘FF< (декремент) 1/0 1/0 1/0 1/0 Уменьшение на единицу *) Форматы операнда следующие; Прямая адресация Косвенная адресация от 0 до 11 (десятичная форма) S или 12 i или 13 от Н'0' до Н’В’ (шестнадцатеричная форма) D или 14
Таблица 13.6 15 Зак. 1й88 Команды обращения к счетчику данных Код операции Операнде ы) Машинный формат Символическое описание Комментарии LR Q, DC 0Е rl4<-(DCU); rl'5«-(DCL) Загрузка Q из счетчика данных (DC) LR Н, DC 11 rlO<-(DCU); rll«-(DCL) Загрузка Н из DC LR DC, Q OF DCU«-(rl4); DCL^(rl5) Загрузка DC из Q LR DC, H 10 DCU«-(rlO); DCL«-(rll) Загрузка DC из Н ADC — 8Е DC^-(DC) + (ACC) Сложение ACC с DC DCI iiii 2А ii DC«-H‘iiii‘ Непосредственная загрузка DC XDC — ii 2C DCo^DCj (только через интерфейс памяти) Обмен содержимым счетчиков DCq, DCi Команды косвенной адресации к регистрам СОЗУ Таблица 13.7 Код операции Операнде ы) Машинный формат Символическое описание Комментарии LR •A, IS 0А ACC-(ISAR) Загрузка ACC из ISAR LR IS, А ОВ ISAR-(ACC) Загрузка ISAR из ACC LISU а 01100а1) lSARU-e-а Загрузка а в старший байт ISAR LISL а 01101а1) lSARL«-a Загрузка а в младший байт ISAR О а содержит 3 бита.
Таблица 13.8 450 Команды обращения к памяти I Код операции Операнд(ы) Машинный формат Символическое описание Биты состояния Комментарий Перепол- нение Нуль Перенос Знак LM ST AM AMD NM ОМ хм CM 16 17 88 89 8А 8В 8С 8D ACC<-((DC)) (DC) Н ACC) ACC^(ACC) + ((DC)) (двоичное) ACC^(ACC) + ((DC)) (десятичное) ACC-(ACC)A((DC)) ACC«-(ACC)V((DC)) ACC«-(ACC)®((DC)) ((DC)) + (ACC) + 1 1/0 1/0 0 0 0 l/o 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 0 0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 Загрузка аккумулятора АСС Запись в ячейку памяти Двоичное сложение Десятичное сложение Логическое И Логическое ИЛИ Исключающее ИЛИ Сравнение и установка битов состоя* ния W Команды обращения к регистру состояния Таблица 13.9 Код операции Операнд(ы) Машинный формат Символическое описание Комментарий LR LR W, J J, W 1D 1Е W<-(r9) W3 Ws Wo Восстановление битов состояния Сохранение битов состояния Маска прерыва- ния Перепол- нение Нуль Перенос Знак (Привилегированная команда)п r9«-(W) *) Привилегированные команды запрещают обработку прерываний до окончания команды.
Таблица 13.10 сл Команды обращения к программному счетчику Код операции Операнд(ы) Машинный формат Символическое описание Комментарий LR LR LR РК PI POP *) Привил 2) Содерж: К, Р р, к РО, Q аааа2 егированные кс имое аккумуля! 08 09 0D ОС 28 п ii 1С >манды запрет ?ора не сохрани г12«-(РСги); НЗНРСЛ) PCilMr^); PC^HrlS) PC0U<-(rl4); PC0L<-(rl5) РС0<-(г12); PC0L«-(rl3) и РС!<-(РС0) (Привилегированная команда)1) PCiHPCo); РС0<- Н ’ аааа’ О (Привилегированная команда)1* РС0<-(РС1) (Привилегированная команда)1) ают обработку прерываний до окончания команд! <ется. Загрузка регистра К из PCi Загрузка РСХ из К Загрузка PCq из регистра Q Прямое обращение к подпрограмме Непосредственное обращение к под- программе Возврат из подпрограммы ы. Таблица 13.11 Команды условных переходов Код операции Операнд(ы) Машинный формат Символическое описание Комментарий BR аа 90 РСоН(РСо) + 1) + Н’аа' Безусловный переход JMP аааа1) аа 29 РСо<—Н’аааа’ Непосредственный переход ВТ t, аа3) аа аа 8t аа Привилегированная команда2) РСо-((РСо) + 1) + Н’аа’, если условие выполняется; РС0-(РС0) + 2, если условие не выполняется Условный переход по истинности ус- ловий
Продолжение табл. 13.11 452 Код операции Операнд(ы) Машинный формат Символическое описание Комментарий ПРОВЕРЯЕМЫЕ БИТЫ СОСТОЯНИЯ 22 21 20 НУЛЬ ПЕРЕНОС ЗНАК ВР ВС BZ ВМ BNC BNZ BF аа аа аа аа аа аа t4), аа 81 аа 82 аа 84 аа 91 аа 92 аа 94 аа 9t4 аа РС0<-((РС0)+1) + Н’аа’, если ЗНАК=1 РС0<-(РС0) + 2, если ЗНАК = 0 РС0Н(РС0) + 1) + Н’аа’, если ПЕРЕНОС= 1 РС0«-(РС0)+2, если ПЕРЕНОС = 0 РС0-н-((РС0) + 1) + Н’аа’, если НУЛЬ = 1 РС0~-(РС0) + 2, если НУЛЬ = 0 РСо<-((РСо)+ 1) + Н’аа’, если ЗНАК=0 РСо«-(РСо) + 2, если ЗНАК=1 РСо<-((РСо)+1)+Н’аа’, если ПЕРЕНОС=0 РС0<-(ГС0)+2, если ПЕРЕНОС=1 РС0<-((нС0)+1) + Н’аа’, если НУЛЬ = 0 РСо«-(РСо)+2, если НУЛЬ=1 РСо<-((РСо) +1) + Н’аа’, если все выбирае- мые биты состояния равны 0; РСо«-(РСо) + 2, если любой из битов состоя- ния равен 1 ПРОВЕРЯЕМЫЕ УСЛОВИЯ 2з 22 21 20 Переход по положительному числу Переход по переносу Переход по нулю Переход по отрицательному числу Переход по отсутствию переноса Переход по неравенству нулю Переход по ложному ПЕРЕПОЛ- НЕНИЕ НУЛЬ ПЕРЕНОС ЗНАК В NO BR7 аа аа 98 аа 8F аа РС0«-((РС0) + 1)+Н,аа,> если ПЕРЕПОЛ- НЕНИЕ =0 РСо«-(РС0)4-2, если ПЕРЕПОЛНЕНИЕ = 1 PCq«— ((РСо)1)-f"Н’аа’, если ISAR=^=7 РС0^-(РС0) + 2, если ISAR —7 | Переход по отсутствию переполнения Переход по регистру ISAR ‘) Содержимое аккумулятора теряется. 8) t содержит только 3 бита. ' Привилегированная команда запрещает обработку прерывания до окончания команды. 4) t содержит 4 бита._______________
Рис. 137. Структурная схема алгорит- ма подпрограммы сложения с удвоен- ной точностью Таблица 13.12 Команды управления прерыванием Код операции Операндеы) Машинный формат Символическое описание D1 EI 1А 1В ЗАПРЕТ ПРЕРЫВА- НИЯ РАЗРЕШЕНЕ ПРЕ- РЫВАНИЯ (Привилегирован ная команда)1 * *) Привилегированные команды запре- щают обработку прерывания до заверше- ния их выполнения. Сравнить два числа алгебраически. В соответствии с предыдущей проце- дурой для сравнения двух чисел, име- ющих знак, требуется операция ис- ключающего ИЛИ над знаковым би- том POS и битом переполнения OVF. Один из возможных методов выпол- нения подобной функции описан выше. CI В BF9 GRT BNO Y1 ч BN GRT YI А находится в аккумуляторе В сравнивается с А Если оба бита OVF (переполнение) и POS (знак) равны нулю, то Л>В, перейти к GRT Для перехода к этой команде необходимо, чтобы бит OV=1 или бит POS—1. Если OVF=0, a POS=1, то осуществляется пере- ход к Y1 Теперь OVF—О, если POS=0, то А>В В этой точке либо OVF«1, либо POS=»1, следо- вательно, А^В 15В Зач. 1083 453
Таблица 13.13 Команды ввода —вывода биты состояния Символическое описание INS а IN аа OUTS а ОШ аа Аа 26 аа Ва 27 аа АСС-*- (ПОРТ ВВОДА а) Только порты ввода с номера- ми 00...OF ACC (ПОРТ ВВОДА аа) Только порты ввода с номера- ми 04...FF ПОРТ ВЫВОДА а +- (АСС) Только порты вывода с номера- ми 00...0F ПОРТ ВВОДА аа^-(АСС) Только порты вывода с номера- ми 04...0F 1/0 0 1/0 41) 1/0 0 1/0 4 4») 4 Выполняется за два цикла, когда адрес порта ввода—вывода является 0 или I. Подпрограмма сложения (вычитания) 16-битовых слов. Струк- турная схема программы показана на рис. 13.7, а сама программа приведена в табл. 13.14. 13.4. ПРЕРЫВАНИЯ И ВВОД —ВЫВОД Прерывания. Схема соединений элементов микропроцессорной системы F8, обеспечивающей режим прерывания, приведена на рис. 13.8. В микросхемах ПЗУ типа 3851 и интерфейса статиче- ской памяти 3853 предусмотрены два вида прерываний: внутренние Линии внешнего прерцваниа Рис. 13.8. Схема соединения цепей прерывания F8 454
Таблица 13.14 153* 455 Программа сложения (вычитания) 16-битовых слов Ячейка Машинный код Номер команды Комментарий 20D7 70 126 * Сложение — вычитание 16-разрядных двоичных чисел (с повышенной гоч- * ностью) * Программа вычитания: * Вход: * Если SR7—0, то сложить, в противном случае вычесть * Первое слагаемое в оперативных регистрах SR0 и * Второе слагаемое в оперативных регистрах SR2 и SR3 * (Эти двойные регистры используются для хранения 16-разрядных чисел со * знаком, определяемым 7-м разрядом регистров 1 и 3) * (Если вычитание, то (SR2, SR$) — (SRa, S/?i)) * Выход: * Сумма или разность сохраняется в SR2, * Регистр W содержит код состояния результата * 16-битового сложения DBA LIS 0 20D8 С7 127 AS 7 20D9 84 В 128 BZ ADD Если S/?7 = 0, то перейти на ADD 20DB 40 129 LR A, 0 20DC 20DD 20DE 18 1F 50 130 131 132 СОЛ1 INC LR 0. А Образовать дополнительный код для вычитания 20DF 1В 133 LR J W 20Е0 41 134 LR A, I 20Е1 20Е2 18 1D 135 136 COM LR W J 20ЕЗ 20Е4 19 51 137 138 LNK LR LA 20Е5 40 139 ADD LR A, 0 Взять старший байт первого слагаемого 20Е6 С2 140 AS 2 Прибавить старший байт второго слагаемого 20Е7 52 141 LR 2, А Запомнить промежуточную сумму 20Е8 1Е 142 LR J, W
Продолжение табл 13 14 <_г> О Комментарий Ячейка Машинт !й код Номер команды 20Е9 49 143 LR 20ЕА 22 1В 144 01 20ЕС 58 145 LR 20ED 1D 146 LR 20ЕЕ 41 147 LR 20EF 19 148 LNK 20F0 1Е 149 LR 20F1 СЗ 150 AS 20F2 53 151 LR 20F3 49 152 LR 20F4 57 153 LR 20F5 1Е 154 LR 20F6 49 155 LR 20F7 F8 156 NS 20F8 58 157 LR 20F9 47 158 LR 20FA 59 159 LR 20FB 48 160 LR 20FC 1D 161 LR 20FD 92 4 162 BNC 20FF 22 2 163 OI 2101 1D 164 LR 2102 98 3 165 DBA1 BN0 2104 22 8 166 OI 2106 59 167 DBAX LR 2107 1D 163 LR 2108 1С 169 POP А, 9 Взять код состояния и выполнить логическое ИЛИ со Н‘ 1В * всеми разрядами, кроме НУЛЬ 8, А Направить в SR8 для определения окончания W, J Направить новое значение битов состояния обратно в регистр W А, 1 Взять второй байт первого слагаемого Прибавить единицу, если имеется перенос из предыдуще- го этапа сложения J, W Сохранить биты состояния (могут быть переполнение или перепое) 3 Прибавить младший байт второго слагаемого 3, А Запомнить результат в SRj А, 9 Передать код состояния из регистра связи 7, А Прибавить к Sfa J, W А. 9 Получить код состояния окончательного результата и 8 выполнить логическое И с битом НУЛЬ промежуточного 8^ А результата 9. А Передать код состояния из регистра связи обратно в ре- s. А гистр W и выполнить логическое ИЛИ битов ПЕРЕ- AV, J ПОЛНЕНИЕ и ПЕРЕНОС окончательного результата DBA1 2 W, J DBAX 8 9, А Передать окончательный код состояния в регистр W W, J Возврат
Таблица 13.15 Управление прерываниями Бит выбора прерывания Бит разреше- ния преры- вания Функция 0 0 Прерывание запрещено 0 1 Разрешено внешнее прерывание 1 0 Прерывание запрещено 1 1 Разрешено прерывание по таймеру (внутреннее) и внешние. Внутренние прерывания генерируются программируемым таймером, в то время как внешние прерывания вызываются внеш- ними сигналами. В каждой БИС имеется локальная схема управле- ния прерыванием, содержащая два вентиля. Эти вентили предусмот- рены для бита выбора и бита разрешения прерывания. Эти два бита могут иметь четыре состояния (табл. 13.15). Указанные выше управляющие вентили загружаются под управ- лением программ при использовании команд вывода. При загрузке очищается логическая схема управления прерыванием, за исключе- нием любого незавершенного прерывания таймера. Операнды комавд вывода OUT или OUTS должны содержать номера портов схем управления прерыванием. Использование двух управляющих битов обеспечивает независимое управление состоянием каждой схемы прерывания: если имеется разрешение прерывания, бит выборки может выбрать или внутреннее (от таймера), или внешнее преры- вание. Каждая БИС ПЗУ имеет линию входа приоритета (priority in) и линию выхода приоритета (priority out), которые могут быть объе- динены в произвольном порядке для формирования уровней прио- ритета прерываний. Линия входа приоритета первой микросхемы в линейке подсоединена к V$s (к заземленному выводу) или к вы- воду ICB ЦП. Так как БИС интерфейса памяти MI имеет только ли- нию входа приоритета, то она располагается в конце линейки. Все БИС памяти подключаются к ЦП через шину запроса прерывания. Когда запрашивается обслуживание при прерывании, локальная логическая схема прерываний посылает сигналы в ЦП по линии запросов прерываний и не выдает сигнал на линию выхода приори- тета. Если данная БИС памяти не запрашивала прерывание, она просто передает сигнал на выход прерывания к следующей БИС па- мяти в линейке. Последняя принимает решение, подобное предыду- щему случаю (передать сигнал или использовать). Путем соединения линий приоритета устанавливаются уровни прерываний. Первая в линейке БИС памяти характеризуется наи- более высоким уровнем прерывания, а последняя в линейке наиболее 457
низким (рис. 13.8). Л\икросхема MI в системе F8 всегда обладает наименьшим уровнем приоритета. Для генерирования внутренних прерываний таймер управляется программой. Прерывание имеет место, когда таймер отсчитал задан- ный интервал и установлена схема управления прерыванием (т. е. бит выборки равен 1 и бит разрешения равен 1), а также установлен бит ICB в ЦП. Таймер может завершить отсчет интервала до того, как будет установлен бит управления прерыванием или локальная схема управления прерыванием будет подготовлена для внутренних прерываний, но и в этом случае прерывание будет начато после выполнения всех указанных выше условий. Любой незавершенный запрос прерывания таймера снимается, если содержимое таймера БИС памяти изменяется (когда таймер перезагружается). БИС ICB всегда сбрасывается после того, как ЦП сформировал сигнал подтверждения запроса прерывания. Формирование внешних запросов прерывания также контролиру- ется локальной схемой управления прерыванием. Если бит выборки равен 0 и бит разрешения равен 1, то логическая схема управления будет реагировать на внешние прерывания. Чтобы гарантировать прерывание, сигнал на линии внешнего прерывания должен изменяться от Vdd до Vss (от 1 до 0) и оста- ваться низким в течение как минимум двух циклов записи (4 мкс для синхросигналов системы с периодом 2 мкс). При этом бит ICB может быть установлен или не установлен. Если он не установлен, то запрос прерывания хранится логической схемой управления прерыванием до тех пор, пока ICB не будет установлен. Однако запомненный внешний запрос прерывания теряется, если биты уп- равления модифицируются. Запомненный внешний запрос будет снят после обслуживания прерывания. Функционирование локальной схемы управления прерыванием достаточно сложно, и приведенное выше описание является чрез- мерно упрощенным. Каждая локальная схема управления прерыванием характеризу- ется 16-битовым адресным вектором прерывания. Этот вектор соот- ветствует адресу, который будет занесен в программный счетчик после подтверждения запроса прерывания. Кроме того, это адрес первой команды подпрограммы обслуживания прерывания. В мик- росхеме памяти типа 3851 имеется возможность программного мас- кирования адреса прерывания по выбору пользователя. Имеется и другая возможность маскирования этой БИС. Пят- надцать бит — биты 0 ... 6 и 8 ... 15 — выбираются пользователем. Бит 7 (27) определяет тип прерывания. Этот бит равен 0 для внут- ренних прерываний, генерируемых таймером, и 1 для внешних прерываний. Адресный вектор прерывания для БИС MI типа 3853 может программироваться с помощью команд вывода. Порт ОС содержит старшие 8 бит 16-битового адреса (биты 28 ... 215), в то время как порт OD содержит младшие 7 бит (биты 2° ... 26). Бит 7 (27) адресного вектора прерываний (бит 7 порта OD) управляется 453
Zzy I Z1* Zf3 2rZ 11Г I10 I I 2^ IРегастР _ I-----------------L._—_____________ порта ОС |2Z* | | г5 | 2« | 2? | 22 | 2z |^| PMWfo 7 *Этот Cum управляется местной цепью прерывания Рис. 13 9. Назначение битов прерывания локальной схемой управления прерыванием так же, как в микро- схеме ПЗУ системы F8. Он равен 0, если разрешены прерывания от таймера, и I, если разрешены внешние прерывания или любые прерывания запрещены. Формат программного адресного вектора прерываний для БИС MI типа 3853 показан на рис. 13.9. Вектор прерываний может загружаться с помощью команд вы- вода OUT или OUTS. Его можно переслать обратно в аккумулятор, если использовать команды ввода IN или INS и порт ОС или 0D в качестве операндов. Если логическая схема прерывания формирует сигнал запроса прерывания, а ЦП разрешает обслужить его, то обычно последова- тельность команд ЦП прерывается при завершении выполняемой в данный момент команды. ЦП посылает сигналы схемам прерывания по пяти линиям управления. Запрашиваемая локальная схема управления прерыванием передает 16-битовый адресный вектор прерывания (от генератора адреса прерывания) на шину данных двумя последовательными байтами. Адрес через схемы демультиплексирования адреса поступает в программный счетчик и одновременно через шину данных подает- ся на все другие схемы. Это адрес следующей команды, которая должна быть выполнена. Программный счетчик (РС0) каждой микро- схемы памяти принимает этот новый адрес в то время, когда регистр стека (PCi) загружается предыдущим содержанием программного счетчика. Прежняя информация в РС± теряется. Таким образом, следующая команда, подлежащая выполнению, определяется зна- чением вектора адреса прерывания. Бит контроля прерывания (ICB) центрального процессора, за- гружаемый в регистр 1F, позволяет распознавать прерывания. Ну- левое значение ICB препятствует подтверждению прерывания. Бит ICB обнуляется во время начальной установки после включе- ния питания или внешним сигналом, или после того, как запрос прерывания был подтвержден. Состояние системы прерывания мик- росхемы памяти не изменяется при выполнении команды ЗАПРЕ- ТИТЬ ПРЕРЫВАНИЕ. При завершении большинства команд логическая схема выборки проверяет состояние шины запросов прерывания. Если запрос име- ется, цикл выборки следующей команды пропускается и система переходит к обслуживанию прерывания. ЦП разрешает прерывание 459
только после определенных команд. Исключение составляют сле- дующие команды системы F8: (РК) —ЗАНЕСТИ К (PUSH К); (PI) -ЗАНЕСТИ НЕПОСРЕДСТВЕННО (PUSH IMMEDIATE); (POP) —ИЗВЛЕЧЬ (POP); (JMP) — ПЕРЕЙТИ (JUMP); (OUTS) —ЗАКОРОТИТЬ ВЫХОДЫ (за исключением OUTS 01 и 02) (OUTPUT SHORT); (OUT) - ВЫВОД (OUTPUT); (El) - УСТАНОВИТЬ ICB (SET ICB); (LR WJ) — ЗАГРУЗИТЬ РЕГИСТР СОСТОЯНИЯ ИЗ СОЗУ (LOAD THE STATUS REGISTER FROM SC- RATCH PAD). При включении питания в течение начальной установки преры- вание также запрещено. Следовательно, необходимо выполнить хотя бы одну команду после перечисленных выше до момента обра- ботки прерывания. Эта возможность особенно полезна в программах, выполняющих операции, содержащие прерывания. Например, когда происходит прерывание, содержимое программного счетчика можно занести в регистр стека (PCJ. Возможно, это значение следует сох- ранить для последующего использования. Если нет средств блоки- ровки прерывания, то его обработка задерживается до того, как содержимое РСГ будет занесено в память. Эта возможность задер- жать прерывание очень важна и существенна. Ввод—вывод. Типовая микропроцессорная система F8 содержит по крайней мере один ЦП с одной или несколькими микросхемами памяти и, возможно, микросхему интерфейса памяти, подключен- ную к шине данных (рис. 13.10). Операции ввода—вывода системы включают передачу данных между аккумулятором и портами ввода- вывода. Эта передача может осуществляться одной из четырех команд, которые также используются для обращения к схемам управления прерыванием и регистрам таймера (рассматриваемых также в качестве портов). Команда вывода может быть записана в виде OUT аа В этом примере байт аа является адресом порта. Каждый порт (ввода—вывода, схемы управления прерыванием, таймера) в системе F8 имеет свой заранее определенный номер. Два порта ЦП всегда обозначаются как 00 и 01, они выбираются только командами INS и OUTS: Адреса портов Н’ 00’ ЦП порт ввода—вывода 0 Н’ 00’ ЦП порт ввода—вывода 1 Н’ 02’ не выбирается Н’ 03’ не выбирается 460
'К УВВ К памяти Рис. 13.10. Микро-ЭВМ системы F8 на микросхемах 3850, 3851 и 3852 Выбор четырех адресов портов микросхем ПЗУ выполняется пользователями с помощью масок в то время, когда номера портов микросхем интерфейса памяти определены заранее. Для каждой микросхемы памяти или интерфейса памяти характерны четыре последовательных адреса портов. Передача данных от аккумулятора к порту выполняется с по- мощью команд OUT или OUTS. Выборка содержимого портов ввода—вывода может выполняться командами IN или INS. Команды OUTS и INS являются однобайтовыми командами, пер- вые 4 бита представляют код операции, а остальные 4 бита — адрес порта. Таким образом, пользуясь этими командами, можно обращать- ся только к 16 портам. Это «младшие» 16 портов с номерами 00 ..0F. Команды OUT и IN являются двухбайтовыми. Первый байт содер- жит код операции, а второй — номер порта. При этом можно адресо- ваться к любому из 256 портов. Порты 00 и 01 адресуются только командам OUTS и INS. Каждый порт ввода—вывода содержит 8-битовую стробируемую запоминающую схему на выходной стороне, следовательно, он сох- раняет данные последней команды вывода. Так как эти порты двунаправленные, то данные могут быть приняты в аккумулятор через тот же самый порт. Единственным условием при этом является нахождение ключа выходного бита порта в нуле. Выводы портов ввода—вывода обычно объединяются по схеме ИЛИ. Следовательно, если полное 8-битовое слово должно быть передано в аккумулятор, то все буферы портов ввода—вывода должны быть вначале установлены в 0. 461
СПИСОК ЛИТЕРАТУРЫ 1. F-8 Preliminary Microprocessor User’s Manual, Fairchild Camera and Instruments Co., Mountain View, Ca., 1975. 2. F8M Micromodule User’s Manual, Fairchild Camera and Instruments Co., Mountain View, Ca., 1975. 3. Application Notes, F8 Microprocessor, Fairchild Camera and Instruments Co., Mountain View, Ca., 197c Глава 14 МИКРОКОНТРОЛЛЕР SMS В гл. 14 представлен микроконтроллер фирмы Scientific, Micro Systems, который специально разрабатывался для целей управления. Микроконтрол- лер состоит из центрального процессора (ЦП) с 8-битовыми регистрами обще- го назначения, программной памяти со словами длиной 16 бит, дополнитель- ного ЗУПВ и завершенной системы ввода—вывода, называемой вектором интерфейса (IV). Адрес внешнего устройства определяется программно в микроконтроллере. Система ввода—вывода выступает по отношению к микро- контроллеру как совокупность внутренних регистров. Система имеет восемь команд, которые позволяют пользователю контролировать входные линии состояния, устанавливать или сбрасывать линии управления выводом и про- изводить быструю передачу входных и выходных данных. Каждая команда вы- полняется полностью за 300 нс. Материал этой главы частично основан на публикациях фирмы Scienti- fic Micro Systems1). За содержание данной главы полную ответственность несет автор. 14.1. МИКРОКОНТРОЛЛЕРНАЯ СИСТЕМА Общая характеристика. Микроконтроллер SMS является микро-ЭВМ, предназначенной для целей управления. Ее параметры следующие: — время выполнения команды 300 нс; — прямая адресация до 4096 16-битовых слов программной памяти; — восемь 8-битовых регистров общего назначения; — одновременная передача и редактирование данных за время одного цикла выполнения команды; — ветвление n-го порядка в программе и занесение в таблицу данных выполняются за время двух циклов обработки команды; — одинаковая скорость выполнения операций при 1 ... 7 или 8-битовом формате данных. Набор команд микроконтроллера включает ориентированные на решение задач управления команды, которые непосредственно оперируют с входными и промежуточными данными переменной дли- х) Программы, рисунки н таблицы предоставлены фирмой Scientific Micro Systems. Все права сохранены. 462
ны. Эти команды обеспечивают эффективное выполнение процедур перемещения и интерпретации данных. Эта особенность делает мик- роконтроллеры идеальным средством коммутации, контроля и ре- дактирования данных. Данные от внешних устройств могут быть обработаны (проверены, сдвинуты, просуммированы и т. д.) без предварительной записи их во внутреннюю память, так как система ввода—вывода является для микроконтроллера набором внутренних регистров. Фактически общая концепция состоит в отождествлении данных интерфейса ввода—вывода и внутренних данных. Это положение распространя- ется на программное обеспечение, в котором допускаются наиме- нования переменных в системе ввода—вывода и обращение к ним, такие же как для данных в памяти. Функциональные компоненты микроконтроллера. Микроконт- роллер является законченной микро-ЭВМ, состоящей из: — центрального процессора, называемого интерпретатором, — программного ПЗУ, — дополнительного ЗУПВ, называемого рабочей памятью с пе- ременным полем адресов от 1 до 8 бит, — полной системы ввода—вывода, называемой вектором интер- фейса. Структурная схема микроконтроллера представлена на рис. 14.1, ЦП микроконтроллера содержит арифметико-логическое устройство (АЛУ), программный счетчик, регистр адреса вектора интерфейса (IVL) и регистр адреса рабочей памяти (IVR). Имеется восемь 8-битовых регистров общего назначения, включая семь рабочих и вспомогательный регистр, который используется как рабочий регистр и содержит операнды при выполнении многих команд. Регистры микроконтроллера показаны на рис. 14.1 и описаны ниже. Регистры управления. Регистр команды. 16-битовый регистр, содержащий текущую команду. Регистр адреса программной памяти (AR). 13-битовый регистр, содержащий адрес текущей команды, извлеченной из программной памяти. Программный счетчик (PC). 13-битовый регистр, содержащий адрес следующей команды, которую следует извлечь из программной памяти. Регистр адреса байта вектора интерфейса (IVL). 8-битовый регистр, содержащий адрес текущего байта, извлеченного из век- тора интерфейса. Регистр IVL управляется программой. Регистр адреса рабочей памяти (IVR). 8-битовый регистр, со- держащий адрес текущего байта, извлеченного из рабочей памяти. Регистр IVR управляется программой. Регистры данных. Рабочие регистры (WR). Семь 8-битовых ре- гистров для запоминания данных. Регистр переполнения (OVF). Однобитовый регистр, который содержит бит переноса из старшего разряда, получаемый из АЛУ. Арифметически трактуется как разряд с весом 2°. 463
Рис. 14.1. Структурная схема микроконтроллера
Вспомогательный регистр (AUX). 8-битовый регистр, слу- жащий источником операндов для арифметических и логических команд. Может быть использован как рабочий регистр. Для формирования синхроимпульсов всей системы используется внешний по отношению к ЦП кристалл. ЦП обеспечивает выполне- ние восьми команд. 16-битовые команды микроконтроллера записаны в ПЗУ, содержащем 512 ... 4096 слов. Программная память может быть выполнена на базе ППЗУ или ПЗУ, изготовленного с по- мощью маски. Система ввода—вывода, называемая вектором интерфейса, служит каналом данных, по которому информация пересылается в микроконтроллер и из него. Основные элементы вектора интер- фейса следующие: — 8-битовые регистры ввода—вывода общего назначения или байты вектора интерфейса (IV), выходы которых с тремя состояния- ми служат связующими точками с системой пользователя, — регистр IVL, который содержит адрес извлекаемого байта вектора интерфейса, — схема выбора поля переменной длины, обеспечивающая в выбранном байте вектора интерфейса доступ к полям различной длины (от 1 до 8) с помощью одной команды. Вектор интерфейса исключает необходимость иметь дорогостоя- щие логические схемы интерфейса и обеспечивает простую,. хоро- шо установленную связь с системой пользователя. Рабочая память в виде ЗУПВ дополнительно обеспечивает 256 байт памяти для хранения программных данных или данных ввода— вывода. Рабочая память содержит: — 256 8-битовых слов памяти, организованных в виде двух страниц (банков): страница 0 и страница 1, по 128 байт каждая, — регистр адреса рабочей памяти (IVR), который содержит адрес байта, адресуемого в данный момент на странице 0 либо 1 в зависимости от состояния регистра выбора страницы, — решстр выбора страницы, адресуемый IVR и представляю- щий собой однобитовый регистр, используемый для выбора страни- цы 0 или 1 рабочей памяти, —селектор поля переменного формата, который с помощью одной команды позволяет пересылать из адресуемой ячейки рабочей памя- ти данные длиной от 1 до 8 бит. 14.2. СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРА Микроконтроллер имеет набор из 8 команд, который позволя- ет пользователю проверять входные линии состояния, устанавливать или сбрасывать управляющие линии вывода и выполнять высоко- скоростную передачу данных. Все команды имеют длину 16 бит. Каждая команда полностью выполняется за 300 нс. Все команды оп- ределяются 3-битовым полем кода операций (ОР). Операнд может включать следующие поля: поле источника (S), поле приемника (D), 465
с* Таблица 14.1 Команды микроконтроллера Операция Формат Результат Примечание MOVE Содержимое поля данных, адресуемого S, L, заменяет содержимое поля с адресом D, L Если S и D ~ адреса регистров, то L определяет циклический сдвиг впра- во на L позиций содержимого регист- ра, определяемого полем S ADD c 1 s 1 L I D 1 Сумма содержимого регистра AUX и данных, определя- емых полем S, L, заменяет данные в ячейке, адресуемой полем D, L AND Результат логической операции И над содержимым ре- гистра AUX и данными, адресуемыми полем S, L, заме- няет данные, адресуемые D, L XOR Результат логической операции Исключающее ИЛИ над содержимым AUX и данными, адресуемыми S, L, заме- няет данные, адресуемые D, L XM1T Значение поля 1 замещает данные, адресуемые полем S, L . Если S—-адрес вектора интерфейса или рабочей памяти, тогда величина 1 ограничивается диапазоном 00...37, В противном случае I ограничиваемся диапазоном 000...377 c 1 1 l 1 I 1 NZT Если данные в поле, адресуемом S, L, равны 0, выпол- няется следующая команда. Если эти данные не равны 0, выполняется команда, адрес которой определяется символом I как поправкой к содержимому программно- го счетчика c 1 s 1 L . '1 1 XEC Выполняется команда по адресу, определяемому сум- мой символа I и данных, адресуемых S, L, используемых . как поправка содержимого программного счетчика. Если эта команда не передает управление, то последователь- ность команд будет продолжена от ячейки команды ХЕС Операция занесения начального адре- са программного счетчика выполняет- ся уменьшением его содержимого до ближайшего значения, кратного 32 (если 1 = 00...37) или 256 (если 1 = = 000...377), и прибавлением поправки JMP c I Значение величины I замещает содержимое программно- го счетчика Величина I ограничивается диапазо- ном 00000...07777
поле сдвигов (R), поле длины слова (L), поле непосредственного операнда (I) и поле адреса программной памяти (А) (табл. 14.1). Поле кода операции используется для выбора одной из восьми команд микроконтроллера: Код операции Восьмеричная система Команда Результат 0 MOVE S,L,D (S)-D 1 ADD S,L,D (S) + (AUX)->D 2 AND S,L,D (S)A(Auxhd 3 XOR S,L,D (S)e(AUXHD 4 XEC I,L,S или I,S Выполняется команда с адре- сом I + (S) 5 NTZ I,L,S или I,S Переход к команде с адресом I, еслл (S)=#0 6 XMIT I,L,S или I,S Передача символа I-»S 7 JMP A Переход к программе с адре- сом А Поля S и D формата слова определяют источник и приемник для операции, предусмотренной данным кодом операции. Вспомога- тельный регистр служит источником для команд ADD, AND и XOR, которые требуют указания двух полей источников. Другими сло- вами, команды в форме ADD X,Y предполагают третий операнд, скажем Z, находящийся во вспомогательном регистре, так что фак- тически выполняется операция X + Z, результат которой зано- сится в Y. Это означает, что обращение ко всем трем переменным произведено за 300 нс. 14.3. ПРИМЕРЫ ПРОГРАММИРОВАНИЯ Организация циклов. Организация циклов предполагает при- ращение содержимого счетчика и проверку на нуль. Регистр используйся как счетчик и загружается отрицательным числом, так что программа считает до нуля. XMIT NEG, RI Загрузить отрицательным числом счетчик. ALPHA: Начало цикла. ХМ1Т I/ AUX Запомнить величину приращения в ре- гистре AUX, который является неяв- ным операндом команды ADD. 467
ADD RI, RI NZT Ri. AL PHA Увеличить содержимое счетчика. Сло- жить содержимое регистров AUX и Ri и занести результат в Ri. Проверить содержимое Ri на нуль. Если оно равно нулю, перейти к вы- полнению следующей команды, в про- тивном случае перейти к ALPHA и продолжить выполнение программы. Время 900 нс. Логическое ИЛИ (8 бит). Выполнить логическую функцию ИЛИ над содержимым регистров 7?! и /?2. Запомнить логический резуль- тат в /?3. Хотя микрокднтроллер не имеет команды включающего ИЛИ, она может быть легко реализована на основе соотношения (А ф В) ф (А Д В), что логически эквивалентно А V В. MOVE R2, AUX Загрузить один из операндов в ре- гистр AUX для того, чтобы он мог быть использован как неявный для команд XOR и AND. XOR RI, R3 Выполнить функцию Исключающее ИЛИ над содержимым AUX и Ri Записать результат в R3. AND RI, AUX Выполнить операцию И над содержи- мым AUX и Ri. Поместить результат в AUX. XOR R3, R3 Выполнить функцию Исключающее ИДИ над содержимым AUX (А V В) И Rs(A©B). Запомнить результат в R3,b котором после этого содержится результат функции ИЛИ содержимого Ri и R2. Время 1,2 мкс. Сложение 1в-битовых слов, регистр—регистр. Сложить 16-би- товое число, занесенное в регистры 7?г и R2, о 16-битовым числом в регистрах R3 и /?4. Полученный результат записать в Rx и /?2. MOVE R2, AUX Занести младший байт первого опе- ранда в AUX для подготовки к сло- ADD R4, R2 жению. Сложить младшие байты двух опе- MOVE Rl, AUX рандов, после этого результат запи- сать в R2 (младший байт результа- та). Занести старший байт первого опе- ADD, OVF, AUX ранда в AUX. Прибавить перенос, если он возник ADD R3, RI при сложении младших байтов. Сложить старшие байты с переносом Время 1,5 мкс. Сложение 16-битовых СЛОВ, и поместить результаты в Ri (стар- ший байт результата). память—память. Прибавить 16-би- товое число из ячейки рабочей памяти OPERAND 1 к 16-битовому числу в ячейке рабочей памяти, OPERAND 2, а результат записать в ячейку рабочей памяти OPERAND 1. Hl и L1 обозначают старший и младший байты числа OPERAND 1, а Н2 и L2 — старший и младший байты числа OPERAND2. 468
XMIT L2, IVR Переслать в IVR адрес младшего MOVE XMIT ADD MOVE L2, AUX LI, IVR LI, LI OVF, AUX байта второго операнда. Занести перенос, если он появился XMIT H2, IVR при сложении младших байтов, гистр AUX. Сложить старший байт второго в ре- опе- ADD XMIT ADD Время 2,7 мкс. H2, Hl, Hl, AUX IVR Hl ранда с возможным переносом, помнить результат в AUX. Сумма старших байтов в HI. Сумма младших байтов в L1. За- 14.4. СИСТЕМА ВВОДА —ВЫВОДА Адресация данных с помощью вектора интерфейса. Как описано в предыдущем разделе, вектор интерфейса является системой ввода— вывода микроконтроллера. Он обеспечивает простую связь с линия- ми состояния, данных и управления пользователя. Вектор интер- фейса состоит из регистров ввода—вывода общего назначения, на- зываемых байтами вектора интерфейса. В описанном здесь микроконтроллере вектор интерфейса может содержать до 28 байтов. Как видно из рис. 14.1, регистр IVL служит адресным регистром байтов вектора интерфейса. Для того чтобы команда (считывания или записи) имела доступ к байту вектора интерфейса, адрес этого байта должен быть помещен в регистр IVL. Таким образом, требует- ся две команды для управления байтами вектора интерфейса: XMIT ADDRESS, 1VL МАШИННАЯ КОМАНДА Если байт вектора интерфейса выбран (адресован), то он будет выбираться до тех пор, пока регистр IVL не будет загружен другим адресом. С точки зрения пользователя, все содержимое байтов вектора интерфейса может быть прочитано внешним устройством независимо от того, выбраны они или нет. Хотя диапазон адресов регистра IVL составляет 0 ... 3378, только 28 байтов вектора интерфейса доступны для системы. Диапа- зон адресов для этих 28 байтов от 018 до 348. Каждый байт вектора интерфейса состоит из восьми запоми- нающих ключей, содержащих данные, которыми обмениваются ин- терпретатор и система пользователя, восьми линий ввода—вывода с тремя состояниями и двух управляющих линий ввода—вывода, называемых линиями побайтового управления вводом (BIC) и вы- водом (ВОС) (рис. 14.2). Функции линий управления сведены в табл. 14.2. 469
Функции линий управления Таблица 14.2 Управляющие линии Функции ВОС (активен низ- В1С (активен кий уровень) низкий уровень) Н Н Восемь линий ввода—вывода нахо- дятся в высокоимпедансном состоя- нии и не задействованы L !Н Восемь линий ввода—вывода исполь- зуются в режиме вывода: 8-битовые запоминающие ключи подключены к выходной шине X L Восемь линий ввода-вывода исполь- зуются в режиме ввода: данные по ним могут быть приняты интерпрета- тором Примечание. Н — высокий уровень, L —- низкий уровень, X — произ- вольный уровень. Программа формирования байтов Таблица 14.3 XMIT 0, R1 Ri используется как буферный регистр сим- XMIT 8, R2 волов. Он должен быть очищен используется как счетчик битов вектора XMIT INPADR, IVL интерфейса Выбрать байт, который содержит INPBIT NEXTBIT: NZT STROBE, *4-2 и STROBE Контроль бита STROBE с целью проверки готовности данных. Команда MOVE выпол- няется, только когда STROBE =1 JMP *—1 MOVE INPBIT, AUX XOR Rl(l), RI Сдвинуть содержимое R\ на позицию впра- во. В результате в младшем бите устанав- ливается нуль. Выполнить функцию Исклю- чающее ИЛИ над содержимым регистров Ri и AUX. Поместить результат в Rb Млад- ший бит Ri равен последнему значению INPBIT XMIT -1, AUX ADD R2, R2 NZT R2, NEXTBIT Уменьшить содержимое R2 Если содержимое R2 не равно 0, для фор- мирования байта требуется большее число MOVE RI (1), RI битов, перейти на NEXTBIT Эта команда будет выполнена, только ког- да будут собраны 8 бит. После этого оста- ется выполнить еще один сдвиг, чтобы по- лучить последний INPBIT в позиции стар- Время 1,8 мкс/бит шего бита регистра Rj 170
Рис. 14.2. Вектор интерфейса, обеспечивающий динамическое управление потоком данных Формирование байтов при побитовом последовательном вводе. Это тип ичная задача сопряжения с последовательными линиями передачи. 8-битовое слово формируется из входных битов, которые появляются последовательно в векторе интерфейса. Один бит вектора интерфейса, называемый STROBE (СТРОБ), используется для побитовой синхронизации, а второй бит, называемый INPBIT (ВХОДНОЙ БИТ), служит как интерфейс для битов данных (рис. 14.3, табл. 14.3). Таблица 14.4 Формирование управляющей последовательности XMIT STATUS, IVL Выбрать байт вектора интерфейса, на кото- рый поступает 3-битовое слово из системы пользователя MOVE STATUS, Rl Передать содержимое трех битов байта вектора интерфейса в регистр /?ь Три бита автоматически проверяются XMIT ALARM, IVL Выбрать байт вектора интерфейса, опреде- ляющий ответ, посылаемый в систему поль- зователя XEC PATTERN (Rl), 8 JMP *4-9 PATTERN: XMIT A, ALARM XMIT B, ALARM XMIT C, ALARM Выбрать специфический формат из табли- цы форматов PATTERN XMIT H, ALARM Передать выбранный формат в выходной байт вектора интерфейса путем выполнения « • одной из этих команд. А...Н определяют имена, связанные с восьмью различными Время 1,5 мкс форматами управляющих битов 471
Управляющая последовательность. Выходным является 5-би- зовый формат данных как реакция на определенный 3-битовый входной формат, как показано на рис. 14.4. Программа его форми- рования приведена в табл. 14.4. СПИСОК ЛИТЕРАТУРЫ 1. The Microcontroller System Description, Scientific Micro Systems, Mo- untain View, Ca., 1975. Глава 15 БИПОЛЯРНЫЙ МИКРОПРОЦЕССОРНЫЙ НАБОР 3000 В гл. 15 описывается биполярная микро-ЭВМ серии 3000 фирмы Intel. Опа построена на базе быстродействующих биполярных БИС, которые упро- щают конструирование микропрограммных центральных процессоров и конт- роллеров. Время основного цикла составляет 85 нс. Микропрограммное уст- ройство управления определяет последовательность, в которой микрокоманды вызываются из микропрограммной памяти. Центральный процессорный эле- мент содержит все схемы, позволяющие рассматривать его как 2-битовую секцию ЦП цифровой машины. Формирователь ускоренного переноса обес- печивает организацию переноса в 16-битовой центральной процессорной мат- рице. Устройство управления прерыванием, формирователи шин, многоре- жимные буферные накопители упрощают проектирование систем. Материал этой главы частично построен на публикациях фирмы Intel Corporation1).За форму изложения и материал главы полную ответственность несет автор. D Программы, рисунки и таблицы представлены фирмой Intel Corpora- tion. Все права сохранены. 472
15.1. МИКРОПРОЦЕССОРНЫЙ НАБОР Общая характеристика. Биполярный микропроцессорный набор фирмы Intel является набором БИС с диодами Шоттки, который упрощает конструирование микропрограммных центральных про- цессоров и контроллеров. Эти процессоры и контроллеры действи- тельно являются микропрограммными, так как их управляющая логика построена на базе отдельного ПЗУ, называемого микропрог- раммной памятью. Управляющие сигналы для различных процессор- ных элементов генерируются микрокомандами, содержащимися Управление Шина авреоов Шина к памяти ячеен ванных и Увв памяти н памяти Данные из Данные от памяти устройств Рис. 15.1. Структурная схема системы 3000 в микропрограммной памяти. При реализации типового централь- ного процессора, как показано на рис. 15.1, микропрограмма ин- терпретирует команды более высокого уровня, называемые макро- командами, подобные командам, используемым в мини-ЭВМ. В конт- роллерах микропрограммы выполняют требуемые функции управ- ления (рис. 15.1). 15.2. МИКРОПРОГРАММНОЕ УСТРОЙСТВО УПРАВЛЕНИЯ (МУУ) 3001 Микропрограммное устройство управления (МУУ) серии 3001 фирмы Intel формирует последовательность, в которой микрокоман- ды вызываются из микропрограммной памяти. Его функции сводят- ся к следующему: — обеспечение функционирования микропрограммного адресного регистра. — выбор следующей микрокоманды в соответствии с содержи- мым микропрограммного адресного регистра, 473
— декодирование и проверка данных, поступающих через раз- личные входные шины, с целью определения последовательности выполнения микрокоманд, — накопление и проверка выходных данных переноса из цент- ральной процессорной матрицы (ЦП), — управление входными данными переноса/сдвига в ЦП мат- рице, — управление прерываниями микропрограммы. МУУ выполняет две основные функции управления. Во-первых, оно управляет последовательностью считывания микрокоманд из микропрограммной памяти. Для этой цели МУУ содержит микро- программный адресный регистр и связанную с ним логическую схе- му для выбора адреса следующей микрокоманды. Вторая функция МУУ состоит в управлении двумя флажковыми триггерами, которые введены для обеспечения взаимодействия входных и выходных логи- ческих схем переноса ЦП матрицы. Структурная схема МУУ показана на рис. 15.2. Логическая схема формирования следующего адреса. Логиче- ская схема формирования следующего адреса МУУ обеспечивает ряд условных и безусловных функций управления адресом, используе- мых при выполнении операции передачи управления или передачи управления/проверки как части каждой микрокоманды. Другими В-И . I Ц/^-4 Ч& | । & Аве___L АС0~Л Загрузка LU Синхроим- пульсы CLR— X СЮ-Х Усс -1 Разрешение Лдрес адреса строки микропрограммной памяти ERA МА8 МАп МАз МАп ----------1—Д-l-Н4-—iLLJL-------------1 ________ i*| > выходной выходной Н____у вуфер вуфер I Ключи PR Регистр адреса микропрограмм * wtoijwa I 1 Логическая схема следующего адреса "Г - * Флажки Выходной X ~^lOoZ вуфер p Т FCqFCi FI FO FC^PXj^PX^ Управление входы выходы Управ- Первая флажковой флажков флажковление шина логикой флаж- команды новой логикой ... SXg вторая юина команды Рис. 15 2. Структурная схема микропрограммного устройства управле- ния (МУУ) 474
словами, каждая микрокоманда обычно содержит поле операции передачи управления, которое определяет тип функции управле- ния адресом и, следовательно, адрес следующей микрокоманды. Для уменьшения числа выводов МУУ и уменьшения сложности логической схемы формирования следующего адреса пространство адресов микропрограмм представлено двухмерной матрицей. Каж- дый адрес микропрограммы соответствует ячейке матрицы на пере- сечении соответствующих строки и столбца. Таким образом, 9-би- товый адрес микропрограммы рассматривается не как один адрес, а как два — адрес строки в первых 5 битах и адрес столбца в послед- них 4 битах. Адресная матрица может поэтому содержать максимум 32 адреса строк и 16 адресов столбцов для 512 микрокоманд. Логическая схема формирования следующего адреса МУУ уве- личивает возможности этой двукомпонентной адресной структуры. Например, из некоторого адреса строки или столбца можно перейти без выполнения каких-либо условий в течение одной операции к ад- ресу любой другой строки или столбца. Однако произвольный пере- ход в адресной матрице невозможен. В самом деле, для данной ячей- ки памяти в матрице имеется фиксированный набор микропрограм- мных адресов, которые могут быть выбраны как следующий адрес. Это возможное множество адресов переходов называется набором переходов. Каждому типу функции управления адресом МУУ со- ответствует свой набор переходов. Флажковая логика. Флажковая логика МУУ обеспечивает ряд функций для сохранения текущих значений переноса из централь- ной процессорной матрицы и для управления ее входным переносом. Ввиду этого различают флажковые входные и выходные управляю- щие функции. Флажковая логика построена на двух триггерах, обозначаемых как флажок С, флажок Z, и простом ключе, называемом F-ключом, который указывает текущее состояние линии выходного переноса процессорной матрицы. Флажковая логика используется совместно с логическими схемами переноса и сдвига центральной процессорной матрицы для выполнения функций сдвига, циклического сдвига и арифметических функций. Функции управления адресом. Функции управления адресом в МУУ выбираются посредством семи входных линий, обозначаемых АС0 ... АС&. По фронту синхроимпульса 9-битовый микропрограм- мный адрес, сформированный логической схемой следующего адреса, заносится в регистр адреса микропрограмм. Следующий адрес мик- ропрограммы пересылается в микропрограммную память через девять выходных линий МА0 ... МА8. Выходы адреса микропрог- раммы разбиваются на адреса строки и столбца следующим образом: Л4Л8МЛ7МЛ6МЛ5МЛ4 MA3MA2MAt МЛ0 адрес строки адрес столбца Каждая функция управления адресом задается путем определен- ного кодирования данных на входных функциональных линиях. 475
Рис. 15.3. Структурная схема микропрограммного устройства управления с адресуемыми микрокомандами Биты данных от 3 до 5 отображают код типа управления, а остав- шиеся биты используются для выбора части требуемого адреса стро- ки или столбца. Типичная схема использования МУУ показана на рис. 15.3: в течение выполнения команды код операции заносится в АЛУ У через шину данных памяти. МУУ формирует адрес МА(1 ... МАН и таким образом выбирает в ППЗУ микропрограмму для выполнения команды. На каждом шаге выполнения микропрограммы из ППЗУ считы- вается информация двух видов: 1 . Информация, необходимая для генерации адреса следующей микрокоманды. МУУ получает эту информацию через шину АС0 ... ... АС6. 2 . Информация для управления центральной процессорной мат- рицей с целью выполнения микрокоманды. 15.3. ЦЕНТРАЛЬНЫЙ ПРОЦЕССОРНЫЙ ЭЛЕМЕНТ (ЦПЭ) 3002 Основные параметры. Центральный процессорный элем( нт (ЦПЭ) 3002 фирмы Intel содержит все схемы, позволяющие рассмат- ривать его как 2-битовую секцию ЦП цифровой машины. Для пост- роения полного центрального процессора с длиной слова N бит необходимо соединить в матрицу 2V72 центральных процессорных элементов. После объединения такая матрица ЦПЭ выполняет: — арифметические действия в дополнительном коде, 476
— логические операции И, ИЛИ, НЕ и Исключающее ИЛИ, — положительное и отрицательное приращения, — сдвиги влево или вправо, — контроль битов и проверку на нуль, — формирование ускоренного переноса, — передачу информации по многоразрядным информационной и адресной шинам. ЦПЭ обеспечивает выполнение арифметических, логических и регистровых функций 2-битовыми секциями микропрограммного центрального процессора. Данные от внешних источников, таких как главная память, поступают в ЦПЭ по одной из трех различных входных шин. Данные из ЦПЭ на внешние устройства пересылают- ся через две выходные шины. В ЦПЭ данные запоминаются в одном из 11 регистров сверхоперативного ЗУ (СОЗУ) или в аккумуляторе. Данные входных шин, регистров или аккумулятора поступают на арифметико-логическую секцию (АЛС) через два внутренних мультиплексора. Имеются дополнительные входы и выходы для пере- сылки переносов, сдвигов и выбора микрофункций. Структурная схема ЦПЭ приведена на рис. 15.4. Адрес Выходные главной памяти данные fy 4 4/ ft Вход вход от вход данных » внешних массирования памяти дстроилтв Рис. 15.4. Структурная схема центрального процессорного элемента (ЦПЭ) 477
Входные шины F, М и /. Семь входных линий шины микрофунк- ций ЦПЭ, обозначенные Ео ... F6, декодируются в ЦПЭ для выбора функции АЛС, генерации адреса СОЗУ и управления мультиплексо- рами А и В. Входная шина М служит для передачи данных от внешней основ- ной памяти в ЦПЭ. Данные шины М мультиплексируются в ЦПЭ для ввода в АЛС. Входная шина I обеспечивает передачу данных от внешних уст- ройств ввода—вывода в ЦПЭ. Данные этой шины также мульти- плексируются в ЦПЭ для ввода в АЛС независимо от данных шины 7И. Разделение двух шин позволяет относительно легко загружать шину памяти даже в случае подключения многих внешних устройств к шине /. С другой стороны, при подключении шины I к одной из выходных шин можно выполнять многобитовые сдвиги (напри- мер, обмен байтами). В этом случае данные периферийных устройств стробируются вне ЦПЭ на шину М. Другие элементы. СОЗУ содержит 11 вспомогательных регист- ров, обозначенных ••• #9 и Т. Выходы этих регистров мульти- плексируются внутри ЦПЭ на входе АЛС. Выход АЛС подключен ко входу регистров СОЗУ. Независимый регистр, называемый аккумулятором (ДС), пред- назначен для запоминания результата операции АЛС. Выход акку- мулятора мультиплексируется ЦПЭ для пересылки данных обратно в АЛС, а также подключается через буфер с тремя состояниями к выходной шине. Обычно шина используется для пересылок дан- ных во внешнюю основную память или к внешним устройствам ввода—вывода. Мультиплексоры Л и В выбирают два входных сигнала в АЛС, ко- торые указываются кодом на шине микрофункций. Ко входам муль- типлексора А подключены шина М, выходы регистров СОЗУ и ак- кумулятора. Мультиплексор В выбирает или шину /, или аккуму- лятор, или шину К. Выбираемые мультиплексором В входы соеди- нены по схеме И с шиной К (смотри ниже) для обеспечения маски- рования побитовой проверки. АЛС способна выполнять арифметические и логические опера- ции, включая сложение в дополнительном коде, умножение и де- ление, а также логические функции И, включающее ИЛИ, Исклю- чающее НЕ—ИЛИ и логическое дополнение. Результат операции в АЛС может быть занесен в аккумулятор или в один из регистров СОЗУ. Раздельные левая входная и правая выходная линии, обоз- наченные LI и R0 соответственно, применяются в операциях сдви- га вправо. Линии входа и выхода переноса, обозначенные CI и СО, необходимы для нормальной передачи переноса. Данные СО и RO посупают на вход через два противоположно переключаемых бу- фера с тремя состояниями. Кроме того, стандартные выходы уско- ренного переноса, обозначенные X и У, обеспечивают полный уско- ренный перенос при любой длине слова данных. 478
Способность шины К маскировать входы АЛС значительно повы- шает универсальность ЦПЭ. Во время выполнения неарифметиче- ских операций, в которых перенос не имеет значения, схема переноса используется для выполнения операции ИЛИ над маскируемыми шиной К битами слов данных из регистра или шины, выбранной де- шифратором функций. Тем самым ЦПЭ осуществляет гибкий побитовый контроль. Шина К также используется при выполнении арифметических операций для маскирования участков формата слова, участвующего в опера- ции. Дополнительная функция шины К состоит в передаче констант в ЦПЭ из микропрограммы. Регистр адреса памяти (7ИА7?) и шина А. Отдельный выход АЛС подключен к регистру адреса памяти (Л4А/?) и к шине А через вы- ходной буфер с тремя состояниями. Обычно MAR и шина А исполь- зуются для пересылки адресов в основную внешнюю память. Регистр MAR и шина А могут также использоваться для выборки внешнего устройства, когда выполняются операции ввода—вывода. Во время каждого микроцикла микрофункция подается на вход- ную шину F ЦПЭ. Микрофункция декодируется, мультиплексорами выбираются операнды, и АЛС выполняет определенную операцию. При поступлении спада синхроимпульса результат операции АЛС заносится либо в аккумулятор, либо в выбранный регистр СОЗУ. Кроме того, некоторые операции допускают определение адреса данных, заносимого в /ИА/?. Новая микрофункция может быть принята только после прихода фронта синхроимпульса. Перенес из 3001 Синхроимпульсы 3/7Z72 zrzrzr СО 01. 3032 L1 ШГ / /У к Шини аПре ей > памяти (2Н линий) ^Шини данных ? к памяти (20 линий) Ъ-Ъ Е Перенос 63001 - Шина Г ддода L ьинстант ала нами аз микропрограммы • (2Н линий) ДА Д' Шани данных "I аз памяти \(2Н линий) -ш/ина внеш- них данных Л(2Н линий) Рис. 15 5. Организация сквозного переноса в структуре из N ЦПЭ 3002 479
При внешнем стробировании входных синхроимпульсов, назы- ваемом условной синхронизацией ЦПЭ, отдельные синхроимпульсы могут быть пропущены в течение времени микроцикла. Так как цепи переноса, сдвига и ускоренного переноса не синхронизируются, их выходы могут быть использованы для осуществления различных про- верок данных в аккумуляторе или СОЗУ. Содержимое регистров при этом не изменяется, так как отсутствуют синхроимпульсы. Микрофункция, которая должна выполняться, определяется функциональной группой (F-группой) или группой регистров (^-группой), выбираемых данными шины F. Структурная схема, включающая несколько ЦПЭ, приведена на рис. 15.5. 15.4. КОМПОНЕНТЫ СИСТЕМЫ 3000 Схема ускоренного переноса (СУП). Схема ускоренного переноса (СУП) 3003 фирмы Intel представляет собой схему для предвари- тельного формирования переносов в полной 16-битовой центральной процессорной матрице, построенной на базе элементов 3002. Если применяется большая по размерам ЦП матрица, используется не- сколько генераторов переноса 3002, определяющих ускоренный перенос в слове произвольной длины. СУП принимает сигналы от восьми входов (X, Y) высокого уров- ня и переноса низкого уровня и формирует сигналы переноса низ- кого уровня для 8 групп двоичных сумматоров. Многорежимный буферный регистр. Многорежимный буфер 3212 фирмы Intel является 8-битовым регистром с выходными буферами, имеющими три состояния, и встроенной логической схемой выборки устройства. Он также содержит обособленный триггер запроса обслуживания прерываний центрального процессора. Благодаря многофункциональности одна или более микросхем типа 3212 может использоваться для осуществления различных видов сопряжения и обеспечения функционирования элементов сис- темы серии 3000, включая устройство управления прерываниями и параллельный двунаправленный шинный формирователь. Устройство управления прерываниями (УУП). Устройство уп- равления прерываниями 3214 фирмы Intel обеспечивает выполнение многоуровневого прерывания для систем, спроектированных на ба- зе микропроцессорного семейства серии 3000. УУП принимает асин- хронный строб прерывания из микропрограммного устройства управления (МУУ) 3001 или бит из микропрограммной памяти и формирует синхронное подтверждение прерывания и вектор преры- вания, который может быть направлен в МУУ или матрицу ЦП для идентификации источника прерывания. УУП допускает расширение до восьми уровней приращений и обеспечивает следующие характе- ристики систем: — 8 приоритетных уровней прерывания, — автоматическое распознавание уровня приоритета, — программируемость состояния, 480
— возможность AZ-уровневого расширения, — автоматическую генерацию вектора прерывания. Параллельный двунаправленный шинный формирователь. Мик- росхема серии 3216 фирмы Intel представляет собой быстродейст- вующий 4-битовый параллельный двунаправленный формирователь. Его выходы с тремя состояниями позволяют изолировать или фор- мировать структуры внешних шин для систем из элементов серии 3000. Ключи формирователей и приемников микросхемы 3216 имеют трехстабильные выходы, совместимые с ТТЛ-входами. Когда фор- мирователи или приемники находятся в состоянии высокого со- противления, они образуют для системных шин токовую нагрузку, обычно меньшую 40 мкА, поэтому входы шин не нагружены. СПИСОК ЛИТЕРАТУРЫ 1. Schottky Bipolar LSI Micro Computer Set, Data Sheets, Intel Corporation, Santa Clara, Ca., 1975. Глава 16 МИКРОПРОЦЕССОР IM6100 И МИНИ-ЭВМ PDP-8 В гл. 16 рассмотрен микропроцессор IM6100 фирмы Intersil Corporation, система команд которого соответствует системе команд мини-ЭВМ PDP-8/E фирмы Digital Equipment Corporation. Это 12-битовые ЭВМ. Микропро- цессор IM6100 выполнен по КМОП-технологии. Низкая потребляемая мощ- ность и низкое напряжение питания являются важными характеристиками КМОП-схем. Набор команд включает команды обращения к памяти, команды обработки и команды ввода—вывода. Имеется четыре способа адресации: прямая, косвенная, на текущей странице и на нулевой странице. Описывается организация ввода—вывода как программируемого, так и по прерыванию, а также организация прямого доступа к памяти. В этой главе частично используются публикации фирмы Intersil Corpo- ration1) Материал главы в данном виде публикуется под полную ответствен- ность автора. 16.1. АРХИТЕКТУРА Микропроцессоры IM6100 и IM6100A являются одноадресными микропроцессорами с параллельной передачей данных, с фикси- рованной длиной слова, равной 12 бит, выполняющими арифмети- ческие операции в дополнительном коде. Система команд микро- процессоров соответствует системе команд мини-ЭВМ PDP-8/E фирмы Digital Equipment Corporation. J) Программы, рисунки и таблицы предоставлены фирмой Intersil Cor- poration. Все права сохранены. 481
Внутренняя структура полностью статическая и может функцио- нировать с любой скоростью синхронизации между постоянным током и максимальной частотой управления. Имеются два вывода, позволяющие подсоединять внешний кварц, тем самым устраняется необходимость в синхрогенераторе и преобразователе уровней. Вместо кварца для синхронизации процессора может подключаться внешний генератор. Команда сложения 12-битового содержимого ячейки памяти и аккумулятора выполняется микропроцессором IM6100 за 5 мкс при напряжении питания +5 В и за 2,5 мкс микро- процессором IM6100A при напряжении питания +10 В. Конструкция микропроцессора оптимизирована по минималь- ному количеству внешних компонентов, требующихся для сопря- жения со стандартной памятью и периферийными устройствами. МП IM6100A содержит шесть 12-битовых регистров, программируемую логическую матрицу, АЛУ, а также цепи стробирования и синхро> низации. Структурная схема микропроцессора IM6100 приведена па рис. 16.1. Аккумулятор АС. Аккумулятор является 12-битовым регистром, с помощью которого выполняются арифметические и логические опе- рации. Слова данных могут быть пересланы из памяти в АС или занесены из АС в память.Арифметические и логические операции используют два операнда; один содержится в АС, другой извлека- ется из памяти. Результат операции сохраняется в АС. Аккумуля- тор может быть очищен, проверен, его содержимое увеличено, сдви- нуто и преобразовано в дополнительный код под управлением программы. Аккумулятор используется также, как регистр ввода- вывода. Все программируемые пересылки данных осуществляются через аккумулятор. Регистр связи L. Регистр связи L — это однобитовый триггер, который служит дополнительным старшим разрядом аккумулятора АС. Он используется как триггер переноса для арифметических действий в дополнительном коде. Перенос из АЛУ инвертирует со- держимое регистра связи. Регистр L может быть очищен, установ- лен, проверен, его содержимое инвертировано, а также циклически сдвинуто как часть АС под управлением программы. Регистр MQ. Регистр MQ является 12-битовым программно- доступным временным регистром. Содержимое АС может быть пере- дано в MQ для временного хранения. Содержимое регистра MQ может быть по логической функции ИЛИ объединено с содержимым АС, а полученный результат занесен в АС. Регистры АС и MQ могут также обмениваться содержимым. Регистр адреса памяти MAR. При обращении к памяти 12-би- товый регистр MAR содержит адрес ячейки памяти, которая выби- рается для чтения или записи данных. Регистр MAR используется так же, как внутренний регистр для микропрограммного управления во время передачи данных в и из памяти и внешних устройств. 482
WAIT o „ CP5EL ------внутренние управ/тюцие линии ------внешние входы и выходы ------шина данных 2,020 микс. HL40 0.032 радиус °кв5ад°ри/п пппппппппппппппплппп 0J9Q макс., ТБЛПТОТТииТГи U U LTD □ U U U ШТ • Ot 050 Рис. 16.1. Структурная схема микропроцессора IM6100 и его корпус с раз- мерами в дюймах 483
Программный счетчик PC. 12-битовый программный счетчик содержит адрес ячейки памяти, в которой хранится следующая команда. Во время извлечения команды содержимое PC передается в Л4Л/? и затем увеличивается на 1. Если выполняется переход к другому адресу в памяти, адрес перехода заносится в программный счетчик. Переход обычно осуществляется под управлением програм- мы. Однако во время операций ввода—вывода адрес перехода может задаваться внешним устройством. Команда пропуска SKP, увели- чивая содержимое PC на единицу, обусловливает пропуск следую- щей команды. Команда пропуска SKP может быть безусловной или условной по состоянию аккумулятора АС и/или регистра связи L. Во время выполнения операций ввода—вывода внешнее устройство может также обусловливать пропуск следующей команды. Арифметико-логическое устройство АЛУ. АЛУ выполняет ариф- метические и логические операции, такие как сложение в дополни- тельном коде И, ИЛИ и инвертирование. АЛУ осуществляет также сдвиг содержимого на один разряд влево или вправо. Двойной циклический сдвиг выполняется как два однобитовых сдвига. АЛУ может выполнять также сдвиг на 3 разряда для перестановки полу- байтов. Аккумулятор всегда подключен к одному из входов АЛУ. Однако под управлением внутренней микропрограммы аккумулятор может быть отключен и в него помещены все единицы или нули. Второй вход АЛУ может быть соединен с любым из регистров под управлением внутренней микропрограммы. Временной регистр TEMP. 12-битовый регистр TEMP запоми- нает результат операции АЛУ перед посылкой его к регистру-прием- нику, чтобы избежать гонки сигналов. Этот регистр также исполь- зуется как внутренний регистр для микропрограммного управле- ния. Регистр команд 1R. После извлечения команды 12-битовый ре- гистр IR содержит команду, которая должна выполняться ЦП. Этот регистр определяет начальный шаг в последовательности шагов микропрограммы для каждой команды и также используется как внутренний регистр для хранения промежуточных данных при мик- ропрограммном управлении. Мультиплексор DX. 12-битовый мультиплексор ввода—вывода обеспечивает передачу данных, адресов и команд между ЦП, ос- новной памятью и периферийными устройствами на основе времен- ного разделения. Программируемая логическая матрица ПЛМ и генератор основ- ных состояний. После выборки команда, подлежащая выполнению, загружается в регистр IR. ПЛМ используется для выработки соот- ветствующей последовательности сигналов для ЦП, обеспечивающей выполнение команды. После завершения выполнения команды гене- ратор основных состояний опрашивает внутреннюю схему приори- тетов. Состояние схемы приоритетов определяет, будет ли извлекать- ся следующая команда или обслуживаться одна из внешних линий запроса. 484
хтс -Г Рис. 16.2. Временные диаграммы работы Выходные ключи ПЛМ. Выходные ключи запоминают выходные сигналы ПЛМ, позволяя организовать магистральную передачу данных от ПЛМ. Они формируют новую управляющую последова- тельность сигналов, в то время как ЦП отрабатывает текущую пос- ледовательность. Управление памятью и внешними устройствами, логические схе- мы управления АЛУ и регистрами. Устройство управления памятью и внешними устройствами формирует сигналы управления для связи с внешними устройствами (DEVSEL), тумблерным регистром (SWSEL), памятью (MEMSEL) и/или памятью панели управления (CPSEL). Во время выполнения команд ввода—вывода это уст- ройство также изменяет выходные сигналы матрицы ПЛМ в зависи- мости от состояния четырех линий управления (SKP, Со, С2). Логические схемы управления АЛУ и регистрами формируют сигналы управления для межрегистровых пересылок и выполнения операций в АЛУ. Синхронизация и управление состояниями. Микропроцессор IM6100A генерирует все необходимые сигналы синхронизации и сос- тояний. Кварц используется для управления ЦП тактовой частотой. ЦП уменьшает частоту кварца вдвое. При частоте кварца, равной 4 МГц, внутренние состояния имеют длительность 500 нс. Основные временные состояния показаны на рис. 16.2 и описаны ниже. Тг Для команд обращения к памяти 12-битовый адрес засылается на шину данных DX. Сигнал загрузки внешнего регистра адреса LXMAR используется для синхронизации внешнего регистра при записи в него адреса, если это необходимо. Когда выполня- ются команды ввода—вывода, выполняемая команда выдается на шину DX для внешнего запоминания. Внешний регистр адреса содержит в этом случае адрес устройства и управляющую ин- формацию. Если следующим циклом является цикл выборки команды, то в соответствии с приоритетом опрашиваются линии 485
запроса прерывания ЦП. Текущее состояние ЦП выдается на внешние контакты. Т2 Данные памяти или внешних устройств считываются для ввода в ЦП (READ—чтение). Линия WAIT (ожидание) управляет продолжительностью передачи. Если эта линия активна во время ввода, ЦП ожидает в течение состояния Т2. Время ожидания определяется частотой кварца и равно 250 нс при частоте 4 МГц. Для команд обращения к памяти активна линия MEMSEL (MEMORY SELECT — выборка памяти). Для команд ввода— вывода активна линия DEVSEL (DEVICE SELECT — выборка ВУ). Таким образом, управляющие линии различают содержимое внешнего регистра как адрес памяти или как адрес устройства. Если должна выполняться команда ввода—вывода, опрашивают- ся линии внешних устройств Со, С1( С2 и SKP. Для пересылок данных между IM6100 и памятью панели управления или тумб- лерным регистром используются сигналы CPSEL (CONTROL PANEL MEMORY SELECT — выборка памяти панели управ- ления) и SWSEL (SWITCH REGISTER SELECT — выборка тумблерного регистра). Т3, Выполняется операция в АЛУ и межрегистровые пересылки. Т4, Это состояние отведено для вывода данных (WRITE — запись). Т5 Адрес приемника определяется в течение времени состояния Tt. Тв Сигнал ожидания (WAIT) задает интервал времени, в течение которого данные, подготовленные для записи, должны сохра- няться. 16.2. СИСТЕМА КОМАНД И АДРЕСАЦИЯ Команды 1М6100 представлены 12-битовыми словами, хранимы- ми в памяти. Микропроцессор IM6100 не различает команды и дан- ные, он может оперировать командами как хранимыми переменными, а данными — как командами, если будет запрограммирован соответ- ствующим образом. Команды подразделяются на команды обращения к памяти, команды обработки и команды ввода—вывода. Перед тем как продолжить, рассмотрим особенности организации памяти, с которой сопрягается микропроцессор IM6100. Организация памяти. Микропроцессор IM6100 может адресо- ваться к 4096 12 битовым словам памяти. Возможности адресации могут быть расширены с помощью аппаратуры управления расши- ренной памятью. Память построена поблочно, при этом каждый блок, содержащий 4096 слов, называется полем памяти. Первые 4096 слов памяти образуют нулевое поле. Если память расширена до 32К, то самый большой номер поля памяти равен 7. В любом поле памяти каждая ячейка имеет четырехзначный восьмеричный (12 двоичных разрядов) адрес, от 00008 до 77778 (от 00001О до 409510). Каждое поле памяти разделяется на 32 страницы объемом 128 слов каждая. Страницы памяти нумеруются последовательно от страницы 008, содержащей адреса 0000 ... 01778, до страницы 378, 486
0 1г 3 4 5 6 7 в 9 10 ff 1 1 Нод операции д-д i 1 1А MP 1 1 1 Г Г 1 Адрес 1 1 1 1 1 1 1 __________ Относительный ____________ адрес страницы -------Косвенная адресация (INDIRECT ADDRESSING) О-Пряная 1-Косвенная — Страница памяти (MEMORY PAGE) О-Нулевая страница 1-Тенущая страница Рис. 16.3. Формат команды обращения к памяти содержащей адреса 7600g ... 77778. Первые 5 разрядов адреса ячей- ки памяти определяют номер страницы, а младшие 7 разрядов ха- рактеризуют ячейку памяти на данной странице. Во время цикла выборки команды микропроцессор IM6100 извлекает команду, указанную программным счетчиком PC. Со- держимое PC пересылается в регистр адреса памяти МАР и затем увеличивается на 1. Программный счетчик PC содержит теперь адрес следующей команды.Регистр МАР содержит адрес текущей команды, которая должна быть извлечена из памяти. Биты 0 ... 4 регистра МАР определяют текущую страницу, т. е. страницу, из которой из- влекается команда, а биты 5 ... 11 определяют положение команды на странице. (Нулевая страница по определению соответствует пер- вым 128 словам памяти с адресами 00008.... 01778.) Команды обращения к памяти. Команды обращения к памяти оперируют с содержимым ячеек памяти или используют содержимое ячеек памяти для операций с содержимым аккумулятора АС или программного счетчика PC. Три первых бита команды (рис. 16.3) определяют код операции, а 9 младших битов — адрес операнда. Биты 5 ... 11 соответствуют адресу операнда на данной странице, но они не определяют саму страницу. Страница выбирается битом 4, называемым битом текущей или нулевой страницы. Если бит 4 равен О, то адрес страницы находится на первой странице. Если бит 4 равен 1, то адрес страницы находится на текущей странице. Например, если в битах 5 ... 11 содержится число 1238 и бит 4 равен 0, то абсолютный адрес ячейки равен 01238. Однако если бит 4 равен 1 и текущая команда расположена в ячейке памяти с абсолютным адресом 46108, то адрес 1238 определяет абсолютный адрес 47238, как это показано ниже. Адрес 46108 — 100 ПО 001 000 соответствует странице 10011 = = 238. Ячейка с адресом 46108 находится на странице 238. Ячейка 1238 — на странице 238 или текущей странице, поэтому имеет адрес 10 011 1 010 011 = 100 111 010 011 =47238 Номер страницы Адрес страницы 238 1 238 487
Команды обращения к памяти Таблица 16.1 Мнемокод Код опера- ции Операция Число сос- тояний Время выполнения, мкс IM6100. 4-5 В IM6100A, 4-10 В AND 08 LOGICAL AND — логическое И DIRECT (1 = 0) —с прямой адресацией Операция: (АС)<-(АС)Л (ЕА) Описание: Содержимое ЕА по функции И объединяется с содержимым аккумулятора АС и результат записывается в АС INDIRECT (1 = 1, РА #=0010—00178) — с косвенной адресацией Операция: (АС)-<-(АС) Л ((РА)) AUTOINDEX (1 = 1, РА=0010—00178) — с автоиндексацией Операция: (РА)«-(РА) 4-1, (АС)«-(АС) Л((РА)) 10 15 16 5,0 7,5 8,0 2,50 3,75 4,00 TAD ь BINARY ADD — двоичное сложение DIRECT (1 = 0) —с прямой адресацией Операция: (АС)«-(АС) 4-(ЕА) Описание: содержимое ЕА прибавляется к содержимому АС и резуль- тат заносится в АС. Перенос вызывает инвертирование содержимого L. Если АС вначале очищен, то эта команда служит для загрузки из па- мяти INDIRECT (1 = 1, РА#=0010—00178) — с косвенной адресацией Операция: (АС)*-(АС) + ((РА)) AUTO INDEX (1 = 1, РА=0010—00178) — с автоиндексацией Операция: (РА)*-(РА) 4-1, (АС)«-(АС) 4-((РА)) 10 15 16 5,0 7,5 8,0 2,50 3,75 4,00 ISZ 28 INCREMENT AND SKIP IF ZERO — увеличить и пропустить, если нуль DIRECT (1 = 0) —с прямой адресацией Операция: (ЕА)«-(ЕА) 4-1, если (ЕА)=00008, РС«-РС4-1 Описание: содержимое ЕА увеличивается на 1 и сохраняется, если ре- зультат равен нулю, следующая команда пропускается 16 8,0 4,00
16 Зак. 1088 INDIRECT (1 = 1, PA 0010—00178) — с косвенной адресацией Операция: ((PA))*--((PA)) +1, если ((PA)) =00008, PO-PC+1 AUTOINDEX (1 = 1, PA=0010—0017e) — с автоиндексацией Операция: (PA)*-(PA) +1, ((PA))*-((PA)) +1, если ((PA)) =00008, PC*-PC+1 21 22 10, ь 11,0 5,25 5,50 DCA 38 DEPOSIT AND CLEAR THE ACCUMULATOR — Переписать и очисиггь аккумулятор DIRECT (1 = 0) —с прямой адресацией Операция: (ЕА)*-(АС), (ЛС)*-00008 Описание: содержимое АС заносится по адресу (ЕА), а АС очищается INDIRECT (1 = 1, РА=#0010—00178) — с косвенной адресацией Операция: ((РА))*-(АС); (АС)*-00008 AUTOINDEX (1=1, РА=0010—00178) —с автоиндексацией Операция: (РА)*-(РА) +1; ((РА))^-(АС), (АС)*-00008 11 16 17 5,5 8,0 8,5 2,75 4,00 4,25 JMS ^8 JUMP ТО SUBROUTINE — перейти к подпрограмме DIRECT (1 = 0) —с прямой адресацией Операция: (ЕА)*-(РС), (РС)*-ЕА+1 Описание: содержимое PC заносится по адресу (ЕА) Содержимое PC увеличивается на 1 после извлечения каждой команды. Поэтому содержимое ячейки ЕА указывает уже адрес следующей за JMS команды (адрес возврата). Следующая команда извлекается из ячейки ЕА+ 1 INDIRECT (1=1, РАт^ОО 10—00178) с косвенной адресацией Операция: ((РА))*-РС, (РС)*-(РА) + 1 AUTOINDEX (1 = 1, РА=0010—00178) — с автоиндексацией Операция: РА*-(РА) + 1; ((РА))*-РС, (РС)*-(РА) + 1 11 16 17 5,5 8,0 8,5 2,75 4,00 4,25 JMP 58 JUMP — перейти безусловно - DIRECT (1 = 0) —с прямой адресацией Операция: (РС)*-ЕА Описание: следующая команда выбирается по адресу ЕА INDIRECT (1 = 1, РАИСОЮ—00178) — с косвенной адресацией Операция: (РС)*-(РА) AUTOINDEX (1 = 1, РА=0010—00178) — с автоиндексацией Операция: (РА)*-(РА) +1; (РС)*-(РА) 10 15 16 5,0 7,5 8,0 2,50 3,75 4,00
49П Первая группа команд обработки Таблица 162 Мнемокод Восьмерич- ный код Логичес- кая после- дователь- ность Число состояний Время выполнения мкс 1М6100 Н-5 В IM6I00A. + 10 R NOP 7000 1 NO OPERATION — операций нет Эта команда вызывает задержку на 10 состояний, не изме- няющую состояния процессора. Она может быть использована для временной синхронизации или как средство удаления ко- манды из программы 10 5,0 2,50 IAC 7001 3 INCREMENT ACCUMULATOR — увеличить аккумулятор Содержимое аккумулятора увеличивается на 1, а возникаю- щий перенос инвертирует содержимое 10 5,0 2,50 RAL 7004 4 ROTATE ACCUMULATOR LEFT — циклически сдвинуть акку- мулятор влево Содержимое АС и L циклически сдвигается на один разряд влево. АС (1) сдвигается в £, a L сдвигается в АС (И) 15 7,5 3,75 RTL 7006 4 ROTATE TWO LEFT — циклически сдвинуть влево на два. Содержимое АС и £ циклически сдвигается на два разряда влево, АС (1) сдвигается в L, a L сдвигается в АС (10) 15 7,5 3,75 RAK 7010 4 ROTATE ACCUMULATOR RIGHT — циклически сдвинуть ак- кумулятор вправо 15 7,5 3,75
» 1 Содержимое AC и L циклически сдвигается на один разряд вправо. АС (11) сдвигается в L, a L сдвигается в АС (0). RTR 7012 4 ROTATE TWO RIGHT — циклически сдвинуть вправо на два Содержимое АС и L циклически сдвигается на два разряда вправо. АС (10) сдвигается в L, a L сдвигается в АС (Т). 15 7,5 3,75 BSW 7002 4 BYTE SWAP — обменять байты Правые шесть битов содержимого АС меняются на шесть ле- вых битов. АС (0) меняется местами с АС (6), АС (1) с АС (7) и т. д. Содержимое L не изменяется. 15 7,5 3,75 CML 7020 2 COMPLEMENT LINK — инвертировать регистр связи Находится обратный код содержимого L 10 5,0 2.50 CMA 7040 2 COMPLEMENT ACCUMULATOR — инвертировать аккумуля- тор Находится обратный код содержимого аккумулятора 10 5,0 2,50 CIA $ 7041 2,3 COMPLEMENT AND INCREMENT ACCUMULATOR — найти дополнение аккумулятора Содержимое аккумулятора заменяется его двоичным допол- нением. Возникающий перенос инвертирует L 10 5,0 2,50
492 Продолжение табл. 16.2 Мнемокод Восьмерич- ный код Логическая последова- тельность Операция Число состояний Время выполнения, мкс 1М6100, + 5 В 1М6Ю0А. 4-10 В CLL 7100 1 CLEAR LINK — очистить регистр связи В регистр L заносится 0 10 5,0 2,50 CLL RAL 7104 1,4 CLEAR LINK —ROTATE ACCUMULATOR LEFT — очистить регистр связи и циклически сдвинуть аккумулятор влево 15 7,5 3,75 CLL RTL 7106 1,4 CLEAR LINK — ROTATE TWO LEFT — очистить регистр свя- зи и циклически сдвинуть аккумулятор влево на два разряда 15 7,5 3,75 CLL RAR 7110 1,4 CLEAR LINK-ROTATE ACCUMULATOR RIGHT — очистить регистр связи и циклически сдвинуть аккумулятор вправо 15 7,5 3,75 CLL RTR 7112 1,4 CLEAR LINK —ROTATE TWO RIGHT — очистить регистр связи и циклически сдвинуть аккумулятор вправо на два раз- ряда 15 7,5 3,75 STL 7120 1,2 SET THE LINK — установить регистр связи Регистр L загружается единицей, что соответствует комбина- ции команд CLL и CML 10 5,0 2,50
493 CLA 7200 1 CLEAR ACCUMULATOR — очистить аккумулятор AC загружается двоичными нулями 10 5,0 2,50 CLA 1AC 7201 1,3 CLEAR ACCUMULATOR —INCREMENT ACCUMULATOR — очистить аккумулятор и увеличить на 1 10 5,0 2,50 GLT 7204 1,4 GET THE LINK — извлечь из регистра связи * Аккумулятор АС очищается, содержимое L сдвигается в АС (11), а нуль — в L. Это микропрограммная комбинация CLA и RAL. 15 7,5 3,75 CLA CLL 7300 1 CLEAR ACCUMULATOR — CLEAR LINK —очистить аккуму- лятор и регистр связи 10 5,0 2,50 STA 7240 1,2 SET THE ACCUMULATOR — установить аккумулятор Каждый бит АС устанавливается в 1, что соответствует мик- ропрограммной комбинации команд CLA и СМА. 10 5,0 2,50
494 Вторая группа команд обработки Таблица 16.3 Мнемокод Восьмерич- ный код Логическая последова- тельность Операция Число состояний Время выполнения, мкс 1М6Ш0. 4-5 В IM6I 00 А, 4- Ю В NOP 7400 1 NO OPERATION — операций нет (см. первую группу) 10 5.0 2,50 HLT 7-102 3 HALT — останов Программа останавливается по завершении текущего машин- ного цикла. Если HALT применяется в комбинации с другими командами второй группы, то выполнение этих команд завер- шается до конца цикла 10 5,0 2,50 OSR 7-104 3 OR WITH SWITCH REGISTER —операция ИЛИ с тумблер- ным регистром Содержимое тумблерного регистра по ИЛИ объединяется с содержимым АС и запоминается в АС 15 7,5 3,75 SKP 7410 1 SKIP — Пропустить Содержимое PC увеличивается на 1, пропускается следующая команда 10 5,0 2,50 SNL 7420 1 SKIP ON NON— ZERO LINK — пропустить, если L не равно нулю Проверяется содержимое регистра связи L. Если оно равно 1, следующая команда пропускается; если L содержит 0, то вы- полняется следующая команда. 10 5,0 2,50 SZL 7430 1 SKIP ON ZERO LINK — пропустить, если L равно нулю Проверяется содержимое L. Если оно равно 0, следующая 10 5,0 2,50
команда пропускается, если 1 — выполняется следующая команда SZA 7440 1 SKIP ON ZERO ACCUMULATOR — пропустить, если АС ра- вен нулю Проверяется содержимое аккумулятора АС. Если все биты равны 0, следующая команда пропускается. Если какой-то из битов равен 1, то выполняется следующая команда 10 5,0 2,50 SNA 7450 1 SKIP ON NON — ZERO ACCUMULATOR — пропустить, если AC¥=0 Проверяется содержимое аккумулятора, если хотя бы один бит АС не равен 0, следующая команда пропускается. Если все биты АС равны нулю, выполняется следующая команда 10 5,0 2,5 SZA SNL 7460 1 SKIP ON ZERO ACCUMULATOR, OR NON-ZERO LINK OR BOTH — пропустить, если AC равен 0 или L не равен нулю, или выполняются оба условия 10 5,0 2,50 SNA SZL 7470 1 SKIP ON NON —ZERO ACCUMULATOR AND SKIP ON ZERO LINK Пропустить, если AC не равен нулю и L равен нулю 10 5,0 2,50 SMA 7500 1 SKIP ON MINUS ACCUMULATOR — пропустить по отрица- тельному аккумулятору Если бит АС (0) содержит 1, что указывает на то, что АС со- держит отрицательное число в дополнительном коде, то сле- дующая команда пропускается Если АС (0) содержит 0, вы- полняется следующая команда 10 5,0 2,50
Продолжение табл. 16.3 Мнемокод Восьмерич- ный код Логическая последова- тельность Операция Число состояний Время выполнений’, мкс IM6100, + 5 В IM6100A, 4-10 В SPA 7510 1 SKIP ON POSTITVE ACCUMULATOR — пропустить по поло- жительному аккумулятору Если бит АС (0) содержит 0, указывая, что АС содержит по- ложительное число в дополнительном коде, то следующая команда пропускается. Если АС (0) содержит 1, выполняется следующая команда 10 5,0 2,50 SMA SNL 7520 1 SKIP ON MINUS ACCUMULATOR, OR ON NON — ZERO LINK, OR BOTH Пропустить, если AC отрицателен или L не равен нулю, или выполняются оба условия 10 5,0 2,50 SPA SZL 7530 1 SKIP ON POSITIVE ACCUMULATOR AND ON ZERO LINK — пропустить, если AC положителен и L равен нулю 10 5,0 2,50 SMA SZA 7540 1 SKIP ON MINUS ACCUMULATOR OR SKIP ON ZERO ACCUMULATOR OR BOTH — пропустить, если AC отрицате- лен или равен нулю 10 5,0 2,50 SPA SNA 7550 1 SKIP ON POSITIVE ACCUMULATOR AND SKIP ON NON — ZERO ACCUMULATOR — пропустить, если AC положителен и не равен нулю 10 5,0 2,50 SMA SZA SNL 7560 1 SKIP ON MINUS ACCUMULATOR OR SKIP ON ZERO ACCUMULATOR OR SKIP ON NON —ZERO LINK OR 10 5,0 2,50
497 ALL — пропустить, если AC меньше нуля или равен нулю, или L не равен нулю, или все вместе SPA SNA SZL 7570 1 SKIP ON POSITIVE ACCUMULATOR AND SKIP ON NON — ZERO ACCUMULATOR AND ON ZERO LINK - пропустить, если AC положителен и AC не равен нулю и L равно нулю 10 5,0 2,50 CLA 7600 2 CLEAR ACCUMULATOR — очистить аккумулятор. В аккуму- лятор загружается двоичный 0 10 5,0 2,50 LAS 7604 1,3 LOAD ACCUMULATOR WITH SWITCH REGISTER — загру- зить в аккумулятор тумблерный регистр. В аккумулятор загружается содержимое тумблерного регистра. Эта команда эквивалентна микропрограммной комбинации команд CLA и OSR 15 7,5 3,75 SZA CLA 7640 1,2 SKIP ON ZERO ACCUMULATOR THEN CLEAR ACCUMU- LATOR — пропустить, если AC равен нулю, очистить аккуму- лятор 10 5,0 2,5 SNA CLA 7650 1,2 SKIP ON NON — ZERO ACCUMULATOR THEN CLEAR AC- CUMULATOR — пропустить, если AC не равен нулю, очистить аккумулятор 10 5,0 2,5 SMA CLA 7700 1,2 SKIP ON MINUS ACCUMULATOR THEN CLEAR ACCUMU- LATOR — пропустить, если AC отрицателен, очистить аккуму- лятор 10 5,0 2,5 SPA CLA 7710 1,2 SKIP ON POZITIVE ACCUMULATOR THEN CLEAR AC- CUMULATOR — пропустить, если AC положителен, очистить аккумулятор 10 5,0 2,5
Таблица 16.4 Третья группа команд обработки 1 Мнемокод Восьмерич- ный код Логическая последо- ватель- ность Операция Число состояний Время выполнения, мкс IM1600 4-5 В 1M1G00A 4- Ю В NOP 7401 3 NO OPERATION — операций нет (см. первую группу) 10 5,0 2,5 MQL 7421 2 MQ REGISTER LOAD — загрузить регистр MQ Содержимое АС переписывается в MQ. АС очищается и те- ряется начальное содержимое MQ 10 5,0 2,5 MQA 7501 2 MQ REGISTER INTO ACCUMULATOR — загрузить регистр MQ в аккумулятор Содержимое MQ по операции ИЛИ объединяется с содержи- мым АС и результат загружается в АС. Начальное содержи- мое АС теряется, a MQ сохраняется. Эта команда обеспечи- вает выполнение операции ИЛИ 10 5,0 2,5 SWP 7521 3 SWAP ACCUMULATOR AND MQ REGISTER — поменять со- держимое аккумулятора и регистра MQ Эта команда эквивалентна микропрограммной комбинации команд MQA и MQL 10 5,0 2,5^~ cLa । 1 7601 | 1 > CLEAR ACCUMULATOR — очистить аккумулятор 1 1 САМ 7621 3 CLEAR ACCUMULATOR AND MQ REGISTER — очистить аккумулятор и регистр MQ АС и MQ загружаются двоичными 0. Это эквивалентно ком- бинации команд CLA и MQL 10 5,0 2,5 ACL 7701 3 CLEAR ACCUMULATOR AND LOAD MQ REGISTER INTO ACCUMULATOR — очистить аккумулятор и загрузить регистр MQ в аккумулятор Это эквивалентно комбинации команд CLA и MQA 10 5,0 2,5 CLA SWP 7721 3 CLEAR ACCUMULATOR AND SWAP ACCUMULATOR AND MQ REGISTER — очистить аккумулятор и поменять содержи- мым АС и регистр MQ Аккумулятор АС очищается. Содержимое регистра MQ загру- жается в АС и регистр MQ очищается 10 5,0 2,5
По этому методу можно непосредственно адресоваться к 256 ячейкам памяти: к 128 на нулевой странице и к 128 на текущей странице. При адресации к другим ячейкам используется бит 3. Когда бит 3 равен 0, адрес операнда является прямым адресом. Косвенный адрес (указатель адреса)" определяет ячейку памяти, содержащую требуемый исполнительный адрес. Для адресации к ячейкам, которые не адресуются прямо ни на нулевой, ни на теку- щей странице, абсолютный адрес требуемой ячейки заносится в одну из 256 прямо адресуемых ячеек (указатель адреса). При этом команда оперирует с содержимым ячейки, определяемой по адресу, храня- щемуся в ячейке-указателе. Следует заметить, что ячейки с адресами 00108—00178 на нуле- вой странице автоиндексируются. Если эти ячейки адресуются косвенно, их содержимое увеличивается на 1 и восстанавливается перед тем, как они используются в качестве адреса операнда. Эти ячейки, следовательно, могут использоваться для индексных применений. В табл. 16.1 приведены мнемонические обозначения для пяти команд обращения к памяти, их коды операций, выполняемые опе- рации, число состояний и время выполнения при питающем напря- жении +5 или +10 В в предположении, что частота кварца равна 4 и 8 МГц, а период такта состояния — 500 и 250 нс соответственно. Следует также отметить, что данные представляются в допол- нительном коде. При этом отрицательное число образуется инвер- тированием каждого бита слова данных и прибавлением единицы к полученному числу. Знак определяется старшим битом. Приме- нительно к 12-битовому слову, используемому в IM6100, равенство нулю бита 0 определяет положительное число, а равенство единице соответствует отрицательному числу. Максимальный диапазон чисел равен 37778 (+2047) ... 40008 (—2048). В табл. 16.1 использованы те же обозначения, что и в разд. 3.2. Команды обработки. Команды обработки, коды операции кото- рых равны 78 (111)» состоят из трех групп микрокоманд. Первая группа микрокоманд, которая идентифицируется наличием нуля в позиции бита 3, используется для выполнения логических опера- ций над содержимым аккумулятора и регистра связи. Вторая группа микрокоманд, которая идентифицируется наличием 1 в по- зиции бита 3 и 0 в позиции бита 11, используется преимущественно для проверки содержимого аккумулятора и последующего услов- ного пропуска следующей по порядку команды. Третья группа микрокоманд, для которых бит 3 равен 1 и бит 11 равен 1, исполь- зуется для выполнения логических операций над содержимым аккумулятора и регистра MQ. Микрокоманды обработки любой группы можно микропрограм- мировать совместно с другими микрокомандами обработки той же группы. Фактический код для запрограммированной комбина- ции двух или более микрокоманд определяется логической функ- цией ИЛИ, примененной к битам восьмеричных кодов отдельных 499
микрокоманд. Если в запрограммированную команду включено более одной операции, то их выполнение осуществляется в опреде- ленной последовательности, когда микрокоманды логической пос- ледовательности номер 1 выполняются первыми, затем микрокоман- ды логической последовательности номер 2 и т. д. Две операции с одинаковым номером логической последовательности в пределах данной группы микрокоманд выполняются одновременно. Три группы команд обработки приведены в табл. 16.2 ... 16.4. 16.3. ОРГАНИЗАЦИЯ ВВОДА —ВЫВОДА Команды ввода—вывода, код операции которых равен 6Ь, ис- пользуются для инициации работы внешних устройств и для пере- сылок данных между ВУ и IM6100. Для приема или передачи ин- формации между микропроцессором IM6100 и одним или несколь- кими внешними устройствами могут быть использованы три вида пересылок данных. ПРОГРАММИРУЕМАЯ ПЕРЕДАЧА ДАННЫХ обеспечивает прямые средства связи с относительно медленными внешними устрой- ствами, такими как телетайпы, устройства считывания с перфокарт, кассетные накопители, дисплеи. ПЕРЕДАЧА С ПРЕРЫВАНИЕМ использует систему прерывания для обслуживания одновременно нескольких внешних устройств в режиме разделения времени, что позволяет выполнять вычислительные операции совместно с опе- рациями ввода—вывода. Как программируемая передача данных, так и передача с прерыванием используют аккумулятор в качестве буфера или элемента памяти для всех пересылок данных. Так как данные могут передаваться только между аккумулятором и внеш- ними устройствами, то в каждый момент времени может быть пере- дано только одно 12-битовое слово. ПРЯМОЙ ДОСТУП К ПАМЯТИ (ПДП) позволяет пересылать массивы данных переменной длины между быстродействующими внешними устройствами и памятью с минимальным управлением со стороны программы IM6100. Формат команд ввода—вывода. Формат команд ввода—вывода приведен на рис. 16.4. Первые три бита 0 ... 2, содержащие код 65 (НО), определяют тип команды ввода—вывода. Следующие шесть битов 3 ... 8 содержат код выбора устройства, определяю- щий внешнее устройство, для которого предназначается команда ввода—вывода, т. е. имеется возможность сопряжения с 64 внеш- ними устройствами. Последние три бита 9 ... 11 содержат код при- каза, определяющий конкретную операцию, которую предстоит 01 2ЪЬ5О7ЬЭ 10 11 —г 1 110 1 1 1 1 Т 1 1 Код выборки устройства 1 1 1 L,,„ .1 - ' 1 "1 ' Код приказа । । Рис. 16.4. Формат команды ввода ^-вывода’ 500
выполнить. Вид этой операции для каждой команды ввода—вывода зависит всецело от схем интерфейса внешнего устройства. Программируемая передача данных. Это наиболее простой, легкий и наиболее распространенный способ выполнения ввода— вывода данных. Для микропроцессорных применений он также сохраняет свою эффективность. Передача данных начинается, ког- да IM6100 извлекает команду из памяти и распознает, что теку- щая команда является командой ввода—вывода. Эта процедура носит название IFETCH и занимает пять периодов состояний. Мик- ропроцессор IM6100 организует выполнение команды ввода—вы- вода в два цикла, обозначаемых соответственно 1ОТд и ЮТв- Биты 0 ... 11 слова команды ввода—вывода появляются на ли- ниях 0 ... 11 шины DX во время цикла ЮТд. Эти биты должны быть занесены во внешний регистр адреса по сигналу LXMAR. Сигнал DEVSEL находится на низком уровне, что разрешает пере- дачу данных между IM6100 и периферийными устройствами. Вы- бранное внешнее устройство подключается к IM6100 с помощью 4 управляющих линий — Со, СА, С2 и SKP. В микропроцессоре IM6100 тип передачи данных во время команды ввода—вывода определяется внешними устройствами, занявшими линии управ- ления, как показано в табл. 16.5. Управляющая линия SKP, имеющая низкий потенциал в те- чение выполнения команды ввода—вывода, принуждает IM6100 пропустить следующую команду в программе. Это свойство исполь- зуется для определения состояния различных сигналов в интер- фейсе устройства. Линии Со, Сх и С2 используются независимо от линии SKP. Для случаев относительного или абсолютного пе- рехода пропуск выполняется после перехода. Входные сигналы микропроцессора IM6100 на линиях 0... 11 шины DX, Со, Сп С2 и SKP вводятся в ЦП в цикле ЮТд в течение действия сигналов DEVSEL • ХТс- Данные от IM6100 переда- ются во внешние устройства в течение действия сигналов DEVSEL • ХТС. Цикл ЮТв является внутренним циклом IM6100, во время которого выполняются операции, затребованные за время цикла ЮТА. Каждый из циклов ЮТ а и ЮТв занимает шесть тактов состояния. В заключение следует отметить, что про- граммируемая передача данных от внешних устройств осуществля- ется с минимальной загрузкой оборудования. Максимальная ско- рость для этого вида передачи ограничена временем выполнения команд микропроцессором. В действительности же быстродействие большинства серийных внешних устройств намного ниже, чем мак- симальная скорость программируемой передачи данных в IM6100. Основной недостаток программируемой передачи данных состоит в том, что микропроцессор IM6100 простаивает до тех пор, пока внешнее устройство не завершит последнюю передачу и не подго- товится к следующей. С другой стороны, рассмотренный способ передачи данных позволяет легко использовать имеющееся обору- 501
502 Программирование ввода—вывода линиями управления Таблица 16.5 Шина управления Операция Описание Св С, С, н н н DEV-AC Содержимое аккумулятора передается устройству L н н DEV-AC; CLA Содержимое аккумулятора передается устройству и затем ак- кумулятор очищается Н L н AC-AC VDEV Данные принимаются из устройства, объединяются по ИЛИ о данными из аккумулятора, и результат запоминается в акку- муляторе L L н AC-DEV Данные принимаются из устройства и загружаются в аккуму- лятор X Н L PC-PC+DEV Данные из устройства суммируются с содержимым программ- ного счетчика PC. Эта операция называется ОТНОСИТЕЛЬ- НЫЙ ПЕРЕХОД X L L PC-DEV Данные принимаются из устройства и загружаются в про- граммный счетчик PC. ЭТа операция называется АБСОЛЮТ- НЫЙ ПЕРЕХОД Примечание. Н — высокий уровень, L — низкий уровень, X — не имеет значения.
дование и требует простого и экономичного интерфейса. По этой причине для ввода—вывода данных от большинства внешних уст- ройств, за исключением запоминающих устройств большой ем- кости, реализуется этот вид передачи данных. Передача с прерыванием. Систему прерывания программы можно использовать для начальной организации программируемой пере- дачи данных, в результате чего время ожидания установки состоя- ния устройства значительно сокращается или полностью исключа- ется. Она также может быть полезной при реализации совпадающих программируемых пересылок данных между IM6100 и внешними устройствами. Последнее достигается разделением подпрограмм обслуживания внешних устройств и основной программы и при- менением системы прерывания для того, чтобы обеспечить переход к этим подпрограммам только тогда, когда состояния внешних устройств установились и указывают на готовность устройств к очередной передаче данных или на необходимость некоторого вмешательства со стороны выполняемой программы. Система прерывания допускает прерывание программы от внеш- него источника падением потенциала на входной линии INTREQ микропроцессора IM6100. Если отсутствуют запросы на прерыва- ние более высоких приоритетов и прерывание разрешено, микро- процессор IM6100 позволяет устройству выполнить прерывание по завершению текущей команды. После того как запрос на прерывание принят, триггер разре- шения прерывания в IM6100 сбрасывается, так что другие запросы не принимаются до тех пор, пока под управлением программы система прерывания не будет приведена в разрешающее состояние. Прямой доступ к памяти (ПДП). Прямой доступ к памяти, иног- да называемый сменой данных, является предпочтительной фор- мой передечи данных для быстродействующих запоминающих устройств, таких как магнитные накопители на дисках и лентах. ПДП обеспечивает передачу данных непосредственно между па- мятью и внешним устройством. Микропроцессор IM6100 исполь- зуется только для разрешения передачи, сама же передача проис- ходит без вмешательства процессора путем «занятия цикла». Быст- родействие ПДП ограничено только полосой пропускания канала памяти и пропускной способностью устройства. Внешнее устройство формирует запрос на ПДП, когда оно го- тово к передаче данных по линии DMAREQ. Процессор IM6100 разрешает ПДП сигналом DMAGNT по завершении текущей команды. Процессор приостанавливает дальнейшее извлечение команд, пока линия DMAREQ не освободится. Линии шины DX находятся в*состоянии высокого сопротивления, все сигналы SEL имеют высокий уровень, а внешние синхронизирующие сигналы ХТд, ХТВ, и ХТс поданы. Для передачи данных внешнее устрой- ство, пославшее запрос DMAREQ, должно обеспечить память ад- ресами и соответствующими сигналами управления. Линия 503
DMA REQ может исппльчовяться как потенпиальная линия «пауз» в передаче. Мини-ЭВМ PDP-8 и ее математическое обеспечение. За послед- ние 10 лет для ЭВМ PDP-8 было создано огромное по объему мате- матическое обеспечение. Оно разрабатывалось как фирмой Digi- tal Equipment Corporation, так и тысячами пользователей PDP-8. Мини-ЭВМ имеет языки высокого уровня: ФОКАЛ, ФОРТРАН и БЭЙСИ К. Особенно полезным является язык БЭЙСИ К (BASIC) реального времени. Это язык высокого уровня, позволяющий пользователям простыми средствами программировать выполнение операций в реальном масштабе времени. Имеются специальные операторы этого языка для типовых измерительных приборов и регуляторов. Интересно отметить, что ЭВМ PDP-8 является, по- жалуй, единственной ЭВМ, успешно эксплуатируемой уже в те- чение второго десятилетия. Имеется много различных аппаратур- ных реализаций этой ЭВМ с совместимым математическим обеспе- чением. Сегодня фирмы Digital Equipment Corporation и Intersil Corporation поставляют на рынок новые дешевые ЭВМ этого ин- тересного семейства. СПИСОК ЛИТЕРАТУРЫ 1. Intersil IM6100 CMOS 12 Bit Microprocessor, Intersil Corporation. Cu- pertino, Ca., 1975. 2. Small Computer Handbook^ Digital Equipment Corporation, Maynardt Mass., 1974.
Приложение 1 ГРАФИЧЕСКИЕ СИМВОЛЫ СТРУКТУРНЫХ СХЕМ Обработка. Прямоугольник обозначает процедуру обработки. Процеду- ра может быть определена несколькими командами. Обычно процесс обра- ботки описывается в прямоугольнике с использованием арифметического или логического уравнения. Принятие решения. Ромб сравнения используется в точке, где прей рамма разветвляется на несколько ветвей. Функция принятия решения обычно осуществляется путем сравнения двух величин. Эта проверка включается в ромб. Возможные результаты проверки используются, чтобы обозначить вет- ви, выходящие из ромба. Предопределенный процесс. Этот символ используется, чтобы показать программный сегмент, который описан где-нибудь в другом месте и не детали- зирован в структурной схеме. Основные подпрограммы и другие программы, описанные где-нибудь в другом месте, часто представляются таким образом. Разъем (соединитель). Когда структурная схема разбита на части, символ соединения может быть использован, чтобы показать направление програм- мы. Его основное свойство состоит в обеспечении непрерывности. Числа или буквы в метках используются для обозначения соответствующих выхода и входа. Этот символ не определяет обработку или другую программную функ- цию. Ввод—вывод. Этот символ используется, чтобы указать точку в програм- ме, где осуществляется ввод или вывод данных. Этот общий символ может быть использован для всех типов операций ввода—вывода. 505
Ручной ?вод. Этот символ используется, чтобы указать точку в програм- ме, где осуществляется ручной ввод информации. Ручной ввод может быть реализован посредством клавишного пульта в оперативном режиме, светового пера, переключениями тумблеров и т. д. Перфолента. Перфолента — широко используемый носитель данных для ввода—вывода, особенно для мини-ЭВМ. В результате этот символ обо- значает точку ввода—вывода на перфоленте. Магнитная лента. Этот символ используется, чтобы указать запись или чтение информации с магнитной ленты. Комментарии. Флажок комментария используется, чтобы указать инфор- мацию, имеющую отношение к обработке, но сам не участвует в процессе об- работки. Обычно в нем помещаются пояснения для облегчения понимания программы или алгоритма. Рассмотренные символы указаны на рис. П.1. Приложение 2 МОДУЛИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ МИКРОПРОЦЕССОРОВ Загрузчики. Загрузчики и программы начального ввода являются ко- роткими программами, которые дают возможность ЭВМ принимать и хранить другие программы в памяти. Редакторы. Редакторы используются для создания и модификации про- граммы, поступающей от телетайпа. Редактор обеспечивает легкое управле- ние текстом команд, такое как создание нового текста, стирание старого текста, вставку нового текста в старый текст, изменение фрагмента текста, хранение текста на файле. Ассемблеры и компиляторы. Ассемблер транслирует исходную програм- му, записанную на символическом языке, в объектную (машинную) програм- му в двоичном коде. Компилятор транслирует исходную программу, запи- санную на языке высокого уровня, таком, например, как PL/М, в объектную (машинную) двоичную программу. Для микро-ЭВМ разработка программы может быть осуществлена сле- дующим образом: — с помощью ассемблера, загружаемого в систему разработки микро- ЭВМ; — с помощью ассемблера, доступного через терминалы в режиме разде- ления времени; — с помощью кросс-ассемблера на более крупных машинах. Кросс-ассемблеры реализуются на ЭВМ с длиной слова 32 бита и на 16-битовых мини-ЭВМ. Они обычно записываются на языке ФОРТРАН. Кросс-ассемблер считывает исходную программу, записанную на языке ассем- блера микро-ЭВМ, и транслирует ее в двоичную объектную (машинную) про- грамму. Двоичная объектная программа затем загружается в микро-ЭВМ для выполнения. Программы моделирования. Это программы для моделирования микро- процессорных операций. Ввод — объектный код с выхода ассемблера Опе- ратор может предписать программе моделирования начать программную об- работку, остановиться, выполнить цикл, осуществить прерывание, отобра- зить на дисплее и вывести на перфоленты результаты обработки. На рис. П.2 показан типичный цикл разработки программного обеспе- чения. 595
Структурная схема выполняемых функции Запись кодод с использ о дая- нием команд М6800 Редактировании с использо- ванием ЭВМ, работающей . в режиме разделения Времени Трансляция с использованием кросс -ассемблера Перфолента Транслирован ныи файл Листинг программы на ассемблере ЭВМвцехе изготовления масок Моделирование с использо- ванием модели системы МВвОд на ЭВМ, работающей в режиме разделения бремени Да Результату моделирования спешны Нет Листинг модели ПЗУ Моделирование аппаратурных средств Ввод В систему моделирования аппаратурных средств (Продерни конструкции) Уточненный листинг на ассемблере Редактирова- ние рис. П.2. Проектирование системы математического обеспечения, и его про- верки
Приложение 3 СРЕДСТВА И МОДУЛИ РАЗРАБОТКИ АППАРАТУРНЫХ СРЕДСТВ ДЛЯ МИКРОСИСТЕМ Логические тестеры. Логические тестеры специально разработаны для анализа цифровых логических схем и сигналов. Анализ сложных логических схем, особенно схем с асинхронной логикой, является часто очень трудной за- дачей для разработчика. Тестеры полезны для синхронных и асинхронных сигналов. Они обеспечивают возможность определения и запоминания не- скольких цифровых сигналов. Эта информация затем представляется для визуального отображения на осциллографе в виде временной диаграммы. Ло1ические ограничители и пробники. Чтобы упростить тестирование микроминиатюрных цифровых схем, были созданы специальные пробники с контактными разъемами. Задача проводной связи упрощается при группи- ровании таких пробников. Эти пробники обычно совместимы с логическими схемами различных типов (включая ТТЛ, ДТЛ, ЕСЛ, И2Л, МОП). Это позво- ляет проводить анализ смешанных логических систем. Системы макетирования. Макетирование представляет собой идеальный инструмент для изучения цифровых схем. Дискретные компоненты, ИС и ап- паратурные элементы межсоединений просто вставляются в гнезда макета, поэтому ликвидируется необходимость в пайке, специальных модулях и до- рогих кабелях. Рис. П.З. Современное электронное лабораторное оборудование для разра- ботки микропроцессорных систем (фотография Д. Цейса) 508
Системы разработки микро-ЭВМ. Различные модули микро-ЭВМ име- ются в наличии как стандартные ТЭЗы. Имеются также замкнутые системы, включающие микропроцессор, память, синхрогенератор, каналы ввода—вы- вода, источники питания, панель управления и индикатор. Многие микропро- цессорные системы могут быть разработаны в короткое время на базе таких модулей. Системы разработки снабжаются стандартным программным обес- печением, которое включает системный монитор, редактор и резидент-ассемб- лер. Программист может подготовить свою программу в мнемокодах, трансли- ровать ее и через монитор (программу управления) загрузить транслирован- ную программу для обработки. Программирующие устройства для ППЗУ. Программирующие устройства для ППЗУ — небольшие портативные устройства, разработанные для ис- пользования в инженерных лабораториях или в полевых условиях. Каждый программист может программировать, записывать, дублировать и изменять данные в ППЗУ. Программирование ведется через шестнадцатеричную кла- виатуру. Шестнадцатеричные символы используются, чтобы определить как адрес памяти, так и данные. Необязательное оборудование включает интер- фейс телетайпа, считыватель с бумажной ленты и источник ультрафиолето- вого света для стирания информации в ППЗУ. Источник ультрафиолетового света. Ультрафиолетовый свет использу- ется для стирания информации в ППЗУ с целью их повторного применения. Желательные характеристики : встроенный таймер и средства защиты глаз. На рис. П.З показан комплекс аппаратурно-программного оборудования: 1. Мини-ЭВМ (Texas Instruments TI980B) с полупроводниковой памятью объемом 48К и дисковой основой операционной системы со следующим набо- ром базовых программ: — программа исходного редактирования, — кросс-ассемблер для М6800, — программа перезаписи в ППЗУ. 2. Дисковвод (Diablo). 3. Кассетный терминал (Texas Instruments Silent 700ASR), подключен- ный к мини-ЭВМ TI980B. 4. Источник ультрафиолетового света для стирания информации в ППЗУ. 5. Универсальное программирующее устройство для ППЗУ (типа Intel MDS-UPP-100), связанное с мини-ЭВМ TI980B. Объектная программа с выхода кросс-ассемблера, записанная на диске, переписывается в ППЗУ, ис- пользуя программу на ФОРТРАНе, выполняемую в реальном масштабе вре- мени. 6. ППЗУ (Intel 2708). 7. Прототипная микросистема, построенная на микропроцессорных БИС фирмы Motorola и Intel. 8. Терминал (Texas Instruments Silent 700KSR), связанный с прото- типной микро-ЭВМ. 9. Логический тестер (типа Biomation 810-D Digital Logic Reader). 10. Осциллограф (Tektronix 465), отображающий восемь трасс данных, снятых и запомненных логическим тестером.
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Адаптер внешнего интерфейса (Pe- ripheral Interface Adapter) 6, 273, 281 — последовательного интерфейса асинхронного обмена (ACIA) 289 Адреса модификации 104 Адреса символические 88 Адресации типы 80 Адресация абсолютная 90 — данных для системы PPS-4 299 ---в PDP-11 — 399 — ЗУПВ 187 — косвенная 213 — непосредственная 213 — памяти 213 — портов ввода — вывода и ЗУПВ 195 — прямая 81, 213 — странично-относительная 82, 137 — через указатель стека 214 Адресные команды 136 Адресный регистр 184 Аккумулятор (накапливающий сум- матор) 63, 70, 132, 252 Арифметические действия с удвоен- ной точностью 121 ---на ФОРТРАНЕ 123 Арифметико-логическое устройство (АЛУ) 364 Арифметическое устройство 51 Асинхронный обмен 140, 156 Базовая система машинных команд 72 Байт 12 — вектора интерфейса (Byte IV) 6 Бит 12 — дополнительный переноса (Auxi- liary carry) 218 — знака (Sign) 218 — нулевого признака (Zero) 218 — переноса (Carry) 217 — четности (Parity) 218 Биты условий 217 Булева алгебра (основная теорема) 41 Ввод — вывод с использованием ус- тройства ввода — вывода общего назначения 318 ---через общую шину 142 ---в ФОРТРАНе 129 ----с ЦП в системе PPS-4 — 316 ----по шине данных 317 Ввод данных в подпрограмму 112, 236 Вектор интерфейса (Interface Vek- tor) 6 Ветвление 94 Восьмеричная система счисления 16 Восьмеричное кодирование 65 Время обращения к памяти 53 Входные вентили шины данных 152 Выборка устройства 126 Выход переноса 42 — суммы 42 — из цикла по условию 103 Выходные вентили линий 151 Генератор состояний 134 Генерация таблицы истинности 48 Группы команд обработки 490 Двоично-десятичная система с из- бытком 3—18 - Двоично-десятичное представление (BCD) 17 Двоичное дополнение числа 15 — кодирование 65 Двоичные числа, арифметические операции 14 Двоичный дешифратор 8205 244 — счетчик 35 Деление 16 Десятичная запятая 10 Десятичное сложение 233 Десятичный счетчик 35 Дешифратор 39, 184 — микрокоманд для PPS-4 — 294 — приказов 147 Загрузка аккумулятора 229 Занятие цикла 168 Запоминание и восстановление со- стояний процессора 203 Запоминающая ключевая схема 33 Запоминающие устройства /ЗУ/ 51 ---- на магнитной ленте 55 ---- на магнитном барабане 54 ----на магнитных дисках 55 Запятая системы счисления 20 510
Инвертирования операция 40 Инвертор 25 Индексный регистр 102, 185, 252 Интегральные логические схемы 48 Интерфейс для асинхронного про- граммного обмена 156 — асинхронной связи для М 6800— 288 — для обмена по прерыванию про- граммы 158 —, обслуживаемый по прерыванию 424 — общей шины PDP-11—412 — памяти (MI — Memory Int.) 6 — для передачи слова состояния 174 — для программированного ввода — вывода 146 —, работающий с использованием управляющих слов 171 — для случаев нескольких источни- ков прерывания 160 Канал прямого доступа в память (КПДП) 162, 167 Код выборки устройства 142 — Грея 19 — операций 142 — приказа 143 Кодирование мнемоническое 66 — программы 65 — символическое 66 — шестнадцатеричное 67 Команд классификация 71 Команды адресные 71 — арифметические и логические 72 — безусловной передачи управления (МР) 74, 135 — ввода — вывода 71 — с косвенной адресацией 138 — микроопераций 72, 78 — микропроцессоров 62, 258 — обращения к подпрограммам 72 — одноцикловые 135 — переходов 136 — регистровые 71 — управления 72 — управления регистром кода со- стояния 266 ---стеком и индексным регист- ром 263 Компилятор ФОРТРАНа 91 Контроллер прямого доступа к па- мяти /DMA/ 355, 142 Копирование (загрузка регистра) 151 Линии выборки устройства 143 — данных 143 ~ — пропуска 145 — управления 143 Логические операции и реализующие их цифровые схемы 24 — схемы с тремя состояниями о! — элементы 25 Локальный таймер 44 Макрокоманда 109 Матричные структуры 5 Массивы в ФОРТРАНе 105 Машинных команд выполнение 135 Методы преобразования кодов 12 Микроконтроллер (Micro Control- — SMS 462 ----, примеры программирования 467 Микропроцессор Мб 100 — 481 Микропроцессорная система М6800 минимальной конфигурации 247 Микропроцессорные наборы 178 ---- 8008/8080 и МСОМ-8—-20,178 ----IMP 4/8/16 — 359 ----биполярные 3000—472 ----MCS-4 — 179 ----М 6800 — 246, 288 -------, адаптер внешнего входа ин-’ терфейса 273 -------, система команд 258 ----РАСЕ 381 ----PPS-4 — 290 ----F-8—433 Микросхемы 178 Микрошина (Microbus) 6, 272 Микро-ЭВМ на базе микропроцес- сорных комплектов БИС 5 — IMP-16 —360 ----, адресация памяти 367 ----, система команд 368 J ----ISI-11 — 427 —, построение 395 — системы Г8 461 Микропроцессорные системы, обо-1 рудование 508 Мини-ЭВМ PDP-11—395 Многобитовое сложение 230 Моделирование десятичного счетчи- ка 47 Модульность программы 108 Модуль управления шиной и преры- ванием 424 Мультиплексор ввода — вывода 365 НМЛ, проверка выполнения опера- ции 172 Намагничивание ферритовых сер- дечников 53 Обозначения (метки) 94 Обработка логической информа-1 ции 121 511
Объектный язык 87 Общая шина 398 ---ввода — вывода 142 Однобитовый сумматор 42 Операции со стеком 224 — ввода — вывода 227 -------через адаптер внешнего интерфейса 283 Операция сложения 68 — занесения в стек 215 — извлечения из стека 215 — управления 93 ---на ФОРТРАНе 97 Опрос входных линий для выполне- ния простых логических функций 197 Операнды ЗУПВ 344 — ПЗУ 346 Отрицательная логика 49 Память 63 — данных (ЗУПВ) 185 — программы (ПЗУ) 185 Параллельный контроллер данных (PDC — Parallel Data Controller) 6, 349 Перепрограммируемое постоянное за- поминающее устройство (ППЗУ) 60 Передача данных из регистра в ре- гистр 152 ---, сравнение 175 — с объединением данных по ИЛИ 151 Перфокарты 56 Перфоленты 56 Печатающее устройство 58 Подпрограмма копирования массива данных 113, 114 — обработки прерываний 242 — сложения чисел с произвольным числом байтов 239 — умножения на 3 — на ФОРТРАНе 114 Подпрограммы 107 — закрытая ПО — открытая 108 Полный сумматор 37 Полупроводниковая память с про- извольной выборкой (ЗУПВ) 59 — постоянная память (ПЗУ) 59 Полусумматор 42 Поля функционального регистра 354 Порт (Port) 6 -------восьмибитовый 244 Порты ввода—вывода 179, 185, 243 Порядок 21 Последовательный контроллер дан- ных (SDC — Serial Date Cont- roller) 6 Преобразователь последовательного кода в параллельный 45 Прерывания 239 Приказы 126 Программа асинхронного обмена дан- ными 157 — входная и объектная 87 — выполнения логической функции 197 — для вычисления степени числа 3—116 — вычитания с двойной точностью 122, 268 — записи в память трех измеряемых величин 155 — с командой ISZ 76 — многобайтового сложения 232 — нахождения среднего двух чисел 1 с использованием подпрограммы • 109 '— обмена по прерыванию 426 159 ----через КПДП 168, 426 ----с завершением по сигналу про- пуска 169 ----при прерывании 286 — обработки прерываний 203 — обращения к подпрограмме 77 ----JMS 150—78 — для определения знака и абсолют- ной величины операнда 116 — определения наибольшего из чи- сел 70 — поиска первого элемента в масси- ве 104 — печати символа 128 — приема данных от периферийного устройства 270 — построения гистограммы для PDP- -11—408 — проверки нахождения НХЛ в исходном состоянии 175 ----отсутствия ошибки по четно- сти при записи зоны на НМЛ 175 — процедур ввода — вывода данных 139 — распаковки и упаковки символов 123 — сбора данных от трех точек изме- рения с использованием прерыва- ния 161 — сложения элементов двух масси- вов 103 ----100 чисел с использованием мо- дификации адреса 105 ----100 чисел стократным повторе- нием 100 — суммирования с удвоенной точно- стью 121 512
— считывания символов с телетайпа 378 — умножения 116, 119 ---на 3 с использованием .закры- той подпрограммы 112 — усреднения двух чисел 109 — установки начального состояния адаптера внешнего интерфейса 285 — на ФОРТРАНе с использованием оператора D0 107 — чтения зоны НМЛ через КПДП 173 Программирование ввода — выво- да 125 -------, примеры 128 — микропроцессоров 6, 9, 86 — обмена с внешними устройствами 285 — на ЭВМ (используемые обозначе- ния) 70 Программируемые логические мат- рицы (ПЛМ) 60 Программирующие устройства для ППЗУ 509 Программный ввод — вывод 141 — счетчик 63, 70, 133 Программы двоичной и десятичной арифметики 316 — обработки прерываний 141 Проектирование системы мат. обес- печения и его проверка 507 — цифровой схемы сравнения (ком- паратора) 44 — цифровых систем на ЭВМ 46 Работа стека при вызове подпрограм- мы 235 Распределительный закон 43 Регистр 34 — адреса памяти (МА) 133 — данных внешнего устройства 150 — команд (IR) 133, 184 — операнда (ОРА) 184 .— операций (ОРР) 184 — связи (L) 64, 70, 132 — сдвиговый 35 Регистровое арифметико-логическое устройство (РАЛЧ) 360 Резистивно-транзисторная логика (PTI) 48 Сверхоперативная регистровая па- мять 438 Селектор (переключатель) 38 — устройства 146 Сигналы общей шины PDP-11 —414 Синхроимпульсы 29 Синхронизация 29, 182 Синхронный обмен 154, 140^ Символические обозначения 330 Система 3000 — 480 — со многими источниками преры- вания 161 — разработки микро-ЭВМ 509 Слово 12, 52 — состояния 172 — управляющее 169 Сложение 14, 197 Сравнение кодов 17, 23 Стандартный код ASCII—22 Стек (магазинная память) 408 Структура ЭВМ 50 Сумматор 14 — И — НЕ 27 — Исключающее ИЛИ 28 Таблица поиска символа 347 Телетайп 56 Теорема де Моргана 43 Трансляция 90 Триггер D 33 — флажка 149 ---внешнего устройства 150 Умножение 16 — путем выполнения последователь- ных сдвигов и сложений 120 Управляющее слово 173 Условные команды перехода к под- программам и возврата из подпро- грамм 25 — переходы 223 Устройство ввода 51 — ввода — вывода (GPI/0 — Ge- neral — Purpose 1/0 (Devic) 6, 55 — вывода 51 — управления 52 ---приоритетными прерывания- ми (Р1СИ) 242 Фаза ввода — вывода 143 Ферритовая память 53 Флажок устройства 127 Формат команды ввода — вывода данных 144 Форматы слов 21 ---адресных команд 81 ---команды ввода — вывода 126 Центральный процессор (ЦП) 179, 183 ---, система команд 188 --- 4040—200 --- 8080—206 ---PS-8—322 Циклический сдвиг влево (вправо) 80 513
Циклы программ 99 ---, определение окончания по счетчику 103 Циклы в ФОРТРАНЕ 105 —, окончание работы по счетчику 106 —,-----по условию 106 Цифровая система, проектирование 40 — схема сравнения 45 Цифровые БИС 58 Частичная сумма 44 Числа с плавающей запятой 21 — с фиксированной запятой 20 Шина данных 275 — кода выборки 147 — управления 147 Шины связи адаптера с периферий- ными устройствами 276 — системы LSI-11 и структура при- оритета 429 ЭВМ с хранимой программой 50 —, логическая организация — ,список основных команд 79 — типовая структура 131 — и шипы КПДП 163 Язык КОБОЛ 91 — АЛГОЛ 91 — ФОРТРАН 91 ----, организация счетчика 106 Языки высокого уровня — программирования 86 Ячейка операнда (М) 70 Ячейки памяти 52
ОГЛАВЛЕНИЕ Предисловие редактора перевода ............................... 5 Предисловие автора............................................ 7 Часть 1. ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ И ТЕХНИКА ИНТЕРФЕЙСА .... .....................9 Глава 1. Системы счисления и цифровые коды.................... 9 1.1. Десятичная и двоичная системы счисления............ 9 1.2. Арифметические операции с двоичными числами .... 14 1.3. Восьмеричный, двоично-десятичный коды и код Грея . . 16 1.4. Формат данных......................................2С Глава 2. Логические операции, цифровые элементы и микросхемы . 24 2.1. Основные логические элементы.......................25 2.2. Триггер............................................30 2.3. Основные функциональные узлы.................... 34 2.4. Проектирование цифровой системы...................40 2.5. Интегральные логические схемы......................48 2.6. Структура ЭВМ......................................50 2.7. Микропроцессор и полупроводниковая память .... 57 Глава 3. Основные команды микропроцессоров...................62 3.1. Введение............................................ 62 3.2. Кодирование программы.............................65 - 3.3. Классификация команд ..............................71 3.4. Базовая система машинных команд...................72 3.5. Основные типы адресации . ..................80 Глава 4. Программирование микропроцессоров...................86 4.1. Языки программирования.............................86 4.2. Операции управления . .............................93 4.3. Операции управления на ФОРТРАНе....................97 4.4. Циклы..............................................99 4.5.1 Циклы в ФОРТРАНе.................................105 4.6. Подпрограммы......................................107 4.7. Подпрограммы на ФОРТРАНе..........................114 4.8. Арифметические и логические операции..............114 4.9. Арифметические действия в ФОРТРАНе................123 4.10. Программирование ввода — вывода..................125 4.11. Ввод — вывод в ФОРТРАНе..........................129 Глава 5. Интерфейсы микропроцессоров.........................1-1 5.1. Типовая структура ЭВМ.............................131 5.2. Выполнение машинных команд...........................Г 5 5 3. Программирование процедур ввода — вывода данных . . 139 5.4. Состав интерфейса для программированного ввода — вывода ...............................................145 515
5.5. Синхронный, асинхронный и программный обмен по преры- ванию ......................... ..................... 5.6. Канал прямого доступа в память.................. 5.7. Управляющее слово и слово состояния............. Часть II. ОПИСАНИЕ МИКРОПРОЦЕССОРНЫХ НАБОРОВ Глава 6. Микропроцессорные наборы 4004/4040 .................. 6.1. Микросхемы......................................... 6.2. Центральный процессор ............................. 6.3. ЗУПВ, ПЗУ и порты ввода —• вывода.................. 6.4. Система команд..................................... 6.5. Примеры программирования....................• . . . 6.6. Центральный процессор 4040 ........................ Глава 7. Микропроцессорные наборы 8008/8080 и МСОМ-8 . . . 7.1. Микропроцессор 8080 ............................... 7.2. Адресация памяти................................... 7.3. Биты условий....................................... 7.4. Система команд ЦП 8080 ............................ 7.5. Приме'ры программирования.......................... 7.6. Прерывания и ввод — вывод.......................... Глава 8. Микропроцессорный набор М6800 ....................... 8.1. Общее описание..................................... 8.2. Способы адресации.................................. 8.3. Система команд..................................... 8.4. Примеры программирования........................... 8.5. Интерфейс шин ПЗУ и ЗУПВ........................... 8.6. Ввод — вывод....................................... 8.7. Программирование обмена с внешними устройствами . Глава 9. Микропроцессорный набор PPS-4........................ 9.1. Общее описание..................................... 9.2. Система команд..................................... 9.3. Адресация и программирование....................... 9.4. Ввод — вывод и прерывания......................... Глава 10. Микропроцессорный набор PPS-8...................... 10.1. Общее описание................................... 10.2. Система команд.................................... 10.3. Адресация и программирование...................... 10.4. Ввод — вывод...................................... 10.5. Параллельный контроллер данных (PDC).............. 10.6. Контроллер прямого доступа к памяти (DMA0) . . . 10.7. Прерывания....................................... Глава 11. Микропроцессорные наборы IMP — 4/8/16 и РАСЕ . 11.1. Микро-ЭВМ IMP-16 и секция регистрового арифметико- логического устройства (РАЛУ).......................... 11.2. Управляющая постоянная память (УПЗУ)............. 11.3. Адресация памяти................................. 11.4. Система команд................................... 11.5. Операции ввода — вывода.......................... 11.6. Система прерывания............................... 11.7. Микропроцессорный набор РАСЕ..................... 516
Часть ПГ НОВЫЕ МИКРОПРОЦЕССОРЫ и СПЕЦИАЛИЗИРОВАННЫЕ f МИКРОСИСТЕМЫ ..... 395 Глава 12. Мини-ЭВМ PDP-11 и микро-ЭВМ LS1-11................395 12.1. Мини-ЭВМ PDP-11..................................395 12.2. Способы адресации................................399 12.3. Система команд и примеры программирования........402 12.4. Стек, подпрограммы и прерывания..................408 12.5. Интерфейс общей шины............................ 412 12.6. Программный обмен с внешними устройствами.......420 12.7. Микро-ЭВМ LSI-11 ................. 427 Глава 13. Микропроцессорный набор F8.......................433 13.1. Общее описание..................................434 13.2. ПЗУ и интерфейс памяти (A4Z)....................439 13.3. Система команд и программирование...............445 13.4. Прерывания и ввод — вывод.......................454 Глава 14. Микроконтроллер SMS...............................462 14.1. Микроконтроллерная система......................462 /44.2. Система команд микроконтроллера..................465 14.3. Примеры программирования.........................467 14.4. Система ввода—вывода ............................469 Глава 15. Биполярный микропроцессорный набор 3000 .......... 472 15.1. Микропроцессорный набор ... ...........473 15.2. Микропрограммное устройство управления (МУУ) 3001 473 15.3. Центральный процессорный элемент (ЦПЭ) 3002 . . . 476 15.4 Компоненты системы 3000 ........................ 480 Глава 16. Микропроцессор IM6100 и мини-ЭВМ PDP-8...........481 16.1. Архитектура . . ................................481 16.2. Система команд и адресация......................486 16.3. Организация ввода — вывода......................500 Приложение 1. Графические символы структурных схем.........505 Приложение 2. Модули разработки программного обеспечения для микропроцессоров...........................................506 Приложение 3. Средства и модули разработки аппаратурных средств для микросистем............................................508 Предметный указатель........................................510
ИБ № 421 Б. Соучек МИКРОПРОЦЕССОРЫ И МИКРО-ЭВМ. Перевод с английского под редакцией А. И. Петренко Редакторы Т. М. Любимова, Н. Д. Иванушко Переплет художника О. В. Камаева Художественный редактор Н. А. Игнатьев Технический редактор Т. Н. Зыкина Корректоры: Е. П, Озерецкая, Е. А. Чесакова Сдано в набор 27.04.79. Подписано в печать 11 10 79 Формат 60X907i6. Бумага тип. № 2. Гарнитура литер. Печать высокая. Объем 32,5 усл. п. л. 36,08 уч.-изд. л. Тираж 40 800 экз. Зак. 1088 Цена 2 р. 70 к Издательство «Советское радио», Москва, Главпочтамт, а/я 693 Московская типография № 4 Союзполиграфпрома Государственного комитета СССР по делам издательств, полиграфии и книжной торговли. Москва, 129041, Б. Переяславская, 46
Соучек Б. С54 Микропроцессоры и микро-ЭВМ: Пер. с англ. / Под ред. А. И. Петренко. — М.: Сов. радио, I960. — 520 с., ил. В пер.: 2 р. 70 к. Приведены общие принципы построения микропроцессорных сис- тем Изложены основы программирования и оронизации интерфейса, описаны базовые микропроцессорные наборы БИС и примеры построе- ния микро-ЭВМ на их основе. Даны наборы команд микропроцессоров в примеры программирования некоторых задач Книга может быть использована как учебное пособие при изучении микропроцессорной техники и как справочник при проектировании систем Она будет полезна студентам и преподавателям вузов, а также разработчикам микропроцессорных систем и их программного обес- печения „ 30502-070 С 046(01) 80 55’80 2405000000 ББК 32.97 6Ф7.3
НОВЫЕ КНИГИ ВЫШЛА В СВЕТ Прокофьев В. А. Программирование для мини-ЭВМ — М.: Советское радио, 1979, 80 с., ил. — 20 к. 33 000 экз. Книга является пособием по программированию для массо- вых малогабаритных ЭВМ «Электроника-С50» и «Искра-125». Рассмотрены технические характеристики указанных ЭВМ Под- робно излагаются их системы npoi раммирования На конкретных примерах показаны основные приемы программирования Рассчитана на инженеров и студентов вузов, желающих обу- читься программированию для малогабаритных ЭВМ. ГОТОВИТСЯ К ИЗДАНИЮ Голубинцев В. О., Купаев В. М., Синельников Е. М. Эволю- ция универсальных ЭВМ. — М.: Советское радио, 1980. — 14,5 л., ил. — В пер.: 95 к. Излагаются основные принципы построения и использования универсальных ЦВМ и прослеживаются те изменения в структу- ре и функциональных возможностях этих машин, которые про- исходят по мере их совершенствования. Последовательно описы- ваются первое, второе и третье поколения ЦВМ, особенности современных вычислительных машин и некоторые перспективы их дальнейшего развития. Каждое поколение рассматривается с точ- ки зрения элементной базы ЦВМ, их архитектуры, системы про- граммного обеспечения, системы связи человека с вычислитель- ной машиной. Специфические черты первого, второго и третьего поколений ЦВМ иллюстрируются на примере конкретных типов отечественных машин. Приводятся достижения зарубежных фирм, производящих вычислительную технику. Предназначается для широкого круга инженерно-технических работников. Полезна студентам вузов, изучающих ЦВМ. Указанные книги можно купить и заказать в местных мага- зинах, распространяющих издания по этой тематике, а также в магазинах «Книга—почтой» по адресам: 103031, г. Москва, ул. Петровка, 15, магазин № 8 «Техника», 197003, г. Ленинград, ПС, Большой пр., 34, магазин № 55.