Текст
                    М И КРОП РОЦЕССОР ы
И МАШИННОЕ
ПРОЕКТИРОВАНИЕ
МИКРОПРОЦЕССОРНЫХ
СИСТЕМ____________
2	М. РАФИ КУЗАМ АН

МИКРОПРОЦЕССОРЫ И МАШИННОЕ ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ
Microprocessors and microcomputer development systems Designing microprocessor-based systems MOHAMED RAFIQUZZAMAN California State Polytechnic University HARPER & ROW, PUBLISHERS, New York Cambridge, Philadelphia, San Francisco, London, Mexico City, Sdo Paulo, Sydney 1984
М. Рафикузаман МИКРОПРОЦЕССОРЫ И МАШИННОЕ ПРОЕКТИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ СИСТЕМ В 2-х книгах Кн. 2 Перевод с английского канд. техн, наук А. А. МЕННА, канд. техн, наук Л. В. ШАБАНОВА МОСКВА «МИР» 1988
ББК 32.973 Р26 УДК 681.325.5-181.48.001.63 AlVaKo 27/05/2011 Рафикузаман М. Р26 Микропроцессоры и машинное проектирование микропроцес- сорных систем: В 2-х кн. Кн. 2. Пер. с англ.-М.: Мир, 1988- 288 с., ил. ISBN 5-03-001136-6 Широкое применение микропроцессорных систем в науке и технике привело к небывалому росту их выпуска за рубежом и в нашей стране Поэтому тради- ционные методы проектирования и отладки стали заменяться машинными. Дан- ная монография известного американского автора является одной из первых в этом важном направлении. В ней рассматриваются современные системы проектирова- ния микрокомпьютеров с иллюстрацией изложенного конкретными примерами. Много внимания уделено описанию микропроцессоров Интел, Моторола, Зилог, а также соответствующему программному обеспечению Для выбора типа языка высокого уровня приведены сравнительные данные по языкам Бейсик, Фортран, ПЛ-1, Паскаль и Кобол. Монографию можно использовать как справочное пособие по аппаратным и программным средствам микропроцессоров. В русском переводе выходит в двух книгах. Для специалистов, разрабатывающих вычислительные машины, и студентов, изучающих вычислительную технику. 2405000000-090 Р--------------- 041(01)—88 173-87, ч. 1 ББК 32.973 Редакция литературы по информатике и робототехнике ISBN 5 03 001136 6 (русск.) ISBN 5-03-001135-8 ISBN 0-06-045312-5 (англ.) © 1984 by Harper & Row, Publichers, Inc. © перевод на русский язык, «Мир», 1988.
Глава 9 ОСНОВЫ ПОСТРОЕНИЯ СИСТЕМ ПОДДЕРЖКИ РАЗРАБОТОК МИКРОЭВМ По мере увеличения на рынке сбыта ко- личества систем, построенных с примене- нием микропроцессоров, возрастает по- требность в макетных системах поддержки их разработок. Возможности таких систем изменяются в широких пределах, от набо- ра простейших дешевых средств с ограни- ченными функциями (обычно ориентиро- ванными на разработку программного обеспечения) до больших универсальных систем, создающих все условия для разра- ботки как аппаратных, так и программных средств одновременно многими пользова- телями. Цель настоящей главы состоит в де- монстрации основных свойств систем под- держки микропроцессорных разработок и рассмотрении таких программных моду- лей этих систем, как текстовые редакторы, ассемблеры, редакторы связей, компиля- торы и различные отладочные про- граммные средства. Типичными для них аппаратными средствами являются вну- трисхемные эмуляторы и логические ана- лизаторы. 9.1. Основные элементы систем поддержки разработок Если разрабатываемая микропроцес- сорная система проста, то, как правило, ее конструирование разработчиком пол- ностью на уровне одного кристалла оказывается экономически не оправ- данным. Фирмы-производители микро- процессоров, учитывая потребность в про- стых микропроцессорных системах, обыч- но серийно выпускают множество одно- платных микроЭВМ, в состав которых входят ЦП, память и некоторый ограни- ченный набор устройств ввода-вывода. Некоторые одноплатные микроЭВМ, на- пример такие, как SDK-85 фирмы Intel, имеют встроенную мониторную програм- му, содержащуюся в ПЗУ, средства ввода- вывода, реализованные в виде малой кла- виатуры для ввода данных и индикатора на светоизлучающих диодах, предназна- ченного для отображения информации. Программы пользователя вводятся в та- кую систему в машинном коде с использо- ванием шестнадцатеричного представле- ния вводимых цифр. Введенная таким образом программа отлаживается с по- мощью средств, предоставляемых пользо- вателю мониторной программой. Мони- тор обычно имеет средства для отображе- ния содержимого регистров ЦП и для пошагового выполнения программы. Про- грамма после отладки вводится в ППЗУ одноплатной микроЭВМ. Хотя в определенных сферах примене- ния особенно ценны одноплатные ми- кроЭВМ, часто все же возникает потреб- ность в проектировании и реализации целостной системы на уровне одного кри- сталла. В таких случаях очень полезно иметь средства макетирования программ- ного обеспечения создаваемой системы и располагать набором методов отладки проектируемых аппаратных средств. Ма- кетная система предоставляет разработчи- кам все необходимые средства для разра- ботки микропроцессорных систем как одного компактного модуля. Типичными широко доступными макетными система- ми поддержки разработок микроЭВМ являются системы 120, 225, 286 и 290
6 Глава 9 Плата прототипа Рис. 9.1. Аппаратные средства типичной ма- кетной системы поддержки микропроцессор- ных разработок. фирмы Intel, системы 8540, 8550, 8560 и 8002А фирмы Tektronix, серия 2300 фирмы GenRad и система 64000 фирмы Hewlett Packard. Как отмечалось в гл.1, макетные системы поддержки разработок, создаваемые фирмами - производителями микропроцессоров, обычно являются спе- циализированными, поскольку они ориен- тированы только на поддержку разработ- ки микроЭВМ, строящихся на основе микропроцессоров, выпускаемых именно этими фирмами. В то же время суще- ствуют и универсальные макетные си- стемы, ориентированные на разработки с применением микропроцессоров самых различных типов. Некоторые из наиболее развитых систем предоставляют возмож- ность нескольким пользователям одновре- менно вести разработку аппаратных и про- граммных средств проектируемой ми- кроЭВМ. 9.1.1. Аппаратные средства макетных систем Обычно системы поддержки разрабо- ток микроЭВМ включают в себя аппара- туру, необходимую для проектирования систем, и программные средства (пакеты программ), обеспечивающие работу аппа- ратных средств. Основными аппаратными компонентами типичной системы под- держки разработок, как показано на рис. 9.1, являются: 1. Микропроцессор (один или несколь- ко в зависимости от сложности системы). 2. Основная память. 3. Запоминающее устройство большой емкости (дисковая память или память на магнитных лентах). 4. Один или несколько экранных терминалов на ЭЛТ. 5. Внутрисхемный эмулятор. 6. Логический анализатор. 7. Устройство программирования ППЗУ. 8. Построчно печатающее устрой- ство.
Основы построения систем поддержки разработок 7 9. Ленточный перфоратор и устрой- ство ввода с бумажной перфоленты. 10. Интерфейс в виде модема. 1. Микропроцессор Число микропроцессоров, исполь- зуемых в системе поддержки разработки, зависит от архитектуры системы: с увели- чением числа микропроцессоров удается рационально распределить рабочую на- грузку в системе и, следовательно, увели- чить ее производительность. Системы под- держки разработок, рассчитанные на одно- го пользователя, часто строятся на основе единственного микропроцессора, который выполняет все функции, необходимые при разработке небольшой микропроцессор- ной системы. 2. Основная память Основная память представляет собой непосредственно адресуемое ЗУ, которое используется системным процессором для хранения инструментальных про- граммных средств, таких, как редакторы, ассемблеры, эмуляторы и т.п. Объем ос- новной памяти, как правило, колеблется от 32 до 64К байт; основная память состоит из ПЗУ и ОЗУ. В ПЗУ обычно хранятся монитор и системные программы, обеспе- чивающие интерфейс с аппаратными сред- ствами. 3. Память большой емкости (массовая память) Массовая память используется в систе- мах поддержки разработок для хранения системных программ и программ пользо- вателей, которые используются эпизодиче- ски. Системный процессор не может непос- редственно адресовать массовую память, и поэтому доступ к ней организуется как к устройству ввода-вывода. В больших си- стемах поддержки разработок применяют- ся жесткие диски (емкостью в несколько мегабайт), а в малых системах исполь- зуются гибкие диски, которые имеют ем- кость приблизительно 25О-5ООК байт. Каждая программа (и системная, и по- льзовательская) хранится на диске в неко- тором определенном формате. Информа- ция, записываемая на диск, представляется в виде файлов. В состав операционной си- стемы входят программы, необходимые для организации интерфейса пользователя и устройства массовой памяти. Когда по- льзователь запрашивает файл с опреде- ленным именем, операционная система по заданному имени отыскивает на диске файл и загружает его в основную память. В более совершенных системах поддержки микропроцессорных разработок органи- зуется программное управление памятью, что обеспечивает защиту файлов пользо- вателя от несанкционированного доступа. Это достигается посредством задания уни- кального идентификатора пользователя с помощью оператора USER ID. Пользо- ватель может иметь доступ только к тем файлам, которые снабжены соответствую- щими идентификационными кодами. 4. Дисплейные пульты Дисплейные пульты обеспечивают ин- терфейс пользователя и программ опера- ционной системы: пользователь осущест- вляет ввод данных с клавиатуры такого пульта, а отображение набираемых данных производится операционной систе- мой на экране ЭЛТ. На экран выводятся листинги программ, информация о состоя- нии процессора во время отладки про- грамм и различные сообщения об ошиб- ках. Дисплейный пульт обычно подклю- чается к системе поддержки разработок через линию последовательной передачи, обеспечивающую передачу данных со ско- ростью 9600-19 200 бит/с. 5. Внутрисхемный эмулятор Большинство систем поддержки ми- кропроцессорных разработок обеспечи- вает функционирование одного или не- скольких внутрисхемных эмуляторов. Вну- трисхемный эмулятор является одним из наиболее развитых инструментов разра- ботки аппаратных средств микропроцессо- ров. Чтобы воспользоваться внутри- схемным эмулятором, необходимо уда- лить кристалл микропроцессора (назы- ваемый целевым процессором) из системы, подлежащей разработке, а в освободив- шееся после этого гнездо вставить эмуля-
8 Глава 9 тор. Последний будет действовать в функ- циональном и электрическом аспектах подобно целевому процессору, однако при этом эмулятор будет работать под упра- влением программных средств системы поддержки разработок. Таким способом макетная система может управлять аппа- ратными средствами, подлежащими про- ектированию, и анализировать данные о состоянии целевого процессора во время выполнения им различных операций. При использовании внутрисхемного эмулятора содержимое регистров процессора может отображаться на экране дисплея; кроме того, эмулятор позволяет наблюдать за работой аппаратных средств в пошаговом режиме. С помощью внутрисхемного эму- лятора ошибки в аппаратных или про- граммных средствах обнаруживаются зна- чительно быстрее, чем при использовании обычных методов тестирования аппара- туры, временные затраты на реализацию которых исчисляются многими часами. 6. Логические анализаторы Логический анализатор является еще одним очень полезным аппаратным сред- ством, применяемым разработчиками ми- кропроцессорных систем. Логический ана- лизатор предоставляет разработчику воз- можность наблюдать в реальном масшта- бе времени логические уровни сигналов, действующих в аппаратуре. Высокоча- стотные логические анализаторы спо- собны воспринимать и отображать шу- мовые выбросы и переходные процессы, которые могут вызвать сбои в работе ап- паратуры. Логический анализатор с опре- деленной частотой производит замеры на входных линиях (обычно используется от 16 до 32 линий) и записывает двоичные представления логических уровней в па- мять. Затем логические уровни отобра- жаются в виде последовательностей нулей и единиц на экране ЭЛТ. 7. Устройство программирования ПЗУ (про- грамматор) После того как программы для целево- го процессора полностью разработаны и отлажены, они должны быть записаны в память разрабатываемой системы. Про- грамматор обеспечивает запись представ- ленных в машинном коде программ в ПЗУ или ППЗУ. Повторно программируемое постоянное запоминающее устройство (ППЗУ) является более универсальным: устройствам такого типа следует отдавать предпочтение при разработке систем, по- скольку после внесения изменений в про- граммы ППЗУ могут быть подвергнуты операции стирания и перепрограммирова- ния. Программаторы ПЗУ и ППЗУ обыч- но подключаются к устройствам, которые специально разрабатываются для про- граммирования определенных типов ПЗУ и ППЗУ. Эти интерфейсные платы назы- вают схемами индивидуализации; они ре- ализованы для всех распространенных конфигураций ПЗУ и ППЗУ. 8. Построчно печатающие устройства При разработке программ и на этапе их документирования необходимо иметь возможность получения распечаток про- грамм. Такие распечатки часто называют документальными копиями; печать их осу- ществляется с помощью системных по- строчно печатающих устройств. 9. Обеспечение интерфейса с применением бумажной перфоленты Иногда возникает необходимость ре- ализовать обмен данными между раз- личными системами. Используя лен- точный перфоратор, можно вывести ин- формацию на перфоленту в одной системе, а в другой применить соответствующее устройство ввода данных с бумажной пер- фоленты. Информационный обмен с ис- пользованием бумажной перфоленты от- носится к устаревшим способам организа- ции системного интерфейса, поскольку при этом низка скорость ввода и вывода данных и неудобен используемый носи- тель. 10. Организация интерфейса с применением модема При использовании модемов (МОдуля- торов-ДЕМодуляторов) для организации последовательной передачи данных между системами применяют обычные теле-
Основы построения систем поддержки разработок 9 фонные линии. На передающем конце та- кого канала модулятор преобразует после- довательные данные, представляемые сиг- налами различного уровня, в тональные посылки. На приемном конце демодуля- тор производит обратное преобразование тональных сигналов в последовательные данные. Кроме того, для обеспечения уда- ленного доступа модем используют для подключения дисплейного пульта к основ- ной системе поддержки разработок. Воз- можности передачи данных при использо- вании модемов обычно ограничены ско- ростью порядка 1200 бит/с, что значитель- но ниже скорости передачи данных при непосредственном подключении дисплей- ного пульта к системе. Для обеспечения возможности разработки программных средств для самых различных микропро- цессоров макетные системы могут сопря- гаться с помощью модемов с мини-ЭВМ. 9.1.2. Операционная система и методы отладки программных и аппаратных средств Перейдем теперь к рассмотрению средств операционной системы и методов отладки, используемых в типичных систе- мах поддержки микропроцессорных раз- работок. 1. Операционные системы Инструментальные программы, ис- пользуемые при разработке микропроцес- сорных систем, работают под управле- нием операционной системы, про- граммные модули которой хранятся в системной массовой памяти и загру- жаются в основную память сразу после включения питания. Операционные си- стемы никогда не приспосабливаются к ка- ким-то конкретным аппаратным сред- ствам; их связь с системным оборудова- нием осуществляется посредством стан- дартных вызовов подпрограмм монитора. Для организации необходимых связей с монитором операционная система вызы- вает требуемую подпрограмму путем ука- зания определенных связей ее параметров, засылаемых в регистры. Поскольку одни лишь программы монитора операционной системы зависят от системных аппаратных средств, сложные программные модули операционной системы можно легко ис- пользовать в системах с различной конфи- гурацией аппаратуры. В состав операционных систем входят программы управления памятью, необхо- димые для поддержания определенного порядка размещения и хранения файлов. Операционная система организует и под- держивает справочник, в котором содер- жится информация о том, какие файлы имеются в данный момент в системе и ка- кой объем памяти еще доступен пользова- телю для организации файлов. В операционную систему обычно вклю- чаются текстовые редакторы, ассемблеры, редакторы связей (компоновщики), компи- ляторы (используемые для преобразова- ния программ, написанных на языках про- граммирования высокого уровня, напри- мер на Фортране или Паскале, в про- граммы на машинном языке) и отла- дочные средства. 2. Методы отладки При создании микропроцессорных си- стем производится отладка двух видов: аппаратных средств и программ. Оба про- цесса отладки обычно выполняются неза- висимо друг от друга, поскольку отладка программ выполняется с использованием эмулятора без применения системных ап- паратных средств. а. Средства разработки программ. К обыч- ным методам и средствам разработки про- граммного обеспечения относятся поша- говое выполнение программы, организа- ция контрольных точек останова, отобра- жение содержимого регистров, распечатка содержимого памяти и моделирование ра- боты целевого процесса. Режим пошагового выполнения про- грамм дает пользователю возможность выполнять подлежащую отладке програм- му покомандно. При этом программа ре- ализуется команда за командой, и выпол- нение следующей команды разрешается лишь после того, как пользователь про- анализировал текущее состояние процесса. В ходе отладки полезно анализировать со- стояние шины данных, адресной шины.
10 Глава 9 флагов состояния процессора и линий управляющей шины. При проведении ана- лиза состояния процессора на каждом ша- ге выполнения отлаживаемой программы пользователь может обнаружить такие программные ошибки, как некорректные передачи управления, ошибки адресации, ошибочные коды операций и т.п. В этом режиме, однако, не удается обнаружить ошибки синхронизации, некорректные пре- рывания и ошибки при выполнении прямо- го доступа к памяти. Режим пошагового выполнения про- граммы требует значительно большого времени, чем нормальный процесс ее про- гона в реальном времени. По этой причине пошаговый режим обычно используется для отладки небольших участков про- граммы и практически никогда не приме- няется для выполнения отладки всей про- граммы целиком. Контрольные точки. Как указывалось выше, процедура пошагового выполнения программы оказывается слишком медлен- ной и бесполезной в случае, когда про- грамма должна выполняться в рабочем ре- жиме. Желательно поэтому иметь возмож- ность безостановочного выполнения про- граммы до тех пор, пока не встретится какая-то определенная команда. Для обес- печения останова программы в заданных точках пользователь может включать в программу специальные команды, вызы- вающие приостановку работы процессора. При выполнении команды останова про- граммы в заданной точке управление бу- дет передано управляющей программе от- ладчика и пользователь сможет проанали- зировать состояние процессора, что позво- лит оценить правильность выполнения программы. Существуют два способа реализации останова программы в заданной точке: ап- паратный и программный. В первом слу- чае производится аппаратный анализ со- стояния адресной шины системы. Точка останова обнаруживается аппаратными средствами в тот момент, когда адрес на адресной шине совпадает с заданным адресом останова программы. После об- наружения точки останова формируемые аппаратурой сигналы управления процес- сором либо останавливают процессор, обеспечивая возможность анализа его со- стояния, либо запускают соответствую- щую программу обработки прерывания. Аппаратный способ организации остано- вов применим для отладки программ, за- писанных как в ПЗУ, так и в ОЗУ. Если же применяется программный способ реали- зации останова программ в заданных кон- трольных точках, то программа, подлежа- щая отладке, должна обязательно распо- лагаться в ОЗУ. Это вызвано тем, что специальные команды, вызывающие оста- нов процессора, должны «встраиваться» в отлаживаемую программу. Средства обеспечения контрольных остановов в заданных точках программ очень полезны для организации их отлад- ки, поскольку до момента останова участ- ки программы любого размера могут про- гоняться с максимальной скоростью. На- пример, некоторая подпрограмма может быть выполнена целиком, а затем в точке останова можно проанализировать со- стояние регистров процессора с целью установления правильности выполнения подпрограммы. После завершения отлад- ки программы из нее удаляются все средства организации контрольных оста- новов. В процессе отладки, как правило, ис- пользуются и режим пошагового выполне- ния программы, и средства организации контрольных остановов в заданных точ- ках: этим приемы взаимно дополняют друг друга. Обычно пользователь вручную или автоматически (в зависимости от при- меняемой системы) включает в отлаживае- мую программу средства организации остановов в желаемых точках и запускает ее на выполнение с максимальной ско- ростью вплоть до заданной точки оста- нова. После останова программы в задан- ной точке пользователь может перейти на режим пошагового выполнения про- граммы, чтобы анализировать правиль- ность выполнения программы после ка- ждой очередной команды. Дампы содержимого регистров. Для анализа состояния регистров процессора необходимо отображать их содержимое на экране дисплея; такое отображение выпол- няется системными программами, ко- торые выводят на экран имена регистров
Основы построения систем поддержки разработок 11 и их содержимое в шестнадцатеричном представлении. Затем пользователь может изменить содержимое регистра и продол- жить выполнение программы с изме- ненными данными. Дампы памяти. Аналогично отображе- нию содержимого регистров пользователь может выполнить дамп памяти (вывод со- держимого ЗУ). Осуществив дамп некото- рой части ЗУ, пользователь может проана- лизировать состояние соответствующего участка памяти и, если он имеет дело с ОЗУ, изменить его содержимое. Удобно производить дамп целых блоков памяти, а не отдельных ее ячеек. Имитатор, или моделирующая про- грамма, обеспечивает воспроизведение ра- боты (моделирование) целевого процессо- ра путем имитации действия его элемен- тов. В процессе имитации анализируются и соответствующим образом изменяются адреса, данные, состояние флагов и т.п. Процессор, на котором осуществляется имитация работы целевого процессора, может по типу и не совпадать с целевым процессором, так как программа, подле- жащая отладке, в действительности не вы- полняется процессором системы поддерж- ки разработки. При имитации очередной команды программы просто моделируют- ся все те действия, которые целевой про- цессор должен был бы производить при действительном выполнении соответ- ствующей команды. Имитаторы-это, как правило, очень большие программы, в которые вклю- чаются все необходимые отладочные сред- ства (обеспечение пошагового выполнения программ, организация контрольных остановов программ в заданных точках, отображение состояния регистров целево- го процессора и т. п.), обычно необхо- димые для разработки программ. б. Средства отладки аппаратных средств. К основным средствам отладки аппара- туры относятся логический анализатор и внутрисхемный эмулятор. Логические анализаторы обычно при- меняются для поиска неисправностей в ап- паратуре системы. Логический анализатор имеет много общего с осциллографом, по- скольку с его помощью пользователь мо- жет наблюдать логические уровни сигна- лов, действующих в аппаратуре. Логические анализаторы имеют не- сколько входов (обычно от 16 до 32), ко- торые параллельно подключаются с по- мощью щупов к тестируемой аппаратуре. Логический порог сигнала может зада- ваться в самом анализаторе, и поэтому его можно применять для микропроцессоров, реализованных на основе логических схем различных серий. Для обеспечения синхро- низации при измерении уровней сигналов на входах в анализаторе используется вну- тренний или внешний синхронизирующий сигнал. Замеры на входах производятся при поступлении синхроимпульсов. В ре- зультате замеров логические уровни (0 или 1) записываются в память анализатора. За- тем содержимое памяти может быть ото- бражено на экране анализатора в виде ну- лей и единиц или в виде логических уровней. С помощью логического анализа- тора пользователь может наблюдать одновременно несколько сигналов и ана- лизировать их взаимосвязи. Тем самым могут быть обнаружены сигналы с некор- ректными временными диаграммами. Большинство логических анализаторов обладает такими частотными характери- стиками, что с их помощью можно обна- руживать помехи, которые являются при- чиной сбоев в работе аппаратуры. Поскольку анализатор обладает па- мятью ограниченного объема, с его по- мощью можно производить наблюдения сигналов на ограниченном интервале времени. В связи с этим необходимо иметь средства для управления запуском анали- затора в определенные моменты функцио- нирования исследуемой аппаратуры. Су- ществуют два метода запуска анализатора с определенного момента времени; первый из них основан на запуске фронтом сигна- ла. Один из параллельных входов анализа- тора используется при этом для подачи за- пускающего импульса. Кроме того, с помощью этого входа выбирается же- лаемый логический уровень сигнала. По- сле этого включается аппаратура, и, как только появится на выбранном входе запу- скающий сигнал (например, переход от низкого уровня к высокому), логический анализатор начинает регистрировать ло-
12 Глава 9 гические значения сигналов на своих вхо- дах. Этот метод, удобный в простых слу- чаях, легко реализуется, однако он не пригоден тогда, когда на выбранном для запуска входе сигнал за время наблюдения (определяемое временем работы про- граммы) изменяется несколько раз. Второй способ запуска основан на «рас- познавании слова», образованного сложной комбинацией сигналов, которая опреде- ляет условие запуска логического анализа- тора. При этом способе пользователь за- дает значения логических уровней на входах анализатора, по достижении ко- торых должен произойти запуск анализа- тора. Некоторые входы могут быть отме- чены как «безразличные»; уровни сигналов на этих входах не будут влиять на запуск логического анализатора. Используя этот способ, можно запустить анализатор в тот момент, когда активизируется определен- ная точка ввода-вывода. Большинство анализаторов обеспечи- вают возможность выбора кадра данных путем установления соответствующей точ- ки срабатывания или запуска. Например, если некоторый анализатор имеет память емкостью 8192 бит и 16 параллельных вхо- дов, то предельное количество слов данных, воспринимаемых анализатором, равно 8192/16 = 512. Следовательно, кадр этого анализатора содержит 512 слов, ко- торым соответствует 512 синхроимпуль- сов. Этот кадр может быть установлен ли- бо так, чтобы отобразить 512 слов, предшествующих точке срабатывания, ли- бо так, чтобы отобразить 512 слов, сле- дующих за точкой срабатывания, либо, на- конец, можно разбить кадр так, чтобы первые 256 слов предшествовали, а другие 256 слов следовали за точкой срабатыва- ния. Обычно логические уровни сигналов в микропроцессорных системах опреде- ляются уровнями сигналов в последова- тельности тактовых импульсов. В связи с этим, если уровни синхросигналов логи- ческого анализатора окажутся ниже уров- ня сигналов синхронизации процессора, то анализатор может пропустить сигналы не- которых логических уровней. Если частота синхронизирующих сигналов в анализато- ре значительно выше, чем частота синхро- низирующих сигналов процессора, то ана- лизатор будет производить слишком много замеров при одном и том же логи- ческом уровне сигнала и в кадре будет ото- бражаться меньше информации, чем было бы возможно при других соотношениях указанных частот. По этим двум причинам целесообразно в качестве внешнего сигна- ла синхронизации логического анализато- ра использовать синхронизирующие им- пульсы микропроцессора. Если пользова- тель пытается обнаружить очень короткие (шумовые) импульсы, то частота син- хроимпульсов анализатора должна быть выше частоты синхронизации микропро- цессора. Большинство логических анализаторов является автономными устройствами, од- нако в состав некоторых систем поддерж- ки микропроцессорных разработок вклю- чают специальную логическую схему, которая должна выполнять большинство стандартных функций анализатора; для отображения результатов наблюдения в этом случае используется системный дисплей. Одной из особенностей анализа- торов, реализованных в некоторых систе- мах поддержки разработок, является воз- можность отображения данных в символь- ной, а не в двоичной форме (обычно такая возможность обусловлена использова- нием языка ассемблера). Внутрисхемный эмулятор. Наиболее распространенным средством обеспечения разработки аппаратуры, включаемым в системы поддержки разработок, являет- ся внутрисхемный эмулятор. Внутри- схемный эмулятор используется в подле- жащей отладке системе вместо целевого микропроцессора. При этом внутри- схемный эмулятор функционально и «электрически» действует подобно целе- вому микропроцессору. Разница между фактическим микропроцессором и внутри- схемным эмулятором состоит в том, что эмулятор работает под управлением спе- циальной программы. Эмулятор произво- дит анализ и реализует изменения состоя- ния процессора, содержимого регистров, счетчика команд и т.п. Внутрисхемный эмулятор представляет собой мощное средство для отладки аппаратуры и про- грамм, особенно когда отлаживаются про-
Основы построения систем поддержки разработок 13 граммы для будущей реальной целевой системы. Обычно внутрисхемный эмулятор со- стоит из двух аппаратных компонентов: аппаратного интерфейса с системой под- держки разработки, который не зависит от эмулируемого микропроцессора, и аппа- ратных средств, которые непосредственно эмулируют целевой процессор. Кроме того, в эмуляторах реализуются средства совместного использования ре- сурсов, в частности обеспечивается доступ эмулятора в ОЗУ системы поддержки раз- работок. Такая возможность совместного использования ресурсов позволяет эмуля- тору моделировать ОЗУ, ПЗУ или сред- ства ввода-вывода, которых нет в целевой системе. По существу внутрисхемный эмулятор является «черным ящиком», который вы- глядит подобно целевому процессору. По- скольку характеристики функционирова- ния микропроцессоров хорошо докумен- тированы фирмами-изготовителями ми- кропроцессоров (точно определены функ- ции всех сигналов на всех выводах микросхемы), сравнительно легко спроек- тировать основные аппаратные средства эмулятора. Однако в эмуляторе значи- тельно труднее реализовать возможность совместного использования ресурсов и средств отладки. Желание расширить возможности эму- лятора приводит к необходимости приня- тия компромиссных проектных решений. Когда создавались первые эмуляторы, ми- кропроцессоры и устройства памяти были еще весьма дорогими. Высокая стоимость аппаратных узлов вела к таким принципам построения и реализации эмуляторов, при которых эмулятор должен был по возмож- ности полнее использовать ресурсы си- стемы поддержки разработки. Как след- ствие стали появляться макетные системы с эмуляторами, в которых были реализо- ваны принципы совместного использова- ния ресурсов, режим разделения времени, совместное использование шин и процес- соров. Требования высокой степени совме- щения использования ресурсов привели к компромиссам, заключающимся в эко- номных архитектурных решениях кон- струкций эмуляторов. По мере снижения стоимости аппа- ратных средств стало возможным созда- ние новых, более эффективных эмулято- ров. Большинство мощных эмуляторов является многопроцессорными системами с многошинной архитектурой. В многопроцессорных эмуляторах с многошинной архитектурой каждый про- цессор-эмулятор имеет собственную па- мять и шину целевого процессора. Процес- сор-эмулятор может функционировать не- зависимо и поддерживать связь с си- стемным процессором и другими процес- сорами-эмуляторами. Существует воз- можность установки в определенное со- стояние и запуска каждого эмулируемого процессора, которые затем могут функ- ционировать независимо. При этом си- стемный процессор может одновременно использоваться для отладки некоторого подмножества или всех независимых про- цессоров. С целью выполнения отладки си- стемный процессор осуществляет захват цикла памяти целевого процессора. Этот прием позволяет анализировать состояние памяти пользователя, средств ввода-выво- да, внутренних регистров и т. п. Поскольку эмулятор опрашивает целевой процессор в промежутках между его основными цик- лами, реализация этого способа сопряжена со значительно меньшими временными из- держками, чем в случае выполнения оста- новов и последующих рестартов процессо- ра. 9.2. Средства поддержки разработки программ Для эффективного использования ма- кетных систем поддержки разработок в их состав должен включаться определенный набор программных средств: редакторы текстов, ассемблер, редакторы связей, ком- пиляторы, загрузчики, отладочные про- граммы, мониторы, операционная система и др. Ниже подробно рассматриваются указанные программы. 9.2.1. Редакторы текстов Редактор текстов обычно является пер- вой программой, которую приходится ис-
14 Г лава 9 Рис. 9.2. Потоки данных при редактировании текстов. Источник: Camp, Smay, and Triska, Microcomputer Systems Principles Featuring the 6502/KIM, copyright 1978, Matrix Publishers пользовать в процессе разработки про- грамм: благодаря ему пользователь полу- чает возможность вводить исходные тексты программ, написанных на ассем- блере или на каком-нибудь языке высоко- го уровня, в используемую макетную си- стему. В редакторах имеются команды, с помощью которых пользователь при не- обходимости может изменить исходный текст путем добавления новой части или путем исключения какой-либо части суще- ствующего текста. Редакторы текстов стали особенно ши- роко распространяться в связи с разработ- кой и использованием микропроцессоров. Для ввода программ в старые универ- сальные вычислительные машины преиму- щественно использовались перфокарты и устройства считывания с перфокарт. Для внесения изменений в программу на пер- фокартах приходилось либо вставлять в определенное место колоды новую пер- фокарту, либо удалять перфокарты, содер- жащие ошибки, и выполнять повторную перфорацию. Устройство считывания с перфокарт является слишком дорогим и не применяется в микропроцессорных системах; для них были разработаны дру- гие методы. Первое время для ввода про- грамм в микропроцессорные системы ис- пользовались перфолента и кассеты с магнитной лентой, применяемые в обы- чных магнитофонах для записи и воспрои- зведения звука. Однако такие носители ин- формации еще не давали возможности легкого редактирования программ: разра- ботанные редакторы обеспечивали считы- вание программы или данных с ленты, корректировку текста и последующую за- пись текста на новую ленту. Современные редакторы выполняют аналогичные дей- ствия, но вместо ленты работают с гибки- ми или жесткими дисками. На рис. 9.2 представлена упрощенная схема потоков данных, существующих во время работы программы редактирования. Редактор начинает свою работу с за- грузки сегмента данных из входного файла в ОЗУ системы поддержки разработок. За- тем сегмент программы отображается на дисплее и пользователь выполняет необхо- димые изменения текста-редактирует программу. Отредактированный сегмент записывает на диск, а с диска в ОЗУ пере- сылается следующий сегмент. В настоящее время используются ре- дакторы двух типов: построчные и посим- вольные. 1. Редакторы, ориентированные на построч- ное редактирование Первыми были созданы редакторы именно этого типа. Строковые редакторы проще и дешевле символьных, но они обладают значительно меньшими воз- можностями и применяются главным
Основы построения систем поддержки разработок 15 образом в вычислительных машинах для домашнего использования, редко встре- чаясь в современных системах поддержки разработок. Основное различие строково- го и символьного редакторов состоит в том, что первые не отображают никаких изменений в файле до тех пор, пока поль- зователь не завершит печать строки; вторые отображают изменения при вводе каждого знака. В некоторых строчных редакторах по- льзователь может вместе со строкой вве- сти ее номер. Это позволяет хранить стро- ки в памяти в порядке возрастания их номеров. Если необходимо отредактиро- вать строку с определенным номером, пользователь осуществляет ввод новой строки с тем же самым номером и старая строка заменяется на новую. Для того чтобы вставлять в программу дополни- тельные строки между уже существующи- ми, строки обычно нумеруются с шагом 5 или 10. Если строки снабжены номерами 10, 20, 30 и т.д., то новая строка, скажем с номером 17, будет вставлена между стро- ками с номерами 10 и 20. Использование строковых редакторов, предполагающих нумерацию строк, очень утомительно, поскольку при необходимо- сти ввести самые незначительные измене- ния приходится вводить целую строку. К достоинствам строкового редактора с нумерацией строк относится то, что сама программа редактирования занимает в па- мяти сравнительно мало места, и поэтому в ОЗУ остается больше памяти для разме- щения текста. Программа строкового ре- дактора проста, что обусловливает низкую стоимость таких редакторов. Строковые редакторы второго типа обеспечивают пользователю возможность вводить строки без использования их но- меров. В этом случае пользователь устана- вливает указатель на то место в програм- ме, куда должна быть помещена новая строка текста, после чего введенная строка займет в ОЗУ соответствующее место. Кроме того, пользователь может устана- вливать указатель на определенную пози- цию в пределах строки, что позволяет до- бавлять или исключать символы, не набирая всех символов строки. Строковые редакторы этого типа, очевидно, имеют преимущества над редакторами с нумера- цией строк, однако по своим возможно- стям они все же уступают символьным редакторам. 2. Символьный редактор Почти во всех современных системах поддержки микропроцессорных разрабо- ток используются символьные редакторы, которые обычно называют экранными, по- скольку редактируемый текст динамиче- ски отображается на экране, а дисплей ав- томатически реализует все действия, свя- занные с выполняемыми пользователем операциями редактирования. В экранном редакторе отметка знаков, подлежащих редактированию, осущест- вляется с помощью указателя, который принято называть курсором. Применяя специальные команды, пользователь мо- жет перемещать курсор по экрану и уста- навливать его на любую позицию в любой строке экрана. Другие специальные ко- манды используются для «прокрутки» тек- ста на экране дисплея вперед или назад, что позволяет отобразить любой сегмент файла. Когда курсор установлен на желае- мую позицию, пользователь может вста- вить в строку новые символы, удалить символы или просто заменить существую- щие символы новыми. Экранный редактор невозможно реали- зовать без использования для отображе- ния текста высокоскоростного экранного терминала. В типичных экранных редакто- рах редактируемый текст вместе со всеми изменениями хранится в ОЗУ. Установка курсора в определенное положение опре- деляет, какие части текста подлежат ото- бражению. Редактор выводит текущий текст на экран, и как только производятся какие-либо изменения текста в ОЗУ, они сразу же отображаются на экране. Если передача данных при обновлении текста на экране происходит со скоростью 9600 бод и выше, то процесс изменения текста на экране почти невозможно заметить. Ниже будут рассмотрены стандартные операции, выполнение которых обеспечи- вается экранными редакторами. Неко- торые из этих операций могут выполнять- ся и строковыми редакторами. Подробное
16 Глава 9 описание возможностей конкретных ре- дакторов можно найти в соответствующих руководствах для пользователя. С помощью специальных команд мо- жет быть добавлена или уничтожена целая строка текста. Когда редактор переведен в режим вставки, а курсор установлен ме- жду двумя существующими строками тек- ста, то любой вводимый текст будет поме- щаться между этими строками. Если курсор указывает на строку, подлежащую удалению, то для удаления целой строки из файла достаточно одной команды. Команды поиска предназначены для отыскания места вхождения в файл опре- деленной последовательности знаков, образующей строку. Пользователь может задать строку знаков, а редактор путем по- следовательных сравнений будет отыски- вать место вхождения заданной строки в файл. При обнаружении вхождения сег- мент, содержащий заданную строку, будет выведен на экран. При выполнении функ- ции «найти и заменить» пользователь за- дает две строки: сначала редактор отыски- вает место вхождения первой строки в файл, а затем обнаруженная строка заме- щается второй заданной строкой. Послед- няя возможность исключительно полезна для корректировки текстов, содержащих слова и фразы с орфографическими ошиб- ками. Другие полезные команды позволяют осуществлять слияние тех или иных частей файлов с текущим файлом, пересылать сегменты в заданные позиции файла, уда- лять из системы старые файлы, создавать копии файлов, а также выполнять многие другие функции, которые ускоряют про- цесс написания и редактирования ис- ходных текстов программ. Команды редактирования реализуются в экранных редакторах различными спосо- бами. В некоторых редакторах для зада- ния определенных перемещений курсора используются специальные клавиши. На этих клавишах обычно изображаются стрелки, указывающие направление пере- мещения курсора. Другие специальные функции редактора задаются с помощью управляющих клавиш. Управляющие кла- виши должны нажиматься одновременно со специальной клавишей CTRL (управле- ние); при таком действии образуются спе- циальные коды знаков, которые передают- ся программе редактора. В более совершенных редакторах, на- пример в редакторе HP 64000, исполь- зуются программируемые функциональные клавиши. Клавиши с изменяемыми функ- циями не имеют жестких обозначений и располагаются ниже экрана и в непос- редственной близости от него. Какие функ- ции должны выполняться при нажатии той или иной клавиши, определяется режимом работы редактора. Функция каждой клави- ши отображается на экране над соответ- ствующей клавишей. Использование функ- циональных клавиш очень удобно, так как освобождает пользователя от необходи- мости запоминания назначения большого числа управляющих клавиш и одновре- менно дает ему возможность по своему ус- мотрению изменять функции опреде- ленных клавиш. По мере того как системы поддержки разработок становятся все более совер- шенными, они предоставляют пользовате- лю все больше и больше средств, облег- чающих и ускоряющих процесс подготов- ки исходных текстов программ. В наиболее быстродействующих и, сле- довательно, наиболее удобных редакторах систем поддержки разработок исполь- зуются ЭЛТ с прямой регенерацией изо- бражения на экране. Экранный дисплей с прямой регенерацией изображения не связывается с системным процессором по- средством линии последовательной пере- дачи данных; он просто является частью аппаратных средств системы. Память, ис- пользуемая для отображения информации на экране дисплея, непосредственно до- ступна системному процессору, который может обновлять содержимое этой памяти так же быстро, как и содержимое других модулей памяти системы. При такой орга- низации памяти дисплея скорость переда- чи может достигать 200 000 знаков в секун- ду, в то время как при передаче данных по последовательной линии скорость переда- чи составляет всего лишь 960 знак/с. Если в системе поддержки разработок используется ЭЛТ с прямой регенерацией изображения и при этом реализуется очень высокая скорость передачи знаков, то опы-
Основы построения систем поддержки разработок 17 тный пользователь может снизить время редактирования на 30-50%. 9.2.2. Ассемблеры Исходные программы, подгото- вленные с помощью редактора и хра- нимые в памяти в коде ASCII, не могут не- посредственно исполняться микропроцес- сором. Исходный текст программы пре- образуется сначала в форму, воспринимае- мую микропроцессором. Для преобразо- вания программ, написанных на языке ассемблера и подготовленных с помощью редактора, в программы на машинном языке используется специальная програм- ма, которую называют ассемблером. Про- граммы на машинном языке могут непос- редственно выполняться процессором. В каждой строке исходной программы ассемблер различает четыре поля. Поля содержат переменное число знаков и опре- деляются по своему положению в строке. В строке слева направо идут следующие поля: поле метки, поле операции, поле опе- рандов и поле комментария. Поля разде- ляются ограничителями, по которым ас- семблер определяет конец одного и начало следующего поля. Обычно в качестве огра- ничителей используются следующие зна- ки: Пробел Используется для разделения по- лей Табуляция Используется для разделения по- лей , Используется как разделитель между адресами и данными в по- ле операндов ; Предшествует полю комментария : Ставится после метки В качестве примера приведем несколь- ко строк исходной программы на языке ас- семблера для микропроцессора 8085: Поле Поле Поле Поле коммента- метки операции операндов рия MVI А,5 ; Загрузка числа 5 ; в аккумулятор LOOP: DCR А ; Уменьшение со- ; держимого ; счетчика на 1 JNZ LOOP ; Если счетчик не ; равен 0, то пе- ; реход на метку RET ; Переход к выз- ; вавшей про- ; грамме после ; завершения ; цикла В представленном примере для разде- ления полей строки ассемблера использо- ваны знаки табуляции. Применение знаков табуляции для разделения полей облегчает восприятие текста при его чтении во время отладки программы. Для того чтобы ассемблер мог отли- чать метки от чисел, существуют спе- циальные правила записи меток и чисел, принятые практически во всех ассембле- рах. Согласно этим правилам, метка дол- жна обязательно начинаться с буквы, по- сле буквы могут следовать как буквы, так и цифры, т.е. любые буквенно-цифровые знаки. Например, метки LOOP1, LOOP2, LOOP3 и т.д., имеющие общую строку букв LOOP и отличающиеся следующими за этой строкой номерами или числами, могут быть сопоставлены некоторым функционально схожим фрагментам про- граммы. Числа, даже шестнадцатеричные, в за- писи которых могут использоваться буквы, должны начинаться с цифры. В большинстве ассемблеров используются десятичные числа, но часто допускается представление чисел и в других системах счисления. Для указания системы счисле- ния непосредственно после числа записы- вается буква, задающая систему счисле- ния. Обычно для этого используются следующие буквы: В-для двоичной системы счисления, С-для восьмеричной системы счисле- ния, Н-для шестнадцатеричной системы счисления. Чтобы шестнадцатеричное число отли- чалось от метки в случае, когда оно на- чинается с буквы, к нему слева приписы- вается цифра 0. Например, шестнадцате- ричное число FA в исходном тексте про- граммы на языке ассемблера должно быть записано как 0FАН.
18 Глава 9 1. Псевдокоманды ассемблера Псевдокоманды, или директивы ассем- блера, встречаются в исходных текстах программ наряду с обычными командами языка ассемблера. Псевдокоманды не транслируются в команды объектной про- граммы : они используются как особые ко- манды, встречая которые, ассемблер вы- полняет определенные функции. В частно- сти, в ассемблерах используются псевдо- команды для резервирования памяти, для назначения адресов меткам, псевдоко- манды, устанавливающие формат стра- ницы исходного текста программы, и т. д. Имя псевдокоманды помещается в по- ле кода операции обычных команд ассем- блера. Если в псевдокоманде используют- ся и метки, и данные, то они помещаются в поле метки и поле операндов. Рассмотрим более подробно наиболее часто используемые псевдокоманды. а. Псевдокоманда ORG (АДРЕС НАЧА- ЛА ) используется программистом для указания адреса местоположения про- граммы в памяти. В процессе трансляции исходной программы ассемблер исполь- зует некоторый внутренний счетчик (по- добный счетчику команд микропроцессо- ра), который задает адрес для размещения в памяти очередной машинной команды, сформированной ассемблером. Ассемблер автоматически и последовательно увели- чивает содержимое счетчика. Если про- граммист хочет указать особое место раз- мещения в памяти некоторой машинной команды, отличное от текущего значения счетчика, он должен воспользоваться ко- мандой ORG. Например, если требуется разместить подпрограмму в памяти, начиная с ячейки с адресом 2000Н, то перед подпрограммой помещается команда ORG, которая во- спринимается ассемблером как указание изменить значение счетчика: ORG 2000Н ; Запись в "счетчик ко- ; манд" значения ; 2000Н SUB: MVI А,5 ; Подпрограмма вы- ; полняет засылку чис- ; ла 5 в аккумулятор RET ; Возврат к вызвавшей ; подпрограмме Если в исходном тексте программы от- сутствует псевдокоманда ORG, то в боль- шинстве ассемблеров начальный адрес ав- томатически устанавливается равным 0. б. Псевдокоманда EQU (приравнять) ис- пользуется для присваивания некоторым символам, указанным в поле метки, значе- ний (данных, адресов), задаваемых в поле операндов. Эта команда весьма полезна, поскольку ее применение позволяет про- граммисту писать исходную программу в символической форме без указания фак- тических числовых значений констант, па- раметров, адресов и т. п. В некоторых слу- чаях программист, разрабатывая програм- му, не знает заранее, какие адреса или данные потребуется задать в программе в связи с использованием определенной конфигурации аппаратных средств. Про- грамма при этом может быть написана и отлажена в символической форме, а фак- тические данные добавляются в нее позже. Кроме того, команда EQU полезна в си- туациях, когда некоторая величина ис- пользуется в программе несколько раз. Ес- ли, например, некоторое значение счетчика используется в 10 различных местах про- граммы, то целесообразно использовать символическое обозначение, например COUNT, и определить значение величины COUNT с помощью псевдокоманды EQU. Теперь если во время отладки программы потребуется изменить величину COUNT, то будет достаточно изменить лишь стро- ку с псевдокомандой EQU, а не вносить из- менения во все места программы, где ис- пользуется конкретное значение счетчика. В качестве примера использования команды EQU рассмотрим следующий фрагмент программы на языке ассемблера микропроцессора 8085: PORTA EQU00 PORTB EQU00 MVI A,0FFH OUT PORTA OUT PORTB ; Присвоение фиктив- ; ного адреса ; Присвоение фиктив- ; ного адреса ; Загрузка в А данных, ; предназначенных ; для вывода ; Инициализация пор- ; та А и порта В
Основы построения систем поддержки разработок 19 Этот пример соответствует ситуации, когда программист, не зная адресов пор- тов А и В, написал программу с использо- ванием фиктивных адресов 00. Как только станут известны фактические адреса пор- тов, их можно будет записать в псевдоко- мандах EQU вместо фиктивных адресов 00. В некоторых ассемблерах требуется, как в рассмотренном выше примере, при- своить значения всем символам прежде чем они будут использованы в тексте про- граммы. Однако в большинстве совре- менных ассемблеров программист может поместить псевдокоманду EQU в любом месте программы. в. Псевдокоманда DEFB или DB (определе- ние байта) используется для определения значений элементов данных и для засылки их в соответствующую область памяти. Эта команда обычно применяется для формирования таблиц данных или для установки начальных значений флагов в программе. Как следует из наименова- ния команды, она предназначена для обра- зования 8-бит значений. Если, например, таблица, состоящая из четырех чисел 45Н, 34Н, 25Н и 0D3H, должна быть размещена в памяти, начиная с адреса 2000Н, то в про- грамме потребуется написать следующие псевдокоманды: ORG 2000Н ; Задание адреса таб- ; лицы TABLE :DB 45Н, 34Н, ; Задание значений 25Н, 0D3H ; элементов таблицы Запятыми в псевдокоманде DB отделяют- ся элементы данных. После ассемблирова- ния этих псевдокоманд в машинной про- грамме в заданной области памяти по- явятся следующие данные: 2000 45 2001 34 2002 25 2003 D3 г. Псевдокоманда DEFWили DW(определе- ние слова), подобно псевдокоманде DB, ис- пользуется для определения значений данных и для помещения их в соответ- ствующую область памяти. Согласно на- званию этой команды, элементу данных выделяется слово (обычно 16-разрядное). Очевидно, что для представления 16-раз- рядного значения в памяти выделяется два байта, или две 8-разрядных ячейки. В боль- шинстве ассемблеров принято хранить младший байт 16-разрядного слова в ячей- ке с меньшим адресом, а старший байт слова в следующей ячейке памяти (с боль- шим адресом). Такой способ размещения данных называют интеловским, поскольку он реализован в микропроцессорах фирмы Intel, которой принадлежит первенство в создании микропроцессоров. С помощью команды DW легко сфор- мировать таблицу данных, однако при этом следует учитывать порядок, в кото- ром принято размещать байты 16-раз- рядных слов. Рассмотрим для примера псевдокоманды, используемые для обра- зования таблицы 16-разрядных значений: ORG 2500Н DATA: DW 4000Н, 2300Н, 4ВСАН Сформированная таблица разместится в памяти машины следующим образом: 2500 00 2501 40 2502 00 2503 23 2504 СА 2505 4В д. Псевдокоманда TITLE (заголовок) ис- пользуется для задания имени объектному модулю, которое будет воспроизводиться в листинге программы. Например, в ре- зультате действия псевдокоманды TITLE MULTIPLICATION ROUTINE' ассемблер будет начинать каждую страни- цу листинга программы с заголовка MULTIPLICATION ROUTINE. е. Псевдокоманда PAGE или EJECT (конец страницы) указывает ассемблеру на необ- ходимость перехода к следующей страни- це листинга. Эта команда используется для размещения исходного текста подпро- грамм или модулей на отдельных страни-
20 Глава 9 цах, что облегчает визуальный анализ тек- ста и отладку отдельных программ. ж. Псевдокоманда SPACE (пустая стро- ка) просто указывает ассемблеру, что не- обходимо пропустить строку листинга. з. Псевдокоманда END (конец) информи- рует ассемблер о том, что исходная программа закончилась, поэтому любой текст, расположенный после команды END, им не воспринимается. Во многих ассемблерах необходимо использовать эту псевдокоманду в явном виде, тогда как в некоторых ассемблерах команда END просто подразумевается после последней обработанной ассемблером строки исход- ного текста программы. и. Псевдокоманда LIST(листинг) является прямым указанием ассемблеру произвести печать полного текста исходной про- граммы. 2. Типы ассемблеров Существует несколько разновидностей ассемблеров, среди которых наиболее рас- пространены однопроходный ассемблер, двухпроходный ассемблер, макроассем- блер, кросс-ассемблер, резидентный ассем- блер и метаассемблер. а. Однопроходный ассемблер. Однопро- ходные ассемблеры появились раньше других: ассемблеры этого типа являются наиболее простыми, но применяются очень редко, поскольку имеют сильное ограничение, заключающееся в запрете ис- пользования ссылок «вперед». В однопроходном ассемблере исходная программа просматривается только один раз. Во время обработки программы каж- дой встретившейся метке присваивается адрес, и она заносится в таблицу. При по- явлении в программе ссылки на метку ас- семблер отыскивает в таблице адрес мет- ки. Если при поиске в таблице метка не обнаруживается (например, в программе использована команда перехода с переда- чей управления вперед), то ассемблер вы- дает сообщение об ошибке. Однопроходные ассемблеры работают очень быстро, поскольку исходная про- грамма транслируется за один проход. Од- нако из-за запрета передач управления вперед однопроходные ассемблеры ис- пользуются очень редко. б. Двухпроходный ассемблер. Принци- пиальное отличие двухпроходного ассем- блера от однопроходного отражено в его названии. Первый просмотр исходного текста программы используется для на- значения адресов всем меткам программы. После образования таблицы, в которой со- держатся все метки с соответствующими адресами, производится второй просмотр, во время которого выполняется трансля- ция исходной программы в объектную программу. В настоящее время двухпроходные ас- семблеры используются наиболее широко. в. Макроассемблер. Макроассемблер пред- ставляет собой двухпроходный ассемблер, который позволяет использовать в исход- ном тексте программы макрокоманды и макроопределения. Макроопределе- ния-последовательности команд, ко- торым программист дает определенное имя. Вместо того чтобы каждый раз зано- во писать одну и ту же последовательность команд, программист записывает в опре- деленных местах исходной программы имена макрокоманд. Например, приводи- мое ниже макроопределение предназначе- но для выполнения сдвига содержимого аккумулятора вправо на 1 разряд и установки в 0 старшего разряда аккумуля- тора: SHFT MACRO ; Задание имени макро- ; команды RRC ; Циклический сдвиг со- ; держимого аккумулято- ; ра вправо ANI 7FH ; Установка в 0 старшего ; разряда аккумулятора ENDM ; Конец макроопределе- ; ния Таким образом задано макроопределе- ние с именем SHFT; чтобы воспользовать- ся этим макроопределением, достаточно в тексте программы написать макроко- манду, как это сделано в следующем примере: LDA TEMP ; Загрузка аккумулятора SHFT ; Макрокоманда SHFT MOV C, A ; Пересылка содержимо- ; го аккумулятора в С SHFT ; Макрокоманда SHFT MOV B, A ; Пересылка содержи мо- ; го аккумулятора в В
Основы построения систем поддержки разработок 21 После ассемблирования этого фраг- мента программы будет получена следую- щая последовательность команд: LDA TEMP ; Загрузка аккумулятора RRC ; Циклический сдвиг со- ; держимого аккумулято- ; ра вправо ANI 7FH ; Установка в 0 старшего ; разряда аккумулятора MOV C, A ; Запись содержимого ак- ; кумулятора в С RRC ; Циклический сдвиг со- ; держимого аккумулято- ; ра вправо ANI 7FH ; Установка в 0 старше- ; го разряда аккумулято- ; ра MOV B, A ; Запись содержимого ак- ; кумулятора в В Механизм макрокоманд принципиально отличается от механизма вызова подпро- грамм в языке ассемблера. Вызов подпро- грамм осуществляется с дополнительной затратой времени микропроцессора. Ког- да в машинной программе микропроцес- сора 8085 встречается команда CALL, ми- кропроцессор сохраняет адрес команды, следующей за командой CALL, и заносит в счетчик команд адрес, заданный в коман- де CALL. Замена имени макрокоманды на последовательность команд реализуется не микропроцессором, а ассемблером. Каждый раз, когда в исходном тексте про- граммы встречается имя макрокоманды, макроассемблер подставляет вместо этого имени последовательность команд ма- кроопределения. В некоторых случаях при разработке программ целесообразнее использовать макрокоманды, а не обычные подпро- граммы. Существуют микропроцессоры, в которых не реализовано специальной поддержки вызова подпрограмм, и, следо- вательно, при программировании для них рационально использование макрокоманд. Иногда программист не желает тратить время процессора на выполнение команд CALL и RET для вызова подпрограммы и возврата из нее; в этом случае использо- вание макрокоманд позволяет прямо включать в программу последователь- ность команд, составляющих макроопре- деление. При использовании макрокоманд про- граммист не должен забывать о том, что макрокоманда может изменить содержи- мое регистров и состояние флагов процес- сора. Если при выполнении макрокоманды устанавливается в 0 определенный флаг, а затем программист, считая, что этот флаг все еще установлен в 1, использует в программе его значение, то при выполне- нии программы произойдет ошибка. В макроассемблерах, так же как и в большинстве двухпроходных ассембле- ров, реализуются средства условного ас- семблирования, которые иногда оказы- ваются очень полезными. В некоторых случаях разрабатываются программы, предназначенные для выполнения в двух или большем количестве вычислительных систем, имеющих незначительные разли- чия в аппаратных средствах. Вместо напи- сания отдельной программы для каждой такой системы может быть разработана одна программа, в которой используется режим условного ассемблирования. В ис- ходной программе определяется неко- торый флаг, который будет принимать значение «истина» или «ложь» в зависимо- сти от того, в какой вычислительной систе- ме должна выполняться данная програм- ма. В тех местах программы, где необхо- димо в зависимости от используемых аппаратных средств варьировать соответ- ствующий набор команд, включается ус- ловный оператор. Применение такого при- ема иллюстрируется следующим приме- ром: SYSTEMA EQU TRUE ; Использует- SYSTEMB EQU FALSE IF SYSTEMA MVI A, 23H ENDIF IF SYSTEMB MVI A,45H ENDIF ; ся система A, ; а система В ; не использу- ; ется Очевидно, что при использовании си- стемы А в аккумулятор будет загружено значение 23Н, в то время как при выборе системы В в аккумулятор загружается зна- чение 45Н. Типичные примеры использования ма- кроассемблеров приведены в гл. 10. г. Кросс-ассемблеры. Кросс-ассемблер мо-
22 Глава 9 жет быть реализован как ассемблер любо- го из рассмотренных выше типов. Отличи- тельной особенностью кросс-ассемблера является то, что он выполняется на одной ЭВМ, а объектные модули формирует в командах другой ЭВМ. Машинный язык ЭВМ, для которой формируется объектная программа, может не совпадать с языком ЭВМ, на которой работает кросс-ассем- блер. Кросс-ассемблеры часто пишут на язы- ках высокого уровня, например на Фор- тране; в таком случае кросс-ассемблер ста- новится машинонезависимым. Например, для микропроцессора 8085 может быть на- писан ассемблер на языке Фортран. Тогда этот ассемблер можно использовать на других машинах, например на микроЭВМ, с микропроцессором 6800. Тот факт, что с помощью различных кросс-ассемблеров на одной машине можно выполнять ассем- блирование программ для различных ми- кропроцессоров, обусловил сравнительно широкое распространение ассемблеров этого типа. д. Резидентный ассемблер. Резидентный ассемблер представляет собой полную противоположность кросс-ассемблеру в том смысле, что он работает на машине, для которой предназначены ассембли- руемые им исходные программы и форми- руемые им объектные модули. Например, ассемблер для микропроцессора 8085, ко- торый написан на языке ассемблера ми- кропроцессора 8085, является рези- дентным. е. Метаассемблер. Метаассемблер являет- ся наиболее мощным ассемблером, по- скольку он может использоваться в самых различных микропроцессорах. Чтобы во- спользоваться метаассемблером, програм- мист сначала определяет правила ассем- блирования для конкретного языка ассем- блера определенного микропроцессора. После этого метаассемблер будет обеспе- чивать трансляцию исходной программы в объектную программу для заданного микропроцессора. 3. Характеристики ассемблеров типичных систем поддержки разработок При выборе ассемблера для системы поддержки микропроцессорных разрабо- ток необходимо иметь ввиду несколько факторов. Почти во всех современных си- стемах поддержки разработок исполь- зуются двухпроходные ассемблеры, одна- ко последние могут оснащаться различны- ми макросредствами с разными возмож- ностями генерации перемещаемых про- грамм (которые могут быть загружены в любую область оперативной памяти), и в них могут быть реализованы различные псевдокоманды. Следует также принимать во внимание затраты времени на работу того или иного ассемблера. Многие эффективные совре- менные ассемблеры позволяют програм- мисту более быстро обрабатывать исход- ную программу. По мере роста объема программирования использование более эффективных ассемблеров приводит к зна- чительной экономии денежных средств. Некоторые ассемблеры позволяют за- писывать в поле операндов сложные ариф- метические и логические выражения, что облегчает процесс программирования. Кроме того, необходимо учитывать, на- сколько легко на языке ассемблера форми- руются таблицы данных и символьные строки. Возможности, предоставляемые ассем- блером, оказывают влияние даже на струк- туру программы. Хороший макроассем- блер позволяет создавать библиотеку макроопределений, которыми могут поль- зоваться несколько программистов, что облегчает процесс разработки программ. Язык ассемблера вместе с хорошо разви- той библиотекой макроопределений при- ближается по своим возможностям к язы- кам программирования высокого уровня. В некоторых случаях основным крите- рием выбора ассемблера является ско- рость трансляции им исходного текста программы. Дело в том, что во время раз- работки программы повторное ассембли- рование приходится выполнять десятки раз. Если время каждого ассемблирования велико, то это приведет к значительному расходу денежных средств на этапе отлад- ки программы. Время ассемблирования типичной программы объемом 8К байт может составлять от 4 до 40 мин. Если ум- ножить это время на 10-20 (число отла- дочных прогонов программы), то станет
Основы построения систем поддержки разработок 23 ясно, какие затраты времени на отладку программ связаны с применением медлен- но работающих ассемблеров. 9.2.3. Обратный ассемблер Обратное ассемблирование, или деас- семблирование, является процессом, обратным по отношению к компоновке программы. Обратный ассемблер обычно используется во время отладки программ для проверки того, что программе на ма- шинном языке в шестнадцатеричном пред- ставлении соответствует именно та про- грамма на языке ассемблера, которую пользователь хотел бы выполнить. Боль- шинство эмуляторов и отладочных про- грамм имеют встроенные обратные ассем- блеры. После обратного ассемблирования некоторого фрагмента машинной про- граммы может быть получен, например, следующий текст: 0100 21 00 05 LXI Н, 0500 0103 06 05 MVI В, 05 0105 AF XRA А При использовании обратного ассем- блирования в процессе отладки программ некоторые ошибки удается найти без обра- щения к листингу исходной программы, поскольку результат обратного ассембли- рования - текст на языке ассемблера- можно выводить непосредственно на экран дисплея. Пример 91 Требуется проанализировать програм- му на языке ассемблера для микропроцес- сора 8085 и определить, каким будет со- держимое ячеек 200АН и 200ВН после ее выполнения: ORG 2009Н DATA EQU 7 MOV А, М MVI В, DATA RET Решение По псевдокоманде ORG в первой стро- ке программы будет установлено значение 2009Н внутреннего счетчика команд ассем- блера. По псевдокоманде EQU для симво- ла DATA определяется значение, равное 7. В первый байт машинной программы 2009Н, адрес которого определяется теку- щим значением счетчика команд ассембле- ра, будет помещен код 7ЕН (MOV А, М). Следующая команда MVI В,DATA обеспе- чивает загрузку в регистр В 8-бит значения символа DATA. Для представления ко- манды MVI В,DATA в памяти машины от- водится два байта: один байт для предста- вления кода операции и адресации реги- стра MVI В (06) и второй-для представле- ния данных. Значение данных определено командой EQU: оно равно 07. Коды ма- шинной программы, соответствующие ко- манде MVI В,DATA, размещаются после кода (или шестнадцатеричного предста- вления) команды MOV А,М. В данном слу- чае адрес, задаваемый внутренним счетчи- ком команд, равен 200АН. Таким образом, будет сгенерирован следующий фрагмент машинной программы в абсолютных адресах: 2009 7Е 200А 06 200В 07 200С С9 Пример 9.2 Необходимо определить содержимое ячейки 2005Н после выполнения следую- щих псевдокоманд: ORG 2002Н TABLE DW 2367,3378 Решение При решении данной задачи нужно иметь в виду две особенности: согласно принятому фирмой Intel правилу размеще- ния данных, первым в порядке увеличения адресов ячеек памяти располагается млад- ший байт 16-разрядного слова, а затем- старший байт; константы в псевдокоманде DW представлены в десятичной, а не в шестнадцатеричной системе счисления. Сначала следует перевести данные из деся- тичной в шестнадцатеричную систему. Анализируя заданные команды, можно за- метить, что в ячейку 2005Н будет загружен
24 Глава 9 старший байт 16-разрядного слова 3378. Выполнив перевод, получим 3378D = 0D32H и 2367d = 093FH. Таким образом, после выполнения заданных псевдокоманд данные разместятся в памяти следующим образом: 2002 3F Шестнадцатеричное пред- 2003 09 ставление десятичного 2367 2004 32 Шестнадцатеричное пред- 2005 0D ставление десятичного 3378 Пример 9.3 Требуется определить содержимое ячейки 2000Н после выполнения следую- щей программы: ORG SYSTEMA EQU SYSTEMB EQU IF MVI MVI RET 2000Н FALSE TRUE SYSTEMA A, 75H B, 1 ENDIF IF SYSTEMB XRA A MVI B, 2 RET ENDIF Решение По команде ORG внутренний счетчик команд примет значение 2000Н. Теперь по- лучаемые в результате ассемблирования машинные команды будут размещаться в памяти, начиная с ячейки, адрес которой определяется внутренним счетчиком ко- манд. Поскольку в программе использо- ваны средства обеспечения условного ас- семблирования, требуется определить, ка- кой фрагмент программы будет ассембли- роваться, а какой нет. Очевидно, что псевдокоманды EQU в данной программе определяют значение TRUE для символа SYSTEMB и значение FALSE для символа SYSTEMA. Следовательно, будет ассем- блироваться модуль, условие компоновки которого проверяется по значению симво- ла SYSTEMB. Первой командой, подлежа- щей ассемблированию, будет команда XRAA, которая имеет шестнадцатеричный код 0AFH. Таким образом, в ячейку с адре- сом 2000Н будет записан код 0AFH. 9.2.4. Редакторы связей Большинство ассемблеров систем под- держки разработок формируют выходной файл, который принято называть объектным. Объектный файл обычно представляет собой перемещаемую про- грамму, которая может быть загружена для выполнения в любое место памяти. Ре- дактор связей предназначен для преобра- зования объектного файла в абсолютный, который содержит программу в абсо- лютных адресах, готовую к выполнению. Образованные таким образом абсо- лютные файлы используются для отла- дочных прогонов программы, а после за- вершения отладки-для программирова- ния ППЗУ. 9.2.5. Загрузчики Загрузчик - это программа, которая по- лучает отредактированный объектный файл и загружает его в память системы поддержки разработок. Загруженная про- грамма готова к выполнению. Наиболее широко распространены загрузчики сле- дующих четырех типов: начальный, абсо- лютный, перемещающий и связывающий. 1. Начальный загрузчик Начальный загрузчик представляет со- бой небольшую программу, которая хра- нится в системах поддержки в двоичном представлении. Эта программа помещает- ся ассемблером перед началом объектной программы и предназначается для выпол- нения загрузки объектной программы в память. Иногда начальный загрузчик- это очень простая программа, которая за- гружает в память основную программу за- грузки. Последняя программа в свою оче- редь производит загрузку объектной про- граммы. 2. Абсолютный загрузчик Абсолютный загрузчик представляет собой простую программу, которая обес- печивает загрузку файла в фиксированную
Основы построения систем поддержки разработок 25 область памяти. Абсолютный загрузчик производит загрузку программы, которая уже является программой в абсолютных адресах. 3. Перемещающий загрузчик Перемещающий загрузчик получает объектный файл и загружает его в про- извольную область памяти. При этом за- грузчик выполняет процедуру перемеще- ния или настройки программы, которая необходима каждый раз, когда требуется перемещение программы из одной обла- сти памяти в область с другими адресами. 4. Связывающий загрузчик Наиболее сложен связывающий загруз- чик, который, подобно редактору связей, может объединить в одну программу не- сколько объектных файлов. Кроме того, связывающий загрузчик может произво- дить загрузку программы в память в абсо- лютных адресах; после такой загрузки программа оказывается готовой к выпол- нению. 9.2.6. Командные файлы В командный файл помещается после- довательность команд, подлежащих вы- полнению системой поддержки. Во время отладки программы программисту прихо- дится многократно вводить в систему од- ну и ту же последовательность команд; ис- пользование командного файла облегчает ему задание и выполнение определенных операций. В типичных ситуациях ко- мандный файл может содержать последо- вательности команд, необходимых для за- грузки программы в эмулятор, для уста- новки параметров эмулятора и для запу- ска программы на выполнение. Примене- ние командного файла уменьшает время, затрачиваемое программистом на ввод указаний системе поддержки. Кроме того, облегчается процесс повторного ввода ко- манд в систему поддержки после того, как оператор допустит ошибку. 9.2.7. Компиляторы для языков высокого уровня Компилятор выполняет перевод исход- ной программы, написанной на языке вы- сокого уровня, например на Фортране, Ко- боле, PL/М, Паскале и т.п., в программу на языке ассемблера или непосредственно в машинные команды. Каждый оператор на языке высокого уровня может трансли- роваться в несколько команд на языке ас- семблера. Благодаря этому пользователь при программировании, не зная детально языка ассемблера, сравнительно быстро пишет тексты программ. Основной недо- статок применения языков высокого уров- ня состоит в том, что компиляторы, как правило, генерируют машинную програм- му, которая уступает по эффективности программе, написанной опытным про- граммистом на языке ассемблера. Про- граммы, вырабатываемые компилятора- ми, требуют больше памяти и медленнее выполняются, чем программы, напи- санные на языке ассемблера. Следует от- метить, однако, что в связи со снижением стоимости ЗУ дополнительные расходы памяти при реализации языков высокого уровня становятся все менее суще- ственным недостатком. 9.2.8. Интерпретаторы В отличие от компиляторов интерпре- таторы языков высокого уровня не про- изводят трансляцию исходной программы в программу на языке ассемблера. Интер- претатор, например, языка Бэйсик обеспе- чивает пооператорное, непосредственное выполнение исходной программы, напи- санной на языке высокого уровня. Основным достоинством интерпрета- торов является простота реализации диа- логового режима работы. Пользователь может написать интерактивную програм- му, запустить ее на выполнение, просле- дить за получением результата, отредакти- ровать в целях ее коррекции и затем снова запустить программу. Таким образом, упрощается длительный цикл, состоящий
26 Глава 9 в редактировании текста программы с по- мощью текстового редактора, ассембли- ровании, редактировании связей и загрузке программы. Большим недостатком интерпретато- ров является низкая скорость процесса ин- терпретации. Поскольку все операторы программы на языке высокого уровня дол- жны интерпретироваться заново каждый раз, время выполнения всей программы оказывается большим. Однако следует учитывать, что этот фактор не всегда кри- тичен. Некоторые программы, испол- няемые в режиме интерпретации в 10 раз медленнее, чем программы, написанные на языке ассемблера, обеспечивают тем не менее получение результата с приемлемой задержкой. 9.2.9. Мониторы Монитор-это программа, управляю- щая функционированием всей системы поддержки разработок. В состав монитора входят системные аппаратнозависимые программы, которые обеспечивают связь разрабатываемых пользователями про- грамм со средствами ввода-вывода си- стемы поддержки разработок. Обычно мо- нитор организует связь программ со средствами ввода-вывода посредством передачи параметров между подпрограм- мами. При этом программе пользователя не нужно знать фактического адреса устройства ввода-вывода, например печа- тающего устройства. Она должна лишь переслать подлежащий выдаче на печать знак в определенный регистр и затем вы- звать подпрограмму вывода на печатаю- щее устройство. Такой модульный подход к организации ввода-вывода обеспечивает большую степень независимости про- грамм от устройств ввода-вывода и облег- чает перенос программ из одной системы в другую. 9.2.10. Операционные системы Операционные системы иногда назы- вают расширенными мониторами, однако на самом деле между ними имеются прин- ципиальные различия. Наиболее развитые операционные системы позволяют рабо- тать с системой поддержки многим поль- зователям одновременно. Операционная система автоматически распределяет внешнюю память большого объема и обеспечивает организацию и ведение файлов. В некоторых операционных систе- мах реализуется защита файлов пользова- теля с помощью паролей, что исключает возможность случайных изменений файла другим пользователем. В большинстве операционных систем есть встроенные служебные системные программы, которые облегчают пользова- телю работу с файлами. В частности, имеются служебные программы формиро- вания файлов, удаления файлов, их копи- рования и т.п. Благодаря операционной системе поль- зователь освобождается от таких трудоем- ких работ, как управление памятью и фай- лами, и может сконцентрировать свое внимание на создании эффективных про- грамм. 9.3. Консоли операторов систем поддержки микропроцессорных разработок1) В системах поддержки разработок ис- пользуются пульты операторов (консоли) разных типов; назначение пульта опера- тора-ввод и отображение данных. В табл. 9.1 представлены характеристики пяти типов таких консолей. В простейших пультах для отображения информации ис- пользуются обычные индикаторные лам- почки, а для ввода данных - тумблеры; на- иболее совершенные пульты строятся на основе высокоскоростных экранных дис- плеев. В некоторых современных мини- машинах все еще можно увидеть лицевую панель, оснащенную индикаторными лам- пами и тумблерами; такого рода панели использовались в первых ЭВМ, и примене- ние их выглядит сегодня анахронизмом. Используя для ввода данных тумблеры, п Этот материал взят извлечением из статьи В. Gladstone, “Comparing Microcomputer Development System Capabilities”, Computer Design, Feb. 1979.
Основы построения систем поддержки разработок 27 Таблица 9.1. Типы пультов операторов и время выполнения основных функций по отладке и редактированию Тип пульта оператора Примеры примене- ния Время выполнения отладочных опера- ций Время выполнения опера- ций редактирования Индикаторные лампоч- Передняя панель 10 мин При редактировании не ки и тумблеры Imsai, Altair используются Клавиатура и индика- Intel SDK-85 180 с При редактировании не тор шестнадцатеричных чисел KIM-1 используются Печатающий терминал Motorola 120 с; в основном 48 с; необходимо полу- с отладочным монито- время печати чение листинга для кон- ром в ППЗУ троля введенной прог- раммы Экранный терминал со Tektronix 80 с 240 с; необходимо полу- скоростью вывода 120— Intel чение листинга для кон- 960 знак/с и отладоч- троля текста програм- ным монитором мы Дисплей на ЭЛТ с па- General 40 с 90 с; редактирование по мятью и регенерацией HP 64000 контексту изображения Примечания. Время выполнения операций при отладке указано для стандартного контрольного примера, состоящего в задании точки останова и прогоне программы, анализе содержимого регистра и 32 байт памяти, вставлении в программу 5 команд, повторном выполнении программы, анализе содержимого регистров и продолжении выполнения программы. Время выполнения операции редактирования указано для следующего стандартного примера. изменение двух строк текста, удаление трех строк текста программы, включение пяти строк в текст программы Считается, что все данные находятся в памяти. а для вывода информации индикаторные лампочки, можно проводить только при- митивные процедуры отладки. В неко- торых мини-ЭВМ, например в машинах серии Eclipse фирмы Data General, все еще используется принцип ввода и отображе- ния данных, похожий на организацию вво- да-вывода, за исключением того, что вме- сто них для ввода и вывода применяется последовательный терминал. Данные вво- дятся в восьмеричном представлении, как и в первых мини-ЭВМ фирмы Data Genaral, но вместо переключения тумбле- ров здесь приходится нажимать клавиши терминала. Ответ микроЭВМ на запрос либо отображается на экране, либо во- спроизводится печатающим устройством. Несмотря на такое усовершенствование, отладка программ с применением опи- санных технических средств ввода и ото- бражения информации оказывается ис- ключительно утомительным делом. Первое усовершенствование систем поддержки разработок состояло в доба- влении к оборудованию печатающего устройства и использовании отладочных программ, или отладчиков. Отладчики, ориентированные на работу с медленно действующими печатающими устройства- ми (обычно это бывает телетайп, работаю- щий со скоростью 10 знак/с), в силу низкой скорости обмена данными действовали медленно и неуклюже. Телетайпы были вскоре заменены пультами другого типа: дешевыми устройствами с клавиатурой и индикатором для отображения данных в шестнадцатеричном представлении, а также высокоскоростными экранными терминалами. Клавиатура и индикатор для ввода и отображения информации в шестнадца- теричном представлении являются в на- стоящее время наиболее дешевыми сред- ствами ввода-вывода, используемыми в системах поддержки разработок. Инфор- мация, которая раньше вводилась путем переключения тумблеров, теперь наби- рается на клавиатуре. Вместо переключе- ния от восьми до шестнадцати тумблеров для ввода данных теперь достаточно на- жать две или четыре клавиши. Сокращение объема манипуляций при вводе данных
28 Глава 9 уменьшает вероятность ошибки в процессе ввода, однако такая клавиатура позволяет вводить лишь ограниченный набор знаков. Двоичные индикаторы на лампочках заме- нены теперь индикаторами на светоизлу- чающих диодах, объединяемых в 7-сег- ментную структуру. Обычно применяют 6-элементные индикаторы: четыре элемен- та для представления адреса и два - для представления данных. Во многих системах поддержки разра- боток используются высокоскоростные экранные терминалы, которые, функцио- нируя по тем же принципам, что и обы- чные телетайпы, ускоряют работу про- граммы-отладчика. Высокое быстродей- ствие таких дисплеев позволяет увеличить скорость передачи данных, однако многие системы еще не снабжены программными средствами, необходимыми для реализа- ции тех преимуществ, которые может дать использование экранных терминалов. В наиболее развитых и совершенных макетных системах поддержки разработок используются терминалы на ЭЛТ с па- мятью и прямой регенерацией изображе- ния, которые действительно обеспечивают высокую скорость взаимодействия с систе- мой. Редактирующие программы и про- граммы отладки проектируются с учетом особенностей функционирования высоко- скоростных терминалов на ЭЛТ с непос- редственной регенерацией информации. Рациональное использование этих воз- можностей обеспечивает оперативное взаимодействие пользователя и системы поддержки. К примеру, во время отладки программы содержимое регистров и памя- ти может быть выведено на экран без взаи- модействия программы пользователя с си- стемой (по запросу к отладчику на вывод содержимого регистров). Современное со- стояние и тенденции в области проектиро- вания системы поддержки микропроцес- сорных разработок свидетельствуют о том, что в большинстве новых систем бу- дут использоваться высокоскоростные терминалы с непосредственной регенера- цией изображения. 9.4. Используемые запоминающие устройства большой емкости1) В современных системах поддержки микропроцессорных разработок исполь- зуются три типа запоминающих устройств большой емкости: на магнитной ленте, на гибких магнитных дисках и на жестких магнитных дисках. Кроме того, для хране- ния данных находит применение перфо- лента. В частном случае система поддерж- ки разработок может вообще не иметь запоминающих устройств большой емко- сти. 9.4.1. Системы поддержки разработок без ЗУ большой емкости Легко себе представить, что системы поддержки разработок, не имеющие устройств массовой памяти, могут обеспе- чить только примитивный уровень под- держки разработок. Действительно, если разработчик имеет в своем распоряжении только одноплатную микроЭВМ с клавиа- турой и индикатором данных в шестнадца- теричном представлении, то он может только вводить данные в машинном коде и запускать программу на выполнение. Во время отладки, конечно, могут быть сде- ланы изменения в программе, но докумен- тировать эти изменения при отсутствии внешних запоминающих устройств при- дется вручную. 9.4.2. Использование перфоленты Бумажная лента в качестве носителя информации широко использовалась в те- чение многих лет и до сих пор еще приме- няется в некоторых системах и устрой- ствах. Она имеет низкую стоимость и обеспечивает высокую надежность хра- Этот материал является извлечением из статьи В. Gladstone, “Comparing Microcomputer Development System Capabilities”, Computer Design, Feb. 1979.
Основы построения систем поддержки разработок 29 нения данных, чего нельзя сказать о других рассматриваемых здесь носителях инфор- мации. Для выполнения различных опера- ций с бумажной лентой обычно исполь- зуется телетайп, который имеет встроен- ное устройство считывания с бумажной перфоленты и встроенный ленточный пер- форатор. Телетайп, оснащенный этими устройствами, фактически образует це- лостный модуль, состоящий из пульта опе- ратора и ЗУ большой емкости. Большим недостатком перфоленты являются низкая скорость считывания с нее информации и низкая скорость перфорации. Типичные телетайпы выполняют операции с перфо- лентой со скоростью 10 знак/с. Суще- ствуют высокоскоростные устройства пер- форации и быстродействующие считыва- тели перфоленты, но и их скорость оказывается низкой по сравнению со ско- ростью, достигаемой при использовании других носителей информации. 9.4.3. Кассетные магнитоленточные ЗУ Кассетные запоминающие устройства на магнитной ленте широко применяются в ЭВМ для домашнего использования и в некоторых дешевых вычислительных си- стемах для решения коммерческих задач. Это связано с тем, что магнитная лента представляет собой сравнительно де- шевый носитель, имеющий при этом боль- шую емкость. Типичные кассетные запо- минающие устройства выполняют опера- ции по считыванию и записи в 3-40 раз быстрее, чем считыватели и перфораторы бумажной ленты. Системы поддержки ми- кропроцессорных разработок, имеющие кассетные запоминающие устройства на магнитной ленте и снабженные хорошими программными средствами, могут быть чрезвычайно мощными средствами разра- ботки. 9.4.4. ЗУ на гибких дисках Одним из наиболее популярных мас- совых ЗУ является запоминающее устрой- ство на гибких магнитных дисках. Диа- метр используемых гибких дисков равен 5 1 /4, или 8 дюйм. Емкость памяти на одном гибком диске может составлять от 250К байт (при записи на одной его сторо- не), до 1 млн. байт (в двухсторонних ди- сках с удвоенной плотностью записи) и да- же более. Скорость передачи данных между устройством памяти на гибких ди- сках и системой поддержки разработок обычно превышает 1000 знак/с. Распространенные в настоящее время системы поддержки разработок обычно имеют два или больше запоминающих устройства на гибких магнитных дисках с диаметром 8". Они снабжаются быстро- действующим экранным редактором, ас- семблером и программой отладки. Ис- пользуя такую систему поддержки разра- боток, проектировщик программ будет эффективно отлаживать программы. Не- достатком систем с гибкими дисками является то, что обеспечиваемого ими объема памяти в 1 млн. байт иногда оказывается недостаточно для разработки программ. 9.4.5. ЗУ на жестких магнитных дисках Запоминающие устройства на жестких магнитных дисках являются наиболее мощными из всех доступных современных устройств. Большинство таких ЗУ имеет стационарные диски; лишь в некоторых очень больших системах используются съемные пакеты магнитных дисков, ко- торые напоминают большую стопку грам- мофонных пластинок. Даже небольшие системы на жестких дисках имеют объем памяти, достигаю- щий 5-20 млн. байт, и скорость передачи данных, значительно превышающую бы- стродействие ЗУ на гибких дисках. Объем памяти на жестких дисках оказывается до- статочным для поддержки работы многих пользователей. Кроме того, в системах с жесткими дисками может быть обеспече- на поддержка одновременного функциони- рования нескольких станций, или або- нентских пунктов, за которыми рабо- тают разработчики микропроцессорных устройств.
30 Глава 9 9.5. Архитектурные принципы построения систем поддержки разработок По своей архитектуре системы под- держки микропроцессорных разработок можно разделить на два класса: с главным и подчиненным процессорами и однопро- цессорные. 9.5.1. Система с главным и подчиненным процессорами В системе этого типа главный процес- сор организует процесс разработки, в част- ности выполняет редактирование, ассем- блирование и т.д. Кроме того, главный процессор управляет запоминающими устройствами большой емкости и обра- батывает необходимую информацию при реализации ввода-вывода (на экран, на пе- чатающее устройство и т.д.). Программные средства системы под- держки разработок реализуются на глав- ном процессоре, тип которого обычно не совпадает с типом подчиненного (целево- го) процессора. Подчиненный микропро- цессор, как правило, подключается к ма- кетному образцу пользователя с помощью 40-контактного разъема (число контактов зависит от типа процессора), через ко- торый обеспечивается также связь подчи- ненного процессора с главным. На рис. 9.3 Рис. 9.3. Архитектура системы поддержки раз- работок с главным и подчиненным процес- сорами. приведена типичная конфигурация си- стемы с главным и подчиненным процес- сорами. В некоторых системах поддержки раз- работок, например в системе HP 64000, си- стемная шина полностью отделена от шины эмулятора; следствием такого раз- деления является использование для эму- ляции отдельного блока памяти. При этом оказывается возможным осуществлять ав- тономное управление выполнением про- грамм на целевом процессоре, продолжая процесс эмуляции без использования глав- ного процессора. Достоинством такой ор- ганизации системы является то, что в пе- риод, когда подчиненный процессор вы- полняет эмуляцию, главный процессор может осуществлять редактирование, ас- семблирование и т. п. Следовательно, раз- работчик может начать процесс эмуляции, выйти из программы эмулятора и через некоторое время снова вернуться к ее выполнению. Еще одним достоинством архитектуры системы с разделенными шинами является то, что программы операционной системы для главного процессора необходимо раз- рабатывать только один раз, т. е. опера- ционная система не зависит от того, какой тип подчиненного процессора подлежит эмуляции. Если требуется эмулировать новый тип подчиненного процессора, то в системе необходимо заменить только ин- терфейс с эмулятором. К недостаткам архитектуры системы с главным и подчиненным процессорами относится разделение ее памяти на изоли- К прототипу
Основы построения систем поддержки разработок 31 рованные блоки. Такая организация памя- ти приводит к определенным трудностям при работе с некоторыми системами. Не- достатком является и высокая стоимость системы с главным и подчиненными про- цессорами. Однако если в таких системах можно одновременно запускать два эму- лятора, как например, в системах фирмы Intel, то благодаря росту производитель- ности системы ее применение может ока- заться экономически выгоднее, чем ис- пользование двух отдельных систем под- держки разработок. 9.5.2. Система с одним процессором В системе с одним процессором и си- стемные функции, и процесс эмуляции вы- полняются единым процессором. Струк- турная схема системы с одним процессо- ром представлена на рис. 9.4. Процессор системы, во-первых, выпол- няет системные программы, а во-вторых, он действует как целевой процессор. По- скольку в системе имеется лишь один про- цессор, системное программное обеспече- ние должно переписываться заново для каждого типа эмулируемого процессора. Так как системное программное обеспече- ние и программа эмулятора занимают од- ну и ту же область ОЗУ, в процессе эмуля- Рис. 9.4. Архитектура системы поддержки раз- работок с одним процессором. ции может быть использована не вся память. Это обстоятельство приводит к неудобствам, если разработке подлежит сложный опытный образец. Стоимость систем с одним процессо- ром сравнительно невысока, поскольку при такой архитектуре требуется меньше оборудования, чем в системе с главным и подчиненным процессорами. Однако, как упоминалось выше, стоимость си- стемы будет решающим фактором только в тех случаях, когда необходимо создать макетную систему для разового использо- вания. 9.6. Отладка программного и аппаратного обеспечения В хорошо спроектированной макетной системе процесс разработки проходит в три этапа: отладка программных средств, отладка аппаратных средств и со- вместная отладка тех и других. Наблю- дается тенденция слияния указанных эта- пов в один объединенный процесс ком- плексной отладки. Для осуществления такой комплексной отладки система под- держки разработок должна включать не- сколько подсистем. При этом основные функции по отладке программных средств возлагаются на отладчики, в то время как необходимые функции по аппаратной от- ладке выполняются с помощью внутрис- хемного эмулятора. Установочная колодка
32 Глава 9 9.6.1. Внутрисхемные эмуляторы Внутрисхемный эмулятор позволяет подключить систему поддержки разрабо- ток к разрабатываемой системе. Он на- кладывает очень незначительные ограни- чения (если таковые вообще имеют место) на создаваемые аппаратные средства. Подлежащая разработке аппаратура ре- ализуется с расчетом на то, что эмулятор действует подобно целевому микропро- цессору. Следовательно, разработчику нет необходимости самому учитывать особен- ности системы поддержки разработок. Преимущества использования эмуля- тора очевидны. Если в состав разрабаты- ваемой аппаратуры включен реальный це- левой процессор, то разработчик не имеет возможности контролировать выполнение программы. Даже если разработчик при создании аппаратных средств предусма- тривает некоторые внешние ключи и инди- каторы, то необходим системный монитор для выполнения хотя бы некоторых проце- дур отладки на прототипе. Процесс отлад- ки с использованием таких средств оказы- вается очень трудоемким и малоэффек- тивным; при наличии эмулятора необхо- димость в таком подходе отпадает. Если аппаратура прототипа работает совместно с эмулятором, то разработчик имеет воз- можность полного контроля хода выпол- нения программы. Еще одно преимущество эмулятора со- стоит в том, что он позволяет работать с макетной системой даже тогда, когда ап- паратные средства прототипа реализо- ваны не полностью. Большинство эмуля- торов может вырабатывать свои соб- ственные синхронизирующие сигналы. Следовательно, нет необходимости в гене- рации синхросигналов непосредственно в прототипе. Если в прототипе еще отсут- ствует собственная память, то эмулятор может использовать вместо нее память си- стемы (иногда свое ЗУ). 9.6.2. Отладчик Отладчик в системе выполняет две ос- новные функции: во-первых, он позволяет разработчику задавать желаемые условия выполнения программы и контролировать ход ее выполнения, а во-вторых, предоста- вляет разработчику средства управления процессором эмуляции прототипа. На практике эти две функции обычно выпол- няются совместно, поскольку программа отлаживается на аппаратных средствах прототипа с использованием внутриси- стемного эмулятора. Большинство отладчиков обеспечи- вают очень полезную возможность веде- ния отладки с использованием символиче- ских обозначений вместо шестнадцате- ричных машинных кодов. Чтобы оценить значение отладки с при- менением символических обозначений, рассмотрим следующий пример. Во время отладки прототипа разработчик часто обращается к определенной ячейке памя- ти. Поскольку разработчик программы обычно пишет ее на языке ассемблера с применением мнемоник и символических обозначений, он привыкает к их использо- ванию. Чтобы найти абсолютный адрес, соответствующий определенному симво- лу, пользователь может обратиться к ли- стингу, выдаваемому после редактирова- ния связей (компоновки) программы, так же, как и к листингу, выдаваемому ассем- блером. Если пользователь многократно определяет абсолютный адрес на основа- нии соответствующих листингов, то на это расходуется очень много времени. Отлад- чик, в котором используются символиче- ские обозначения, имеет собственную та- блицу символов, содержащую имена (сим- волы) и их абсолютные адреса. Используя такой отладчик, разработчик может про- сто ссылаться на любой из символов про- граммы, не зная его абсолютного адреса. Например, если должна быть выполнена некоторая программа, первая команда ко- торой имеет метку (имя), допустим, START, то при отладке пользователь дол- жен просто дать команду отладчику на- чать выполнение программы с метки START. При этом пользователь не знает, где находится команда с меткой START в памяти. 9.6.3. Отладка с помощью эмулятора Используя эмулятор, можно хорошо систематизировать процесс отладки аппа-
Основы построения систем поддержки разработок 33 ратных и программных средств. Основное правило проведения отладки заключается в разбиении этого процесса на возможно более мелкие шаги и в детальной проверке выполнения каждого шага. С использованием эмулятора легко провести основную проверку аппаратных средств. Чтобы выполнить определенную команду на аппаратных средствах прото- типа, достаточно с помощью пульта си- стемы поддержки разработок ввести не- сколько простых команд. Результаты вы- полнения команды аппаратными средства- ми прототипа, представляемые либо све- тоизлучающими индикаторами, либо со- стоянием релейных элементов, могут быть проанализированы визуально или с по- мощью простейшей испытательной аппа- ратуры. Подобным же образом для тести- рования режимов ввода данных в разра- батываемую систему с помощью эмулято- ра можно моделировать команду ввода. Если в работе проектируемой аппаратуры обнаруживаются неполадки, то с по- мощью эмулятора можно организовать простые циклы, заключающиеся в много- кратном выполнении одной и той же ко- манды. С помощью таких циклов пользо- ватель может прослеживать сигналы в схеме с целью отыскания неисправности. После отладки аппаратных средств прототипа можно производить отладку программ, использующих данные аппа- ратные средства. На этапе отладки про- граммных средств можно убедиться в дей- ствительной полезности отладчика. При отладке программных средств ис- пользуются два основных метода: поша- говое выполнение программы и трасси- ровка программы. В пошаговом режиме после завершения выполнения каждой ко- манды требуется вмешательство операто- ра для инициирования следующей ко- манды. В режиме трассировки команды выполняются одна за другой, а после за- вершения каждой команды содержимое регистров и информация о состоянии про- цессора отображаются на экране ЭЛТ. В обоих указанных режимах отладки про- цессор не работает в реальном времени, поэтому дефекты, связанные с временны- ми параметрами программы, например слишком медленное выполнение от- дельных циклов, не могут быть обнару- жены с помощью этих двух методов отладки. Некоторые отладчики, работающие в пошаговом режиме, отображают содер- жимое регистров и информацию о состоя- нии памяти после завершения очередной команды процессора только по указанию пользователя. Такой режим отладки со- пряжен с очень большими затратами времени пользователей. Однако в более совершенных отладчиках пользователь может заранее указывать, какие данные подлежат отображению (например, ре- гистры или часть памяти). В дальнейшем пользователь перед каждым новым шагом отладки подает команду на отображение, используя только одну клавишу. После за- вершения каждого шага отладки на экране ЭЛТ автоматически обновляется инфор- мация, интересующая пользователя. Такой метод отладки более эффективен, чем ме- тод, описанный выше. Режим трассировки подобен автомати- ческому режиму пошагового выполнения программы. Разработчик определяет, ка- кие данные должны отображаться после завершения выполнения каждой команды (обычно отображаются только содержи- мое регистров и информация о состоянии процессора), и затем запускает отладчик с определенной точки программы. После выполнения каждой команды на экране появляются новые данные, и затем выпол- няется следующая команда. Даже если ка- жется, что трассировка выполняется бы- стро, следует помнить, что ее скорость по крайней мере в 500 раз ниже скорости вы- полнения программы в реальном времени. Как правило, фактором, ограничивающим скорость трассировки, является низкое бы- стродействие устройств отображения. Ес- ли для вывода данных в процессе трасси- ровки используется телетайп, то трасси- ровка будет проходить чрезвычайно мед- ленно. Применение устройства отображе- ния на ЭЛТ с последовательным режимом передачи данных ускорит этот процесс примерно в 10 раз. Когда реализуется любой метод отлад- ки с применением дисплея с памятью и не- посредственной регенерацией изображе- ния, процесс отладки вследствие уменыпе-
34 Глава 9 ния затрат времени на обновление данных на экране значительно ускоряется. После отладки отдельных модулей программы во избежание напрасного рас- хода времени вряд ли целесообразно по- вторять их выполнение в пошаговом режи- ме или режиме трассировки. Многие современные отладчики позволяют зада- вать контрольные точки останова про- граммы; средства, реализующие эту воз- можность, позволяют разработчику указывать адрес команды программы, с которой он будет начинать выполнение процедуры отладки. Затем программа вы- полняется безостановочно до тех пор, пока эмулятор не обнаружит контрольную точ- ку останова. После останова пользователь может приступить к отладке в пошаговом режиме или в режиме трассировки. Как указывалось выше, точки останова вводят- ся на месте тех или иных команд про- граммы. Однако некоторые отладчики по- зволяют задавать остановы по определен- ному адресу записи и/или считывания из памяти. Это исключительно удобно в слу- чае, когда программа выполняется непра- вильно, а пользователь не знает, почему изменяется содержимое определенной ячейки памяти. Тогда пользователь задает останов по адресу ячейки, в которую про- изводится ошибочная запись, и запускает эмулятор. При выполнении записи в ячей- ку с заданным адресом или считывания из нее эмулятор останавливается и разработ- чик может установить, корректно ли ис- пользуется в программе интересующая его ячейка. В наиболее совершенных совре- менных отладчиках, допускающих приме- нение символических обозначений, пользо- ватель может указывать точку останова программы без определения абсолютных адресов. Во время выполнения всех этапов от- ладки везде, где это возможно, целесоо- бразно использовать аппаратные средства прототипа. Благодаря такому подходу удается задавать фактические входные сиг- налы и данные и наблюдать выходные сиг- налы и данные, вырабатываемые аппа- ратными средствами прототипа. Боль- шинство хорошо спроектированных эму- ляторов позволяет вести отладку с исполь- зованием аппаратных средств различного уровня. В частности, программы могут эмулироваться с организацией режима прерываний или режима ПДП, что обеспе- чивает большую гибкость при отладке программно-аппаратных средств. 9.6.4. Отладка в реальном времени Если проектируется микропроцессор- ная система, предназначенная для работы в реальном времени, то по ряду причин (например, из-за необходимости реализа- ции циклов с заданным временем выпол- нения) нельзя осуществить отладку про- грамм с применением обычного пошаго- вого режима, или режима трассировки. Пусть, например, необходимо создать многократно исполняемую программу, каждый цикл которой должен укладывать- ся в 10 мс. Зная частоту тактового генера- тора, можно установить, что за 10 мс про- цессорного времени успеет выполниться около 1000 команд микропроцессора. Для определения того, что в цикле исполняется не более 1000 команд, можно использовать пошаговый режим отладки, или трасси- ровки. Однако значительно проще выпол- нить программу в реальном времени и ис- пользовать осциллограф для проверки времени выполнения цикла. Для отладки в реальном времени во многих системах поддержки разработок имеются логические анализаторы или средства трассировки программ в реаль- ном времени. Такие средства, объеди- ненные в систему, во многом подобны уни- версальным логическим анализаторам. Средства отладки в реальном времени имеют следующие типичные отличия от универсальных анализаторов: 1. Анализаторы, включаемые в си- стемы поддержки разработок, обычно не приспособлены для обнаружения тонких аппаратных ошибок синхронизации. 2. Анализаторы систем поддержки раз- работок постоянно задействованы в систе- ме, и их входы постоянно связаны с шиной эмулятора. В связи с этим анализаторы си- стем поддержки оставляют ограниченное число незанятых линий для тестирования каких-либо других сигналов. 3. Анализаторы систем поддержки раз- работок эффективны для обнаружения
Основы построения систем поддержки разработок 35 программно-аппаратных ошибок в проек- тируемой системе; программные средства системы поддержки разработок помогают использованию в интерпретации данных, собранных анализатором. В анализаторах систем поддержки раз- работок используется быстродействую- щая память, организованная в виде 256 64-разрядных слов. Эта память исполь- зуется анализатором во время эмуляции в реальном времени для накопления данных. Кроме того, в состав оборудова- ния анализатора входят схемы обеспече- ния останова в заданной точке программы (эти аппаратные средства аналогичны опи- санным выше программным средствам обеспечения останова программы в задан- ной точке). Счетчики задержек исполь- зуются для выработки сигнала начала трассировки через заданное время после запуска анализатора; таймеры и схемы се- лекции позволяют записывать в память только определенные комбинации битов на шинах эмулятора. Счетчики задержек оказываются очень полезными при отлад- ке программных временных задержек. С их помощью можно, установив анализа- тор в режим ожидания, запустить его по- сле того, как некоторый цикл выполнится заданное число раз. Некоторые анализа- торы позволяют задавать сложные после- довательности условий запуска анализато- ра. Например, в тех случаях, когда подряд должны выполняться некоторые сходные программы, пользователь может не запу- стить трассировку до тех пор, пока не ре- ализуется определенная последователь- ность условий. Для управления аппаратными сред- ствами анализатора используются про- граммы отладчика, благодаря чему дости- гается повышение эффективности исполь- зования анализатора. Поскольку для ре- ализации режима трассировки и режима пошагового выполнения программ чаще всего используется один и тот же отлад- чик, переход от одного режима к другому должен осуществляться сравнительно про- сто. Для отображения информации в про- цессе работы отладчика, включая данные, собранные логическим анализатором, ис- пользуется экранный терминал системы поддержки разработок. Это позволяет раз- работчику знакомиться и работать с одной системой, а не применять для отладки про- тотипа различную испытательную аппара- туру. Когда для проведения отладки в режи- ме реального времени используется анали- затор, производятся постоянное считыва- ние данных с шины эмулятора и запись их в памяти анализатора. Анализатор про- должает записывать данные в память до тех пор, пока ему не встретится предвари- тельно заданная точка останова. Если ока- жется заполненной вся память анализато- ра, то новые данные будут записываться на место уже накопленных. Следователь- но, в анализаторе, объем памяти которого равен 256 словам, хранится только 256 по- следних слов данных. В отличие от отладчика, работающего в режиме трассировки, логический анали- затор позволяет производить съем только «внешней» информации микропроцессора, например адресов и данных. С его по- мощью нельзя отображать содержимое регистров микропроцессора. Если анали- затор используется совместно с отладчи- ком, работающим в режиме трассировки или режиме пошагового выполнения про- грамм, то могут быть обнаружены и устранены почти все неисправности микропроцессора. Ряд анализаторов не имеет никаких внешних входов (например, анализатор HP 64000), но есть и такие, в которых они предусмотрены (например, в Intel ICE-85 кроме обычных шинных входов, реализо- вано 18 внешних входов). 9.6.5. Место отладки в процессе проектирования Отладка некоторой микропроцессор- ной системы представляет собой по суще- ству итеративный процесс тестирования, исправления ошибок и повторного тести- рования. Этот процесс продолжается до тех пор, пока в отлаживаемой системе об- наруживаются ошибки. Когда некоторое устройство или система реализуются по- лностью аппаратно, обычно разрабаты- вается опытный образец и проводится его испытание. Если обнаруживается ошибка, то придумывается способ ее исправления
36 Глава 9 и соответствующие изменения вносятся в схему. Затем разработчик исправляет до- кументацию по данной схеме и снова вы- полняет ее тестирование. При проектировании микропроцес- сорных систем итеративный процесс те- стирования применяется как для аппарат- ной части системы, так и для программно- го обеспечения. После обнаружения ошиб- ки в программе производится ее устране- ние. Для этого исходный текст программы корректируется с помощью редактора, ас- семблируется, а полученная объектная программа обрабатывается редактором связей и снова эмулируется. Итеративную процедуру тестирования и устранения ошибок принято называть циклом проек- тирования. Производительность системы под- держки микропроцессорных разработок можно оценить посредством анализа ци- кла проектирования. Если в качестве при- мера рассмотреть типичную программу на языке ассемблера, имеющую объем 2К, то время выполнения одного цикла с исполь- зованием неэффективной системы под- держки разработок составит 3-4 ч. Это время цикла не включает ни время редак- тирования ни время отладки. Применение современной системы поддержки разрабо- ток, имеющей память на дисках, дает вре- мя цикла, близкое к 15 мин (это время включает и получение печатной копии про- граммы). Если в системе поддержки разра- боток используется отладчик, допускаю- щий применение символических обозначе- ний, то листинг программы можно не получать. Это приводит к сокращению времени цикла уже до 2-3 мин. Такое не- большое время цикла получено в предпо- ложении, что в системе поддержки разра- боток реализована возможность организа- ции командных файлов, благодаря ко- торым с помощью одной директивы можно выдать команды на ассемблирова- ние, редактирование связей и загрузку программы. Как показывает приведенный выше пример, современные системы поддержки разработок обеспечивают большую эконо- мию времени при создании микропроцес- сорных систем. Однако далеко не самооче- видно утверждение, что, только используя хорошую систему поддержки разработок, можно получить хорошую программную документацию. Когда для разработки про- граммы используется макетная система, не обладающая развитыми функцио- нальными возможностями, у пользователя появляется большое искушение сделать небольшие изменения в программе, пред- ставленной в шестнадцатеричном коде, и не выполнять ее последующее редакти- рование и ассемблирование. Легко пред- ставить себе, в какую ловушку попадает пользователь, если ему приходится полдня изменять программу и получать новый ли- стинг. С другой стороны, если процесс по- лучения новой документации высоко авто- матизирован и осуществляется так же быстро, как в современных системах под- держки разработок, то весьма вероятно, что документация будет соответствовать прототипу. 9.7. Языки высокого уровня для микроЭВМ Из языков высокого уровня в ми- кроЭВМ обычно используются Бэйсик, Фортран, PL/М, Паскаль и Кобол. В табл. 9.2 представлены характеристики этих пяти языков, которые выявляют их достоинство и недостатки. В настоящее время очень широкое распространение в качестве языка высокого уровня для ми- кропроцессоров получил язык Паскаль. Одной из причин этого является удобная структурированная основа Паскаля. В на- стоящем разделе язык Паскаль будет опи- сан подробнее, чем другие упомянутые вы- ше языки. 9.7.1. Бейсик1) Бэйсик легко изучать, но, поскольку для исполнения написанных на языке про- грамм применяется интерпретатор, время выполнения Бэйсик-программ оказывает- ся большим, а для реализации самого ин- терпретатора требуется довольно значи- тельный объем памяти. Работают интер- п Материалы этого раздела печатаются с разрешения фирмы Intel.
Основы построения систем поддержки разработок 37 Таблица 9.2. Достоинства и недостатки различных языков высокого уровня (с разрешения фирмы Intel) Характеристики языков Языки программирования Бейсик Фортран PL/M Паскаль Кобол Простота изучения (1 - легко, 5-трудно) 1 2 3 3 5 Легкость программиро- вания (при написании коротких и больших программ) 1-легко, 5- трудно Короткие прогр. 1 2 2 2 5 Длин, прогр. 3 4 3 3 5 Скорость выполнения программ 1 - высокая 10-низкая 10 3 1 6 3 Требуемый объем ОЗУ Для самой Для нефор- Для про- Для самой Определя- програм- матирован- граммы програм- ется прог- мы и 12К ного ввода- мы и ин- раммой для интер- вывода и терпрета- претатора ЗК для програм- тора мы претаторы, как правило, очень медленно, однако благодаря их использованию легко реализуются удобные для пользователя интерактивные режимы работы. При этом программы могут редактироваться и не- посредственно выполняться без ассембли- рования, редактирования связей и т. п. Ни- же представлен пример простой про- граммы на Бэйсике и показаны примеры использования некоторых команд обще- ния с интерпретатором: 10 INPUT В 20 FOR А = 1 ТО5 30 PRINT А*В; 40 NEXT А 50 END RUN Команда запуска про- граммы ?4 Запрос значения для пере- менной В 4 8 12 16 20 Печать результатов пер- вого прогона ОК Прогон программы завер- шен 30 PRINT А*В*2; Редактирование строки с меткой 30 RUN Команда запуска про- граммы ?4 Запрос и ввод того же самого значения для В 8 16 24 32 40 Новые результаты (удво- енные значения результа- тов первого прогона) ОК Прогон программы завер- шен 9.7.2. Язык PL/M1) Язык PL/М имеет блочную структуру. Он был разработан фирмой Intel в 1971 г. и предназначался для микропроцессоров новой серии. Фирма Intel использовала PL/М для создания программного обеспе- чения систем поддержки разработок. Ком- пиляторы языка PL/М генерируют код, ко- торый выполняется на машине значитель- но быстрее, чем программа на языке Бэйсик, выполняемая с использованием интерпретатора. Языки с блочной структу- рой легко изучать даже тем, для кого этот язык является первым. Язык PL/М особен- но хорошо подходит для программирова- ния часто исполняемых подпрограмм, вхо- Материалы этого раздела печатаются с разрешения фирмы Intel.
38 Глава 9 дящих в большие программы, а также для разработки программ или подпрограмм систем управления технологическими про- цессами. Фирмой Digital Research на PL/M была написана ставшая популярной опера- ционная система СР/М. Вследствие легкости восприятия про- грамм на PL/М именно этот язык, а не язык ассемблера часто применяют даже для написания коротких программ. Ниже представлен пример программы на языке PL/M. /* Эта программа предназначена для управления световыми сигналами и то- нальными выходами устройства SDK-85. Данные, необходимые для указания перио- да световых сигналов и управления часто- той тона, вводятся с помощью переключа- телей. Программа имеет следующую структуру: Инициализация. MAIN: Бесконечный цикл. Считывание значений, за- даваемых переключателя- ми. Вызов подпрограммы, оп- ределяющей задержку. Вывод световых сигналов. Вывод частоты тона. END MAIN: */ PLAY 85:DO; DECLARE SPEED BYTE, SPEED VALUE STORED IN 1 BYTE PATTERN BYTE, LIKEWISE TONE BYTE, LIKEWISE DECLARE LIGHTS LITERALLY '22H', SPEAKER LITERALLY '23H', SWITCHES LITERALLY '21H', COMMAND LITERALLY '20H', FOREVER LITERALLY WHILE Г; /* Начало программы */ /* Инициализация */ TONE = 0; PPATTERN = OFH; /* Подготовка устройства 8155 к работе */ OUTPUT (COMMAND) = OEH; /* Конец инициализации */ /* Начало бесконечного цикла */ MAIN: DO FOREVER; /* Ввод значений ключей */ SPEED = INPUT (SWITCHES); /* Задержка на некоторое время */ CALL TIME (SWITCHES); /* Вывод «светового образа» */ OUTPUT (LIGHTS) = PATTERN; /* Преобразование «светового образа» */ PATTERN = ROL (PATTERN, 1); /* Вывод данных на звуковоспроизводящее устройство */ OUTPUT (SPEAKER) = TONE; /* Инвертирование данных: подготовка для следующего цикла */ TONE = NOT (TONE); END MAIN; /* Конец основного цикла */ END PLAY 85; /* Конец программы */
Основы построения систем поддержки разработок 39 9.7.3. Язык Кобол Хотя Кобол и труден для изучения, он все же является одним из наиболее широко используемых языков. Это объясняется тем, что Кобол удобен для создания про- грамм обработки коммерческих данных. В начале 60-х годов, когда появился Ко- бол, потребность в решении задач обра- ботки коммерческих данных была очень высокой. Программа на Коболе читается почти так же легко, как текст на англий- ском языке. Тексты программ на Коболе разбиты на разделы, секции и параграфы. Первоначально Кобол использовался для программирования универсальных ЭВМ, затем его стали применять в мини-ЭВМ и, наконец, стал доступен пользователям ми- кроЭВМ. 9.7.4. Язык Паскаль Паскаль является языком структурного программирования. В настоящее время в силу ряда его достоинств, в частности из- за легкости отладки программ, он стал очень популярным среди пользователей микропроцессоров. 1. Типичная программа на языке Па- скаль На рис. 9.5 представлена типичная про- грамма, написанная на языке Паскаль, ко- торая предназначена для преобразования значений температуры по шкале Фарен- гейта, в градусы Цельсия и Кельвина. Про- грамма состоит из заголовка и основного блока. В заголовке определяются имя про- граммы и файлы, доступные программе, например файлы INPUT, OUTPUT. Блок состоит из раздела описаний и раздела операторов. Раздел описаний должен предшествовать разделу операторов. В блоке для всех переменных, массивов, функций и т. д. назначаются имена и типы. Например, определенные функции «корень квадратный», имеющей вещественный ар- гумент, должно начинаться следующим заголовком: FUNCTION SQRT (A"REAL)"REAL; Основная программа (блок) начинается ключевым словом BEGIN и завершается ключевым словом END. После END дол- жна ставиться точка. 2. Объявления в языке Паскаль В Паскале определены объявления пя- ти типов: определение констант, определе- ние типов, описание переменных, описание меток, описание процедур и функций. а) Описание переменных. Любая пере- менная, используемая в блоке, должна быть явно объявлена в начале блока с ука- занием типа. Обычно имя переменной со- стоит не более чем из восьми букв и цифр. Переменные могут иметь следующие типы: Integer (целый тип), REAL (веще- ственный тип), CHARACTER (символьный тип) и BOOLEAN (булев тип). Например: ТОМ: CHAR (*ТОМ-переменная сим- вольного типа*) TIME: INTEGER (*Т1МЕ-переменного це- лого типа*) Переменные целого типа могут при- нимать только целочисленные значения, в то время как переменные типа REAL мо- гут принимать только вещественные зна- чения, которые имеют как целую, так и дробную часть. Значениями переменных типа CHARACTER являются символы (буквы, цифры и специальные знаки). б) Определение типа. В разделе опреде- ления типов (ключевое слово TYPE) мож- но определять новые типы переменных, т.е. задавать имена типов и допустимые значения переменных этого типа. Напри- мер, определение типа TYPE START (BEGIN, END) задает тип с именем START и значениями BEGIN и END. в) Описание процедур и функций. Под- программы в Паскале определяются как процедуры и функции. После завершения выполнения процедуры управление пере- дается оператору основной программы, следующему после оператора вызова про- цедуры (такое правило выполнения анало- гично существующему порядку вызова и выполнения подпрограмм в языке Ас- семблера). Функция языка Паскаль ис- пользуется в качестве элемента выраже-
40 Глава 9 PROGRAM FCNVRT. (* Переводит температуру по Фаренгейту в градусы Цельсия и Кельвина*) VAR LP DISK FILE OF CHAR. FAREN REAL FUNCTION CNVRT(F REAL) REAL. (* Переводит T по Фаренгейту в T по Цельсию *) BEGIN CNVRT (ROUND( (F 32 )*5O /9 ))/ 10 . END BEGIN (* Начало программы*) REWRITE (LP. —LP’)(’Открытие файла для печатающего устройства *) REWRITE (DISK, DX1 DATA). (. * Открытие файла DATA надиске *) WRITELN( CONVERSION OF FAHRENHEIT TO CELSIUS AND KELVIN’),(* Вывод на консоль*) WRITELN(LP, CONVERSION OF FAHRENEHIT TO CELSIUS AND KELVIN’), WRITELN( TYPE FAHRENHEIT VALUES, SEPARATED BY COMMAS OR BLANKS’), WRITELN( AFTER LAST VALUE, TYPE 1000). a REPEAT BEGIN READ (FAREN), IF FAREN >-1000 THEN WRITELN (DISK,FAREN) END UNTIL FAREN < -1000, CLOSE (DISK), (* Нестандартная процедура закрытия файла *) RESET (DISK, DX 1 DATA ), WRITELN(LP), WRITELN(LP,FAHRENHEIT CELSIUS KELVIN*), WHILE NOT EOF(DISK) DO BEGIN READLN(DISK,FAREN). WRITELN(LP,FAREN,8 1. CNVRT(FAREN) 12 1 .CNVRT(FAREN + 273 2 8 1), END. CLOSE(LP), END Перевод температуры по Фаренгейту в градусы Цельсия и Кельвина По По По Фаренгейту Цельсию Кельвину б 32 0 0 0 273 2 0 0 - 17 8 255 4 212 0 100 0 373 2 98 6 37 0 310 2 -40 0 -40 0 233 2 Рис. 9.5. а-программа на языке Паскаль для преобразования значения температуры, заданной по шкале Фаренгейта, в градусы Цель- сия и Кельвина, б-распечатка результатов выполнения прог- раммы Источник D Hall, Microprocessor and Digital Systems, McGraw- Hill, 1982 ния. С помощью процедур задается описа- ние алгоритмов решения каких-либо об- щих задач, а функции языка используются для написания алгоритмов вычисления значений функций (например, тригономет- рических функций синус, косинус и т.п.). Описания процедур и функций должны предшествовать блоку, в котором они будут фактически использоваться. В табл. 9.3 представлены некоторые стан- дартные функции языка Паскаль. 3. Операции языка Паскаль В табл. 9.4 представлены обозначения типичных операций, используемых в выра- жениях языка Паскаль, и указаны соответ- ствующие приоритеты выполнения опера- ций. Если в выражении встречается не- сколько операций, то порядок их выполне- ния определяется приоритетами. Напри- мер, если в выражение входит булевская операция NOT и операция логического ум- ножения, то сначала будет выполнена опе- рация NOT, а затем операция умножения.
Основы построения систем поддержки разработок 41 Таблица 9.3. Стандартные функции языка Паскаль Арифметические функции abs(x) Вычисление абсолютного значения х. Аргумент может иметь целый или вещественный тип. Тип результата совпадает с типом аргумента sqr(x) Вычисление х * х. Аргумент может иметь целый или веществен- ный тип. Тип результата совпадает с типом аргумента sin(x) Во всех этих функциях тип результата вещественный. Аргу- мент может иметь целый или вещественный тип cos(x) arctan (x) exp(x) ln(x) sqrt(x) Натуральный логарифм Корень квадратный Функции преобразования trunc(x) Аргумент х вещественного типа. Если х 0, то результатом является наибольшее целое, меньшее или равное х. Если х < 0, то результатом является наименьшее целое, большое или равное х round (x) Аргумент вещественного типа. Результат-целое число, полу- ченное путем округления по следующему правилу: round(х) - I trunc(x + °-4 5) Для х > 0 round (х) - | trunc(x _ 0 5) для х < 0 ord(x) Результат-порядковый номер аргумента х в множестве зна- чений, определяемых типом переменной х. chr(x) Аргумент целого типа. Результат является символом (если он вообще существует), порядковый номер которого равен х Примечание Настоящая таблица заимствована из книги D Hall, Microprocessors and Digital System, McGraw-Hill, 1982 4. Операторы языка Паскаль После объявления всех переменных, ти- пов и т.п. в программе на Паскале идет раздел операторов. Рассмотрим неко- торые типичные операторы. а) Оператор присваивания. Оператор присваивания языка Паскаль подобен опе- ратору LET языка Бейсик. Записанные подряд двоеточие и знак равно (: = -знак «присвоить») используются для указания того, что переменной, стоящей слева от знака «присвоить», должно быть приписа- но значение выражения, стоящего в опера- торе справа от знака «присвоить». Напри- мер: б) Оператор процедуры. Для вызова процедуры необходимо указать ее имя и параметры. Например, оператор START (5,8) приведет к вызову процедуры START с передачей при вызове парамет- ров 5 и 8. в) Операторы BEGIN и END. Исполь- зуются для определения начала и конца блока. г) Оператор WHILE... DO. Может быть использован для организации цикла WHILE... DO. После ключевого слова WHILE задается условие, а после ключе- вого слова DO-оператор, являющийся те- лом цикла. Оператор (тело цикла) будет выполняться до тех пор, пока удовлетво- Y: = Y + 1 Значение Y увеличивается на 1 SQUARE: = Y*Y Переменной SQUARE присваивается значение Y в квадрате
42 Глава 9 Таблица 9.4. Арифметические, логические операции и операции сравнения (отношения) в Паскале Приорию! Операция Описание операции 1 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 NOT * / DIV MOD AND + OR IN Логическое отрицание Умножение Деление Целочисленное деление Вычисление остатка при целочисленном делении Логическое умножение Сложение Вычитание Логическое сложение Присваивание значения Отношение типа «не рав- но» Отношение типа «мень- ше» Отношение типа «мень- ше или равно» Отношение типа «боль- ше или равно» Отношение типа «боль- ше» Отношение принадлеж- ности Примечание. Настоящая таблица заимствована из книги D. Hall, Microprocessors and Digital System, McGraw- Hill, 1982. ряется заданное условие. Например, с по- мощью цикла WHILE Х<0 DO X: = X + 1 значение переменной X будет увеличивать- ся до тех пор, пока величина X будет отрицательна. д) Оператор GO ТО. Этот оператор просто обеспечивает безусловный переход к оператору с заданной меткой. е) Условный оператор IF... THEN... ELSE. С помощью условного оператора IF... THEN... ELSE в програм- мах реализуются разветвления - выполне- ние тех или иных действий в зависимости от заданного условия. Если выражение, за- писанное после ключевого слова IF, имеет значение «истина», то выполняется опера- тор, следующий за ключевым словом THEN, в противном случае выполняется оператор, следующий за ключевым сло- вом ELSE. Рассмотрим, например, опера- тор IF X = 5 THEN У: = 5 ELSE Z: = 3. Если значение переменной X действитель- но равно 5, то переменной Y будет при- своено значение 5, в противном случае (X не равно 5) переменной Z будет присвоено значение 3. ж) Операторы ввода-вывода. В Паска- ле для ввода данных используются опера- торы READ или READLN, а для вывода данных - операторы WRITE и WRITELN. Используются также операторы READ и WRITE в случае необходимости осу- ществления ввода или вывода по одному символу. Оператор READLN применяют тогда, когда после ввода во входном файле необходимо пропускать все символы до тех пор, пока не встретится конец текущей строки. Оператор WRITELN используется в тех случаях, когда после вывода необхо- димо перейти к новой строке выходного файла.
Основы построения систем поддержки разработок 43 Задачи и вопросы 9.1. Каково назначение микропроцес- сорных систем поддержки разработок? 9.2. Определите состав типичных про- граммных и аппаратных средств, входя- щих в макетные системы поддержки разработок. Дайте краткое описание этих средств. 9.3. Каково назначение модемов в реали- зации интерфейса в системах поддержки разработок? 9.4. Опишите программные и аппаратные средства отладки, реализуемые в ти- пичных макетных системах поддержки ми- кропроцессорных разработок. 9.5. Что представляет собой редактор? Определите понятие «редактирование по контексту». 9.6. В чем различие между однопро- ходным и двухпроходным ассемблером? 9.7. Напишите на языке ассемблера ми- кропроцессора 8085 с использованием представленных в этой главе типичных псевдокоманд фрагменты программ для выполнения следующих действий: а) ввод байта из порта 20, б) формирование таблицы значений F6H, 31Н, 1DH, 09Н, ЕАН, которые долж- ны быть расположены подряд, начиная с ячейки 2000Н. 9.8. В чем заключается разница между псевдокомандами DB и DW? 9.9. Что представляют собой макроопре- деления и макрокоманды? 9.10. В чем заключается различие между макроопределениями и подпрограммами? Каковы достоинства и недостатки их при- менения? 9.11. Что такое макроассемблер? 9.12. Определите понятие «эмуляция». 9.13. В чем заключаются основные разли- чия архитектуры систем поддержки разра- боток с главным и подчиненным процессо- рами, модифицированных систем этого типа и систем с одним процессором? Об- судите достоинства и недостатки каждой архитектуры. 9.14. Опишите смысл следующих опера- торов языка Паскаль: а) А: = А+ 2, б) IF X < 1 THEN GO ТО 100 ELSE IF Х = 1 THEN GO TO 150 ELSE GO TO 200.
Глава 10 РАСПРОСТРАНЕННЫЕ МИКРОПРОЦЕС- СОРНЫЕ СИСТЕМЫ ПОДДЕРЖКИ РАЗРАБОТОК0 В настоящей главе описывается ряд широко используемых систем поддержки разработок, выпускаемых фирмами Intel Tektronix, GenRad (в прошлом Futuredata) и Hewlett-Packard. За последнее время указанные фирмы, за исключением Hewlett-Packard, анонси- ровали новые модели систем, которые в основном являются модификациями предыдущих. В течение следующих трех лет фирмы Intel, Tektronix и GenRad не на- мереваются вносить какие-либо изменения в свои системы. В этой книге разработка микропроцессорных систем рассматри- вается в основном на примерах примене- ния макетной системы HP 64000, однако изучаемые при этом принципы и концеп- ции легко распространяются и на опи- санные в этой же главе системы фирм Intel, Tektronix и GenRad. Основные характери- стики и функции различных систем приве- дены в табл. 10.2. В целях показа функциональных осо- бенностей и эксплуатационных характери- стик различных систем ниже будут приве- дены примеры применения макетных си- стем поддержки разработок, выпускаемых фирмами Intel, Tektronix и GenRad. 10.1. Система HP 64000 фирмы Hewlett-Packard Система HP 64000 является единствен- ной системой поддержки разработок ми- При написании этой главы были исполь- зованы материалы фирм: Intel (пример 10.1), Tektronix (пример 10.2), GenRad (пример 10.3) и руководства по системе HP 64000 фирмы Hewlett-Packard. кропроцессорных систем, выпускаемой фирмой Hewlett-Packard. Эта система обладает целым рядом интересных осо- бенностей и обеспечивает разработку как программных, так и аппаратных средств. Поскольку в главах И и 12 вопросы при- менения системы HP 64000 для разработки программных и аппаратных средств ми- кропроцессорных систем будут рассмот- рены подробно, в настоящем разделе она описывается лишь в общих чертах. HP 64000 представляет собой универ- сальную систему с главным (ведущим) и подчиненным процессорами. В качестве главного процессора используется 16-раз- рядный микропроцессор фирмы Hewlett- Packard. Главный процессор управляет всей работой системы, операциями ввода- вывода и пересылкой данных на шину станций проектирования. Подчиненный процессор осуществляет процесс эмуля- ции; каждая эмулируемая система управ- ляется одним определенным процессором. Система HP 64000 обладает возможно- стями, которые позволяют считать ее уникальной. Дело в том, что в этой систе- ме реализованы так называемые функцио- нальные клавиши, которые располагаются в верхнем ряду клавиатуры и не имеют по- стоянных обозначений. Функция клавиш верхнего ряда определяет содержимое нижней строки экрана ЭЛТ, которое мо- жет динамически изменяться. В соответ- ствии с конкретным режимом работы (ре- дактирование текста программы, ассем- блирование, компоновка модулей или эму- ляция) пользователю предоставляется в нижней строке экрана информация о функциональном назначении клавиш верхнего ряда клавиатуры. Благодаря это-
Распространенные микропроцессорные системы 45 му вместо того, чтобы на клавиатуре наби- рать слово «ассемблирование», пользова- тель может просто нажать ту клавишу, которой, согласно отображаемой в нижней строке экрана информации, соответствует именно режим ассемблирования. После этого функции программируемых клавиш автоматически изменяются, так что с их помощью оказывается возможным зада- ние параметров режима ассемблирования. В системе HP 64000 реализован экранный редактор, обеспечивающий воз- можность редактирования по контексту. С помощью этого редактора можно про- сматривать текст на экране и вносить в не- го требуемые изменения; операции редак- тирования сопровождаются перемеще- нием курсора, который устанавливается в нужное положение пользователем. Как уже отмечалось, редактор этого типа очень эффективен: он позволяет выпол- нять редактирование текстов быстро и легко. В составе программного обеспечения системы HP 64000 имеются редактор, ас- семблер и компоновщик; отладка аппа- ратных и программных средств обеспечи- вается эмулятором с главным и подчи- ненным процессорами, а также описанны- ми выше механизмами организации про- граммных остановов трассировки про- грамм, отображения и изменения содержи- мого регистров процессора и памяти. Эти средства совместно с функциональными клавишами создают большие удобства при использовании системы. В комплект HP 64000 входят также пе- чатающее устройство, программатор ППЗУ, расширитель, позволяющий под- ключать до шести станций проектирова- ния, компилятор для языка Паскаль и ло- гический анализатор, работающий в ре- альном времени. С помощью системы HP 64000 можно вести разработку программных и аппа- ратных средств систем, построенных на базе микропроцессоров 8048, 8049, 8080, 8085, 8086, Z80, 6800, 6802, 6809, 68000 и Z8000. 10.2. Системы поддержки разработок, выпускаемые фирмой Intel Фирма Intel выпускает четыре типа си- стем поддержки разработок, а именно мо- дели 120, 225, 286 и 290. Модели 120 и 225 в основном подобны моделям 220 и 230 со- ответственно, которые выпускались фир- мой Intel раньше. Основное отличие моде- ли 120 от модели 220 состоит в том, что первая из них имеет память увеличенного объема. Система 225 построена на основе микропроцессора 8085, в то время как си- стема 230 была реализована на основе ми- кропроцессора 8080. Все системы фирмы Intel имеют моди- фицированную архитектуру с главным и подчиненными процессорами, однако ни одна из моделей не является универсаль- ной. Как главный микропроцессор, так и подчиненный (выполняющий эмуляцию) используют общую память большого объема. Если оба микропроцессора обра- щаются к памяти одновременно, то в пер- вую очередь обслуживается главный ми- кропроцессор. Это приводит к задержкам в работе целевого микропроцессора вся- кий раз, когда он тоже обращается к ос- новной памяти системы. Указанная осо- бенность характерна для трех макетных систем фирмы Intel (моделей 120, 225 и 286). Кроме того, фирма Intel выпускает многотерминальную макетную систему MODEM из семейства универсальных си- стем Intellec и сетевую систему поддержки разработок (модель 290), которая позво- ляет управлять процессом реализации крупномасштабных проектов систем про- граммного обеспечения. В своих системах фирма Intel использует стандартный про- токол шины MULTIBUS. 10.2.1. Системы 120 и 225 фирмы Intel Системы моделей 120 и 225, схематиче- ски изображенные на рис. 10.1, очень схо- жи друг с другом и поэтому могут
46 Глава 10 Рис. 10.1. Структурная схема системы под- держки разработок Intellec Series II/85, модель 225. Источник* перепечатано с разрешения фирмы Intel Cor- poration, copyright 1981. рассматриваться совместно. Основные различия между этими системами отмеча- ются в процессе изложения материала. В обоих рассматриваемых системах имеется плата главного центрального про- цессора, называемая интегральной процес- сорной платой (ИПП), которая содержит микропроцессор, память, два канала по- следовательного ввода-вывода, схемы обработки прерываний и схемы шинного интерфейса. В табл. 10.1 показаны ос- новные отличия интегральных процес- сорных плат моделей 120 и 225. Очевидно, что в этих системах используются разные микропроцессоры и ОЗУ различной емко- сти, в остальном же ИПП обеих моделей совпадают; эти платы будут рассмотрены ниже лишь в общих чертах. В системах 120 и 225 есть также плата подчиненного процессора, которую назы- вают контроллером ввода-вывода (КВВ). Контроллер ввода-вывода управляет экра- ном ЭЛТ, интерфейсом клавиатуры, гиб- кими дисками, устройством печати, высо- коскоростным считывателем перфоленты, устройством вывода на перфоленту и уни- версальным программатором ППЗУ фирмы Intel. В обоих моделях используют- ся одинаковые контроллеры ввода-выво- да. В состав контроллера входит микро- процессор 8080, управляющий всеми опе- рациями ввода-вывода, а также передачей данных по 8-разрядной двунаправленной шине данных, реализующей связь с ИПП. Отметим, что подсистема ввода-выво- да в моделях 120 и 225 состоит из двух ча- стей: КВВ и двух каналов последователь- ного ввода-вывода, размещенных на ИПП. Оба канала удовлетворяют требованиям стандарта RS232 и реализованы с исполь- зованием универсального синхронно-
Распространенные микропроцессорные системы 47 Таблица 10.1. Сравнительные характеристики ин- тегральных процессорных плат моделей 120 и 225 Модель 120 Модель 225 Микропроцессор 8080 ОЗУ на 32К байт ПЗУ на 4К байт Микропроцессор 8085 ОЗУ на 64К байт ПЗУ на 4К байт асинхронного приемопередатчика 8251 фирмы Intel. Один из каналов содержит адаптеры типа токовой петли. Скоростью передачи можно управлять программно с использованием интервального таймера 8253 фирмы Intel. Кроме того, устройство 8253 обеспечивает генерацию импульсов реального времени, используемых во всей системе. На интегральной процессорной плате имеются такие два контроллера пре- рываний (8259), с помощью которых ре- ализуется 8-уровневая система маски- руемых приоритетных прерываний. Состав устройств, входящих в контрол- лер ввода-вывода, представлен в следую- щей таблице: Микросхемы, установлен- ные на плате KBB В то время как один контроллер преры- ваний 8259 может использоваться для про- граммных прерываний, другой контрол- лер 8259 обеспечивает управление систе- мой прерываний двух каналов последова- тельного ввода-вывода. В системах фирмы Intel используется высокоскоростной дисплей с обновлением информации из памяти контроллера вво- да-вывода. Благодаря использованию дис- плея такого типа обеспечиваются отладка и редактирование по контексту. Каждый символ, подлежащий отображению, главный процессор пересылает в ОЗУ кон- троллера ввода-вывода. Контроллер ЭЛТ считает строку символов в режиме ПДП Функциональное назначение ПЗУ на 8К байт Содержит программно-аппаратные средства управления вводом-выво- дом ОЗУ на 8К байт Память для регенерации информа- ции на экране ЭЛТ и буферная память для гибких дисков 8275 8257 8253 8271 Программируемый контроллер ЭЛТ Контроллер ПДП Интервальный таймер Программируемый контроллер па- мяти на гибких дисках 8041 Универсальный интерфейс перифе- рийных устройств (устройства пе- чати, считывателя перфоленты, лен- точного перфоратора, универсально- го программатора ППЗУ фирмы Intel). Следующие устройства, входящие в подсистему ввода-вывода, размещаются на интегральной процессорной плате: и затем передает по одному символу на знакогенератор, который вырабатывает соответствующий видеосигнал. Интер- Микросхемы, установленные на ИПП 8259 (два устройства) 8251 8253 Контроллеры прерываний Универсальный синхронно-асинхронный приемопередатчик Интервальный таймер
48 Глава 10 вальный таймер (устройство 8253 фирмы Intel) используется для синхронного управ- ления ЭЛТ. На экране дисплея отобра- жается 25 строк, по 80 символов в каждой строке; для кодирования символов ис- пользуется код ASCII. В моделях 120 и 225 используются одинаковые дисплеи и кла- виатура, позволяющая вводить любые символы кода ASCII. Кроме того, на кла- виатуре имеются клавиши управления кур- сором. В обеих моделях предусмотрены сред- ства самоконтроля и диагностики. Состав аппаратных средств систем 120 и 225 мо- жет быть расширен благодаря использова- нию следующих устройств: - памяти на гибких дисках емкостью 2,25 Мбайт, - памяти на жестких дисках емкостью 7,3 Мбайт, - ОЗУ на 64К (в модели 120 на 32К или больше), - ICE-49, 85, 80, 22 и HSE-49. В обеих рассматриваемых моделях ис- пользуются память на гибких дисках об- щей емкостью 250К байт и программные средства дисковой операционной системы ISIS II. Совокупность системных про- граммных средств обеспечивает редакти- рование текстов, ассемблирование, компо- новку модулей и отладку для микропро- цессоров фирмы Intel. В состав макетной системы модели 120 входят программные средства поддержки разработки систем на основе микроЭВМ MCS-48 и MCS 80/85. Модель 225 обеспечивает разработку ми- кропроцессорных систем на основе ЭВМ MCS-86, MCS-48 и MCS 80/85. В системе модели 120 существует возможность эму- ляции микроЭВМ MCS-48 и MCS 80/85. Модель 225 покрывает возможности моде- ли 120 и, кроме того, обеспечивает эмуля- цию для MCS-86. Разнообразные ассемблеры для микро- процессоров создают возможность ис- пользования символических ссылок, ус- ловного ассемблирования и макроассем- блирования. В базовом варианте модели 120 не поддерживаются никакие языки вы- сокого уровня, но при дополнительном расширении оборудования могут быть ис- пользованы все языки, принятые в фирме Intel и более развитые средства проектиро- вания. В модели 225 поддерживаются язы- ки PL/М, Фортран, Бейсик, Паскаль и Кобол. 10.2.2. Макетная система модели 286 фирмы Intel В модели 286, схема которой представ- лена на рис. 10.2, используются не два, а три микропроцессора. Вместо одной платы главного процессора здесь исполь- зуются две. Микропроцессор 8086 фирмы Intel располагается на резидентной про- цессорной плате (РПП), а микропроцессор 8085-на интегральной процессорной пла- те. На тех же платах помимо процессоров размещаются устройства памяти, схемы ввода-вывода, логические схемы системы прерываний и схемы шинного интерфейса. Достоинством системы с двумя главными процессорами является то, что она обеспе- чивает разработку систем с любыми ми- кропроцессорами фирмы Intel, равно как со всеми однокристальными микрокон- троллерами и процессором аналоговых сигналов 2920. Третий микропроцессор входит в со- став устройств контроллера ввода-вывода. Система 286 оснащена интерфейсом кон- троллера ввода-вывода, ЭЛТ, клавиатурой и гибкими дисками на 250К байт, такими же, как в системах 120 и 225. В системе 286 реализована возмож- ность использования дискетов с удвоенной плотностью записи (система Intellec Series III). Интеллектуальный контроллер и два накопителя на дискетах обеспечивают па- мять большого объема, с которой можно обмениваться данными в режиме прямого доступа. Каждый накопитель на дискетах имеет память 0,5 Мбайт при скорости передачи данных 500 000 бит/с. Контрол- лер подключается непосредственно к си- стеме 286. Он обеспечивает управление вводом-выводом для памяти на дискетах объемом до 2 млн. байт (такая емкость по- лучается при использовании четырех ди- скетных накопителей). Кроме накопителей на дискетах в си- стеме 286 может использоваться память на жестких дисках типа Intellec Series III, ко- торая оснащена интеллектуальным кон- троллером и одной съемной кассетой.
Модули внутри- схемных эмуляторов Контроллер ЗУ на гибких дисках Контроллер ЗУ на жестких дисках ЦП 8085 ОЗУ на 64К ПЗУ на 16К ОЗУ на 64К Каналы последователь- ной передачи данных Генератор, задающий скорость передачи данных Датчик истинного времени ЦП 8085 ОЗУ на64К ПЗУ на 4К Шина Intellec Multibus Управление шиной Рис. 10.2. Структурная схема системы под- держки разработок Intellec III, модель 286. Источник перепечатано с разрешения фирмы Intel Corpo- ration, copyright 1981 Шина периферийных устройств Универсальный программатор ППЗУ Печатающее устройство Ленточный перфоратор Считыватель перфоленты
50 Глава 10 Каждая кассета имеет емкость примерно 2,65 млн. байт, а скорость передачи данных составляет 2,5 Мбит/с. На РПП процессора Intel 8086 разме- щается ОЗУ на 64К и ПЗУ на 16К байт. Все программы обработки 16-разрядных слов данных выполняются и отлаживаются на 16-разрядном микропроцессоре Intel 8086. В ПЗУ содержится отладочная программа для микропроцессора 8086/8088. На ИПП процессор Intel 8085 разме- щается ОЗУ на 64К байт и ПЗУ емкостью 4К байт. В ПЗУ находится системный мо- нитор Intellec и системная самозагружаю- щаяся программа «самодиагностики». На 8-разрядном микропроцессоре 8085 вы- полняются все программы, рассчитанные на обработку 8-разрядных слов данных. Кроме того, этот микропроцессор исполь- зуется как подчиненный процессор ввода- вывода для процессора 8086. В системе 286 реализован интересный пакет программ, включающий экранный редактор текстов, который способен рабо- тать в двух режимах: SCREEN (экран) и COMMAND (команда). В режиме SCREEN редактор отображает на экране перемещаемый курсор и обеспечивает ввод текста и вставку или удаление симво- ла или строки текста. В режиме COMMAND редактор реализует поиск за- данной строки и ее замещение, формати- рование текста и другие операции редакти- рования. С помощью редактора может быть организован просмотр исходного текста программы, поиск отмеченных ошибочных элементов и повсеместная за- мена их правильными по указанию про- граммиста. При разработке программных средств некоторого проекта можно ис- пользовать сразу несколько языков высо- кого уровня, поскольку получаемые объектные модули являются переме- щаемыми и пригодны для обработки ком- поновщиком. Для 16-разрядных микропроцессоров 8086 и 8088 фирмы Intel реализованы ма- кроассемблер и компиляторы языков Па- скаль, Фортран и PL/M. Для 8-разрядных микропроцессоров фирмы Intel имеются макроассемблеры и компиляторы языков PL/М и Фортран, интерпретатор языка Бейсик и компиля- тор/интерпретатор языка Паскаль 86/88. Для каждого члена семейства однокри- стальных микроконтроллеров существует макроассемблер, а для сигнального про- цессора 2920 имеется еще и ассемблер. Наиболее доступным компилятором в любой макетной системе фирмы Intel является компилятор PASCAL 86/88. В промышленности наблюдается опреде- ленная тенденция расширения сферы при- менения языков структурного программи- рования, в частности Паскаля, вместо не- структурированных языков типа Фортра- на. Язык PASCAL 86/88 представляет собой специальную модификацию языка Паскаль, в которой учтены особенности программирования микроЭВМ (например, обработка прерываний, работа с портами ввода-вывода, раздельная компиляция). Фирма Intel разработала язык PL/M 86/88, который представляет собой язык высокого уровня, пригодный для разра- ботки различных управляющих программ. Новой возможностью компилятора для PL/М, реализованного в системе 286, является режим синтаксического контроля программ, при котором проверяется толь- ко правильность исходного текста и не производится генерация объектного кода. Этот режим подобен режиму «быстрой» компиляции для языка Фортран. 10.2.3. Сетевая система фирмы Intel- модель 290 Для разработки больших про- граммных проектов целесообразно ис- пользовать несколько систем поддержки разработок Intellec, взаимосвязанных че- рез общую память на жестких дисках. Се- тевая система NDS-1 (Network Development System 1), внешний вид и структурная схема которой представ- лены на рис. 10.3 и рис. 10.4 соответствен- но, объединяет до восьми макетных си- стем Intellec, обеспечивая при этом доступ к файлам и управление печатающим устройством. Два одинаковых ЗУ на жестких дисках Intellec 740 в совокупности дают 15 Мбайт оперативно доступной памяти, которая поровну распределена между фиксиро- ванными и съемными дисками.
Распространенные микропроцессорные системы 51 Рис. 10.3. Внешний вид сетевой системы под- держки разработок NDS-1 (модель 290). Источник перепечатано с разрешения фирмы Intel Cor- poration. copyright 1981 Рис. 10.4. Схема коллективной системы под- держки разработок фирмы Intel, позволяющей одновременно работать не более восьми поль- зователям и имеющая одно или два устрой- ства памяти на жестких дисках. Источник с любезного согласия Intel Preview Magazine Даже если для разработки некоторого проекта не требуется использовать не- сколько систем Intellec, организация обще- го ЗУ на жестких дисках обеспечивает все объединенные системы Intellec памятью значительного объема при сохранении вы- сокой скорости передачи данных и дает су- щественную экономию затрат, поскольку в случае оснащения каждой из объеди- няемых систем собственным дисковым ЗУ стоимость их сильно возрастает. Каждая рабочая станция (системы Intellec) может быть удалена от сетевой системы NDS-1 на расстояние до 36 м, а сами рабочие станции могут располагаться на расстоя- нии 6 м друг от друга. Еще одна привлекательная особен- ность сетевой системы NDS-1 состоит
52 Глава 10 К объединительной рабочей станции Рис. 10.5. Структурная схема администратора сети в системе Intellec NDS-1. Источник перепечатано с разрешения фирмы Intel Cor- poration, copyright 1981 в том, что она позволяет использовать в своем составе более ранние модели си- стемы Intellec. Каждая из восьми рабочих станций может быть реализована на осно- ве любой макетной системы фирмы Intel, поэтому устаревшая система поддержки разработок, которая уже не способна вы- полнять какие-то определенные функции, может все же использоваться для осущест- вления доступных ей подготовительных операций, предшествующих включению в работу станции новой модели. Управляющая система сети NDS-1, структурная схема которой представлена на рис. 10.5, состоит из блока ЭЛТ, на- считывающего шесть гнезд для вставления плат, источника питания, вентиляторов, кабелей, одного ЗУ на гибких дискетах, съемной клавиатуры, работающей в коде ASCII, и электронных схем на пяти пе- чатных платах. В отдельной стойке разме- щается ЗУ на жестких дисках с источником питания, вентиляторами и кабелями, ис- пользуемыми для подключения к основно- му блоку. Плата главного ЦП называется инте- гральной процессорной платой; она зани- мает первое гнездо блока печатных плат. На интегральной процессорной плате раз- мещается микропроцессор 8085, ОЗУ на 64К байт, схемы ввода-вывода, логика си- стемы прерывания и схемы шинного ин- терфейса. Плата контроллера ввода-выво- да называется платой подчиненного про- цессора; она была рассмотрена нами в предыдущем разделе.
Распространенные микропроцессорные системы 53 Контроллер жестких дисков может управлять одним или двумя дисковыми ЗУ. Он реализован на двух платах. Схемы, выполняющие прием и дешифрирование команд, поступающих из микропроцессо- ра 8085, и их обработку, размещены на плате канала. Схемы канальной платы ре- ализуют режим ПДП, благодаря которо- му контроллер диска получает доступ к си- стемной памяти Intellec. Кроме того, эти схемы вырабатывают сигналы подтверж- дения, необходимые для организации передач по шине Intellec. С помощью вто- рой (интерфейсной) платы контроллер вво- да-вывода связывается с устройством па- мяти на жестком диске и с системной шиной Intellec. Схемы интерфейсной платы осуществляют формирование и за- пись контрольных разрядов и контроль правильности при считывании данных с использованием циклического избыточ- ного кодирования. С помощью специальной соединитель- ной платы рабочие станции подключаются к управляющей системе сети. Соедини- тельная плата с помощью шины Multibus связывается с микропроцессором 8085, ОЗУ емкостью 1,25К байт, ПЗУ на4К байт и семью портами ввода-вывода. Благода- ря интерфейсу, основанному на системе прерываний, главный процессор может выполнять свою работу, в то время как схемы соединительной платы обрабаты- вают команду, принятую от главного про- цессора. В конце обработки команды схе- мами платы формируется флаговый при- знак, что вызывает прерывание передачи по шине Multibus. Передача данных по ши- не осуществляется со скоростью 40К байт/с (при длине линии до 36 м). Монитор на ЭЛТ представляет собой устройство с растровой разверткой и раз- мером экрана по диагонали, равным 36 см. Развертка по вертикали производится с частотой 50-60 Гц, а развертка по гори- зонтали-с частотой 15,5 кГц. Однокри- стальная программируемая схема упра- вления ЭЛТ Intel 8275 обеспечивает сопря- жение экранного монитора с сетевой сис- темой NDS-1. Микропроцессор 8085 пере- дает подлежащий отображению символ в контроллер ввода-вывода, где символ за- писывается в ОЗУ. Схема управления ЭЛТ производит считывание одной строки по- средством контроллера прямого доступа Intel 8257 и помещает ее в свой буфер. За- тем схема управления пересылает по одно- му символу на знакогенератор, который вырабатывает соответствующие видеосиг- налы. Интервальный таймер (устройство 8253 фирмы Intel) используется для синх- ронизации операций управления ЭЛТ. На экране дисплея отображается 25 строк, по 80 символов в каждой и может воспрои- зводиться полный набор символов кода ASCII. Для подключения клавиатуры ис- пользуется универсальный интерфейс пе- риферийных устройств Intel UPI-41. Кла- виатура непосредственно подключается с помощью 8-разрядной шины данных к процессору контроллера ввода-вывода. В качестве блока управления ЗУ на гибких дисках используется, как отмечалось вы- ше, программируемый контроллер диско- вой памяти 8271 и контроллер прямого до- ступа 8257. В состав программного обеспечения се- тевой системы поддержки разработок вхо- дят следующие компоненты: сетевая операционная система, средства организации ввода-вывода для дисковой памяти, программные средства связи, средства управления файлами, средства управления личными и обще- доступными файлами на жестких дисках. 10.2.4. Система на основе универсальной ЭВМ и макетных систем Intellec Система IML, состоящая из универ- сальной ЭВМ и макетных систем Intellec (рис. 10.6) создана в соответствии со сле- дующими принципами: 1. Универсальная ЭВМ использована для ввода и редактирования исходных тек- стов программы, накопления программ, управления их разработкой и сопровожде- нием, получения распечаток с помощью быстродействующих печатающих уст- ройств и т.п. 2. Организовано совместное использо- вание программистами систем Intellec устройств памяти на магнитных дисках при посредничестве универсальной ЭВМ.
54 Глава 10 Рис. 10.6. Универсальная линия Intellec. Источник с любезного согласия Intel Preview Magazine В рассматриваемой системе для пере- дачи файлов используется протокол двоичной синхронной передачи данных IBM 2780/3780. Пример 10.1 Используя в качестве примера одну программу на языке ассемблера микро- процессора 8085, рассмотрим, как с по- мощью системы Intellec (серия 11/85, мо- дель 2250) осуществляются редактирова- ние текста исходной программы, ассем- блирование, компоновка модулей и эмуля- ция. Решение 1. Этап редактирования исходного текста программы Чтобы продемонстрировать некоторые возможности редактора текстов Intellec, рассмотрим, как вводится программа, на- писанная на языке ассемблера микропро- цессора 8085, и каким образом в нее вно- сятся изменения. Представленный ниже «протокол» диалога снабжен пояснения- ми, которые соответствуют номерам, ука- занным на полях слева от текста про- граммы. Отметим, что рассматриваемая программа должна обеспечивать вывод на консоль через каждую секунду буквы X. Процесс редактирования исходного текста программы в данном случае состоял из 18 шагов: 1. Включение питания и начальная установка системы Intellec путем нажатия клавиши сброса на передней панели си- стемы. В ответ на экране появляется ин- формация, идентифицирующая систему, а на следующей строке отображается кур- сор в виде черточки, приглашающей к на- чалу работы. Отметим, что аббревиатура ISIS (Intel System Implementation Supervisor) является обозначением про- граммной системы, предназначенной для облегчения разработки программы ми- кроЭВМ. 2. Ввод команды EDIT, указывающей файл на дискете 1. Файлу дается имя ONESEC и расширение имени SRC (сокра- щение от SOURCE).
Распространенные микропроцессорные системы 55 3. На экране появляется информация, идентифицирующая редактор текста. В следующей строке сообщается об орга- низации нового файла. Это значит, что на дискете 1 файла с заданным именем не существовало. 4. После звездочки, выведенной на экран редактором, можно сообщить пер- вую команду. В нашем примере исполь- зуется команда I (Insert - ввод), которая бу- дет действовать до тех пор, пока клавиша ESC (Escape-смена регистра) не будет на- жата дважды. Такое двукратное нажатие клавиши сопровождается выводом на экран двух знаков «доллар» (см. шаг 7). Во время ввода программы можно свободно пользоваться средствами табулирования. Так, одновременное нажатие клавиши CONTROL (управление) и клавиши с бук- вой I приводит к тому же эффекту, ко- торый достигается нажатием клавиши та- буляции на пишущей машинке. При этом границы столбцов автоматически устанав- ливаются через каждые восемь позиций. 5. При попытке ввести слово DELAY была допущена ошибка, и на клавиатуре было набрано слово DEALY. Заметив ошибку еще до ввода, оператор три раза нажал клавишу «Стирание»; устраняемые ошибочные символы появились на экране в порядке их стирания (YLA). Теперь на клавиатуре набираются три правильных символа и перед вводом очередной строки текста нажимаются совместно клавиша CONTROL и клавиша буквы R, что обес- печивает вывод на экран откорректирован- ной строки. Поскольку теперь эта строка набрана правильно, нажимается клавиша возврата каретки и ввод текста про- граммы продолжается. 6. Введенная строка выглядит столь неприглядно и содержит столько ошибок, что пользователь решил стереть все вве- денные символы и начать сначала. Это де- лается путем нажатия клавиш CONTROL и X; стирание строки подтверждается ото- бражением знака номер #. 7. Здесь клавиша ESC нажимается дважды: первое нажатие означает завер- шение входной строки, а второе вызывает прекращение действия команды I. 8. Теперь производится исправление ошибок; с помощью команды В курсор устанавливается на начало текста, затем используется команда S (Substitute) для коррекции написания слова ASSEMBLY. Позже вводится комбинация символов OLT, используемая как команда вывода на экран откорректированной строки. 9. С помощью команды F (Find) дается указание на поиск метки L2 в тексте про- граммы. После этой метки не было поставлено двоеточие. По команде Т (type) обеспечивается отображение строки с мет- кой L2, что дает возможность убедиться в правильности отыскания интересующей пользователя команды. 10. Вводится команда I, а вслед за ней знак «двоеточие» и команда OLT, которая обеспечивает печать откорректированной строки. 11. Заметив, что команда DCR была введена дважды, пользователь применил команду поиска F, в которой указывает строку DCR. 12. С помощью команды К (kill) най- денная строка уничтожается. Для того чтобы подтвердить правильность прове- денной коррекции текста, на экран выво- дятся три строки, предшествующие ликви- дированной, и три строки, следующие за текущим положением курсора. 13. Теперь обнаруживается, что в под- программе DELAY пропущена команда, которая должна следовать непосредствен- но за командой с меткой L3. Для поиска этой команды по коду ее операции исполь- зуется команда F. Однако оказывается, что выше в тексте есть команда с той же мнемоникой JNZ; именно она и отобра- жается в следующей строке на экране. 14. С помощью команды L (Line) кур- сор перемещается на строку, следующую за только что обнаруженной командой JNZ, и вновь повторяется команда F: на этот раз желаемую строку удается найти. 15. Вставляется пропущенная команд- ная строка, включая символ возврата ка- ретки, и дважды нажимается клавиша ESC. 16. Снова обнаружена ошибка в про- грамме. Для перемещения курсора можно было бы воспользоваться командой L с отрицательным аргументом, но, по- скольку длина программы невелика, при- менена команда В, по которой курсор переводится в начало текста. Затем вво-
1 I SIS-I I , V2 . 2 2 -EDIT Fl ONE St C . SRC 3 ISIS-II TEXT EDITOR, V 1 6 NEW file 4 i ; Программа на языке Ассембера, предназначенная ; для вывода на экран консоли символа X через каждую секунду СО EQU 0F809H ; Определение адреса мониторной программы СО CSEG : Перемещаемый сегмент stkln 2 ; Установка длины стека START LX 1 SP,STACK ; Инициализация указателя стека L 1 MV I D , 50 ; : Задание числа вызовов подпрограммы DELAY L 2 MV I A,200 ; Параметр подпрограммы 5 call DEAlyylalay ; Вызов подпрограммы call DCR DELAY ; D : Вызов подпрограммы DCR D JNZ L 2 ; Выполнение 50 циклов занимает 1 секунду MV 1 С , ' X ' ; ; загрузка символа X в регистр С 6 CALL CO ; мониторная консоль № call co ; Вызов программы вывода на ЭЛТ консоли JMP L 1 ; Переход на начало "бесконечного” цикла > Подпрограмма DELAY DELAY MV I В,12 L 3 MOV С, В JNZ LU DCR А JNZ L 3 RET 7 $$ END START • Выполнение программы начинается с команды с меткой START в ::BSLB Y $BL Y $ 0L Т $ $ ; Программа на языке Ассемблера, предназначенная для вывода на 9 ::FL2$T$$ экран консоли символа X через каждую секунду 10 ”1 $0 т$$V 1 а, 20 0 ; Параметр подпрограммы l2 mvi а, 20 0 ; Параметр подпрограммы 11 ”FDCR$0LT$$ DCR D 12 ::к- зт зт $$ Ll mvi D,5 0 ; Задание числа вызовов подпрограммы DELAY L2 mvi A, 200 ; Параметр подпрограммы CALL DELAY ; ВЫЗОВ подпрограммы DCR D JNZ l2 ; Выполнение 50 циклов занимает 1 с. 13 ••F JNZSOLT $$ JNZ L 2 ; Выполнение 50 циклов занимает 1 с 14 :: LFUNZ $ 0L т $ $ JNZ LU 18 ILU: OCR С $$ 18 :: В S AR 01 U $ AR0U $ 0 L Т $ $ UMP L1 ; Переход на начало "бесконечного” цикла 17 "В 5 ОТ $ $ ; Программа на языке ассемблера, предназначенная длявывода на экран > консоли символа X через каждую секунду СО EQU 0F809H ; Определение адреса мониторной программы СО CSEG Перемещаемый сегмент STKLN 2 ; Установка длины стека START: LXI SP,STACK ; Инициализация указателя стека L1: MVI D, 50 ; 3 ад ан иечисла вызовов подпрограммы DELAY L2: MVI A,200 ; Параметр подпрограммы CALL DELAY ; Вызов подпрограммы DCR D JNZ L2 ; Выполнение 5 0 циклов занимает 1 с MVI С, 'X ' ; Загрузка символа X в регистр С call CO ; Вызов программы вывода данных на экран консоли JMP Ll ; Переход на начало "бесконечного" цикла / Подпрограмма DELAY: MVI B, 12 L3: MOV C,B LU: DCR C JNZ LU DCR A JNZ L 3 RET END START ; Начало программы 1в ::Е$$
Распространенные микропроцессорные системы 57 ISIS-II 8080/8085 MACRO ASSEMBLER, V2 О MODULE PAGE 1 LOC OBJ SEQ SOURCE STATEMENT 1 , Программа на языке Ассемблера, предназначенная 2 , для вывода на экран консоли символа X через каждую секунду 3 F809 4 5 6 СО EQU CSEG STKLN OF809H 2 , Определение адреса мониторной программы СО , Перемещаемый сегмент Установка длины стека 0000 310000 S 7 START LXI SP,STACK , Инициализация указателя стека 0003 1632 8 L1 MVI D,50 Задание числа вызовов подпрограммы DELAY 0005 ЗЕС8 9 L2 MVI A,200 Параметр подпрограммы 0007 CD 1600 С 10 CALL DELAY , Вызов подпрограммы 000А 15 11 DCR D 000В С20500 С 12 JNZ L2 , Выполнение 50 циклов занимает 1 секунду 13 000Е 0Е58 14 MVI C,‘X’ , Загрузка символа X в регистр С 0010 CD09F8 15 CALL CO Вызов программы ввода данных на экран консоли 0013 С30300 С 16 JMP L1 Переход на начало ''бесконечного'' цикла 17 18 , Подпрограмма DELAY 19 , 0016 060С 20 DELAY MVI B,12 0018 48 21 L3 MOV C.B 0019 OD 22 L4 DCR C 001А С21900 С 23 JNZ L4 001D 3D 24 DCR A 001Е С21800 С 25 JNZ L3 0021 С9 26 RET 27 0000 С 28 END START, Выполнение программы начинается с команды с меткой START PUBLIC SYMBOLS EXTERNAL SYMBOLS USER SYMBOLS CO A F809 DELAY C 0016 L1 C 0003 L2 C 0005 L3 C 0018 L4 C 0019 START C 0000 ASSEMBLY COMPLETE, NO ERRORS Рис. 10.7. Программа на языке ассемблера микропроцессора 8085. дится команда S; при этом есть достаточ- но оснований надеяться, что комбинация AROIU не встретится нигде в программе, за исключением интересующей пользова- теля строки. 17. Теперь курсор снова устанавли- вается на начало текста и подается коман- да вывода 50 строк текста. Число строк в данной программе заранее неизвестно, однако их заведомо меньше 50, а поэтому на экран будет выведен весь текст отредак- тированной программы. 18. Текст отредактированной про- граммы по команде Е (exit) записывается на дискет, содержащий файл, имя которо- го было указано в команде EDIT на вто- ром шаге сеанса работы с системой. Затем происходит передача управления суперви- зору ISIS. 2. Этап ассемблирования На рис. 10.7 представлена распечатка программы, полученной на выходе ассем- блера. В распечатке содержатся команды на машинном языке, образующие объект- ную программу, номера строк, и исходная программа на языке ассемблера, текст ко- торой был введен и отредактирован на предшествующем этапе. Для получения представления о процессе ассемблирова- ния рассмотрим эту распечатку.
58 Глава 10 Непосредственно над текстом про- граммы, в «шапке» распечатки содержатся обозначения полей строк листинга. Так, в колонке LOC содержатся адреса команд после ассемблирования: согласно ука- занным в распечатке адресам, программа после загрузки будет выполняться начиная с нулевого адреса. В столбце OBJ содер- жатся команды объектной программы, по- лученной в результате ассемблирования. В поле SEQ (Sequence) указан порядковый номер, или, как чаще всего говорят, номер строки. Наконец, в столбце SOURCE STATEMENT содержатся строки текста исходной программы. Если в строке есть точка с запятой, то все, что расположено справа от этого зна- ка, является комментарием. Комментарии появляются в распечатке, но они никак не влияют на процесс ассемблирования. Та- ким образом, любая строка текста, на- чинающаяся с точки с запятой, считается комментарием. Очевидно, что таким стро- кам исходного текста в объектной про- грамме не соответствуют никакие коды. Строка с номером 4 обрабатывается ассемблером как псевдокоманда EQU. С помощью этой команды символическо- му обозначению СО присваивается адрес системной программы (точки входа) мони- тора, обеспечивающей вывод на консоль. Мнемонике СО ставится в соответствие адрес 0F809: при любом появлении этого символического обозначения в программе оно будет замещаться указанным адресом. В данной программе мнемоника СО ис- пользуется в команде CALL (строка 15). В строке с номером 5 указано, что вся программа определяется как про- граммный сегмент (CSEQ-code segment), который является перемещаемым. Короче говоря, используя команду LOCATE (раз- местить), ассемблированную программу можно расположить в желаемой области памяти. Такая возможность очень полезна при разработке программ, поскольку в процессе написания программы можно не знать, где будут размещаться в памяти отдельные сегменты программы и сколько ячеек памяти потребуется для их размеще- ния. В строке с номером 6 содержится по- следняя в этом сегменте псевдокоманда ассемблера. Она задает максимальную длину стека микропроцессора 8080; со- гласно заданной длине, будет выделено со- ответствующее количество байтов памяти. В этой простой программе длина стека ни- когда не превышает 2; такое значение длины и указано в рассматриваемой ко- манде. В строке с номером 7 содержится пер- вая команда программы. Эта команда имеет метку START. На метку START ни- же, в строке 28 имеется ссылка. Символи- ческое обозначение точки входа в про- грамму позволяет ссылаться на нее вне зависимости от того, какая фактическая ячейка памяти будет соответствовать мет- ке START. Команда LXI, означающая не- посредственную загрузку указателя стека при наличии операнда с зарезервиро- ванным словом STACK, обеспечивает за- дание начального адреса стека. После точ- ки с запятой в этой строке содержится комментарий для команды LXI. Команды в строках 8 и 9 также снаб- жены метками: эти метки используются ниже в командах передачи управления. Од- нако команда CALL в строке 10 не помече- на. Эта команда вызывает подпрограмму с именем DELAY, которая начинается с 20-й строки распечатки. До передачи управления команде с меткой DELAY в стек помещается информация, необходи- мая для выполнения команды RET (воз- врат), которая является последней коман- дой подпрограммы. Выполнение команды RET заключается в переходе на команду, следующую за командой CALL. Остав- шаяся часть программы не требует спе- циальных пояснений. В последней строке программы содер- жится команда END, с помощью которой ассемблеру сообщается, что текст про- граммы исчерпан. В поле операнда этой команды указана метка START; когда программа будет загружена в память, вы- полнение ее начнется с команды, имеющей эту метку. Процесс ассемблирования Перед вводом и редактированием про- граммы в команде EDIT было задано имя Fl :ONESEC.SRC. Здесь F1 определяет
Распространенные микропроцессорные системы 59 дискет с номером 1, обозначение ONESEC задает имя файла, a SRC является расши- рением этого имени, указывающим, что файл используется для хранения исходно- го текста. Для организации ассемблирова- ния программы необходимо использовать специальную команду системы ISIS, ука- зав при этом требуемый ассемблер ASM80, ASM48 и т. д. в зависимости от ми- кропроцессора, для которого написана ас- семблируемая программа. Например, можно воспользоваться следующей ко- мандой : ASM8O:F1 :ONESEC.SRC, В процессе ассемблирования форми- руются два выходных файла, которые раз- мещаются на том же дискете, что и исход- ная программа. Выходные файлы имеют одно и то же имя, но разные расширители. Так, если файл Fl :ONESEC.LST является файлом листинга, то можно считать, что его содержимое представлено распечаткой на рис. 10.7. В левой части этой распечатки располагаются машинные команды, полу- ченные в процессе ассемблирования исход- ной программы; программа является перемещаемой, поскольку она представ- ляет собой программный сегмент CSEQ. Команды, модифицируемые при размеще- нии программы, отмечены на распечатке признаком С. Перемещение программы Второй выходной файл Fl :ONESEC.OBJ содержит команды объектной программы (левая часть распе- чатки). Объектная программа в этом фай- ле представлена в формате, который во- спринимается как программой LOCATE, так и редактором связей (компоновщи- ком), который мы рассмотрим позже. Дру- гими словами, во втором выходном файле содержится объектная программа, кото- рая не вполне готова к выполнению. Превращение перемещаемой объект- ной программы в абсолютную программу, готовую к выполнению, осуществляется программой LOCATE, входящей в систе- му ISIS. Для запуска этой программы в на- шем случае можно выдать команду LOCATE : Fl . ONESEC.OBJ CODE(4000H) В этой команде указано имя файла, содер- жащего объектную программу, и задан адрес в шестнадцатеричном коде (4000), определяющий ячейку, начиная с которой должна быть загружена программа. Кро- ме того, при необходимости может быть задан абсолютный адрес стека, опреде- лены данные (в рассматриваемой програм- ме они отсутствуют) и свободная область памяти. Результатом выполнения рассмотренной команды является ко- нечный выходной файл, обозначаемый следующим образом: :F1 : ONESEC Имя этого файла не имеет расширения. Те- перь программа, содержащаяся в файле, готова к выполнению. Для запуска про- граммы достаточно просто указать имя этого файла, которое в действительности воспринимается как команда. 3. Этап редактирования связей Поскольку рассматриваемая програм- ма представлена всего одним сегментом, она не должна обрабатываться редакто- ром связей LINKER системы ISIS. 4. Этап эмуляции В настоящем разделе мы будем рас- сматривать программу, листинг которой представлен на рис. 10.8. Это модифици- рованный вариант программы, из- ображенный на рис. 10.7, содержащий ошибки кодирования. В тексте на рис. 10.9 с помощью нумерации выделены «пара- графы», к которым относятся даваемые ниже пояснения. 1. Перед выполнением операций, пред- ставленных на рис. 10.9, выполнялась ко- манда ICE85 системы ISIS. После появле- ния на экране звездочки была выдана команда LIST.F1 :ONESEC.ICE, которая обусловливает запись в файл с указанным в команде LIST именем всей информации, вводимой далее пользовате-
60 Глава 10 ISIS-II 8080/8085 MACRO ASSEMBLER, V2.0 MODULE PAGE LOC OBJ SEQ SOURCE STATEMENT ; Программа на языке Ассемблера, предназначенная ; для вывода на экран консоли символа X через каждую секунду F809 0016 060C 0018 <*8 0019 OD 001A C21900 001D 3D 001E C21800 0021 C9 0000 0000 310000 S 0003 1632 0005 3EC8 0007 CD1600 C 000A 15 000B C20500 C 000E 0E58 0010 CD09F8 0013 C30300 C EQu 0F809H } Определение адреса мониторной программы СО CSEG ; Перемещаемый сегмент STkln 2 , Установка длины стека lxi sp, stack ; Инициализация указателя стека mvi d,5 0 ; Задание числа вызовов подпрограммы DELAY mvi А, 200 ; Параметр подпрограммы call delay ; Вызов подпрограммы DCR D jnz L2 , Выполнение 50 циклов занимает 1 секунду mvi с,'Х' , Загрузка символа X в регистр С call со , Вызов программы вывода данных на экран консоли jmp l 1 , Переход на начало "бесконечного" цикла ’ Подпрограмма DELAY mvi в,12 MOV с,в DCR С JNZ L *♦ DCR А JNZ L3 RET end start , Выполнение программы начинается с команды с меткой START PUBLIC SYMBOLS EXTERNAL SYMBOLS USER SYMBOLS CO A F809 DELAY C 0016 LI C 000 3 L2 C 0005 L3 C 0018 L«« C 0019 START C 0000 ASSEMBLY COMPLETE, NO ERRORS Рис. 10.8. Программа на языке ассемблера микропроцессора 8085. лем, и информации/ выдаваемой эмулято- ром ICE85. Этот файл может быть выве- ден на печать. С помощью команды МАР указывает- ся, что блок с начальным логическим адре- сом 2000 (по умолчанию считается, что ад- реса представлены в шестнадцатеричном коде) помещается в память системы Intellec, начиная с адреса 7000. Поскольку размер блока не задан, подразумевается, что его длина равна 2К байт. Так как в рассматри- ваемой программе используется монитор, с помощью очередной команды МАР бло- ку с начальным адресом F000 и конечным адресом FFFF ставится в соответствие область памяти в системе Intellec с теми же самыми адресами. Аналогично устанавли- вается соответствие адресов для блока с начальным адресом 0. Эмулятор ICE85 выдает предупреждающее сообщение о выполнении распределения памяти си- стемы, но, поскольку распределение про- изведено точно в пределах памяти си- стемы, а этого и требовалось так или иначе достигнуть, то для беспокойства нет осно- ваний. Порты ввода-вывода, которые ис- пользуются в системной подпрограмме СО, вызываемой из рассматриваемой про- граммы, также распределяются в системе Intellec. Распределение портов с другими номерами недопустимо. Следует отме- тить, что в рассматриваемом тексте в лю- бой строке, как и в языке ассемблера, после точки с запятой помещается комментарий. 2. Команда LOAD (загрузить) исполь- зуется для ввода программы (ONESEC), находящейся на дискете устройства 1. 3. Команда SYMBOLS позволяет ото- бразить соответствие символов и адресов памяти, которое было установлено во вре- мя загрузки программы. Символические имена доступны системе, поскольку во вре- мя ассемблирования был задан параметр DEBUG. Строка MODULE.. MODULE означает, что объектный модуль (програм- ма) имеет имя MODULE. Это имя при- своено по умолчанию, так как в команде LOCATE не было задано определенного имени. 4. Запрос содержимого счетчика ко- манд (PC). В него должно было загрузиться символическое значение START, поскольку оно использовано в псевдокоманде END рассматриваемой программы. Счетчик ко- манд действительно содержит заданное значение. 5. По команде GO-наиболее простой команде режима эмуляции - программа,
2 3 4 5 6 7 8 9 10 11 12 13 14 18 16 17 18 19 20 21 22 23 24 -MAP 2000 = INTELLEC 7000 ; Младшие адреса памяти системы Intellec "MAP FOOD TO FFFF - INTELLEC F 00 0 ; Выделяются монитору "MAP 0 - INTELLEC 0 ; Такого распределения требует монитор WARN Cl CAPPING OVER SYSTEM -MAP IO F0 TO FF - INTELLEC -LOAD :F1:ONESEC -SYMBOLS MODULE ..MODULE .CO=F809H .DELAY=2016H .Ll=2003H . L2 = 2005H .L3=2018H .LU=2019H .START=2000H "PC ; Произведена ли загрузка из файла? 2000Н -GO EMULATION BEGUN EMULATION TERMINATED, PC=2019H PROCESSING ABORTED -REGISTERS P=2019H S=202EH A=07H F=14H B=0CH C=0AH D=27H E=00H H=00H L=00H I=00H -DEFINE .L2A = .DELAY - 8 Определена метка команды "MVI C,'X'” -SYMBOLS .L2A=200EH MODULE ..MODULE ,CO=F809H .DELAY=2016H .Ll=2005H . L2 = 2005H .L5=2018H .L4=2019H . START = 2000H "BYTE .L2A LENGTH 2 ; Отобразить команду, расположенную в ячейке с заданным адресом 200ЕН=0ЕН 58Н *GO FROM .START TILL .L2A EXECUTED EMULATION BEGUN EMULATION TERMINATED, PC=2010H »‘RC ; В регистре С должен содержаться знак X 58Н ’‘BASE = ASCII ; Переход в режим отображения в коде ASCII ’‘RC X ’‘BASE = Н ’‘PRINT -20 ; Трассировка ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 09U7: 2019 DCR C 09U9: 201A JNZ 2019 0955 : 2019 DCR C 0957 : 201A JNZ 2019 0963: 2019 DCR C 0965 : 201A JNZ 2019 0971: 2019 DCR C 0973 : 201A JNZ 2019 0979: 2019 DCR C 0981 : 201A JNZ 2019 0987: 2019 DCR C 0989: 201A JNZ 2019 0995 : 2019 DCR C 0997: 201A JNZ 1001: 201D DCR A 1 003: 201E JNZ 1 007 : 202 1 RET 202E-R-0A 202F-R-20 1013: 200A DCR D 1015: 200B JNZ 1019: 200E MVI C, 58 "GO FROM .START TILL .DELAY EXECUTED EMULATION BEGUN EMULATION TERMINATED, PC=2018H "WORD SP ; Отображение слова из верхушки стека 202ЕН=200АН 200АН является адресом возврата для подпрограммы DELAY "RD = 50Т "ENABLE DUMP CALL RETURN "BYTE (.L2 + 1) = 2 ; Изменение параметра задержки "STEP FROM .START TILL RD < U7T EMULATION BEGUN 2007-E-CD 2008-R-16 2009-R-20 202F-W-20 202E-W-0A P=2016H S=202EH A=02H F=5UH B=0CH C = 58H D=52H E=00H H=00H L=00H I=00H 2021-E-C9 202E-R-0A 202F-R-20 P=200AH S=2030H A=00H F=5UH B=0CH C=00H D = 32H E=00H H=00H L=00H I=00H 2007-E-CD 2008-R-16 2009-R-20 202F-W-20 202E-W-0A
Р=201бН S=202EH А=02Н F = 10H В=ОСН С = ООН D=J1H Е=ООН H = 00H L = OOH 2021-Е-С9 202E-R-0A 202F-R-20 Р=200АН S=2030H А=ООН F=5UH В=ОСН CsOOH D=31H Е=ООН Н=ООН L=OOH 2007-E-CD 2008-R-16 2009-R-20 202F-W-20 202E-W-0A Р=201бН S=202EH А=02Н F=1UH В = 0СН С=ООН D = 30H Е=ООН Н = ООН L=OOH 2021-Е-С9 202E-R-0A 202F-R-20 Р=200АН S=2030H А=ООН F=5UH В = ОСН С=ООН D = 30H Е = ООН Н = ООН L = OOH 2007-E-CD 2008-R-16 2009-R-20 202F-W-20 202E-W-0A Р=2016Н S=202EH А=02Н F=OOH В=ОСН С=ООН D=2FH Е=ООН Н=ООН L = OOH 2021-Е-С9 202E-R-0A 202F-R-20 Р=200АН S=2030H А=ООН F=5UH В = ОСН С = ООН D = 2FH Е=ООН Н=ООН LsOOH EMULATION TERMINATED, РС=200ВН 25 -MAP SHARED I=OOH IsOOH I=OOH I=00H I=OOH I=OOH 0000=1 0000 0800=G 1000=G 1800=G 2000=1 7000 2800=G 3000=G 3800=G U000=G U800=G 5000=G 5800=G 6000=G 6800=G 70O0=G 7800=G 8000=G 8800=G 9000=G 9800=G A000=G A800=G B000=G B800=G C000=G C800=G D00O=G D800=G E0Q0=G E800=G F000=I FOOD F800=I F800 25 "RESET HARDWARE ; Изменение конфигурации аппаратных средств ВСЭ, теперь используется SDK-85 27 «МАР 2000 - USER 25 «BYTE 20 00 = I BYTE 7000 TO 7023 ; Пересылка программы из памяти Intellect память SDK-85 29 «МАР SHARED 0000=1 0000 0800=G lOOOzG 1800=G 2000=U 2800=G 3000=G 3800=G U000=G 4800=G 5000=G 5800=G 6000=G 6800=G 7000=G 7800=G 8000=G 8800=G 9000=G 9800=G A000=G A800=G B000=G B800=G C000=G C800=G D000=G D800=G E000=G E800=G F000=I F000 F800=I F800 «; Для монитора все еще используется память Intellec 30 «BYTE 2000 ТО 2023 ; Проверка правильности пересылки программы 2000Н=31Н ЗОН 20Н 16Н 32Н ЗЕН 02Н CDH 16Н 20Н 15Н С2Н 05Н 20Н OEH 58Н 2010H=CDH 09Н F8H СЗН ОЗН 20Н ОбН ОСН U8H 0DH С2Н 19Н 20Н 3DH С2Н 18Н 2020Н=20Н С9Н 0AH 72Н «GO FROM .START EMULATION BEGUN 31 EMULATION TERMINATED, PC = 002«*H «GO FROM .START FOREVER EMULATION §EGUN 32 EMULATION TERMINATED, PC=2018H 33 «GO FROM .START FOREVER EMULATION BEGUN 34 EMULATION TERMINATED, PC=2019H PROCESSING ABORTED 36 «BYTE (.L2 + 1) = 200T ; Восстановление параметра задержки 36 «GO FROM .START EMULATION BEGUN 37 EMULATION TERMINATED, PC=2019H PROCESSING ABORTED 36 «EXIT 39 «MAP U000 = INTELLEC 7000 «MAP F000 TO FFFF = INTELLEC F000 «MAP 0 = INTELLEC 0 WARN C1:MAPPING OVER SYSTEM «MAP IO F0 TO FF = INTELLEC 40 «LOAD :F1:ONEERR 41 «SYMBOLS MODULE ..MODULE .CO=F809H .CHAR=U028H .DELAY=401CH .Ll=U006H .L2=4008H .L3=U01EH .LUsUOlFH . START = 4000H 42 «GO EMULATION BEGUN 43 EMULATION TERMINATED, PC=U020H PROCESSING ABORTED « • На экран выводятся ошибочные символы 44 «GO FROM .START TILL .CO EXECUTED EMULATION BEGUN 45 EMULATION TERMINATED, PC=FD1DH 46 «PRINT -3
Распространенные микропроцессорные системы 63 ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 1003: 4011 MOV С,М U028-R-41 1007: U012 CALL F809 ЙОЗб-Ы-ЦО U035-W-15 1017: F809 JMP FD1D 47 «GO ; Сохраняется прежнее условие прерывания EMULATION BEGUN EMULATION TERMINATED, PC=FD1DH 45 «PRINT -3 ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 1003: 4011 MOV C,M U029-R-00 1007: 4012 CALL F809 U036-W-U0 L035-W-15 1017: F809 JMP FD1D 49 «GO ; SAME BREAK CONDITION AS BEFORE EMULATION BEGUN EMULATION TERMINATED, PCzFDIDH 50 “PRINT -J ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 1003: 4011 MOV C,M Ц029-Й-00 1007: 4012 CALL F809 9036-W-U0 L035-W-15 1017: F809 JMP FD1D “GO EMULATION BEGUN EMULATION TERMINATED, PC=FD1DH «PRINT -3 ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 1003: 4011 MOV C,M U02A-R-00 1007: 4012 CALL F809 L036-W-U0 L035-W-15 1017: F809 JMP FD1D 51 «STEP TILL RHL = L02B EMULATION BEGUN EMULATION TERMINATED, PC=L019H 52 «PRINT -5 ADDR INSTRUCTION ADDR-S-DA ADDR-S-DA ADDR-S-DA ADDR-S-DA 0999: FDU3 MOV A,C 1001: FDUU OUT F6 F6F6-0-00 1007: FD46 RET 4035-R-15 L036-R-L0 1013: 4015 LXI B, 0001 1019: 4018 DAD В 53 «BYTE 4015 = C6,01,77,00 ; PATCH THE FIX 54 «GO FROM .START FOREVER EMULATION BEGUN 55 EMULATION TERMINATED, PC=U01FH PROCESSING ABORTED 55 «EXIT Рис. 10.9. как и ожидалось, начинает выполняться с максимальной скоростью. При этом на эк- ран ЭЛТ, в качестве которого используется консольное устройство вывода макетной системы, выводится символ X. Этот сим- вол не представлен в рассматриваемой распечатке, так как выводится програм- мой, а на распечатке представлен только протокол диалога с ICE85. 6. Нажимается клавиша ESC (escape) консоли. На экране появляется содержимое счетчика команд PC. Это адрес команды, перед выполнением которой произошло прерывание программы. 7. По команде REGISTERS на экране отображается содержимое регистров про- цессора на момент прерывания: это содер- жимое счетчика команд, которое уже выво- дилось на экран ранее (см. п. 6); значение указателя стека, уменьшенное на 2 по срав- нению с начальным, что правильно, так как после вызова подпрограммы по ко- манде CALL была выполнена команда PUSH; содержимое регистра А (по сравне- нию с начальным значением оно уменьши- лось); значения флажков, которые пока не представляют интереса; содержимое реги- стра В, равное 12 (десятичное значение), за- писанное в этот регистр при выполнении первой команды подопрограммы DELAY; содержимое регистров Е, Н и L, которые в программе не используются; содержи- мое регистра прерываний, также не пред- ставляющее интереса. 8. С помощью команды DEFINE опре- деляется новый символ L2A, значение кото- рого является адресом очередного оста- нова программы. Отметим, что перед определяемым символом ставится точка,
64 Глава 10 а для определения значения символа мо- жет быть использовано выражение. 9. По команде SYMBOL сначала от- дельно отображается значение только что определенного символа L2A, а затем-все символы, определенные в модуле. 10. В данном примере по команде BYTE отображается содержимое двух бай- тов памяти, адрес первого из которых опре- деляется значением символа L2A. Команда BYTE введена с целью проверки правиль- ности определения символа L2A, адресую- щего команду, где установлена точка останова программы. После использова- ния команды BYTE становится оче- видным, что символ L2A определен пра- вильно. 11. По команде GO снова будет про- должена эмуляция, но не с точки прерыва- ния, а с точки входа START. В ходе эмуля- ции программа должна выполняться вплоть до команды, следующей за симво- лом L2A. 12. Когда эмулятор останавливается, значение счетчика команд равно адресу ко- манды, следующей за той, адрес которой определяет символ L2A. 13. Здесь команда RC использована для отображения содержимого регистра С. В этом регистре должен содержаться знак X, его шестнадцатеричное представление выведено на экран. 14. Соответствие этого кода символу X можно проверить по таблице, но проще дать указание на вывод не кода, а знака, соответствующего рассматриваемому шестнадцатеричному представлению в ко- де ASCII. 15. По команде RC на экран выдается содержимое регистра С. Теперь отобра- жается знак X. 16. Восстановление режима выдачи ин- формации в шестнадцатеричном представ- лении. 17. По команде PRINT выдается ин- формация о. 20 последних выполненных командах программы. Кроме того, можно было бы запросить вывод информации о 20 последних выполненных машинных циклах или о состояниях машины (по умолчанию предполагается выдача инфор- мации о командах). На экране появляется 20 команд. Сначала идут те, которые вы- полнились раньше. Информация выдается в формате, аналогичном формату исход- ного текста программы, т. е. выводятся ко- манды не в шестнадцатеричном представ- лении, а в виде команд, записанных на языке ассемблера. Такой формат представ- ления программы получен в результате обратного ассемблирования. В самом ле- вом столбце текста содержится внутрен- няя информация системы поддержки раз- работки, используемая для организации трассировки. Эта информация в данном случае не представляет интереса. Правее представлены адреса команд и собственно команды. Когда условие перехода выпол- няется, выводится адрес перехода, в про- тивном случае выводится только мнемо- ника команды условного перехода. Для любой команды, в которой есть обраще- ние к памяти, указываются адреса обраще- ния и соответствующее содержимое, а так- же тип обращения считывание - R, ввод -1, вывод-0, запись-W. В данном случае обращение к памяти происходит только при выполнении команды RET, располо- женной по адресу 2021. Адрес возврата ра- вен 200А-он определяется содержимым стека (202Е и 202F). 18. По команде GO программа должна выполняться с самого начала и до ко- манды с меткой DELAY включительно. 19. Эмуляция прекращена в заданной точке останова. 20. Команда WORD SP используется для вывода на экран указателя стека и сло- ва, расположенного в верхушке стека. Это слово содержит адрес команды, следую- щей за командой CALL DELAY. 21. Данная команда заносит в регистр D число 50 (десятичное значение, Т - сокра- щение от ten-десять). Она является подго- товительной командой для следующего этапа отладки программы. 22. Указание производить дамп со- стояния машины после каждого выполне- ния команд CALL и RETURN. 23. Для того чтобы воспринимать и оценивать информацию во время выдачи дампа на экран дисплея, программа дол- жна выполняться в пошаговом режиме. При этом время выполнения программы значительно увеличивается по сравнению с реальным временем. Чтобы уменьшить
Распространенные микропроцессорные системы 65 время выполнения программы, изменим один параметр (число циклов), переда- ваемый подпрограмме DELAY. Заметим, что выражение в команде BYTE, выпол- няющей желаемое изменение, заключено в круглые скобки. 24. После каждого выполнения команд CALL и RETURN выдается дамп. Выдача дампа продолжается до тех пор, пока со- держимое регистра D не станет меньше 47. Очевидно, что начальное значение содер- жимого регистра D равно 32Н или 50 в де- сятичной системе счисления, а конечное 2FH или 47, т. е. произведено требуемое число дампов. 25. Теперь подготовимся к переносу программы в память прототипа. Прове- рим распределение памяти. Видно, что все блоки, за исключением четырех блоков, размещенных в памяти Intellec, не опреде- лены. 26. С помощью специального кабеля и разъема эмулятор ICE85 подключается к плате микроЭВМ SDK-85, которая имеет достаточный объем памяти для ввода рас- сматриваемой программы. Эту ми- кроЭВМ будем считать прототипом. В связи с изменением конфигурации аппа- ратных средств требуется произвести уста- новку начального состояния аппаратуры. При этом в ICE85 запоминается изменение в конфигурации системы. 27. Блок объема 2К байт распределяет- ся в памяти пользователя, начиная с адре- са 2000. 28. Пересылка программы из памяти Intellec в «пользовательскую память», на- ходящуюся на плате SDK-85. Программа размещается, начиная с действительного адреса 2000, и занимает затребованное ко- личество последующих ячеек. 29. В данном распределении памяти указано, что блок с начальным адресом 2000 находится в памяти пользователя. Память же, используемая монитором, и память для организации ввода-вывода выделяется в адресном пространстве си- стемы Intellec. 30. Чтобы убедиться в том, что пере- сылка программы прошла успешно, дается команда на вывод содержимого области памяти, где должна находиться програм- ма. Программа оказалась на месте. 31. Выдается команда запуска про- граммы. Теперь выполнение программы происходит с использованием как «поль- зовательской памяти», так и памяти си- стемы Intellec. 32. Эмуляция останавливается. При- чина останова здесь такая же, как и в п. 24. Система ICE85 сохранила это условие пре- кращения эмулирования. Благодаря этому можно воспользоваться данным условием без предварительной его установки. 33. В дальнейшем это условие остано- ва программы больше не потребуется. По- этому выдается команда GO с парамет- ром FOREVER, т. е. без указания послед- ней подлежащей выполнению команды. Этой командой сбрасывается предыдущее условие останова. 34. Программа выполняется, однако символ X выдается на экран слишком ча- сто. Нажатие клавиши ESC приводит к прекращению выполнения программы. 35. Высокая частота вывода знака X на экран обусловлена изменением параметра подпрограммы DELAY, выполненным в п. 23. Здесь производится восстановле- ние первоначального значения. 36. Снова запускаем программу. Те- перь, как и ожидалось, она выдает знак X через каждую секунду. 37. Прерываем выполнение про- граммы. 38. Выходим из системы ICE85. 39. Производим распределение памя- ти, учитывая, что программа была подго- товлена для выполнения, начиная с ячейки с адресом 4000. 40. Загрузка программы. 41. Вывод на экран значений символов программы. 42. Запуск программы. 43. Программа работает несколько странно. На экран выводятся буква А и другие знаки, не имеющие очевидной связи друг с другом. 44. Необходимо организовать поиск ошибки в программе. Остановим эмуля- цию в ближайшей подходящей точке после загрузки знака в регистр С (строка 14). Подпрограмма СО будет при этом выпол- няться. 45. Выполняем прерывание. В счетчике команд содержится адрес, который отно-
66 Глава 10 сится к области памяти, где находится программа монитора СО. 46. Прослеживаем результаты работы трех последних выполненных команд. Оче- видно, что по команде MOV в регистр С производится пересылка значения 41Н из ячейки памяти с адресом 4028. Этому шестнадцатеричному значению соответ- ствует буква А. Следовательно, пока про- грамма выполняется правильно. 47. Выдаем команду GO без указания условия останова программы; действие ранее указанного условия TILL.CO EXECUTED сохраняется. 48. Теперь результаты выполнения ко- манды MOV представляются очень подоз- рительными : в данной точке команда про- изводит пересылку содержимого ячейки с адресом 4029, а не ячейки с адресом 4028, как предполагалось при написании про- граммы. Согласно первоначальному за- мыслу, измененный знак должен был пере- сылаться из одной и той же ячейки памяти. Придется продолжить анализ выполнения программы. 49. Снова выдаем команду GO без ука- зания условия останова. 50. Адрес ячейки памяти в команде MOV продолжает изменяться. 51. Если программа действительно вы- полняется так, что происходит изменение адреса в команде MOV, то в очередной раз при выполнении рассматриваемого цикла содержимое регистра HL примет значение 402В. Будем выполнять команды про- граммы по шагам до тех пор, пока в реги- стре HL не окажется ожидаемого содержи- мого, т.е. адреса 402В. 52. Процесс эмуляции прекращается по условию RHL-402B. Внимательно анали- зируем ход выполнения следующих пяти команд. Ошибка заключается скорее всего в том, что в программе происходит изме- нение содержимого регистра HL, а должно выполняться изменение содержимого ячейки, адресуемой по регистру HL. (Обычная путаница при программирова- нии между адресом и содержимым.) 53. Чтобы убедиться в правильности вывода относительно причины ошибки, производим изменения в программе путем ввода 4-байт значения по адресу 4015. По- том, безусловно, нужно будет ввести изме- нение в исходный текст программы и вы- полнить ассемблирование. 54. Запускаем откорректированную программу. 55. Программа выполняется нормаль- но, прерываем процесс эмуляции. 56. Выходим из системы ICE85. 10.3. Макетные системы фирмы Tektronix Системы поддержки микропроцес- сорных разработок фирмы Tektronix являются универсальными. Все вместе они обеспечивают разработку программных средств для 26 типов микропроцессоров и микроЭВМ, включая микропроцессоры 8086, Z8000 и 68000. По своей архитектуре эти системы относятся к классу систем с главным и подчиненным процессорами. Ниже будут описаны системы 8001, 8002А, 8540, 8550 и 8560 фирмы Tektronix. 10.3.1. Система 8001 фирмы Tektronix Макетную систему 8001 (рис. 10.10) ло- гично выбирать в тех случаях, когда у пользователя имеется ведущая ЭВМ, ко- торая позволяет проводить разработку программного обеспечения, но желатель- но в дополнение к этому реализовать еще и внутрисхемную эмуляцию. В устройстве 8001 имеется собственная система команд, которая позволяет производить загрузку программ из другой ЭВМ и последующее выполнение этих программ в одном из трех режимов эмуляции. Для обеспечения последовательной передачи данных между устройством 8001 и локальным экранным терминалом и между устройством 8001 и ведущей ЭВМ используются две линии стандарта RS-232. Теперь рассмотрим ре- жимы эмуляции. Схема системы, работающей в режиме эмуляции 0, представлена на рис. 10.11. В этой схеме не используются внешние ап- паратные средства прототипа. Ведущая ЭВМ производит загрузку программы в устройство 8001, где она выполняется на процессоре-прототипе. Поскольку в этом режиме эмуляции не используются аппа-
Распространенные микропроцессорные системы 67 Ведущая ЭВМ 10.10. Стандартная схема включения веду- щей ЭВМ 8001. Источник’ с любезного согласия Tektronix, Inc 1980 Режим эмуляции 0 Рис. 10.11. Структурная схема системы 8001, работающей в режиме 0. Источник- с любезного согласия Tektronix, Inc 1980 ратные средства прототипа, все операции ввода-вывода осуществляются с использо- ванием системных периферийных устройств. Схема системы, работающей в режиме эмуляции 1, представлена на рис. 10.12. В этом режиме в процессе эмуляции ис- пользуются аппаратные средства прототи- па. Микропроцессор прототипа вынимает- ся из панели, где он был установлен, а в освободившееся гнездо вставляется раз- ъем, на который выведены сигналы с про- цессора-эмулятора для управления прото- типом. При этом аппаратные средства прототипа обеспечивают генерацию синх- росигналов и выполнение некоторых опе- раций ввода-вывода, а процессор-эмуля- тор выполняет соответствующую про- грамму. Эта программа может находиться либо в ОЗУ эмулятора (которая организо- вана блоками по 128 байт), либо ОЗУ прототипа. На рис. 10.13 представлена схема си- стемы, работающей в режиме эмуляции 2. Здесь в отличие от режима 1 не исполь- зуются ни ОЗУ, ни средства ввода-вывода эмулятора. Все программы и данные, а также средства ввода-вывода содержатся в прототипе. Благодаря тому что в процес- се эмуляции выполнение программы кон- тролируется устройством 8001, в ходе раз- работки могут использоваться следующие средства отладки программ: точки остано- ва, трассировка, отображение содержимо- го регистров и при необходимости измене- ние их содержимого. В режимах 1 и 2 может быть использо- ван логический анализатор, работающий в реальном времени, имеющий 36 внутрен- них и восемь внешних каналов. В системе 8001 реализованы про- граммные средства, позволяющие исполь- зовать экранный терминал в двух раз- личных режимах. В первом режиме терми- нал связывается непосредственно с веду- щей машиной и функционирует так же, как и любой другой терминал ЭВМ. При этом пользователь системы 8001 может рабо- тать со всеми программными средствами поддержки разработки, реализованными в главной ЭВМ так, как если бы они входи- ли в состав программных средств устрой- ства 8001. Для обеспечения такой возмож- ности в устройстве 8001 предусмотрена
68 Глава 10 Прототип Режим эмуляции 1 Рис. 10.12. Структурная схема системы 8001, работающей в режиме 1. Источник с любезного согласия Tektronix, Inc 1980 Режим эмуляции 2 Прототип Рис. 10.13. Структурная схема системы 8001, работающей в режиме 2. Источник с любезного согласия Tektronix, Inc 1980 команда СОММ. При этом пользователь может разрабатывать свои программы в предположении, что он работает на авто- номной макетной системе. В первом режиме устройство 8001 дей- ствует как интерфейс между экранным терминалом и ведущей ЭВМ. Для обеспе- чения интерфейса с различными ведущими машинами в устройстве 8001 предусмот- рены гибкие аппаратные и программные средства; в частности, реализован модуль связи, в котором используется порт после- довательной передачи данных, совме- стимый с линиями стандарта RS232C. По- средством перемычки в модуле может быть установлена любая стандартная ско- рость передачи данных от НО до 2400 бит/с. Устройство 8001 частично адаптируется к требованиям, предъяв- ляемым программным обеспечением глав- ной машины. В команде СОММ пользова- тель может задать следующие параметры:
Распространенные микропроцессорные системы 69 метод эхо-контроля (локальный или уда- ленный), наличие или отсутствие перевода строки, последовательность символов «подсказки» (данной до шести знаков), не- обходимую задержку при вводе (от 0 до 25,5 с.) и контрольные разряды (восемь различных комбинаций). Программист, используя ведущую ЭВМ, получает файл, содержащий объект- ную программу, и затем загружает его в устройство 8001. Устройство 8001 связа- но с ведущей ЭВМ протяженной линией, и поэтому каждый блок данных в главной ЭВМ кодируется и представляется в таком формате, который позволяет устройству 8001 обнаруживать ошибки передачи данных. При этом используется так назы- ваемый формат ТЕКНЕХ. Таким образом, ведущая ЭВМ должна содержать програм- му, преобразующую файл объектного ко- да в формат ТЕКНЕХ. В устройстве 8001 при операциях вво- да-вывода используется квитирование (об- мен с подтверждениями). Поэтому в веду- щей ЭВМ должна быть соответствующая программа, реализующая подобный ре- жим. Устройство 8001 производит деши- фрирование каждого получаемого блока данных и записывает «чистый» объектный код в память программ устройства 8001. Перед выполнением программы видео- терминал должен быть выведен из режима СОММ с помощью команды NULL (ESC). Теперь устройство 8001 использует этот терминал для управления процессом от- ладки программы. Процесс выгрузки про- граммы из устройства 8001 подобен рас- смотренному выше процессу загрузки про- грамм. Применение системы 8001 особенно эф- фективно, когда она заменяет ряд специа- лизированных автономных макетных си- стем поддержки микропроцессорных раз- работок. Действительно, применение нако- пителя на магнитных дисках, имеющегося в комплекте ведущей ЭВМ, экономичнее, чем использование независимых ЗУ на гибких дисках, которые должны входить в состав каждой макетной системы. Кроме того, экономически выгоднее использо- вать одно быстродействующее печатаю- щее устройство, чем несколько среднеско- ростных. Существует еще одно важное обстоя- тельство, подтверждающее эффективность применения в системе ведущей ЭВМ. Дело в том, что каждая специализированная си- стема поддержки разработок имеет свой собственный командный язык, который пользователь должен изучить. Это приво- дит к финансовым потерям, связанным с необходимостью обучать инженеров ра- боте с каждой новой системой. Пользова- тель же системы 8001 при переходе от одного микропроцессора к другому дол- жен осваивать только новую систему ко- манд микропроцессора. Зато все си- стемные команды устройства 8001 и ведущей ЭВМ остаются прежними. 10.3.2. Система 8002А фирмы Tektronix Система 8002А, упрощенная структур- ная схема которой представлена на рис. 10.14, является универсальной систе- мой поддержки микропроцессорных раз- работок, ориентированной на создание программных средств для 26 типов микро- процессоров. Каждому отдельному ми- кропроцессору соответствуют свой ассем- блер и эмулятор. Основная стойка си- стемы 8002А может содержать до 20 плат. Система 8002А имеет память программ емкостью 32К байт и спаренный накопи- тель на гибких магнитных дисках. Допол- нительно в системе могут использоваться построчно печатающее устройство LP8200 и видеотерминал 4024/4025. Программные средства операционной системы очень хорошо развиты и вклю- чают в себя мощный редактор текстов, ма- кроассемблер, генерирующий переме- щаемые программы, и программные сред- ства отладки. При отладке программ могут использоваться три уровня эмуля- ции ; кроме того, может быть использован анализатор, работающий в реальном времени. (Последние две возможности аналогичны возможностям, присущим си- стеме 8001.) Дисковая операционная система Tekdos обеспечивает выполнение следую- щих функций: управление файлами на гиб- ких дисках, передачу данных, управление периферийными устройствами. Кроме то-
Зонд системы сбора данных Р6451 Зонд управления прототипом I--------------------1 Разъем микро- процессора- прототипа Дисковод №2 Дисковод №1 Контроллер Дополнительные дисководы Анализатор прототипа, работающий в реальном времени Рис. 10.14. Упрощенная структурная схема сис- темы 8002А. Источник с любезного согласия Tektronix, Inc 1980 I____________________ __ J д д д —1 Панели Кабельный интерфейс эмулятора Системный терминал Дополнительные периферийные устройства Интерфейс сбора ЗУ на гибких дисках 119-0921-00 Микропроцессорная лаборатория
Распространенные микропроцессорные системы 71 го, система Tekdos организует работу ре- дактора текстов, ассемблера, редактора связей и программ поддержки процесса эмуляции, средств отладки программ и программирования ППЗУ. Хотя редактор текстов является стро- коориентированным, а не знакоориентиро- ванным, он дает ряд удобных средств для модификации программ. Допускается ис- пользование макросов. Система Tekdos имеет команду для объединения всех программных файлов в единую про- грамму. Программные средства нового ассем- блера для каждого типа микропроцессора размещаются на соответствующем гиб- ком диске. Операционная система Tekdos должна модифицироваться при включении в систему возможности поддержки разра- ботки нового типа микропроцессора (из- менению подлежат редактор связей, пере- мещаемый ассемблер и его макросред- ства). Система 8002А, как и 8001, может работать в режимах эмуляции 0,1 и 2; до- полнительно в этих системах может ис- пользоваться анализатор прототипа, рабо- тающий в реальном времени. Система 8002А содержит в своем соста- ве следующие модули: системный процес- сор, отладочную плату, системную па- мять, память разрабатываемых программ, системные средства связи, сменный про- цессор-ассемблер. В качестве дополни- тельных необязательных модулей в систе- му входят: процессор-эмулятор, разъем для управления аппаратурой прототипа, анализатор для работы в реальном вре- мени и программатор ППЗУ 2704/2708. Пользователь с помощью консоли управляет системным процессором, ко- торый играет роль устройства управления в системе 8002А. Системный процессор имеет собственный порт ввода-вывода для клавиатуры и управляет связным моду- лем, который выполняет все функции вво- да-вывода при работе с периферийными устройствами. Он, кроме того, управляет модулем отладки, который в свою очередь используя системную шину, управляет процессорами-эмуляторами. Модуль отладки организует интерфейс между системным процессором и процес- сором-эмулятором, а также поддерживает выполнение всех процедур отладки про- грамм. Системный процессор имеет свою соб- ственную память, состоящую из ПЗУ ем- костью 256К байт (память для системного программного обеспечения) и ОЗУ ем- костью 16К байт. Память программ (ОЗУ емкостью 32К байт) используется совместно системой и процессорами-эмуляторами. Ее емкость может быть увеличена до 64К байт моду- лями по 16К байт. Модуль системных связей имеет три порта, удовлетворяющих стандарту RS-232, для связи с построчно печатаю- щим устройством LP8200 фирмы Tektronix, видеодисплеем и модемом. Для каждого порта может быть назначена своя скорость передачи данных из набора стан- дартных скоростей 110, 300, 600, 1200 и 2400 бит/с. Этот модуль имеет возмож- ность перестраивать адреса своей памяти. Благодаря этому в операциях ввода-выво- да может непосредственно использовать- ся память прототипа или память про- грамм системы 8002А, работающей в ре- жиме 1. Модуль процессора-ассемблера рабо- тает со всеми доступными эмуляторами. Он обеспечивает трансляцию программы, написанной Да языке ассемблера, в про- грамму на машинном языке. Модуль отладки и модуль ввода-выво- да, расположенные на передней панели, от- деляют системную шину от программной. Обе шины имеют одинаковые характери- стики, и если некоторая плата работает с одной шиной, то она будет работать и с другой. 10.3.3. Макетные системы серии 8500 фирмы Tektronix В настоящее время серия 8500 пред- ставлена тремя системами: 8550, 8560 и 8540. Системы этой серии обеспечивают поддержку разработки программных средств для 26 современных микропроцес- соров, включая некоторые новые 16-раз- рядные микропроцессоры. Все три си- стемы способны работать в режимах эмуляции 0, 1 и 2, а система 8540 снабжена независимой периферийной станцией, по-
72 Глава 10 зволяющей осуществлять эмуляцию в ре- жиме 2. В системах серии 8500 используется процессор-эмулятор функционально иден- тичной процессору системы прототипа. Средства, предназначенные для ведения эмуляции в «реальном времени», обеспечи- вают выполнение всех обычных методов отладки программ. Для отладки 8-разрядных микропро- цессорных систем может быть использо- ван стандартный анализатор, работающий в реальном времени, а для 16-разрядных систем-анализатор-трассировщик, в ко- тором реализованы новые механизмы за- пуска. Фирма Tektronix предлагает разно- образные программные средства поддерж- ки разработки систем для 26 типов микро- процессоров. К этим средствам относятся языки высокого уровня (только для неко- торых микропроцессоров) и ассемблеры. Все системы серии 8500 программно сов- местимы: это касается ассемблеров пере- мещаемых программ с макросредствами и средствами условного ассемблирования, интерактивным редакторам и генераторам библиотек. В системе реализованы два языка высо- кого уровня - Паскаль и MDL/M, в ко- торых учтены особенности микропроцес- сорных систем. Для систем серии 8500 разработана операционная система, предоставляющая пользователю удобные средства модифи- кации программ. Кроме того, пользова- тель имеет возможности выбрать не обыч- ный, а более совершенный экранный ре- дактор. Система 8550 Система 8550 рассчитана на одного пользователя и поддерживает разработку программных средств для 26 типов микро- процессоров. Она состоит из двух устройств, рассматриваемых ниже. Кроме того, в системе имеются видеотерминал и построчно печатающее устройство. В со- став центрального устройства управления, или устройства поддержки разработок 8301, входят системный ЦП, программа- тор ППЗУ (необязательное устройство) и средства отладки. Второе устройство си- стемы включает схемы управления двух- сторонними гибкими магнитными диска- ми и средства управления файловой системой. Это устройство называют устройством управления данными 8501. Как уже упоминалось, во всех системах серии 8500 можно использовать языки вы- сокого уровня Паскаль и MDL/M и два анализатора. Все системы серии обеспечи- вают эмуляцию в режимах 0, 1 и 2. Система 8550, рассчитанная на одного пользователя, может подключаться к дру- гой макетной системе фирмы Tektronix двумя способами: через ведущую ЭВМ или посредством использования системы 8550 в качестве элемента системы 8650, рассчитанной на работу со многими поль- зователями. Системы серии 8500 предоставляют пользователю возможность выбора ассем- блера для любого из 29 различных микро- процессоров. Возможности стандартного ассемблера систем серии 8500 уже были в общих чертах описаны. Несмотря на то что каждый ассемблер предназначен для определенного микро- процессора, все ассемблеры выполняют одни и те же фундаментальные операции. Это облегчает переход программиста от одного микропроцессора к другому. Про- граммист должен знать каждый новый на- бор команд микропроцессора, однако са- ма система 8550 различия в командах ассемблера никак не учитывает. В системе 8550 языки имеют расши- ренный набор логических, числовых и строковых функций. Константы могут быть представлены в двоичной, восьме- ричной, десятичной или шестнадцатерич- ной системах счисления; знаковые кон- станты представляются в коде ASCII в виде строк, заключенных в кавычки. С помощью программы генерации библиотек может быть образовано до 100 библиотечных файлов, содержащих объектные модули. Эти файлы можно мо- дифицировать посредством включения новых или удаления существующих объектных модулей. Для выполнения ча- сто используемых операций при работе с библиотеками можно подготовить ко- мандный файл; благодаря этому будет экономиться время пользователя при вы- полнении соответствующих операций.
Распространенные микропроцессорные системы 73 Помимо стандартных функций редак- тор связей (компоновщик модулей) выпол- няет следующие действия: выдает карту распределения памяти, в которой отмечает конфликтующие диапазоны адресов; вы- рабатывает листинг, документирующий процесс компоновки (где приводятся вы- полненные команды, использованные гло- бальные и внутренние символы); выдает статистическую информацию (число оши- бок, неопределенные символы, модули, секции и любые адреса переходов). В системе может быть использован терминал СТ85ОО. Мы упоминали об этом терминале, когда рассматривали макет- ную систему поддержки разработок 8001 фирмы Tektronix. Система 8560 Система 8560 фирмы Tektronix, упро- щенная структурная схема которой пока- зана на рис. 10.15, представляет собой си- стему коллективного пользователя. В системе реализованы программные средства для работы в режиме разделения Рис. 10.15. Упрощенная структурная схема сис- темы 8560 с подключенными к ней макет- ными системами 8550 и 8002А. Источник с любезного согласия Tektronix, Inc 1980 времени. Она рассчитана на использова- ние дешевых терминалов, подключаемых в соответствии со стандартом RS-232. Вы- полнение функций системы распределено между программными и аппаратными средствами. Центральный процессор си- стемы (устройство 8560) построен на осно- ве микропроцессора LSI 11 /23 фирмы DEC. В состав аппаратных средств системы вхо- дят: динамическая память емкостью 128К слов; до восьми рабочих станций, связы- ваемых с системой интерфейсом стандарта RS-232 или высокоскоростным интерфей- сом; 8-дюймовый винчестерский диск ем- костью 35 Мбайт; гибкий диск емкостью 1 Мбайт. В системе 8560 реализована операцион- ная система режима разделения времени UNIX V7. В состав программного обеспе- чения наряду с другими компонентами входят: компилятор языка Паскаль, раз- витый экранный редактор, макроассем- блеры, создающие перемещаемый объ- ектный код. Кроме того, в состав про- граммного обеспечения включен ассем- блер системы поддержки разработок 8550, обеспечивающий совместимость с этой си- стемой по исходным текстам программ. К системе коллективного пользования 8560 могут подключаться различные ма- I-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
74 Глава 10 Рис. 10.16. Схема связи устройства 8540 с систе- мами поддержки разработок. Источник: с любезного согласия Tektronix, Inc 1980 кетные системы фирмы Tektronix, в част- ности система 8550, рассчитанная на одно- го пользователя. Различные системы под- ключаются с помощью устройства 8502 (модуль интерфейса с рабочими станция- ми), являющегося частью системы 8560. К устройству 8502 можно подключать до восьми рабочих станций. В качестве рабо- чей станции могут использоваться либо система поддержки разработок в полном составе, либо просто видеотерминал, имеющий стандартный интерфейс RS-232. Как рабочие станции могут использовать- ся макетные системы 8550, 8001 и 8002А фирмы Tektronix. К устройству 8502 может также под- ключаться специальный блок интеграции программных и аппаратных средств (устройство 8540). На рис. 10.16 представ- лены возможные соединения устройства 8540 с другими системами поддержки раз- работок, в частности, с системой коллек- тивного пользования 8560. В состав блока интеграции входят следующие про- граммные и аппаратные средства: 1. Операционная система с про- граммными средствами, хранимыми в ПЗУ. 2. Разделенные шины. 3. 24-разрядная адресная шина. 4. До девяти 8- и 16-разрядных эмуля- торов. 5. Устройство программирования ППЗУ. 6. Средства для подключения анализа- тора-трассировщика, в котором реализо- ваны новые механизмы запуска. 7. Сложный модуль связи, реализую- щий интерфейс стандарта RS-232 (ско- рость передачи данных вплоть до 9600 бод) и высокоскоростной интерфейс для связи с системой 8560. 8. Резидентные диагностические сред- ства. 9. Средства символической отладки программ на языке ассемблера. 10. Модуль быстрой статической памя- ти на 32К байт (16К слов). 11. Терминалы с интерфейсом стандар- та RS-232, 12. Средства отладки, обеспечивающие трассировку, обратное ассемблирование, организацию точек прерывания, отобра- жение и изменение содержимого регистров и памяти, перераспределение адресного пространства памяти, защиту памяти по записи (моделирование ПЗУ) и моделиро- вание ввода-вывода для некоторых эмуля- торов, работающих в режимах эмуляции 0 и 1. Используя устройство 8540, можно формировать различные конфигурации ап- паратных средств, включающие ведущую машину, систему коллективного пользова- ния 8560, систему поддержки разработок 8002А (см. рис. 10.16). Благодаря блоку ин- теграции гибко используются распреде- ленные программно-аппаратные средства. Изменение конфигурации системы облег- чается параметризуемостью средств связи. Благодаря подключению к устройству 8540 ведущих вычислительных машин, на- пример PD Pl 1, машин фирмы IBM и т. д., реализуются дополнительные возможно- сти для осуществления процесса эмуляции. Если устройство 8540 используется со- вместно с анализатором-трассировщиком, то пользователи ведущих ЭВМ, входящих в такую систему, получают очень мощные средства разработки. К устройству 8540 целесообразно подключать существующие макетные системы фирмы Tektronix, по-
Распространенные микропроцессорные системы 75 скольку тем самым расширяются их воз- можности. Пример 10.2. Рассмотрим пример, иллюстрирую- щий процесс редактирования текста про- граммы, ассемблирования, компоновки и эмулирования программы, написанной на языке ассемблера для микропроцессора 8085 (текст программы приведен ниже). Для выполнения указанных действий бу- дем использовать систему поддержки раз- работок фирмы Tektronix 8550, снабжен- ную дисковой операционной системой DOS/50. используемые при редактировании исход- ного текста программы. Подробно с воз- можностями редактора и правилами его применения можно познакомиться по со- ответствующему руководству. С помощью команды DATE можно производить установку даты и текущего времени. Например, если сегодня 31 октя- бря 1980 г. и сейчас 8 ч 30 мин, то нужно ввести следующую команду: > РАТЕ 31-ОСТ-80/8 :30 :00 < CR > С помощью команды SELECT дается указание операционной системе DOS/50 использовать ассемблер и эмулятор для TITLE ORG “8085 100H DEMONSTRATION RUN PROGRAM” ; Определение адреса первой команды программы DEMO LXI H.5OOH , Установка указателя таблицы MVI B,5 , Установка счетчика циклов XRA A , Очистка аккумулятора LOOP ADD M , Прибавление к аккумулятору числа из таблицы INX H I Перевод указателя таблицы на следующий байт DCR В ; Уменьшение значения счетчика циклов JNZ LOOP ; Если число циклов меньше 5, то переход на метку LOOP OUT OF7H ; иначе вызов SVC NOP ; для завершения выполнения программы ;SRB POINTER ORG 4OH : Определение адреса указателя SRB BYTE 00.42H , Указатель блока SRB для EXIT SVC ,SRB FOR EXIT SVC BYTE 1AH , 1АН - код функции для запроса EXIT SVC END DEMO , Конец исходной программы Решение микропроцессора 8085: Исходный текст программы будет со- держаться в файле ASM. Команды и текст, вводимые пользователем, будут подчерки- ваться. Ответы системы, напротив, не подчеркиваются. Чтобы ввести программу на язык ас- семблера, следует обратиться к редактору с помощью следующей команды: > EDTT ASM ♦EDIT VERSION | • | ♦INPUT Теперь можно вводить текст программы на языке ассемблера. Редактор позволяет выполнять такие функции, как добавление (ADD), удаление (DELETE), поиск (SEARCH) и подстановки (SUBSTITUTE), > SELECT 8085 < CR > Теперь прокомментируем директивы языка ассемблера Tektronix на следующем примере: TITLE "8085 EXAMPLE PROGRAM"' С помощью директивы TITLE про- граммист идентифицирует исходную про- грамму; заголовок программы, опреде- ляемый этой директивой, появляется в исходном файле и в листинге про- граммы, вырабатываемом ассемблером. Директива ORG 100Н
76 Глава 10 указывает ассемблеру, что объектный код, соответствующий команде LXI Н,500Н, должен размещаться в памяти, начиная с ячейки с адресом 100Н. По директиве ORG 40Н определяется, что информация, необходи- мая для обращения к операционной систе- ме, размещается в ячейках памяти, на- чиная с ячейки 40Н. Запросы к операцион- ной системе DOS/50 на конкретные виды обслуживания выполняющейся про- граммы обозначаются как SVC (Servicecall). В данной программе при за- просе EXIT SVC завершается ее выполне- ние и управление передается операцион- ной системе. Для выполнения каждого запроса SVC должна быть выдана коман- да ввода-вывода, инициирующая SVC, и подготовлен «блок запроса обслужива- ния», содержащий параметры выполнения SVC. В программе должен быть предусмо- трен также указатель «блока запроса обс- луживания», с помощью которого можно обратиться к информации в блоке. В рассматриваемой программе по ко- манде OUT OF7H, воспринимаемой опе- рационной системой DOS/50, инициирует- ся SVC, параметры которого расположены в блоке, адресуемом указателем, находя- щимся в ячейках 40 и 41. Директива BYTE 00, 42Н определяет, что указатель блока запроса, или адрес блока запроса для EXIT SVC, имеет значение 0042. По директиве BYTE1АН задается единственный в данном случае параметр блока запроса. Этот параметр является кодом функции SVC (1А = EXIT). Других параметров не требуется. END DEMO определяет конец исходного текста про- граммы и адрес DEMO, который является адресом первой команды программы; так как DEMO представляет собой метку ко- манды LXI, то после выдачи команды GO выполнение программы начнется именно с этой команды. Отметим, что в рассматриваемой про- грамме любой текст, следующий за точкой с запятой, представляет собой коммента- рий. Теперь рассмотрим программу, кото- рая предназначена для суммирования пяти чисел, содержащихся в таблице с диапазо- ном адресов 500-504. Результат суммиро- вания остается в аккумуляторе. Таблица организуется в памяти программ. Ниже будет показано, как заносятся в таблицу конкретные значения. Блок-схема про- граммы представлена на рис. 10.17. Рас- смотрим назначение отдельных шагов ал- горитма. Установка указателя таблицы Первая команда программы LXI Н,500Н предназначена для загрузки адреса таблицы в регистровую пару Н - L. В эту регистровую пару будет загружен адрес 500Н, который является адресом ячейки, содержащей первый элемент та- блицы. Метка DEMO представляет адрес этой команды. Метка DEMO записывает- ся в директиве END для указания того, что первой исполняемой командой про- граммы является команда LXI. Установка значения счетчика циклов В качестве счетчика циклов использует- ся регистр В. В этот регистр по команде MVI В,5 загружается число 5. Таким обра- зом, всего должно быть выполнено пять циклов. В каждом цикле производятся вы- борка одного числа из таблицы, прибавле- ние этого числа к содержимому аккумуля- тора и уменьшение на 1 содержимого счет- чика циклов. Очистка аккумулятора Очистка аккумулятора производится с помощью команды XRA А, согласно ко- торой производится операция «исключаю- щее ИЛИ». В качестве операнда исполь- зуется содержимое аккумулятора. Очистку аккумулятора, или запись в него значения 0, необходимо было выполнить перед на- чалом суммирования чисел таблицы.
Распространенные микропроцессорные системы 77 Прибавление к содержимому аккумулято- ра числа из таблицы По команде ADD М к содержимому аккумулятора прибавляется число, находя- щееся в байте памяти, адрес которого за- дается регистровой парой H-L. Эта ко- манда имеет метку LOOP, которая являет- ся символическим обозначением ее адреса. Метка LOOP используется в команде ус- ловного перехода JNZ. Определение адреса следующего байта (числа) таблицы Команда INX Н используется для уве- личения на 1 адреса, содержащегося в ре- гистровой паре H-L. После выполнения этой команды содержимое регистровой пары Н - L будет равно адресу следующе- го байта таблицы. Например, после ини- циализации регистровой пары Н-L ее со- держимое было равно 500. После первого выполнения команды INX Н содержимое рассматриваемой регистровой пары ста- нет равным 501, т.е. будет равно адресу второго байта таблицы. Уменьшение значения счетчика циклов Содержимое счетчика циклов, или ре- гистра В, уменьшается на единицу с по- мощью команды DCR В. В программе ко- манда DCR В идет после команды ADD М, и поэтому содержимое счетчика циклов уменьшается после каждого приба- вления к содержимому аккумулятора оче- редного числа. Проверка условия выхода из цикла Для проверки условия выхода из цикла используется команда JNZ. Если содержи- мое регистра В не равно 0, то происходит переход к команде с меткой LOOP. В про- тивном случае будет выполнена следую- щая команда, т.е. команда OUT OF7H. Рис. 10.17. Блок-схема программы суммирова- ния чисел таблицы. Источник с любезного согласия Tektronix, Inc 1980 Выход Запрос к операционной системе EXIT SVC осуществляется по команде OUT 0F7H и следующей за ней команде NOP. SVC в данном случае является запросом
78 Глава 10 к операционной системе на завершение программы. При организации запросов SVC часто используется команда NOP, во время исполнения которой управление передается операционной системе. Выполнение программы Прежде чем выполнить прогон рассматриваемой программы, необходи- мо произвести следующие действия: 1. Преобразовать программу, представленную в виде исходного текста на языке ассемблера, в рабочую програм- му на машинном языке. 2. Загрузить рабочую программу в па- мять программ. 3. Установить начальные условия. 4. Ввести команду запуска программы. Ассемблирование исходной программы Ассемблирование исходной про- граммы производится по команде ASM (ассемблировать). Процесс ассемблирова- ния заключается в преобразовании исход- ного текста программы на языке ассембле- ра в двоичный объектный модуль, или программу на машинном языке. В неко- торых случаях до выполнения программы должны быть выполнены настройка адре- сов и разрешение внешних ссылок в объектном модуле. Однако в данном случае объектный код программы готов к выполнению без редактирования связей. В команде ASM указывается файл, ис- пользуемый ассемблером для формирова- ния листинга. По листингу легко устанав- ливается соответствие команд исходной и объектной программ. Ниже представле- на команда ASM, по которой производит- ся ассемблирование исходной программы, содержащейся в файле с именем ASM, и образуются объектный файл OBJ и файл листинга (файл AS ML). Файлы, сформированные в процессе выполнения команды ASVf, должны быть размещены на диске. Чтобы убедиться в этом, введем команду LDIR с помощью которой будет получена информация о со- стоянии текущей рабочей области памяти на диске. > LDIR < CR > Имя файла ASM OBJ ASML Использованных файлов 97 Свободных файлов 159 Свободных блоков 730 Испорченных блоков 0 Отметим, что в данной области теперь на- ходятся три файла: файл ASM и два толь- ко что образованных файла OBJ и ASML. Файл OBJ содержит объектную програм- му, которую предстоит загрузить в память программ, а в файле ASML содержится ли- стинг, сформированный ассемблером. По следующей команде листинг вы- дается на построчно печатающее устрой- ство. Выведенный на печать листинг пред- ставлен на рис. 10.18. Загрузка программы в память Подлежащая выполнению объектная программа должна быть предварительно загружена в оперативную память. Ко- манды, используемые для загрузки про- > ASM OBJ ASML ASM <CR> L файл исходной программы --------Файл листинга Ассемблера ---------------------Объектный файл замещает существующий файл OBJ Tektronix 8080/8085 ASM Vx. x **** Pass 2 17 Source Lines 17 Assembled Lines 47417 Bytes Available >»' No assembly errors detected «<
Распространенные микропроцессорные системы 79 Tektronix 8080/8085 ASM Vx.x 8085 DEMONSTRATION RUN PROGRAM Page 1 00002 0100 > ORG 100H ; Определение адреса первой ; команды программы 00003 0100 210005 DEMO LXI H,500H ; Установка указателя таблицы 00004 0103 0605 MVI B,5 ; Установка счетчика циклов 00005 0105 AF XRA A ; Очистка аккумулятора 00006 0106 86 LOOP ADD M ; Прибавление к аккумулятору ; числа из таблицы 00007 0107 23 INX H ; Перевод указателя таблицы ; на следующий байт 00008 0108 05 DCR в ; Уменьшение значения счетчи- ; ка циклов 00009 0109 С20601 > JNZ LOOP ; Если число циклов меньше 5, 00010 010С D3F7 OUT OF7H ; то переход на метку LOOP, ; иначе вызов EXIT SVC 00011 010Е 00 NOP ; для завершения выполнения 00012 ; SRB POINTER ; программы 00013 0040 ORG 40H ; Определение адреса указателя ; SRB 00014 0040 0042 BYTE 00,42H ; Указатель блока SRB для EXIT SVC 00015 ; SRB FOR EXIT SVC 00016 0042 1А BYTE 1AH 1 АН-код функции для запроса ; EXIT SVC 00017 0100 > END DEMO ; Конец исходной программы Tektronix 8080/8085 ASM Vx.x Symbol Table Page 2 Scalars A - 0007 В - 0000 C -0001 D -0002 E - -0003 H- -0004 L—0005 M -0006 PSW 0006 SP 0006 °/oOBJ (default) Section (01 OF) DEMO- 0100 LOOP 0106 17 Source Lines 17 Assembled Lines 47417 Bytes available > > > No assembly errors detected > > > Рис. 10.18. Результаты ассемблирования. > COPY ASML LPT <CR> -Устройство вывода (построчно печатающее устройство) Файл, выдаваемый на печать (файл листинга ассемблера) граммы в память, приведены ниже. Кроме того, ниже показано состояние памяти до загрузки программы и после загруз- ки. Заполнение памяти нулями Прежде чем загрузить программу в па- мять с помощью команды FILL, заполним память нулями. Позже, благодаря предва- рительной записи в память нулей, будет легко определить, где начинается и где кончается в памяти объектная программа. Отметим, что заполнение памяти нулями никак не влияет на загрузку программы. Чтобы записать в память нули, начиная с адреса 0 и до ячейки с адресом 13F, вве- дем следующую команду:
80 Глава 10 > FILL 0 13F 00 <CR> ---------------------- Данные ----------- Старший адрес -------------- Младший адрес Проверка заполнения памяти нулями Теперь с помощью команды DUMP проверим, записались ли нули в заданную область памяти. По команде DUMP ото- бражаются содержимое памяти (данные представлены в шестнадцатеричном виде и в коде ASCII) и адреса байтов памяти. Чтобы проанализировать содержимое па- мяти, начиная с адреса 0 до адреса 13F, не- обходимо выдать следующую команду: Загрузка объектной программы в память Для загрузки объектной программы, содержащейся в файле OBJ, в оператив- ную память необходимо выполнить сле- дующую команду: > LOAD OBJ <CR> -------Объектный файл Объектная программа будет загружена в два разных блока. Машинные команды микропроцессора 8085 будут загружены, начиная с адреса 100, который был задан директивой ORG в исходном тексте про- граммы, а информация для запроса EXIT SVC будет загружена, начиная с адреса 40, который был задан в исходном тексте вто- рой директивой ORG. Теперь, когда в памяти находится > DUMP 0 13F <CR> Старший адрес Младший адрес 01 23456789ABCDEF 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00А0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00В0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00С0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00Е0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 00F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .... Адрес Значения байтов Символы первого в коде ASCII, байта соответствующие в блоке байтам данных
Распространенные микропроцессорные системы 81 объектная программа, интересно проана- лизировать состояние соответствующей области памяти. Снова выполним команду DUMP: Команду DISM можно использовать, чтобы убедиться в том, что загруженная в память объектная программа соответ- ствует исходной программе. Для обратно- > DUMP О 13F < CR > 012345678 0000 00 00 00 00 00 00 00 00 00 0010 00 00 00 00 00 00 00 00 00 0020 00 00 00 00 00 00 00 00 00 0030 00 00 00 00 00 00 00 00 00 0040 00 42 1А 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 0070 00 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00А0 00 00 00 00 00 00 00 00 00 00В0 00 00 00 00 00 00 00 00 00 00С0 00 00 00 00 00 00 00 00 00 00D0 00 00 00 00 00 00 00 00 00 00Е0 00 00 00 00 00 00 00 00 00 00F0 00 00 00 00 00 00 00 00 00 0100 21 00 05 06 05 AF 86 23 05 0110 00 00 00 00 00 00 00 00 00 0120 00 00 00 00 00 00 00 00 00 0130 00 00 00 00 00 00 00 00 00 9 А В С D Е F 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 .в........... 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. С2 06 01 D3 F7 00 00 !......#..... 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. 00 00 00 00 00 00 00 ............. Адрес первого байта в блоке Значения байтов Символы в коде ASCII, соответствующие байтам данных По команде DUMP может быть полу- чена и твердая копия (распечатка) содер- жимого памяти. Если в системе поддержки разработок нет построчно печатающего устройства, эту команду придется пропу- стить. Распечатка содержимого памяти с помощью построчно печатающего устройства выполняется по команде DUMP (с. 82). Обратное ассемблирование объектной программы В результате обратного ассемблирова- ния, выполняемого по команде DISM, бу- дет получено отображение содержимого памяти как в шестнадцатеричном пред- ставлении, так и в мнемоническом пред- ставлении, принятом в языке ассемблера. го ассемблирования программы введем следующую команду: > DISM 100 10Е <CR> LOC INST MNEM OPER 0100 210005 LXI H.0500 0103 0605 MVI B,05 0105 AF XRA A 0106 86 ADD M 0107 23 INX H 0108 05 DCR В 0109 С20601 JNZ 0106 010С D3F7 OUT F7 010Е 00 NOP Очевидно, что объектная программа загружена правильно и соответствует ис- ходной программе. Программа готова
82 Глава 10 > DUMP 40 10F LPT <CR> 0123456789AB 0040 00 42 1A 00 00 00 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 00 00 00 00 00 00 00 00 00 00 0070 00 00 00 00 00 00 00 00 00 00 00 00 0080 00 00 00 00 00 00 00 00 00 00 00 00 0090 00 00 00 00 00 00 00 00 00 00 00 00 00A0 00 00 00 00 00 00 00 00 00 00 00 00 OOBO 00 00 00 00 00 00 00 00 00 00 00 00 OOCO 00 00 00 00 00 00 00 00 00 00 00 00 OODO 00 00 00 00 00 00 00 00 00 00 00 00 OOEO 00 00 00 00 00 00 00 00 00 00 00 00 OOFO 00 00 00 00 00 00 00 00 00 00 00 00 0100 21 00 05 06 05 AF 86 23 05 C2 06 01 к выполнению. Можно задать начальные условия и выдать команду запуска про- граммы. Для задания начальных условий необ- ходимо выполнить следующие действия: 1. Установить режим эмуляции. 2. Занести исходные значения в табли- цу чисел, которые будут суммироваться при выполнении программы. 3. Задать точку прерывания про- граммы так, чтобы выполнение про- граммы было приостановлено после при- бавления к содержимому аккумулятора последнего числа таблицы. В точке преры- вания наряду с другой информацией бу- дет отображено и содержимое аккумуля- тора. После выполнения перечисленных дей- ствий можно будет задать команду запу- ска программы. Чтобы задать режим эмуляции 0, нуж- но ввести команду > EMULATE О <CR> В память необходимо занести пять чи- сел, которые должны быть записаны в ячейки с адресами 500-504. Программа производит суммирование чисел, содержа- щихся именно в этих ячейках. По команде EXAM производятся отображение содер- жимого ячеек памяти и запись в эти ячейки новых значений. Приведенная ниже коман- да EXAM используется для ввода пяти значений 1, 2, 3, 4 и 5 в память, начиная с ячейки 500. Когда на экране появляется строка 00000500 = 00, пользователь должен после- С D Е F 00 00 00 00 в........... 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ 00 00 00 00 ............ D3 F7 00 00 I.....#..... > EXAM 500 <CR> Адрес 00000500=0002 00000501=0002 00000502=0003 00000503=0004 00000504=0005 00000505=00 <CR> довательно ввести набор цифр 0102030405. Когда все данные введены, нажатием кла- виши «возврат каретки» можно прервать выполнение команды EXAM. Отметим, что перед вводом чисел в ячейках с адреса- ми 500-504 находились «случайные» данные, которые были записаны в эти ячейки при выполнении предыдущих си- стемных операций. Для установки точки прерывания про- граммы после прибавления к содержимо- му аккумулятора последнего числа таб- лицы применим команду ВКРТ. Когда в процессе выполнения программы будет достигнута установленная точка прерыва- ния, на экране системного терминала по- явится информация о состоянии эмулято- ра, в частности содержимое аккумулятора. Задание точки прерывания производится по команде > ВКРТ 504 R <CR> Признак "считывание" Адрес
Распространенные микропроцессорные системы 83 В этой команде параметр R(Read) озна- чает, что выполнение программы должно быть остановлено, как только эмулятор произведет считывание из ячейки с адре- сом 504. По команде ADD М микропро- цессора 8О85А производятся считывание данных из памяти и прибавление их к со- держимому аккумулятора; наша програм- ма будет прервана после считывания и прибавления к содержимому аккумуля- тора последнего числа из таблицы. Благо- даря такому заданию точки прерывания программы можно увидеть последнее зна- чение суммы, накопленной в аккумулято- ре. Режим эмуляции задан, в таблице со- держатся подлежащие суммированию пять чисел и установлена точка прерыва- ния выполнения программы. Теперь мож- но выдавать команду на исполнение про- граммы. По команде GO начнется выпол- нение программы с команды, адрес кото- рой равен 100. Этот адрес был определен в директиве END в исходной программе. > GO <CR> OUT. На последнем этапе отладки нужно выполнить программу до конца с соответ- ствующей передачей управления опера- ционной системе. Теперь рассмотрим команды, с по- мощью которых можно выполнять про- грамму в режиме трассировки. В ходе трассировки программы можно наблю- дать за изменением содержимого реги- стров эмулятора и анализировать резуль- тат выполнения каждой команды. Команда TRACE позволяет наблюдать за изменением содержимого регистров ми- кропроцессора 8О85А по мере выполнения команд программы. После того как будет введена команда TRACE и по команде GO начнется выполнение программы, на си- стемный терминал будет выводиться ин- формация о выполнении каждой команды в режиме трассировки. В каждой строке отображается команда, ее адрес в памяти и содержимое регистров после выполне- ния команды. Указание по выполнению трассировки всех исполняемых команд LOC INST MNEM OPER SP FABCDEHLIM SOD 0106 86 ADD М 0000 04 OF 01 00 00 00 05 04 07 О 0106 <BREAK ВКРТ1> I '--Содержание аккумулятора Прерывание программы произойдет после выполнения команды ADD М, по которой к содержимому аккумулятора прибавляется последнее число из таблицы. Эта команда имеет адрес 106. Выполнение программы приостановле- но в точке прерывания, заданной нами ко- мандой ВКРТ. На экране отображаются соответствующие данные. Содержимое ак- кумулятора равно сумме чисел массива 14-2 + 3+ 4 + 5 = OF Отметим, что выполнение программы приостановлено перед командой OUT ми- кропроцессора 8О85А, с помощью которой в программе инициируется запрос EXIT SVC. Данный запрос SVC завершает вы- полнение программы и обеспечивает пере- дачу управления операционной системе. Но в рассматриваемом примере каждый раз происходит прерывание выполнения программы перед выполнением команды программы можно дать с помощью ко- манды > TRACE ALL < CR > По следующей команде GO будет начато выполнение программы: > GO 100 <CR> По мере выполнения команд программы на экране будут отображаться следующие результаты трассировки. После очистки аккумулятора в нем на- чинает накапливаться сумма чисел, содер- жащихся в таблице. По команде ADD М микропроцессора 8О85А к содержимому аккумулятора прибавляется очередное число из таблицы. В конце выполнения программы аккумулятор содержит сумму чисел, которые были предварительно вве- дены в таблицу, 1 + 2 + 3+ 4 + 5 = 0F.
84 Глава 10 LOC INST MNEM OPER SP 0100 210005 LXI H.0500 0000 0103 0605 MVI B,05 0000 0105 AF XRA A 0000 0106 86 ADD M 0000 0107 23 INX H 0000 0108 05 DCR В 0000 0109 С20601 JNZ 0106 0000 0106 86 ADD M 0000 0107 23 INX H 0000 0108 05 DCR в 0000 0109 С20601 JNZ 0106 0000 0106 86 ADD M 0000 0107 23 INX H 0000 0108 05 DCR в 0000 0109 С20601 JNZ 0106 0000 0106 86 ADD M 0000 0107 23 INX H 0000 0108 05 DCR в 0000 LOC INST MNEM OPER SP 0109 С20601 JNZ 0106 0000 0106 86 ADD M 0000 0106 <BREAK TRACE, BKPT1 Сообщение о точке прерывания FABCDEHLIM SOD 54 OF 01 00 00 00 05 00 07 О 54 OF 05 00 00 00 05 00 07 О 44 00 05 00 00 00 05 00 07 О 00 01 05 00 00 00 05 00 07 О 00 01 05 00 00 00 05 01 07 О 10 01 04 00 00 00 05 01 07 О 10 01 04 00 00 00 05 01 07 О 04 03 04 00 00 00 05 01 07 О 04 03 04 00 00 00 05 02 07 О 14 03 03 00 00 00 05 02 07 О 14 03 03 00 00 00 05 02 07 О 04 06 03 00 00 00 05 02 07 О 04 06 03 00 00 00 05 03 07 О 10 06 02 00 00 00 05 03 07 О 10 06 02 00 00 00 05 03 07 О 04 ОА 02 00 00 00 05 03 07 О 04 ОА 02 00 00 00 05 04 07 О 10 ОА 01 00 00 00 05 04 07 О FABCDEHLIM SOD 10 ОА 01 00 00 00 05 04 07 О 04 OF 01 00 00 00 05 04 07 О Содержимое регистровой пары H-L ----- Содержимое регистра В ----- Содержимое аккумулятора Регистр В играет роль счетчика циклов, в начале выполнения программы в него за- писывается число 5. По команде DCR В значение счетчика циклов уменьшается на 1. Это происходит после прибавления к содержимому аккумулятора очередного числа из таблицы. Выполнение программы заканчивается после того, как содержимое регистра В станет равным 0. При выполнении первой команды про- граммы содержимое регистровой пары H-L устанавливается равным 500. По ко- манде INX Н содержимое этих регистров увеличивается на 1 каждый раз после при- бавления очередного числа таблицы к со- держимому аккумулятора. К концу выпол- нения программы команда увеличения со- держимого пары Н - L выполнится 4 раза и содержимое станет равным 504. Убедившись, что наша программа обеспечивает суммирование пяти чисел та- блицы, изменим условие задачи; внесем такие изменения в программу, чтобы про- изводилось суммирование только двух чи- сел таблицы - третьего и четвертого. Для этого нужно записать в счетчик циклов число 2, а указатель таблицы положить равным 502 (это адрес третьего элемента таблицы). Указанные действия можно вы- полнять без изменения объектной про- граммы в памяти. Сначала приостановим выполнение программы после того, как в счетчик циклов и указатель таблицы бу- дут записаны соответствующие величины. Затем введем новые значения как в счетчик циклов, так и в указатель таблицы. После возобновления прогона программы ее вы- полнение будет проходить уже с новыми
Распространенные микропроцессорные системы 85 значениями счетчика и указателя. Введем следующую команду трассировки всех вы- полняемых команд программы: > TRACE ALL < CR > Для контроля проверим, какой режим трассировки установился: > TRACE< CR > TRACE ALL 0000, FFFF Теперь, когда вновь установлен режим трассировки программы, введем команду, задающую точку прерывания программы: BKRT 103 < CR > По следующей команде GO начинается выполнение программы После выполнения команды SET на дис- плей не выдается информация об установ- ленных значениях. Однако можно вос- пользоваться командой DSTAT, по кото- рой на экран выдается содержимое реги- стров эмулятора и значения флажков состояния. Так, проверим результаты вы- полнения предыдущей команды SET с по- мощью команды 1 (с. 86). Очевидно, что счетчик циклов и указатель таблицы приняли новые значения. Теперь можно продолжить выполнение программы. Для этого вводим команду GO без параметров, согласно которой вы- полнение программы будет возобновлено, начиная с команды 2, следующей за точ- кой прерывания. Видим, что программа выполнила два цикла и что просуммированы третье и чет- вертое числа таблицы (3 -|- 4 = 7). Отметим GO 100 < CR > LOG INST MNEM OPER SP F A В C D E H L IM SOD 0100 210005 LXI H.0500 0000 04 OF 01 00 00 00 05 00 07 0 0103 0605 MVI B.05 0000 04 OF 05 00 00 00 05 00 07 0 0103 <BREAK TRACE, BKPT2> По выданной раньше команде ТРАСЕ ALL отображается информация о выпол- нении всех команд, включая команду с адресом 103, после выполнения которой должно произойти прерывание про- граммы. Теперь, когда программа приостано- влена в заданной точке, можно изменить содержимое регистров. Результаты трас- сировки, доведенной до точки прерывания, показывают, что содержимое счетчика ци- клов равно 5, а значение указателя та- блицы, т. е. содержимое регистровой пары H-L, равно 500. Установим число циклов равным 2, а значение указателя равным 502 с помощью следующей команды: также, что, поскольку при выполнении программы не производилось считывания из ячейки с адресом 504, не произошло и прерывания работы программы. Следо- вательно, была выполнена команда OUT системного запроса EXIT SVC, что приве- ло программу к нормальному заверше- нию. > SET В=02 L=02 <CR> Содержимое младшего байта регистровой пары H-L Содержимое регистра В
86 Глава 10 > DSTAT <CR> Команда 1 1 — Регистр В содержит число циклов В регистрах Н-L содержится указатель таблицы 1 1 РС-О.1О5 SP-0000 F-06 A-OF B-02 C-00 D=00 I 1 1 =-00 Н-05 L-02 SOD=0 SID=O 17=0 16=0 I5=( ) IE-0 М7=0 I И6-1 М5-1 > GO <CR> Команда 2 LOC INST MNEM OPER SP F А В С D Е Н L IM SOD 0105 AF XRA A 0000 44 00 02 00 00 00 05 02 07 0 0106 86 ADD M 0000 04 03 02 00 00 00 05 02 07 0 0107 23 INX H 0000 04 03 02 00 00 00 05 03 07 0 0108 05 DCR В 0000 10 03 01 00 00 00 05 03 07 0 0109 C20601 JNZ 0106 0000 10 03 01 00 00 00 05 03 07 0 0106 86 ADD M 0000 00 07 01 00 00 00 05 03 07 0 0107 23 INX H 0000 00 07 01 00 00 00 05 04 07 0 0108 05 DCR В 0000 54 07 00 00 00 00 05 04 07 0 0109 C20601 JNZ 0106 0000 54 07 00 00 00 00 05 04 07 0 10.4. Системы поддержки микропроцессорных разработок фирмы GenRad Несколько лет назад фирма Futuredata выпускала популярную однопроцессор- ную универсальную систему поддержки микропроцессорных разработок, которая имела название AMDS (Advanced Microcomputer Development System). В на- стоящее время фирма General Radio сли- лась с фирмой Futuredata и, модифициро- вав ее прежние системы, стала выпускать ряд новых макетных систем. Так, она про- изводит системы 2300, 2301 и устройство 2302, которое называется подчиненным эмулятором. Система 2300 является уни- версальной автономной системой под- держки разработки программ, в то время как система 2301 представляет собой уни- версальную сетевую систему коллективно- го пользования, к которой может быть подключено до восьми рабочих станций. Обе системы имеют однопроцессорную архитектуру и разработаны на основе ми- кропроцессора Z80. К каждой системе 2301 посредством интерфейса RS-422 можно подключить до восьми подчиненных эму- ляторов 2302. Следовательно, сетевая си- стема 2301 с устройствами 2302 образует систему, которая способна поддерживать разработку как аппаратных, так и про- граммных средств для 64 типов микропро- цессоров (фирма обеспечивает любые ва- рианты комплектаций.) Серия систем 2300 фирмы GenRad включает в себя модели 2300-9100 и 2300-9200 (универсальные автономные системы поддержки разработки про- граммных средств) и модели 2301-9100, 2301-9200, 2301-9300 и 2301-9400 (универ- сальные сетевые системы коллективного пользования, поддерживающие разработ- ку как аппаратных, так и программных средств). Устройство 2302-9000 - подчи- ненный эмулятор-рассчитано на эмуля- цию различных 8- и 16-разрядных микро- процессоров и микроЭВМ. С помощью устройства 2302-9000 эмуляция выпол- няется процессором, аналогичным прото- типу, с максимальной скоростью, опреде- ляемой тактовой частотой 10 Мгц. Для работы подчиненного эмулятора требует- ся автономная система, основанная на ми- кропроцессоре Z80.
Распространенные микропроцессорные системы 87 10.4.1. Автономная система поддержки разработки программ 2300 фирмы GenRad Система 2300 представляет собой уни- версальную автономную станцию для раз- работки программ. Клавиатура, ЭЛТ и ЦП системы размещены в одном кон- структивном блоке. Система 2300 обеспе- чивает разработку программ для микро- процессоров 8086, 8085, 8080, Z80, 6800, Z8000, 6809, 8048,1802, 6502, 3870 и SC/MP. Существуют две модели этой системы: модель 2300-9100, имеющая память ем- костью 48К байт, и модель 2300-9200 с па- мятью 64К байт. В обоих моделях исполь- зуется память на гибком диске емкостью 1 М байт. Обе модели системы 2300 имеют сле- дующие программные средства: макроас- семблер, вырабатывающий перемещаемые объектные программы; компоновщик объектных программ; экранный редактор; систему отладки с обратным ассембле- ром; средства символической отладки и командный язык. Для микропроцессоров семейств 8080 и 6800 имеется интерпрета- тор языка Бэйсик. Для микропроцессоров Z8000,8086, 6809, 8085, 8080 и Z80 реализо- ваны компиляторы для языков Бэйсик и Паскаль. Система 2301 фирмы GenRad Система 2301 представляет собой уни- версальную сетевую систему коллективно- го пользования (обслуживающую до вось- ми пользователей одновременно), которая обеспечивает разработку как аппаратных, так и программных средств. Система 2301 поддерживает разработку аппаратных и программных средств для микропроцес- соров 8086, 8080, 8085, 6800, 6802 и Z80. Выпускаются четыре модели системы 2301. Модель 2301-9100 (48К байт) и мо- дель 2301-9200 (64К байт) рассчитаны на разработку только программных средств; модель 2301-9300 (48К байт) и модель 2301-9400 (64К байт) предназначены для поддержки разработки как аппаратных, так и программных средств. Количество станций разработки аппа- ратных и программных средств в сетевой системе определяется требованиями заказ- чика. Стоимость отдельной станции срав- нительно низка благодаря тому, что в сете- вой системе используется один процессор управления сетью, одно дисковое ЗУ, об- щее устройство печати и один программа- тор ППЗУ. Каждая станция системы представляет собой полнофункциональную систему поддержки разработок и имеет дополни- тельно сменные платы для внутрисхемной эмуляции пяти микропроцессоров: 8080, 8085, 6800, 6802 и Z80. Для того чтобы станция могла эмулировать другие микро- процессоры (например, микропроцессор 8086) и исследовать их с помощью логиче- ского анализатора, необходимо использо- вать подчиненный эмулятор-устройство 2302 фирмы GenRad и универсальный ло- гический анализатор. Каждая станция раз- работки аппаратных и программных средств снабжается собственным внутрис- хемным эмулятором, работающим в ре- альном времени, логическим анализато- ром и быстродействующим статическим ОЗУ. Процессор управления сетью органи- зует совместное использование станциями (до восьми станций) ЗУ на гибких дисках, печатающего устройства и устройства программирования ППЗУ. Видеодисплей имеет экран, позволяю- щий отображать 24 строки по 80 знаков в каждой. Он обеспечивает высокую ско- рость передачи данных (свыше 20К знак/с). Благодаря таким техническим характери- стикам дисплея с помощью программных средств операционной системы NDOS удается быстро выводить на экран содер- жимое памяти в шестнадцатеричном пред- ставлении или в коде ASCII, результаты обратного ассемблирования и символиче- ской отладки, а также реализовывать по- иск заданных строк. Эффективная реализация поиска строк уменьшает потребность в использовании схем распределения памяти, вырабаты- ваемых компоновщиком, и листингов, формируемых ассемблером, поскольку определенные шаги программы можно идентифицировать по меткам. Высокая скорость работы терминала позволяет практически мгновенно после
88 Глава 10 выполнения операции редактирования отображать измененный текст на экране. Редактор обеспечивает автоматическую подкачку текста на экран, используя при этом рабочее пространство в 2500 строк. В состав системных программных средств входят: макроассемблер, компо- новщик объектных программ, мощный экранный редактор, интерактивный отлад- чик с обратным ассемблером и средствами символической отладки, командный язык. Чтобы не повторять каждый раз одну и ту же последовательность команд, можно по- местить их в командный файл. После орга- низации командного файла пользователь вводит одну, а не несколько команд для выполнения последовательности действий. Пользователям системы доступны два языка высокого уровня-Бэйсик и Па- скаль. Так же как и в системе 2300, для ми- кропроцессоров 8080 и 6800 реализованы и интерпретатор и компилятор языка Бэй- сик. Компилятор и интерпретатор языка Паскаль реализованы для микропроцессо- ров 8080, Z80 и 16-разрядного микропро- цессора 8086. Язык Паскаль является хоро- шим средством структурного программи- рования; с его помощью программы разрабатываются легче и почти наполови- ну быстрее, чем в случае «неструктурных» языков высокого уровня. Во время эмуляции в качестве ПЗУ ис- пользуется ОЗУ (моделируется ПЗУ), и по- этому изменения в программу вносятся легко. Логический анализатор фирмы GenR- ad, работающий в реальном времени, имеет память емкостью 256 х 48 бит, три аппаратных регистра прерываний, счетчи- ки циклов и счетчик для формирования за- держки. Анализатор позволяет задавать простые или сложные условия прерыва- ния. Значительно увеличена эффектив- ность логического анализатора, поскольку пользователь может удалять из памяти не- нужные данные. Точнее говоря, от пользо- вателя требуется указание, какие данные должны быть сохранены в памяти. Использование эмулятора и логическо- го анализатора, работающих в реальном времени, позволяет решать трудные зада- чи, возникающие в процессе отладки аппа- ратных и программных средств. Устройство 2302 фирмы GenRad Чтобы разрабатывать современные многопроцессорные системы, необходимо отделить эмулятор от контроллера глав- ного процессора системы разработки. Та- ким отдельным эмулятором является устройство 2302, структурная схема кото- рого представлена на рис. 10.19. Это устройство имеет собственный процессор, память эмулятора, шину эмулятора, а так- же 64-канальный логический анализатор. Управление подчиненным эмулятором осуществляется управляющей ЭВМ ADS 2300(ADS-Advanced Development System). В ADS 2300 реализованы программы упра- вления эмулятором и программы, исполь- зуемые для разработки программных средств. Если к рассмотренным средствам добавить память на дисках и устройство печати, то получится система поддержки разработок полной конфигурации. В ADS 2300 реализованы отладочные программные средства, обеспечивающие одновременную работу нескольких эмуля- торов, что позволяет одному пользовате- лю отлаживать систему, в которой функ- ционирует до восьми микропроцессоров. Несколько подчиненных эмуляторов связываются друг с другом посредством высокоскоростной цепи, обеспечивающей интерфейс по стандарту RS-232. Используя видеотерминал, пользователь может отла- живать любой микропроцессор и програм- му. На рис. 10.20 представлена структур- ная схема системы с несколькими эмулято- рами. Каждая отладочная команда, подавае- мая подчиненному эмулятору, прерывает процессор-эмулятор только . на короткое время, так как аппаратные средства, осу- ществляющие эмуляцию, полностью отде- лены от аппаратных средств системы раз- работки. Это очень важная особенность данной системы, поскольку функциониро- вание целевой разрабатываемой аппара- туры не будет полностью останавливаться всякий раз, когда выполняется какая-либо отладочная команда. Например, в случае отладки технических средств, в состав ко- торых входит двигатель, управляемый ми- кропроцессором, при кратковременном прерывании процесса эмуляции в связи
Распространенные микропроцессорные системы 89 Для определенного процессора Рис. 10.19. Структурная схема подчиненного эмулятора. Источник с любезного согласия Tektronix, Inc 1980 Рис. 10.20. Схема системы с несколькими под- чиненными эмуляторами. Источник с любезного согласия Tektronix, Inc 1980 с выполнением какой-либо отладочной ко- манды двигатель не придется останавли- вать. Использование подчиненного эмулято- ра дает еще одну уникальную возмож- ность: подлежащая испытаниям система может подвергаться воздействию входных сигналов и продолжать нормально рабо- тать. Во время тестирования значения переменных могут задаваться в различных
90 Глава 10 диапазонах, а для осуществления ввода- вывода могут использоваться соответ- ствующие порты. Для автоматизации тестирования одно- и многопроцессорных систем можно воспользоваться указанными выше воз- можностями системы с подчиненным эму- лятором и применить командный файл для задания команд отладочной програм- ме. Подчиненный эмулятор работает с бы- стродействующим ОЗУ (тактовая частота 10 Мгц). В пределах адресного простран- ства в 1 Мбайт выполняется произвольное разбиение статического ОЗУ объемом до 128К байт или 512К динамического ОЗУ на независимо адресуемые блоки по 4К или 16К байт. Запоминание ссылок на ячейки внутренней или внешней памяти осуществляется в 256-байтовых секциях. Часть ОЗУ может использоваться для мо- делирования ПЗУ с обеспечением защиты записи. Моделируемое ПЗУ наращивается блоками по 256 байт. Адреса портам вво- да-вывода могут назначаться внешними командами. Пример 10.3. Используя систему 2301 фирмы GenR- ad, необходимо выполнить редактирова- ние, ассемблирование, компоновку и эму- лирование представленной ниже про- граммы на языке ассемблера микропро- цессора Z80. Программа используется для опроса клавиатуры с целью определения факта нажатия клавиши. Информация о нажатой клавише выдается в виде номе- ров строки и столбца матрицы клавиатуры (с. 91, 92). Решение Процесс проектирования можно пред- ставить с помощью следующего графа: Отметим, что в системах фирмы GenR- ad вместо термина эмуляция используется термин отладка. В системе 2301 имеется шесть про- граммных модулей. В следующей таблице (с. 92) даны имена этих модулей и вызы- вающие их команды. Модуль MANAGER в основном пред- назначен для образования файлов и указа- ния для них определенных атрибутов. При образовании файлов определяются их имена. По именам программы на этапе разработки обращаются к определенным файлам. Задание атрибутов файлов заклю- чается в присвоении им некоторых призна- ков. Таким признаком может быть, напри- мер, символ S (от source); файл с признаком (атрибутом) S является фай- лом для исходного текста программы. Та- кие файлы будут использоваться как входные для редактора. Признак R (relocatable) используется для файла, со- держащего перемещаемую программу (входной файл компоновщика). Исполь- зуются и другие признаки. В данном при- мере должны быть созданы следующие файлы: PROLOG.N Новый файл исходной программы PROLOG.R Файл перемещаемой про- граммы PROLOG Объектный файл Для того чтобы создать перемещаемый файл PROLOG.R, необходимо выполнить следующее: Ввод > CPROLOG Возврат На экране появятся символы V02. Ввод (R) PROLOG R Таким образом, файл PROLOG.R определяется как перемещаемый. Анало- гично можно определить и другие файлы. Теперь будем выполнять ввод программы и ее редактирование, ассемблирование, компоновку и эмулирование программы. Сначала обратимся к редактору: Ввод JE >I Возврат
Распространенные микропроцессорные системы 91 # Программ; э опроса клавиатуры и вывода д .энных на экран Prolog # # Язык Ассемблера для Z80 (программа совместима с микропроцессорами 8080/85) R8EC PROLOG MAIN CALL KEYBD INC A LD HL,MSGTBL-8 LD DE, 8 Опрос клавиатуры MLOOP ADD HL» DE DEC A JP NZ»MLOOP Указатель соответствующего сообщения CALL DISPLAY JP MAIN SPC Выдача сообщения # Подпрограмма опроса клавиатуры SPC KEYBD LD B,X'O1' Установка маски выбора колонки KLOOP LD A»B OUT (X*D0'),A IN A,(X*D0*) AND X*3F' Вывод маски выбора колонки JP NZ,KEY LD A, В Проверка ключа RLCA LD В» A SUB X'10' JP Z, KRET JP KLOOP Циклический сдвиг маски выбора колонки KEY LD HL,-4 LD DE»4 Вычисление позиции ключа KLP1 ADD HL,DE RRCA JP NC»KLP1 LD A, В KLP2 INC L RRCA JP NC,KLP2 LD A»L KRET RET SPC * Подпрограмма отображения сообщения на дисплее PROLOG SPC DISPLAY LD B»8 Установка указателя позиции знака DLOOP LD A,(HL) INC HL OR X'80' Получение знака OUT (X'DO*),A LD A, В DEC A AND X'F7' Вывод знака OUT (X'D1*)»A OR X'08* OUT (X*D1*),A AND X'F7' OUT (X'D1*),A DEC В JP NZ,DLOOP RET SPC Вывод знака на дисплей
92 Глава 10 « Таблица сообщений, соответствующих клавишам клавиатуры SPC MSGTBL DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC SPC END 'R0W5C0L1' 'R0W5C0L2' 'R0W5C0L3' 'R0W5C0L4' 'R0W4C0L1' 'R0W4C0L2' 'R0W4C0L3' 'R0W4C0L4' 'R0W3C0L1' 'R0W3C0L2' 'R0W3C0L3' 'R0W3C0L4' 'R0W2C0L1' 'R0W2C0L2' 'R0W2C0L3' 'R0W2C0L4' 'R0W5C0L5' 'R0W4C0L5' 'R0W3C0L5' 'R0W2C0L5' 'ROW1COL1' 'R0W1C0L2' 'ROW1COLS' 'R0W1C0L4' MAIN Имя модуля Команда Описание команды MANAGER JM Переход к управляю- EDITOR ASSY LINKER щей программе JE Переход к редактору JA Переход к ассемблеру JL Переход к компонов- DEBUG щику JD Переход к отладчику COM FILE PROCES- JA FILE NAME Переход к командно- SOR му файлу Теперь можно вводить программу. Отме- тим, что в системе 2301 на экране дисплея отображаются две штриховые линии: Используя клавиатуру, можно вводить и модифицировать любой текст, находя- щийся между этими штриховыми линия- ми. Следовательно, с помощью клавиа- туры следует вводить строки исходной программы, помня об указанной особен- ности. Чтобы завершить ввод программы, не- обходимо ввести команду А Е PROLOG Возврат. Для ассемблирования вводим команду JA Возврат На экране появится сообщение SELECT OPTIONS Пользователь вводит > TS, где Т за- дает ограничение на длину строки листин- га (усечение строки до 80 знаков), а S является указанием ассемблеру выдать таблицу символов. Отметим, что комбинация символов TS была выбрана произвольно; можно бы- ло с помощью ключевых символов дать ассемблеру и другие указания. На экране отображается: SOURCE FILE Пользователь вводит > 1 : PROLOG.N Возврат На экране отображается: MACRO FILE
Распространенные микропроцессорные системы 93 Пользователь вводит > Возврат На экране отображается. OUTPUT FILE Пользователь вводит > 1 • PROLOG.R Возврат На экране отображается: LISTING FILE Пользователь вводит > Возврат Результаты ассемблирования отобра- жаются на экране в следующем виде: Для компоновки следует выполнить следующие действия- Пользователь вводит. JL Сообщение системы: SELECT OPTIONS Пользователь вводит. > SL Возврат На экране отображается: SPECIFY INPUT FILE Пользователь вводит- > 1 PROLOG.R На экране отображается. SPECIFY OUTPUT FILE Пользователь вводит: > 1 PROLOG Возврат На экране отображается- LINKER INPUT Пользователь вводит- > # ORG 01 ООН Возврат Символ S в ответе пользователя является запросом на формирование та- блицы символов с соответствующими аб- солютными адресами, а символ L является требованием вывода таблицы на экран. PAGE 1 Z80 ASSEMBLER V02.1 FUTUREDATA * # Программа опроса клавиатуры и вывода на дисплей Prolog * Язык Ассемблера для Z 80 (программа совместима с микропроцессорами 8080/85) 0000 RSEC PROLOG 0000 CD1500 MAIN CALL KEYBD Опрос клавиатуры 0003 зс INC A 0004 215200 LD HL,MSGTBL-8 0007 110800 LD DE, 8 000А 19 MLOOP ADD HL, DE Указатель соответствующего сообщения 000В 3D DEC A ооос С20А00 JP NZ,MLOOP 000F CD3F00 CALL DISPLAY Выдача сообщения 0012 СЗОООО JP MAIN * Подпрограмма опроса клавиатуры 0015 0601 KEYBD LD B,X'01' Установка маски выбора колонки 0017 78 KLOOP LD A, В 0018 D3D0 OUT (X'DO'),A Вывод маски выбора колонки 001А DBD0 IN A, (X'DO') 001С E63F AND X ' 3F' 001Е С22С00 JP NZ,KEY Проверка ключа 0021 78 LD A, В 0022 07 RLCA 0023 47 LD В, A Циклический сдвиг маски выбора колонки 0024 D610 SUB X' 10' 0026 CA3E00 JP Z,KRET 0029 C31700 JP KLOOP 002С 21FCFF KEY LD HL, -4 Вычисление позиции ключа 002F 110400 LD DE, 4
94 Глава 10 0032 19 KLP1 ADD HL, DE 0033 OF RRCA 0034 D23200 JP NC,KLP1 0037 78 LD A, В 0038 2С KLP2 INC L 0039 OF RRCA 003А D23800 JP NC,KLP2 003D 7D LD A, L 003Е С9 KRET RET # Подпрограмма отображения сообщения на дисплее PROLOG 003F ОБОЗ DISPLAY LD B, 8 Установка указателя позиции знака 0041 7Е DLOOP LD A,(HL) Получение знака 0042 23 INC HL 0043 F680 OR X'80' 0045 D3D0 OUT (X'DO' ),A Вывод знака 0047 78 LD A, В 0048 3D DEC A 0049 E6F7 AND X'F7' 004В D3D1 OUT (X'Dl' ), A Вывод знака на дисплей 004D F608 OR X'08' 004F D3D1 OUT (X'Dl' ),A 0051 E6F7 AND X'F7' PAGE 2 4.QV naac.1 IDLEn X 0053 D3D1 OUT (X'Dl'),A 0055 05 DEC В 0056 С24100 JP NZ,DLOOP 0059 С9 RET # Таблица сообщений, соответствующих клавишам клавиатуры 005A 20 MSGTBL DC 0062 52 DC 'R0W5C0L1' 006A 52 DC 'R0W5C0L2' 0072 52 DC 'R0W5C0L3' 007A 52 DC 'R0W5C0L4' 0082 52 DC 'R0W4C0L1' OObA 52 DC 'R0W4C0L2' 0092 52 DC 'R0W4C0L3' 009A 52 DC 'R0W4C0L4' 00A2 52 DC 'R0W3C0L1' OOAA 52 DC 'R0W3C0L2' 00B2 52 DC 'R0W3C0L3' OOBA 52 DC 'R0W3C0L4' 00C2 52 DC 'R0W2C0L1' OOCA 52 DC 'R0W2C0L2' 00D2 52 DC 'R0W2C0L3' OODA 52 DC 'R0W2C0L4' 00E2 52 DC 'R0W5C0L5' OOEA 52 DC 'R0W4C0L5' 00F2 52 DC 'R0W3C0L5' OOFA 52 DC 'R0W2C0L5' 0102 52 DC 'ROW1COL1' 010A 52 DC 'R0W1C0L2' 0112 52 DC 'R0W1C0L3' 011A 52 DC 'R0W1C0L4' 0122 END MAIN РАСЕ 3 FUTUREDATA ASSEMBLER V02. 1 280 DISPLAY 003F DLOOP 0041 KEY 002C KEYBD 0015 KLOOP 0017 KLP1 0032 KLP2 0038 KRET 003E MAIN 0000 MLOOP 000A MSGTBL 005A PROLOG G 0000 NO ERRORS
Распространенные микропроцессорные системы 95 После компоновки на экране появляется следующая информация: pAGE 1 ....LINKER VO2.1.......................FUTUREDATA ADDR RSEG FILE LENGTH 0100 PROLOG PLZ80R 0122 Пользователь вводит: > # END На экране появляется следующая инфор- мация: PAGE 2 ....LINKER VO2.1.........................FUTUREDATA FILE RSEG ADDR LENGTH PLZ80.R PROLOG 0100 0122 GLOBALS PROLOG 0100 ENTRY POINT 0100 Чтобы начать эмуляцию, или отладку, необходимо выполнить следующее: Пользователь вводит: > JD В режиме отладки можно с помощью соответствующих команд задать выполне- ние следующих функций: Функция Команды Отображение содержимого памяти С Запись в память S Поиск строки F Запись в регистр Z Задание точки прерывания, сброс, условия прерывания, отображение BS, BR, BD информации о точке прерывания Трассировка программы TR Выполнение программы Е Пошаговый режим выполнения программы SINGLER STEP Ниже представлены типичные результаты отладки. PC ABC DE HL IX SZHVNC V SP A' B'C' D' E' H'L' n SZHVNC I 0100 00 0000 0000 0000 0000 000000 00 6E00 00 0000 0000 0000 0000 000000 00 0100 >CD1501 CALL X'0115' 00B8 B5 59 86 58 B9 59 86 58 .Y.X.Y.X ooco 49 59 44 59 A9 51 49 59 IYDY.QIY 0103 ЗС INC A 00C8 44 59 37 58 18 5B D8 5A DY7X.t.Z 00D0 30 00 4A 0A 24 69 99 28 0.J.«i. ( 0104 215201 LD HL,338 00D8 92 28 0D 0D 4A 0A 38 21 . (. . J.8• 00E0 F4 03 7F 01 F3 31 E4 00 • ♦ • • 1 • • 0107 110800 LD DE, 8 00E8 AF D3 IF D3 3F D3 5F D3 4 ♦ 4 4 * 4 1
96 Глава 10 00F0 7F D3 9F D3 BF D3 DF CD ....... ОЮА 19 ADD HL, DE 00F8 8F 6A 22 E5 2A C3 23 01 0100 ^CD 15 01 3C 21 52 01 11 . .’. < *R* . 010В 3D DEC A 0108 08 00 19 3D C2 0A 01 CD 0110 3F 01 СЭ 00 01 06 01 78 01 ОС С20А01 JP NZ,X 010A' 0118 D3 DO DB DO E6 3F C2 2C 0120 01 78 07 47 D6 10 CA 3E .x.G...> 010F CD3F01 CALL X'013F' 0128 01 C3 17 01 21 FC FF 11 . . . . i . . . 0130 04 00 19 OF D2 32 01 78 2.x 0112 С30001 JP X'0100' 0138 2C OF D2 38 01 7D C9 06 ,..8.).. 0140 08 7E 23 F6 80 D3 DO 78 . M. x 0115 0601 LD B, 1 0148 3D E6 F7 D3 DI F6 08 D3 SS . . . . * . . 0150 DI E6 F7 D3 DI 05 C2 41 A >JS Отметим, что в приведенной выше та- блице в последних восьми колонках ото- бражается содержимое каждой ячейки па- мяти в коде ASCII. Это создает удобства в анализе текстовой информации. Если в некотором байте памяти содержится зна- чение, которому не соответствует в коде ASCII ни один символ, то в соответствую- щей позиции на экране появляется точка. Ниже представлен пример, когда отобра- жение информации в текстовом виде дей- ствительно полезно. PC 0000 ABC 00 0000 DE HL 0000 0000 IX SZHVNC V 0000 000000 00 SP 6E00 А' В C' 00 oooc D'E' H'L' IY ) 0000 SZHVNC I 000000 00 ) 0000 OOOC 015A >2020 JR NZ,X'017C' 0110 3F 01 C3 00 01 06 01 78 x 0118 D3 DO DB DO E6 3F C2 2C ?., 015C 2020 JR NZ,X'017E' 0120 01 78 07 47 D6 10 CA 3E iXiG.ii> 0128 01 C3 17 01 21 FC FF 11 . ♦ . . 1 ♦ ♦ . 015E 2020 JR NZ,X'0180' 0130 04 00 19 OF D2 32 01 78 2.x 0138 2C OF D2 38 01 7D C9 06 ,..8«>.. 0160 2020 JR NZ,X'0182' 0140 08 7E 23 F6 80 D3 DO 78 . M....X 0148 3D E6 F7 D3 DI F6 08 D3 = 0162 52 LD D,D 0150 DI E6 F7 D3 DI 05 C2 41 A 0158 01 C9>20 20 20 20 20 20 . . 0163 4F LD C, A 0160 20 20 52 4F 57 35 43 4F R0W5C0 0168 4C 31 52 4F 57 35 43 4F L1R0W5C0 0164 57 LD D, A 0170 4C 32 52 4F 57 35 43 4F L2R0W5C0 0178 4C 33 52 4F 57 35. 43 4F L3R0W5C0 0165 35 DEC (HL) 0180 4C 34 52 4F 57 34 43 4F L4R0W4C0 0188 4C 31 52 4F 57 34 43 4F L1R0W4C0 0166 43 LD В, E 0190 4C 32 52 4F 57 34 43 4F L2R0W4C0 0198 4C 33 52 4F 57 34 43 4F L3R0W4C0 0167 4F LD C, A 01A0 4C 34 52 4F 57 33 43 4F L4R0W3C0 01A8 4C 31 52 4F 57 33 43 4F L1R0W3C0 >JS В таблице 10.2 содержится информация о системах поддержки разработки трех различных типов. В этой таблице пред- ставлены системы, выпускаемые фирмами Intel, GenRad, Tektronix и Hewlett-Packard.
Таблица 10.2. Макетные системы поддержки разработок Фирма- изгото- витель Особенности систе- мы Микропроцес- сор Память и перифе- Програм- рийное оборудова- мные сред- ние ства Видео- дисплей Hewlett- Универсальная 8080 16-разрядный ми- Редактор Интеллек- Packard система с глав- 8085 кропроцессор Ассемблер туальный 64000 ним и подчинен- ным процессора- ми. Допускает подключение до 6 станций. Глав- ный процессор полностью отде- лен от системы эмуляции. Это позволяет ему вы- полнять програм- мы поддержки процесса эмуля- ции независимо от эмулятора. Имеет клавиши с изменяемыми функциями. Под- держивает разра- ботку как аппа ратных, так и программных средств 8086 6800 6802 68000 8048 8049 6809 8040 8035 8039 8050 фирмы HP с па- Макроас- мятью 128К, 64К семблер байт для эмуля- Компонов- ции щик Жесткие диски (до 960 Мбайт) Построчно печа- тающее устрой- ство Универсальное устройство прог- раммирования ППЗУ Логический ана- лизатор Кассетный интер- фейс терминал Intel 120 В основном по- 8080/8085 Главный микро- Редактор Интеллек- добна предыду- 8048/8049 процессор 8080 с Ассемблер туальный щей модели фир- мы 220. Модифи- цированная архи- тектура с глав- ным и подчинен- ным процессора- ми и одним уст- ройством памяти. Система не уни- версальна. До- полнительно можно использо- вать внутрисхем- ный эмулятор Возможно рас- ширение сис- темы для под- держки других микропроцес- соров фирмы Intel ОЗУ на 32К байт Макроас- и ПЗУ на 4К байт; семблер гибкие диски- Отладчик 250К байт. Уни- Компонов- версальное уст- щик ройство програм- В базовой мирования конфигу- ППЗУ. Быстро- рации не действующее ус- поддержи- тройство считы- ваются вания с перфо- языки вы- ленты и устрой- сокого ство перфорации, уровня Одна станция. Построчно печа- тающее устрой- ство терминал Intel 225 Эта система по- 8080/8085 Главный процес- Редактор Интеллек- добна предыду- 8048/8049 сор-микропро- Ассемблер туальный щей модели фир- мы Intel 230. В данной системе использован микропроцессор 8085, тогда как в модели 230 ис- пользовался ми- кропроцессор 8086 цессор 8085 с ОЗУ Макроас- на 64К байт и семблер ПЗУ на 4К байт. Отладчик Гибкие диски- Компонов- 250К байт; жест- щик кие дискй -7,3 ме- Компиля- габайт. Одна торы для станция. Устрой- языков: ство программи- PL/M, терминал
98 Глава 10 Продолжение табл. 10.2 Фирма- изгото- витель Особенности систе- мы Микропроцес- сор Память и перифе- рийное оборудова- ние Програм- мные сред- ства Видео- дисплей Intel 8080. Модифици- рованная архитек- тура с главным и подчиненным процессорами. Система не уни- версальна. Обес- печивает стандар- тные режимы эмуляции Новая система с 8086/8088 рования ППЗУ. Построчно печа- тающее устрой- ство. Устройство считывания с перфоленты и ленточный перфо- ратор Два главных про- Фортран, Паскаль, Кобол Редактор Интеллек- 286 двумя главными 8080/8085 цессора с ОЗУ Ассемблер туальный Intel процессорами (8085 и 8086). Про- цессор 8086 под- держивает разра- ботку 8080/8085 и 8048. Система не уни- версальна. Моди- фицированная ар- хитектура с глав- ным и подчинен- ным процессора- ми. В качестве рабочих станций могут использо- ваться любые сис- темы поддержки разработок фир- мы Intel Новая сетевая 8048 8080/8085 пользователя на 96К байт. Гибкие диски-25ОК байт. Жесткие диски- 7,3 Мбайт. Одна станция. Устрой- ство считывания с перфоленты и ленточный перфо- ратор. Устрой- ство программи- рования ППЗУ. Построчно печа- тающее устрой- ство Главный процес- Макроас- семблер Отладчик Компонов- щик. Под- держивает языки: PL/M 88/ /86, Паскаль 88/86, Фортран 88/86 Редактор терминал Интеллек- 290 система. Главный 8048/8049 сор-микропро- Ассемблер туальный Tektro- процессор-мик- ропроцессор 8085. Поддерживает до 8 рабочих стан- ций. Система не универсальна. В качестве рабочей станции может использоваться любая макетная система фирмы П редназначается 8086/8088 Аппаратная цессор 8085. ОЗУ на 64К, ПЗУ на 4К. До 8 рабо- чих станций. До 15 Мбайт памя- ти на гибких и жестких дисках. Построчно печа- тающее устрой- ство. Устройство программирова- ния ППЗУ Терминал с ЭЛТ Макроас- семблер Отладчик Компонов- щик Поддержи- вает языки: PL/M 80/ /86, Пас- каль 88/86, Фортран 88/86 Системные терминал RS-232C- nix 8001 для пользовате- эмуляция ми- для управления програм- «Немой» лей, имеющих главную ЭВМ, ис- пользуемую для разработки прог- раммных средств. кропроцессо- ров 8080/8085 6800 Z80 9900 системой и отоб- ражения инфор- мации. Логиче- ский анализатор мные сред- ства разра- ботки, име- ющиеся в главной терминал
Распространенные микропроцессорные системы 99 Продолжение табл. 10.2 Фирма- изгото- витель Особенности систе- мы Микропроцес- сор Память и перифе- рийное оборудова- ние Програм- мные сред- ства Видео- дисплей Система 8001 68000 ЭВМ. Фор- обеспечивает пол- 8086 мат ный набор средств Z8000 ТЕКНЕХ отладки и ин- Возможность системы те грацию прог- разработки 8001, в ко- раммных и ап- программ за- торый дол- паратных средств. висит от на- жен быть Имеет три режи- личия в глав- преобразо- ма эмуляции, ной ЭВМ ван объек- главный и под- кросс-ассем- тный код чиненный процес- блеров главной соры с раздель- ЭВМ ной памятью. Не универсальна Tektro- Система с глав- Поддерживает 16К байт памяти Редактор RS-232C nix ным и подчинен- разработку 29 для главного про- Ассемблер «немой» 8002А ным процессора- микропроцес- цессора и 64К для Макроас- терминал ми и раздельной со ров: 8086, целевой системы. семблер памятью. Под- 68000, Гибкие диски. Ус- Отладчик держивает разра- Z8000, тройство прог- Компонов- ботку как ап- 8080/8085, раммирования щик паратных, так и 6800, 6802 и ППЗУ. Печата- программных др. ющее устройство. средств. Обеспе- Одна рабочая чивает работу в станция трех режимах эмуляции. Систе- ма универсальная Tektro- Универсальная 29 типов Два аппаратных Редактор RS-232C nix 8550 система для од- модуля, дополни- Ассемблер «немой» ного пользовате- тельно могут под- Отладчик терминал ля. Имеет глав- ключаться терми- Компонов- ный и подчинен- нал на ЭЛТ и щик ный процессоры. построчно печата- Макроас- Может подклю- ющее устройство. семблер чаться к системам Гибкие диски с Компиля- коллективного двусторонней за- торы язы- пользования писью. Логиче- ков MDL/ ский анализатор /ц и Пас- каль Tektro- Система разра- nix 8560 ботки программ, работающая в режиме разделе- ния времени. До 29 типов Динамическое Редактор RS-232C 8 рабочих стан- ОЗУ на 128К Ассемблер «немой» ций. При исполь- слов Жесткие Отладчик терминал зовании DEC LSI диски емкостью Компонов- 11/23, 8001, 8002А 35 Мбайт. Гибкие щик и 8550 обеспе- диски емкостью Макроас- чивается фун- 1 Мбайт. По- семблер кционирование строчно печата- Компиля- стаций разработ- ющее устройство. тор для
Продолжение табл. 10.2 Фирма- изгото- витель Особенности систе- мы Микропроцес- Память и перифе- Програм- сор рийное оборудова- мные сред- ние ства Видео- дисплей ки аппаратных средств. Система универсальная Устройство про- языка Пас- граммирования каль ППЗУ Tektro- Посредством 29 микропро- ОЗУ на 32К байт. Отладчик RS-232C nix 8540 главной ЭВМ цессоров Устройство Средства «немой» обеспечивается режим коллектив- ного пользова- ния. Подобна си- стеме 8560. Обес- печивает эмуля- цию. Система с главным и под- чиненным процес- сорами. Для рас- ширения системы используется си- стема 8ОО2А. Универсальная система. Пред- назначена в ос- новном для поль- зователей глав- ных ЭВМ программирова- разработки ния ППЗУ. Логи- программ, ческий анализа- определя- тор. Средства, за- емые глав- висящие от глав- ной ЭВМ ной ЭВМ терминал Gen Rad Универсальная 8086, 8048, До 64К байт па- Редактор Интеллек- (прежде однопроцессор- 8080/8085, мяти. 1 Мбайт па- Ассемблер туальный Future- ная автономная 8048, Z80,6800, мяти на гибких Отладчик терминал data) станция для раз- 6801, 6809, дисках. ЭЛТ и Компиля- 2300 работки програм- мных средств 1802, 6502, клавиатура торы Z8000 и др. языков Бейсик и Паскаль Gen Rad Универсальная 8080/8085 До 64К байт па- Редактор Интеллек- (прежде однопроцессор- 6800 мяти. ЭЛТ и кла- Ассемблер туальный Future- ная система кол- 6802 виатура. Логиче- Отладчик терминал data) лективного поль- Z80 ский анализатор. Компонов- 2301 зования (до 8 ра- бочих станций) Устройство про- щик граммирования Компиля- ППЗУ. Дисковое торы для ЗУ. Построчно языков печатающее уст- Бейсик и ройство Паскаль Gen Rad Универсальное До 64 различ- До 512К байт па- Програм- Интеллек- (прежде устройство - под- ных комбина- мяти эмулятора, мные сред- туальный Future- чиненный эмуля- ний микропро- ЭЛТ и клавиа- ства опре- терминал data) тор. Главная цессоров тура. Логический деляются 2302 ЭВМ - система 2300. Имеет глав- ный и подчинен- ный процессоры. Эмулятор имеет отдельные па- мять, шину и уп- равление анализатор. Уст- системой ройство програм- 2300 мирования ППЗУ
Распространенные микропроцессорные системы 101 Задачи и вопросы 10.1. Укажите, какие отличительные особенности присущи системам HP 64000, Intel 290, Tektronix 8560 и GenRad 2301. 10.2. Какое максимальное число стан- ций может поддерживать система HP 64000? Возможно ли использование каждой станции либо для разработки про- граммных средств, либо для разработки аппаратных средств, либо для разработки и программных, и аппаратных средств? 10.3. Какую архитектуру имеют си- стемы фирмы Intel? 10.4. Какие функции выполняют платы главного и подчиненного процессоров в системах фирмы Intel? 10.5. Каково назначение устройства HSE-49? 10.6. Составьте таблицу, демонстри- рующую основные различия макетных си- стем поддержки разработок фирмы Intel: модель 120 по сравнению с моделью 225, модель 286 по сравнению с моделью 290. 10.7. Дайте краткую характеристику возможностей программных и аппа- ратных средств систем поддержки разра- боток 8001, 8002А, 8540, 8550 и 8560 фирмы Tektronix. Какие средства отладки пред- оставляют пользователю эти системы? 10.8. Какими возможностями обла- дают эмулятор для работы в реальном времени и логический анализатор, исполь- зуемые в системах фирмы Tektronix? 10.9. Каковы функции генератора би- блиотек системы 8550? 10.10. Укажите, в чем заключаются ос- новные различия систем 2300, 2301 и 2302 фирмы GenRad? 10.11. Сколько различных микропро- цессоров могут получить поддержку раз- работки аппаратных и программных средств от восьми систем 2301 и 64 систем 2302? 10.12. В чем состоят преимущества ис- пользования подчиненных эмуляторов?
Глава 11 СИСТЕМА HP 6400 ФИРМЫ HEWLETT- PACKARD (HP) Данная глава содержит основные кон- цепции организации типичной микро- компьютерной макетной системы под- держки разработок, какой является систе- ма HP 64000. Изучение ее работы позво- лит проще перенести приобретенные зна- ния на использование других систем. Еще раз необходимо заметить, что HP 64000 используется в качестве типичного приме- ра. 11.1 Описание системы Микропроцессорная интеллектуальная инструментальная система HP 64000-это универсальная система поддержки микро- процессорных разработок, которая вклю- чает в себя все необходимые средства для создания, развития, модификации и отлад- ки программного обеспечения для систем, использующих микропроцессоры. Схемо- техническая эмуляция предоставляет воз- можность выполнять глубокий анализ взаимодействия программного и аппарат- ного обеспечения на этапе согласования программных и аппаратных компонент. HP 64000 является многопользова- тельской системой поддержки, допускаю- щей одновременную работу с ней до шести пользователей. Все пользователи совмест- но используют АЦПУ и общую базу данных на диске типа «Винчестер» ем- костью 12 МБайт. Кроме этого, к системе можно добавить от одного до восьми на- копителей на магнитных дисках, подклю- ченных к многодоступному контроллеру (Multi-Access Controller-МАС). Контрол- лер связан с системой шиной HP-IB фирмы Hewlett-Packard. Восемь накопите- лей на магнитных дисках обеспечивают до 960 МБайт внешней памяти. 11.2. Описание инструментальной станции На рис. 11.1 изображена инструмен- тальная станция HP 64000. Клавиатура (рис. 11.2) разделена на четыре зоны: (1) - алфавитно-цифровая клавиатура; (2)-группа ключей редактирования, облег- чающих просмотр текста и перемещение курсора в режиме редактирования; (3)-специальные функциональные ключи для сброса или приостановки системы и для доступа к буферу команд; (4)-во- семь больших клавиш-системных «про- граммных» ключей-прямо под рамкой, обрамляющей экран дисплея. Программные ключи позволяют бы- стро и просто вызывать системные ко- манды, практически исключая ошибки, ко- торые обычно возникают при набивке этих команд посимвольно на клавиатуре. Значе- ние каждого программного ключа выписа- но в нижней части экрана дисплея. Смыс- ловое содержание этих ключей зависит от режима работы и положения курсора. Это резко упрощает работу с системой, так как обеспечивает широкий набор допустимых альтернатив и одновременно облегчает пользователю диалог с системой. В тех случаях, когда требуется специальная фор- ма ввода информации, скобки, окружаю- щие ключевое слово-синтаксическую переменную, подсказывают пользователю правильную форму ожидаемых системой данных.
Рис. 11.1. Передний вид инструментальной станции HP 64000 (модель 64100А). Передняя панель показаны семь основных областей перед- ней панели Каждая область обеспечивает связь с опреде- ленной частью системы для работы и управления ею Экран дисплея в системе применяется большая растровая ЭЛТ На экране помещаются 25 строк, по 80 символов в строке Изображаются все символы кода ASCII (128 символов) Курсор выполнен в виде мерцающего «подчеркивания» Режимы изобра- жения мерцающее, инверсное, подчеркнутое Программные ключи прямо под экраном есть восемь непомеченных клавиш Эти клавиши определяются как «программные ключи» Опи- сания программных ключей изображаются в нижней строке экрана. Источник печатается с разрешения фирмы Hewlett- Packard редактирования ППЗУ Рис. 11.2. Клавиатура инструментальной стан- ции модели 64100А. Источник печатается с разрешения фирмы Hewlett- Packard
104 Глава 11 В системе используется растровая ЭЛТ, обеспечивающая вывод 18 строк тек- ста, строки состояния, заполняемой теку- щим состоянием системы, датой и време- нем суток, трех строк для ввода команд и строки описания программных ключей, на которой изображаются значения каж- дого ключа. На экран можно вывести строки длиной 80 символов, но с помощью ключей редактирования можно смещать изображение, чтобы увидеть строки дли- ной до 240 символов. Это удобно для вне- сения комментариев и облегчает докумен- тирование программ. Инструментальная станция включает в себя интерфейс, выполненный по стан- дарту RS-232, для связи либо с устройства- ми передачи данных (DCE), либо с устрой- ствами для подключения периферийного оборудования (DTE). Интерфейс RS-232 имеет регулируемую скорость передачи до 9600 бод и использует принцип X-ON X-OFF для ручной синхронизации на ско- ростях выше 2400 бод. В составе станции имеются также интерфейс «20 мА токовая петля» для подключения дисплея и два вы- хода для запуска внешних устройств, та- ких, как осциллограф, с помощью которо- го возможен анализ логических сигналов. Станция, кроме того, включает в себя про- грамматор ППЗУ, который располагается справа от клавиатуры, и накопитель на магнитной ленте, который выполняет вы- сокоскоростную запись и чтение на кас- сеты емкостью 250 К Байт. 11.3. Начало работы 11.3.1. Включение питания При включении питания на инструмен- тальной станции могут быть две ситуации. Первая, наиболее типичная, состоит в том, что адрес станции и режим работы си- стемы уже установлены. На задней панели расположен пятиразрядный переключа- тель, который выполняет две функции. Три правых разряда, если стоять лицом к пере- ключателю, определяют адрес станции. В многопользовательских системах ка- ждая станция имеет свой уникальный адрес, значение которого изменяется от двух до семи. Адрес АЦПУ -0, а адрес вин- честерского диска -1. Эти два адреса фик- сированы, и пользователи не могут их из- менить. Два левых разряда переключателя определяют режим работ системы. Обы- чным при работе с диском является режим «системная шина». При начале работы с системой реко- мендуется сначала включить диск, потом АЦПУ и после этого инструментальные станции. Все переключатели питания рас- положены рядом со шнурами питания каждого устройства системы и легко до- ступны. После включения питания вы услыши- те два звонка из станции, сигнализирую- щие о завершении встроенной самодиаг- ностики. На дисплее будет изображена информация о конфигурации шины: I/O BUS CONFIGURATION ADRS DEVICE 0 13037 DISC CONTROLLER UNIT 0 7609 DISC MEMORY LU = 0 NA32 4 THIS 64100, MASTER CONTROLLER Каждое устройство, являющееся частью системы, адресуется своим адре- сом. Это обеспечивает быстрое тестирова- ние системы, сообщающее пользователю, что все устройства подключены к систем- ной шине. 11.3.2. Загрузка операционной системы Операционная система содержится на одной или двух кассетах в зависимости от версии программного обеспечения. Для за- грузки операционной системы и других программных продуктов фирмы Hewlett- Packard сначала нужно установить два самых левых переключателя (рис. 9.3), рас- положенных на задней панели станции, в положение “LOCAL MASS STORAGE” и инициировать “RESET” нажатием клави- ши, расположенной в группе функцио- нальных ключей клавиатуры. После по- явления на экране дисплея сообщения “WAITING FOR CARTRIDGE” надо вста- вить кассету в накопитель на магнитной ленте и ответить на серию вопросов, по- являющихся на экране.
Система HP 6400 Hewlett-Packard(HP) 105 При форматировании диска стирается вся содержавшаяся на нем информация и создается связный список из 2 тыс. бло- ков. Если система включается первый раз после установки, пользователь должен от- ветить согласием на вопрос о форматиро- вании диска. При последующих включе- ниях системы достаточно будет только загрузить операционную систему. Только при отрицательном ответе на вопрос о форматировании диска можно продол- жить работу с использованием про- граммных ключей, описание которых изо- бражено в нижней части экрана. После завершения всех необходимых подготовительных операций с диском пользователь может начать работу с изу- чения возможностей программных клю- чей, описания которых приводятся в ниж- ней части экрана дисплея. 11.3.3. Программные ключи При включении станции на дисплее из- ображается набор определений про- граммных ключей. Исходно самый левый ключ помечен как “edit”. Самый правый из восьми ключей помечен как “etc”. Двойное нажатие на него выводит на экран две дру- гие группы определений программных ключей. Три левых ключа теперь опреде- лены как “userid”, “time” и “date”. Целесообразно начинать.работу с вво- да времени и даты с помощью подходя- щих ключей. Нажав ключ “TIME”, Вы уви- дите на экране непосредственно над ним пометку “(time)”. Этот способ изображения является подсказкой пользователю, что за- ключенный в скобки ключ обеспечивает определение требуемой формы синтакси- ческой переменной. При нажатии “time” в строке состояния системы показывается требуемая форма ввода “НН : ММ”. В со- ответствии с этим нужно ввести требуемые символы и затем нажать клавишу “RETURN”. Время изображается в самой правой части строки состояния и будет не- прерывно обновляться, пока станция включена. Теперь можно нажать ключ “DATE” и ввести дату. Обратите внимание на то, что вам опять будет обеспечена подсказка для ввода даты в правильном виде. Такой вид подсказок намного более быстрый, чем поиск в руководствах. Кроме того, он предохраняет от ошибок. Дата изобра- жается в строке состояния вплоть до пер- вого изменения состояния системы, а за- тем стирается с экрана, но, если вы ее забыли, достаточно только нажать ключ даты и затем “RETURN”, после чего дата опять появится на экране. Ввод даты и времени-это только одна из интересных особенностей операцион- ной системы. Файловая система допускает доступ к файлам по дате создания. Это ис- пользуется для поиска файла в архиве в том случае, когда Вы забыли его имя, но помните, хотя бы примерно, дату его со- здания или исправления. Вы можете запро- сить выдать на экран дисплея список фай- лов, измененных не позднее определенной даты. Код идентификации пользователя ис- пользуется системой для различения поль- зователей. Это дает возможность пользо- вателям хранить свои файлы отдельно от файлов других пользователей. Преимуще- ства кода идентификации пользователя очевидны при использовании многополь- зовательских баз данных. Описание программных ключей си- стемного монитора приведено в приложе- нии D. Учтите, что новая операционная си- стема фирмы Hewlett-Packard объединяет функции даты и времени. Подробности вы найдете в новых руководствах по системе HP 64000. 11.3.4. Специальные функциональные ключи Специальные функциональные ключи, расположенные в верхней правой части клавиатуры (рис. 11.3), предоставляют по- льзователю несколько дополнительных возможностей. Значение ключей “CLEARLINE” и “CAPS LOCK” очевид- но Ч Ключи же “RECALL” и “RESET” за- служивают особого внимания. Ключ “CLEARLINE” служит для удале- ния с экрана строки текста, а ключ “CAPS LOCK” переводит систему в режим автомати- ческого перевода всех вводимых с клавиатуры букв в верхний регистр-Прим, перев.
106 Глава 11 Рис. 11.3. Специальные функциональные клю- чи. Источник печатается с разрешения фирмы Hewlett- Packard Ключ RECALL позволяет пользовате- лю повторно исполнить последнюю вы- полненную команду. Этим облегчается по- вторное выполнение команд, так как не требуется заново вводить целую команд- ную строку. Ключ RESET выполняет две функции. Однократное нажатие его вызы- вает приостановку работы системы вплоть до нажатия любой другой клавиши кла- виатуры. Если нажать ключ RESET два раза подряд, то управление передается си- стемному монитору, а экран дисплея очи- щается. Одновременное нажатие ключей SHIFT и RESET вызывает перезагрузку системы, а одновременное нажатие клю- чей CNTL и RESET переводит систему в режим самодиагностики. Описание специальных функцио- нальных ключей приводится в табл. 11.1. 11.4. Редактор текстов Редактор текстов обеспечивает воз- можности создания новых программ и из- менения уже существующих. Текстовый редактор системы HP 64000 является кон- текстно-зависимым. Он позволяет вводить строки текста или данных длиной до 240 символов, из которых только 80 являются видимыми. Остальные 160 символов мож- но увидеть, нажимая одновременно ключ SHIFT и ключ с левой стрелкой, располо- женный в группе ключей редактирования. Текстовый редактор системы HP 64000 имеет три основных режима работы. Это командный режим, режим вставки и ре- жим редактирования. Режим вставки по- зволяет вводить текст и данные в только создаваемый файл или новый текст и данные в уже существующий. Режим ре- дактирования позволяет изменять уже су- ществующий файл, стирая или добавляя символы или строки. В командном режиме можно устанавливать табулирование, перенумеровывать строки файла, выпол- нять поиск и удаление текста и слияние файлов. Тиб тиа // / Описание специальных функциональных ключей CLR LINE RECALL При нажатии стирается текущая строка экрана Используется для повторного исполнения предыдущей команды. При каждом нажатии ключа RECALL на экране изображается одна вызы- ваемая из стека команда. Количество доступных таким способом команд может быть различным. В стек заносятся только правиль- ные команды CAPS LOCK Используется для фиксирования клавиатуры в верхнем регистре. На экране появляется сообщение «CAPS LOCK ON» или «CAPS LOCK OFF». При вводе следующей строки сообщение исчезает, но выбран- ный режим остается вплоть до следующего нажатия на этот ключ RESET Однократное нажатие этого ключа вызывает паузу в работе системы. В строке состояния появляется мерцающее сообщение «PAUSED». Для продолжения работы нажмите любую другую клавишу клавиату- ры. Двукратное нажатие ключа «RESET» вызывает очистку экрана и передачу управления системному монитору SHIFT RESET Одновременное нажатие ключей «SHIFT» и «RESET» вызывает пере- загрузку операционной системы CNTL RESET Одновременное нажатие ключей «CNTL» и «RESET» вызывает вы- полнение процедуры самодиагностики Источник, с разрешения фирмы Hewlett-Packard
Система HP 64000 Hewlett-Packard(HP) 107 11.4.1. Использование редактора текстов До начала редактирования напомним несколько часто используемых приемов при написании программ на языке ассем- блера с использованием редактора тек- стов. 1. В программах на языке ассемблера определены четыре поля (метки, кода опе- рации, операндов и комментария). LABEL OPCODE OPERAND COMMENTS Поле метки всегда начинается с первой по- зиции. Если в первой позиции стоит сим- вол «;» или «*», то остаток строки является комментарием. Поле комментария на- чинается с символа «;», поместить ко- торый можно в любую позицию строки. При вводе программ на языке ассемблера рекомендуется использовать ключ «ТАВ» для удобства чтения текста: LABEL "TAB" OPCODE "TAB" OPERAND "TAB" COMMENTS "TAB" 2. Самая первая строка программы должна содержать название процессора, который вы используете, в данном случае «8085». Это называется «директивой ас- семблера», которая должна начинаться в первой позиции строки. 3. Вы можете определить стартовый адрес программы с помощью псевдоопе- рации “ORG”, которая заносит в счетчик адреса значение своего операнда: LABEL OPCODE OPERAND COMMENTS “8085” ORG 1000 H ; Стартовый адрес программы 1000H 4. Если вы решили писать программу в символьном виде и не использовать ин- формацию в абсолютных адресах, то мо- жете использовать псевдооперацию “EQU”: LABEL OPCODE OPERAND COMMENTS PORTA EQU 10 H ; Адрес порта А ЮН Преимущество этого способа состоит в том, что не надо помнить физические адреса ячеек памяти, используемых в про- грамме. Если адрес переменной должен быть изменен, достаточно лишь повторить псевдооперацию “EQU” вместо изменения всех вхождений этого абсолютного значе- ния в программе. Ниже приводится типич- ная программа на языке ассемблера про- цессора 8085 (с. 108). Теперь мы готовы вводить программу с помощью редактора текста. 1. Нажмите программный ключ “EDIT”. 2. Нажмите “RETURN”. На экране вы- водится сообщение “EDITING NEW FILE”. Редактор находится в режиме вставки, который позволяет вам вводить новый текст. Обратите внимание на то, что определения программных ключей изме- нились на “INSERT”, “REVISE”, “DELETE” и т.д. Несколько советов тем, кто не пользо- вался ранее редакторами текста: 1. Для того чтобы в режиме вставки за- вершить строку и перейти к вводу следую- щей, надо нажать “RETURN”. 2. Если вы ошиблись, нажмите про- граммный ключ “REVISE” и переместите курсор в нужную позицию с помощью ключей редактирования “ROLL UP”, “ROLL DOWN” и для исправления ошиб- ки используйте ключи “INSERT CHAR” и “DELETE CHAR”. Эти ключи позво- ляют исправлять символы текста вплоть до позиции 240. 3. Для продолжения вставки текста по- сле исправления нажмите ключ “INSERT” еще раз и продолжайте вводить символы после последней строки программы. 4. Для окончания редактирования на- жмите программный ключ “END” и вве- дите имя, которое вы хотите дать фай- лу. 5. Для редактирования уже существую- щего файла нажмите программный ключ “EDIT” и введите имя файла. Содержимое файла будет выведено на экран. Команды редактора текстов систе- мы HP 64000 приведены в приложении D.
108 Глава 11 LABEL OPCODE OPERAND COMMENTS "8085" ORG 1000H PORTA EQU 10H ; Адрес порта A ЮН PORTB EQU NOP 20H ; Адрес порта В 20H START MVI A, 00H ; Загрузить в аккумуля- ; тор ООН OUT PORTA ; Вывод по адресу ЮН OUT END PORTB ; Вывод по адресу 20Н 11.5. Транслятор с языка ассемблера системы HP 64000 Транслятор с языка ассемблера си- стемы HP 64000 относится к классу двух- проходных перемещаемых макроассем- блеров, так как при трансляции он дважды просматривает текст программы, содер- жит макросредства и готовит переме- щаемый объектный код. Этот код не со- держит привязки к абсолютным адресам памяти вплоть до выполнения редактиро- вания связей. Именно во время редактиро- вания связей объектный код получает при- вязку к конкретным абсолютным адресам памяти и после этого может быть загру- жен в определенную область памяти для выполнения. 11.5.1. Команды транслятора с языка ассемблера После того как программа на языке ас- семблера была создана и отредактирова- на, можно приступать к преобразованию ее к виду, приемлемому для процессора. Первым шагом в этом процессе является трансляция, во время которой исходная программа преобразуется в форму переме- щаемого объектного кода. Для запуска транслятора надо сделать следующее: 1. Нажать программный ключ “ASSEMBLE”. 2. Ввести имя файла с исходным тек- стом программы. 3. Нажать программный ключ “LIST FILE”. Это означает, что далее будет сле- довать описание выходного файла. 4. Нажать один из следующих про- граммных ключей: a) “PRINTER”, б) “DISPLAY”, в) или ввести имя файла, в котором хотите получить листинг. 5. Нажать программный ключ “ОРТЮ”. Это означает, что далее будет следовать ввод необязательных указаний транслятору. 6. Нажать программный ключ “X-REF”. Это указание транслятору сгене- рировать таблицу перекрестных ссылок. Командная строка после этого п. 1 будет выглядеть как “ASSEMBLE FILE- NAME LISTFILE PRINTER OPTIONS X_REF”. 7. Нажать “RETURN”. Это повлечет за собой выполнение введенной командной строки. Ниже приведен пример листинга про- граммы на языке ассемблера. Обратите внимание на заголовки полей номера стро- ки, сгенерированного кода и исходной строки, а также дату и время создания ли- стинга. В конце листинга расположены со- общение о количестве обнаруженных оши- бок и описание их кодов. За листингом расположена таблица перекрестных ссылок, в которой указан но- мер строки, где определена метка или сим- вол, его тип и номера строк, в которых есть ссылки на этот символ. Такая таблица позволяет экономить время при отладке программ. Списки программных ключей трансля- тора, псевдооперации и коды ошибок при- ведены в приложении D. После завершения ассемблирования в каталоге директории на диске можно увидеть два новых файла. Объектный файл имеет тип RELOC, а файл листинга ASMB-SYM.
Система HP 64000 Hewlett-Packard(HP) 109 FILE VALVE STUDN HEWLETT-PACKARD INTEL 8085 ASSEMBLER Wed, 19 Mar 1980, 0 48 PAGE LINE LOC CODE ADDR SOURCE STATEMENT 1 2 3 ♦0085* ♦ * ДАННАЯ ПРОГРАММА УПРАВЛЯЕТ 8 ВЕНТИЛЯМИ НА ХИМИЧЕСКОМ ЗАВОДЕ 4 ♦ 5 0000 ORG 0000Н : ОПРЕДЕЛИТЬ СТАРТОВЫЙ АДРЕС ПРОГРАММЫ 6 0000 PORTA EQU ООН , ОПРЕДЕЛИТЬ АДРЕС ПОРТА А 7 0002 ADIREC EQU 02Н , АДРЕС РЕГИСТРА НАПРАВЛЕНИЯ ПОРТА А 8 0001 VALVE1 EQU 01Н ; УПРАВЛЯЮЩ. РАЗРЯД ВЕНТИЛЯ # 1 ( РАЗРЯД 0) 9 0002 VALVE2 EQU 02Н , #2(1) 10 0004 VALVE3 EQU 04Н , #3(2) 11 000В VALVE4 EQU ООН , #4 ( 3) 12 0010 VALVE5 EQU ЮН #5 ( 13 0020 VALVE6 EQU 20Н , #6(5) 14 0040 VALVE7 EQU 40Н #7 ( 6) 15 0080 VALVE8 EQU D0H , #8(7) 16 0000 00 NOP 47 0049 CD 004F CALL DELAY , ЖДАТЬ ДВЕ СЕКУНДЫ 48 004C C3 0005 JMP START , ПОВТОРИТЬ ПРОГРАММУ ЗАНОВО 49 004F 00 DELAY NOP , ЭТА ПОДПРОГРАММА РЕАЛИЗУЕТ ЗАДЕРЖКУ НА 2 СЕК. 50 0050 21 OFFF lxi H.OFFFH , ЗАГРУЗИТЬ В РЕГИСТРОВУЮ ПАРУ Н - L0 51 0053 2B LOOP DCX Н , УМЕНЬШИТЬ(НЕ) 52 0054 C2 0053 JNZ LOOP .ЦИКЛ ДО (HL) = 0 53 0057 C9 RET , ВОЗРАСТ ИЗ ПОДПРОГРАММЫ 54 END Errors= 0 FILE VALVE STUDN CROSS REFERENCE TABLE PAGE 2 LINE# SYMBOL TYPE REFERENCES А A 17,19,22,25,28,31,34,37,40 7 ADIREC A 18 49 DELAY A 21,24,27,30,33,36,39,42,43,44,45,46,47 H A 50,51 51 LOOP A 52 6 PORTA A 20,23,26,29,32,35,38,41 19 START A 48 8 VALVE 1 A 19 9 VALVE2 A 22 10 VALVE3 A 25 11 VALVE4 A 28 12 VALVE5 A 31 13 VALVE6 A 34 14 VALVE7 A 37 15 VALVE8 A 40 Directory List Fild VALVE: Disc 0 Wed, 19 Mar 1980, 0 44 Page 1 NAME TYPE SIZE LAST MODIFY LAST ACCESS VALVE.STUDN asmb_sym 1 19 Mar 1980, 0'32 19 Mar 1980, 0 32 VALVE.STUDN reloc 1 19 Mar 1980, 0 32 19 Mar 1980, 0.32 VALVE:STUDN source 1 19 Mar 1980. 0 34 19 Mar 1980, 0'32 **♦♦ Files listed 3, 0.34% disc space used ♦♦♦♦ **♦♦ 22 53% disc space available ♦♦♦♦
110 Глава 11 11.5.2. Макрокоманды системы HP 64000 Как указывалось выше, использование макрокоманд облегчает программирова- ние на языке ассемблера, так как при этом уменьшается число строк в исходном тек- сте программы. Это достигается тем, что транслятор автоматически генерирует рас- ширение исходного текста всюду, где про- исходит вызов макрокоманды. Обычно макрокоманда - это последовательность команд, многократно используемая в про- грамме. Каждой макрокоманде при напи- сании присваивается имя. Вместо того чтобы каждый раз писать целую последо- вательность команд, достаточно в тре- буемых местах вставить вместо нее имя макрокоманды. Транслятор с языка ассем- блера, встретив имя макрокоманды, вста- вит вместо нее последовательность ко- манд, которую эта макрокоманда представляет. Макрокоманды подобны подпрограм- мам в том смысле, что они вызываются в программе многократно. В некоторых приложениях подпрограммы более эффек- тивны, но отнюдь не во всех. При интен- сивном использовании макрокоманд бу- дет сгенерирован более длинный объектный код, чем при использовании подпрограмм. Применяя макрокоманды от условий, определяемых операторами отношения. Ниже приводятся типичные псевдоопе- рации макропроцессора системы HP 64000: • IF позволяет пользователю использовать условия для условной трансляции. • SET присваивает значение из по- ля операнда переменной в поле метки. • GOTO безусловный переход. • NOP пустая операция. Обычно используется с • IF или • GOTO для перехода на команды без метки. MEND конец макрокоманды. Примеры 11.1 и 11.2 иллюстрируют применение макрокоманд. Пример 11.1 со- держит простую макрокоманду без пара- метров. Показаны варианты листинга с макрорасширением и без него. Пример 11.2 демонстрирует использование переда- чи параметров макрокоманде. Этот при- мер тоже содержит два варианта листинга. В примерах приводятся ограниченные воз- можности обработки макрокоманд. Для их лучшего понимания рекомендуется изу- чить соответствующую документацию. Пример 11.1 ‘*8085’’ Title “SIMPLE MACRO” EXT VALUE, TEMP, NOW NAME MACRO , Макроопределение — от “MACRO" до "MEND" LDA NOW , Каждый раз при вызове макрокоманды по имени STA TEMP "NAME" в исходный текст будет LXI H,VALUE , вставляться этот текст MOV A.M , Это можно увидеть в листинге ассемблера MEND , при использовании режима STA VALUE , "EXPAND" NAME END : Макровызов и подпрограммы, необходимо учитывать большое число факторов, однако несом- ненно, что макрокоманды облегчают труд программиста при написании программ. В системе HP 64000 имеется возмож- ность условной макротрансляции. Услов- ная трансляция означает, что макрокоман- да будет оттранслирована в зависимости В приведенном примере последова- тельность команд, начинающаяся строкой NAME MACRO и кончающаяся MEND, является макроопределением. В этом ма- кроопределении используются перемен- ные VALUE, TEMP и NOW, определен- ные в другом модуле, что позволяет де- лать псевдооперация EXT. STA VALUE-
Система HP 64000 Hewlett-Packard(HP) 111 это обычная команда, NAME-вызов макрокоманды. Далее приводится вариант листинга без макрорасширения: FILE MACRO YOURID HEWLETT-PACKARD SIMPLE MACRO LOCATION OBJECT CODE LINE SOURCE LINE 1 ”8085” 2 Title "SIMPLE MACRO WITHOUT EXPANSION” 3 4 EXT VALUE, TEMP,NOW 5 NAME MACRO 6 LDA NOW , Макроопределение в 7 STA TEMP , строках 5-10 8 LXI H,VALUE 9 MOV A,M 10 MEND ; Конец макроопределения ООО 320000 11 STA VALUE 0003 12 NAME ; Здесь макрокоманда вызывалась, Errors= 0 13 END , но расширение не показано Теперь листинг с макрорасширением FILE MACRO YOURID HEWLETT-PACKARD. SIMPLE MACRO LOCATION OBJECT CODE LINE SOURCE LINE 1 ”8085” 2 Title "SIMPLE MACRO EXPANDED” 3 4 EXT VALUE, TEMP,NOW 5 NAME MACRO 6 LDA NOW 7 STA TEMP 8 LXI H,VALUE 9 MOV A.M 10 MEND 0000 320000 11 STA VALUE 0003 12 NAME ; Макровызов 0003 3A0000 + LDA NOW ; Обратите внимание на то, 0006 320000 + STA TEMP , что это команды 0009 210000 + LXI H,VALUE • из макроопределения ОООС 7Е + MOV A.M 13 END Errors = 0 Пример 11.2 Приведенный исходный текст есть при- мер использования передачи параметра в макрокоманду. “8085” TITLE “MACRO EXAMPLE WITH PARAMETERS” ONCE EQU 0 TWICE EQU 1 VALUE EQU 400H
112 Глава 11 REPEAT MACRO &VAL1.&VAL2 IF &VAL1 EQ 1 TRADE IF &VAL2 EQ 1 MOVE TRADE LXI H.VALUE GOTO END MOVE MOV A.M END MEND STA VALUE REPEAT ONCE,TWICE END > Параметры передаются с помощью фиктивных , переменных с префиксом , Пример демонстрирует передачу , двух параметров ; Обратите внимание на условный оператор , Макровызов с фактическими параметрами. Первый параметр - "ONCE”, , а второй - "'TWICE” В этой программе первые три псевдо- операции EQU присваивают значения О, 1 и 400Н соответственно переменным ONCE, TWICE и VALUE. Строка REPEAT MACRO & VAL1, & VAL2 опре- деляет макрокоманду с именем REPEAT и содержит формальные переменные & VAL1 и& VAL2, служащие для передачи параметров. Следующие две команды со- держат условные операции, которые опре- деляют, какие команды макроопределения будут транслироваться. Например, если выражение & VAL1.EQ.1 истинно, то будет транслироваться последовательность ко- манд, начинающаяся с метки TRADE, т. е. LXI Н, VALUE, в противном случае транс- лятор перейдет на следующую строку: .IF & VAL1.EQ.1 MOVE. В этом случае, если & VAL2 равняется 1, то будет транслиро- ваться команда MOV А, М с меткой MOVE. Псевдооперация MEND означает конец макроопределения. STA VALUE -обычная команда, a REPEAT ONCE, TWICE-вызов макрокоманды REPEAT с операндами ONCE и TWICE. & VAL1 и & VAL2 приравниваются переменным ONCE и TWICE, которые имеют значения соответственно 0 и 1. Таким образом, при этом вызове условие & VAL2.EQ.1 истин- но, и будет транслироваться команда MOV А, М с меткой MOVE. Для проверки посмотрите листинг этой программы с макрорасширением. Ниже приводится вариант листинга без макрорасширения: FILE MACROVAR YOURID HEWLETT-PACKARD MACRO EXAMPLE WITH PARAMETERS LOCATION OBJECT CODE LINE 1 “8085” 3
Система HP 64000 Hewlett-Packard(HP) 113 4 (0000) 5 ONCE EQU 0 (0001) 6 TWICE EQU 1 (0400) 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 IF &VAL1 EQ 1 TRADE 10 1F &VALW EQ 1 MOVE 11 TRADE LXI H,VALUE 12 GOTO END 13 MOVE MOV A.M 14 END MEND 0000 320400 15 STA VALUE 0003 16 REPEAT ONCE,TWICE 17 END Errors = 0 Теперь листинг с макрорасширением: FILE MACROVAR YOURID HEWLETT-PACKARD MCAROEXAMPLE WITH PARAMETERS LOCATION OBJECT CODE LINE SOURCE LINE 0000 (0000) (0001) (0400) 320400 1 “8085” 3 4 5 ONCE 6 TWICE 7 VALUE 8 REPEAT 9 10 11 TRADE 12 13 MOVE 14 END 15 EQU 0 EQU 1 EQU 400H MACRO &VAL1.&VAL2 IF &VAL1 EQ 1 TRADE , Условные операторы позволяют IF &VAL2 EQ 1 MOVE , делать условную трансляцию, LXI H,VALUE , как показано в строке 16+. GOTO END , Макрорасширение зависит MOV А,М ; от результатов MEND ; выполнения условных STA VALUE , операторов 0003 0003 7E 16 Г MOVE REPEAT ONCE, TWICE MOV A.M Errors- 0 17 END Чтобы продемонстрировать примене- ние условных макрокоманд, рассмотрим программу с многократным использова- нием операции двойного сдвига содержи- мого аккумулятора вправо или влево. С помощью макрокоманд эта программа может быть реализована двумя путями: 1. Написанием двух безусловных ма- крокоманд для сдвига либо вправо, либо влево; 2. Написанием одной условной макро- команды. Программа с условной макрокомандой приведена ниже:
114 Глава 11 “8085” RIGHT EQU 1 LEFT EQU 0 ROTATE 1 MACRO &DIRECT .IF &DIRECT EQ 1 ROTATE-RT RAL RAL GOTO END ROTATE-RT RAR RAR END MEND ROTATE 1 RIGHT NOP ROTATE 1 LEFT В данном примере две псевдокоманды EQU присваивают значение 1 переменной RIGHT и 0 переменной LEFT. ROTATE 1 MACRO & DIRECT определяет макроко- манду с именем ROTATE 1 и формальную переменную & DIRECT. Команда .IF & DIRECT.EQ.l ROTATE-RT передает управление на строку с меткой ROTATE-RT для сдвига аккумулятора дважды вправо в случае равенства 1 пере- менной & DIRECT. В противном случае аккумулятор дважды сдвигается влево. Строки ROTATE 1 RIGHT и ROTATE 1 LEFT используются при вызове макроко- манды ROTATE 1 для сдвига аккумулято- ра соответственно вправо и влево. 11.5.3. Использование ассемблерных псевдоопераций Приведенные ниже программы ADD 1, ADD 2 и PSEUDO 85 демонстрируют ис- пользование ассемблерных псевдоопера- ций. Внимательное изучение исходных тек- стов программ и их сравнение с листинга- ми транслятора и компоновщика показы- вают результат применения этих псевдо- операций. Содержимое ячеек памяти демонстри- рует распределение памяти в зависимости от применения различных псевдоопера- ций. Например, программная секция, по- меченная PROG, компонуется, начиная
Система HP 64000 Hewlett-Packard(HP) 115 с шестнадцатеричного адреса 2000. Можно посмотреть содержимое следующих ячеек памяти и увидеть коды команд данного модуля. Псевдооперация ASC расположе- на в секции COMMON. В ячейках памяти, начиная с адреса 2200Н, с которого компо- нуется данная секция, можно увидеть шестнадцатеричные значения, соответ- ствующие строке символов в кодах ASCII. На распечатке содержимого памяти эта строка раскодирована в колонке, помечен- ной ASCII. Это один из простых способов проверки того, что символьные строки бы- ли правильно загружены в память. Листинги программ В приведенных листингах можно найти все псевдооперации языка ассемблера си- стемы HP 64000. ПРОГРАММА “ADD-Г PROGRAM NAME “ADD—1” “8085” TITLE “EXAMPLE OF THE USE OF ASSEMBLER PSEUDO OPS” * ПРОГРАММА СТАРТУЕТ С АДРЕСА О, СКЛАДЫВАЕТ СОДЕРЖИМОЕ ♦ ЯЧЕЕК 100Н И 101Н И ПОМЕЩАЕТ РЕЗУЛЬТАТ В ЯЧЕЙКУ 102Н ♦ ПСЕВДОКОМАНДЫ PROG, COMN И DATA УСТАНАВЛИВАЮТ * ЗАГРУЗОЧНЫЕ АДРЕСА СООТВЕТСТВУЮЩИХ СЕКЦИЙ В ♦ 2000Н, 2100Н И 2200Н. PROG . СТАРТОВЫЙ АДРЕС ПРОГРАММЫ УСТАНАВЛИВАЕТСЯ . В 2000Н. ЗАГРУЗОЧНЫЕ АДРЕСА ПРОГРАММНЫХ ,СЕКЦИЙ C0MN И DATA УСТАНАВЛИВАЕТСЯ . АНАЛОГИЧНЫМ ОБРАЗОМ NAME “ADD WORKSHOP I” SPC 2 GLB VALUE,HERE . ЭТИ СИМВОЛЫ ОПРЕДЕЛЕНЫ В ДАННОМ МОДУЛЕ, , НО ИСПОЛЬЗУЮТСЯ В ДРУГИХ EXT AWAY .СИМВОЛ "AWAY" ИСПОЛЬЗУЕТСЯ В ЭТОМ МОДУЛЕ, , НО ОПРЕДЕЛЕН В ДРУГОМ SPC 3 VALUE EQU 17H , ПРИМЕР ИСПОЛЬЗОВАНИЯ ПСЕВДОКОМАНДЫ "EQU" TEMP EQU 800H SPC 2 Macro 1 MACRO , ЭТО ПРИМЕР ПРОСТОЙ МАКРОКОМАНДЫ, LDA VALUE , МАКРОКОМАНДА ВЫЗЫВАЕТСЯ ПО ИМЕНИ "MAKR0T STA TEMP , МАКРОРАСШИРЕНИЕ MEND . ДЛЯ КАЖДОГО МАКРОВЫЗОВА , МОЖЕТ БЫТЬ ПОЛУЧЕНО ПРИ ИСПОЛЬЗОВАНИИ , ПСЕВДОКОМАНДЫ "EXPAND"
116 Глава 11 SPC 3 START LXI H.100H ; ЗАГРУЗИТЬ В ПАРУ РЕГИСТРОВ H-L юон MOV A,M , ЗАГРУЗИТЬ СОДЕРЖИМОЕ ЯЧЕЙКИ ЮОН В АККУМУЛЯТОР INX COMN H , УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ ПАРЫ Н - L , СЕКЦИЯ COMN , ЗАГРУЖАЕТСЯ SPC 3 , С АДРЕСА 2100Н ASC "THIS IS AN ASCII MEMORY EXAMPLE ’’ ASC NOLIST "THE FOLLOWING ARE CONSTANTS ENTERED THROUGH USE OF" SPC LIST 5 , ПРОПУСК ПЯТИ СТРОК , В ВЫХОДНОМ ЛИСТИНГЕ ASC DATA DEC BIN HEX SPC "DEC, OCT, HEX 1,2,3,4,5,6,7,8,9 10110011 OA,OB,ОС,OFF 3 PSEUDOS ” ; СЕКЦИЯ DATA ; ЗАГРУЖАЕТСЯ С АДРЕСА 2200Н ADD M , ПРИБАВИТЬ СОДЕРЖИМОЕ ЯЧЕЙКИ ЮОН К АККУМУЛЯТОРУ INX H , УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ ПАРЫ Н - L MOV M.A , ЗАПИСАТЬ СОДЕРЖИМОЕ АККУМУЛЯТОРА В ЯЧЕЙКУ Ю2Н JMP SPC START 2 , ПЕРЕХОД НА МЕТКУ "START" HERE LDA VALUE SPC 3 NOLIST , ПРИМЕР ПЕРЕСЫЛКИ ,СИМВОЛЬНЫХ ,ДАННЫХ * ЭТОТ КОММЕНТАРИЙ НЕ ПОЯВИТСЯ В ВЫХОДНОМ ЛИСТИНГЕ * ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПСЕВДОКОМАНДЫ "NOLIST" SPC 2 LIST * ЭТОТ КОМЕНТАРИЙ ПОЯВИТСЯ В ВЫХОДНОМ ЛИСТИНГЕ * ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПСЕВДОКОМАНДЫ "LIST" SPC 2 Macro 1 EXAPND SPC 2 Macro 1 SPC 3 JMP AWAY END . ЭТА ПСЕВДОКОМАНДА ВЫЗЫВАЕТ • ВЫДАЧУ В ЛИСТИНГ ВСЕХ . ПОСЛЕДУЮЩИХ МАКРОВЫЗЫВОВ • ЭТО МАКРОРАСШИРЕНИЕ ОБРАТИТЕ . ВНИМАНИЕ НА ТО, ЧТО МАКРОВЫЗОВЫ ; ДО ПСЕВДОКОМАНДЫ "EXPAND" В ЛИСТИНГЕ НЕ РАСШИРЕНЫ . ЭТОТ СИМВОЛ ОБЪЯВЛЕН ВНЕШНИМ , В ДАННОМ МОДУЛЕ И ГЛОБАЛЬНЫМ МОДУЛЕ "ADD-2" , ОПЕРАТОР "END" ЯВЛЯЕТСЯ ЛОГИЧЕСКИМ , КОНЦОМ ПРОГРАММНОГО МОДУЛЯ
Система HP 64000 Hewlett-Packard(HP) 117 ПРОГРАММА “ADD_2” PROGRAM NAME “ADD—2” “8085” TITLE “CONTINUATION OF PSEUDO EXAMPLES” NAME “ADD—2 TO SATISFY EXTERNALS” SPC 2 ♦ ЭТОТ МОДУЛЬ HE ВЫПОЛНЯЕТ НИКАКИХ ФУНКЦИЙ, КРОМЕ ДЕМОНСТРАЦИИ ♦ ПРИМЕРОВ ИСПОЛЬЗОВАНИЯ ПСЕВДОКОМАНД АССЕМБЛЕРА И * РАЗРЕШЕНИЯ ССЫПКИ, ОБЪЯВЛЕННОЙ ВНЕШНЕЙ В МОДУЛЕ ”А00-1” SPC 2 ORG 2300Н , ЭТОТ ОПЕРАТОР НАЗНАЧАЕТ ЯЧЕЙКУ 2000Н ,В КАЧЕСТВЕ СТАРТОВОГО АДРЕСА МОДУЛЯ GLB AWAY , ЭТО ГЛОБАЛЬНОЕ ОБЪЯВЛЕНИЕ ОЗНАЧАЕТ, .ЧТО СИМВОЛ ''AWAY” ОПРЕДЕЛЕН . В ЭТОМ МОДУЛЕ, ССЫПКА НА ЭТОТ СИМВОЛ , ЕСТЬ В МОДУЛЕ “A0D-1” EXT HERE AWAY EQU 3000H LXI H.AWAY NOP NOP JMP HERE ПРОГРАММА “PSEUDO-85” “8085” TITLE “8085 PSEUDO EXAMPLES ” ORG 800H NOP RESERVE-ONE DB 08H . ЗАПОМИНАЕТ ЧИСЛО 08H ПО АДРЕСУ . ТЕКУЩЕГО ЗНАЧЕНИЯ СЧЕТЧИКА АДРЕСА RESERVE-STRING DB “STRING” , ШЕСТНАДЦАТЕРИЧНЫЕ ЗНАЧЕНИЯ КОДОВ , ASCII СИМВОЛОВ СЛОВА "STRING” .ЗАПОМИНАЮТСЯ В ПОСЛЕДОВАТЕЛЬНЫХ , ЯЧЕЙКАХ ПАМЯТИ НАЧИНАЯ С ТЕКУЩЕГО , ЗНАЧЕНИЯ СЧЕТЧИКА АДРЕСА RESERVE-BLOCK DS 10 .ПСЕВДОКОМАНДА "DEFIME STORAGE” РЕЗЕРВИРУЕТ , 10 ПОСЛЕДОВАТЕЛЬНЫХ ЯЧЕЕК ПАМЯТИ, , НАЧИНАЯ С ТЕКУЩЕГО ЗНАЧЕНИЯ СЧЕТЧИКА АДРЕСА , ЭТО ДОСТИГАЕТСЯ УВЕЛИЧЕНИЕМ . СОДЕРЖИМОГО СЧЕТЧИКА АДРЕСА , НА ЗНАЧЕНИЕ ОПЕРАНДА ПСЕВДОКОМАНДЫ DEFINE—WORD DW END 0102H , ОПЕРАНД ЗАПОМИНАЕТСЯ , В ДВУХ БАЙТАХ ПАМЯТИ В ФОРМЕ АДРЕСА 11.5.4. Примеры некоторых ошибок в программах на языке ассемблера Код ошибки “CL”- метка условного перехода (синтаксис требует наличия мет- ки условного перехода, которая не была найдена).
118 Глава 11 FILE AECCL YOURID HEWLETT-PACKARD ERROR CODE CONDITIONAL LABEL LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 3 4 <0000> 5 ONCE EQU 0 <0001> 6 TWICE EQU 1 <0400> 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 IF &VAL1 EQ 1 TRADE 10 IF &VAL2 .EQ 1 Пропущена условная метка 11 TRADE LXI H,VALUE 12 MOVE MOV A.M 13 MEND 0000 320400 14 STA VALUE 0003 15 REPEAT ONCE, TWICE + IF TWICE EQ 1 ERROR-CL A 16 END Errors- 1, previous error at line 15 Код ошибки “DS”-дважды опреде- ленный символ (отмеченный символ не- сколько раз определен в одном модуле): HEWLETT-PACKARD ASSEMB ERROR CODE DUPLICATE SYMBOL (DS) FILE AECDS YOURID LOCATION OBJECT CODE LINE 1 ”8085” SOURCE LINE 0000 00 3 START NOP 0001 3A0040 4 HERE LDA VALUE ERROR-DS A 0004 C30001 5 JMP HERE <0040> 6 VALUE EQU 040H 0007 210040 7 LXI H,VALUE <5000> 8 HERE EQU 5000H ERROR-DS, see line 4 A 000A 77 9 MOV M.A 10 END Errors— 2, previous error at line 8 Код ошибки “IC”-неверная константа (в константе найден недопустимый сим- вол): FILE AECIC YOURID HEWLETT-PACKARD ASSEMBLER ERROR CODE ILLEGAL CONSTANT LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 0000 00 3 START NOP 0001 3A0000 LDA OFFB Это шестнадцатеричное число с ERROR-IC Л указанием восьмеричного 5 END Errors« 1, previous error at line 4
Система HP 64000 Hewlett-Packard(HP) 119 Код ошибки “Ю”-неверный операнд (найден неправильный операнд, либо опе- ранд пропущен): FILE AECIC YOURID HEWLETT-PACKARD ASSEMBLER ERROR CODE INVALID OPERAND LOCATION OBJECT CODE LINE 1 ‘•8085’’ SOURCE LINE 0000 00 3 START NOP <0040> 4 VALUE EQU 040H 0001 320040 5 STA VALUE 0004 03 6 INX С Команда может ссылаться на пару регистров, ERROR-IO д например В, С, а не на один регистр С 0005 C30000 7 JMP START 8 END Errors = 1, previous error at line 6 Код ошибки “IP”-неправильный пара- метр (неправильный параметр в заголовке макрокоманды): FILE: AECIP:YOURID HEWLETT-PACKARD: ERROR CODE: ILLEGAL PARAMETER LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 3 4 <0000> <0001> <0400> 5 ONCE 6 TWICE 7 VALUE 8 REPEAT EQU 0 EQU 1 EQU 400H MACRO &VAL1.&VAL2.VAL3 ERROR-IP 0000 320400 9 10 11 TRADE 12 MOVE 13 14 Л JF &VAL1 .EQ. 1 TRADE .IF &VAL2 .EQ. 1 MOVE LXI H,VALUE MOV A.M MEND STA VALUE 0003 15 16 REPEAT ONCE, TWICE, VALUE END Errors= 1, previous error at line 8 Код ошибки “MC”-условная макро- команда (неправильный условный опера- тор в макрокоманде): FILE: AECMC:YOURID HEWLETT-PACKARD: ERROR CODE: MACRO CONDITION LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 3
120 Глава 11 4 <0000> 5 ONCE EQU 0 <0001> 6 TWICE EQU 1 <0400> 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 .IF &VAL1 .EQ. 1 TRADE Пропущена точка и число 10 .IF &VAL1 .EQ REPEAT 11 TRADE LXI H,VALUE 12 MOVE MOV A.M 13 MEND 0000 320400 14 STA VALUE 0003 15 REPEAT ONCE, TWICE + .IF ONCE .EQ REPEAT ERROR-MC A 16 END Errors= 1, previous error at line 15 Код ошибки “MD”- макроопределение (макрокоманда вызывается до того, как в исходном файле встретилось ее опреде- ление. Определение макрокоманды долж- но предшествовать вызову): FILE: AECMD:YOURID HEWLETT-PACKARD: ERROR CODE: CONDITIONAL LABEL LOCATION 0000 OBJECT <0000> <0001> <0400> CODE LINE 1 “8085” 3 4 5 ONCE 6 TWICE SOURCE LINE EQU 0 EQU 1 EQU 400H REPEAT 7 8 VALUE ERROR-MD 9 REPEAT 10 11 12 MOVE 13 TRADE 14 15 A MACRO &VAL1.&VAL2 .IF &VAL1 .EQ. 1TRADE .IF &VAL2 .EQ. 1 MOVE JMP THERE LXI H,VALUE MOV A.M MEND 0000 0003 320400 16 THERE 17 18 STA VALUE REPEAT ONCE, TWICE END Errors= 1, previous error at line 8 Код ошибки “ML”-метка в макро- команде (метка не была обнаружена в теле макрокоманды):
Система HP 64000 Hewlett-Ра ска rd (HP) 121 FILE: AECCL:YOURID HEWLETT-PACKARD: ERROR CODE: MACRO LABEL (ML) LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 3 4 <0000> 5 ONCE EQU 0 <0001> 6 TWICE EQU 1 <0400> 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 IF &VAL1 EQ. 1 TRDE 10 IF &VAL2 .EQ. 1 MOVE 11 TRADE LXI H,VALUE 12 MOV A.M 13 MEND 0000 320400 14 STA VALUE 0003 15 REPEAT ONCE.TWICE 15 .IF TWICE EQ. 1 MOVE ERROR-ML A 16 END Errors- 1, previous error at line 15 Код ошибки “ММ”-пропущен конец макрокоманды (MEND) (не найдена псев- докоманда MEND, которая должна завер- шить макроопределение). FILE: AECMM:YOURID HEWLETT-PACKARD: ERROR CODE: CONDITIONAL LABEL LOCATION OBJECT CODE LINE SOURCE LINE <0000> 1 “8085” 3 4 5 ONCE EQU 0 <0001> 6 TWICE EQU 1 <0400> 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 .IF &VAL1 .EQ. 1 TRADE 10 .IF &VAL2 .EQ. 1 MOVE 11 MOVE JMP THERE 12 TRADE LXI H,VALUE ; Оператор MEND должен быть до "STA VALUE" 13 THERE MOV A.M ; 14 STA VALUE 15 REPEAT ONCE.TWICE 16 END ERROR-MM A Errors- 1, previous error at line 17
122 Глава 11 Код ошибки “МР”- пропущены скобки (пропущена правая или левая скобка). FILE: AECMP:YOURID HEWLETT-PACKARD: ASSEMBLER ERROR CODE: MISSING PARENTHESIS LOCATION OBJECT CODE LINE 1 “8085” SOURCE LINE 0000 00 3 START NOP <0040> 4 VALUE EQU 040H <5000> 5 HERE EQU 5000H 0001 3A5000 6 LDA (VALUETHERE Пропущена правая скобка ERROR-MP Л 0004 210040 7 LXI Н,VALUE 007 77 8 MOV M.A 9 END Errors = 1, , previous error at line 6 Код ошибки “NM”- вложенная макро- команда (не допускается наличие одного макроопределения внутри другого). FILE: AECNM.YOURID HEWLETT-PACKARD: ERROR CODE: NESTED MACRO LOCATION OBJECT CODE LINE SOURCE LINE <0000> 1 “8085” 3 4 5 ONCE EQU 0 <0001> 6 TWICE EQU 1 <0400> 7 VALUE EQU 400H 0000 320400 8 REPEAT 9 10 11 AGAIN 12 13 14 15 MACRO Обнаружены два вложенных макроопределения LDA VALUE STA TWICE MACRO LXI H,VALUE MOV M.A MEND STA VALUE 0003 16 REPEAT ERROR-NI + AGAIN 17 MACRO A END Errors= 1, previous error at line 16 Код ошибки “RC”-вложенный вызов (запрещен рекурсивный вызов макроко- манды). FILE: AECRC:YOURID HEWLETT-PACKARD: ERROR CODE: REPEAT CALL LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085”
Система HP 64000 Hewlett-Packard(HP) 123 0003 + REPEAT ONCE,TWICE ERROR-RC A Errors= 1, previous error at line 16 Код ошибки “RM”-повторное макро- определение (запрещено переопределение макрокоманды после макровызова). FILE: AECRMYOURID HEWLETT-PACKARD: ERROR CODE: REPEAT MACRO LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 9 REPEAT MACRO &VAL1.&VAL2 ERROR-RM A Errors= 1, previous error at line 9 Код ошибки “UO”- неверный код опе- рации (обнаруженная команда не опреде- лена для данного микропроцессора). FILE: AECUD:YOURID HEWLETT-PACKARD: ASSEMBLER ERROR CODE: UNDEFINED OP CODE LOCATION OBJECT CODE LINE 1 “8085” SOURCE LINE 0000 00 3 START NOP <0040> 4 VALUE EQU 040H <5000> 5 HERE EQU 5000H 6 LDI A,VALUE ; Мнемоника кода операции не определена ERROR-UO А ; для данного процессора 0001 C35000 7 JMP HERE 0004 210040 8 LXI Н,VALUE 0007 77 9 MOV М.А 10 END Errors = 1, , previous error at line 6 Код ошибки “UP”-неопределенный параметр (параметр, обнаруженный в ма- кроопределении, не включен в заголовок макрокоманды) FILE: AECUP:YOURID HEWLETT-PACKARD: ERROR CODE: UNDEFINED PARAMETER LOCATION OBJECT CODE LINE SOURCE LINE 1 “8085” 3 4 <0000> 5 ONCE EQU 0 <0001> 6 TWICE £qu 1 <0400> 7 VALUE EQU 400H 8 REPEAT MACRO &VAL1.&VAL2 9 LXI &REG,VALUE 10 .IF &VAL1 .EQ. 1 TRADE 11 .IF &VAL2 .EQ. 1 MOVE
124 Глава 11 12 TRADE 13 MOVE 14 LXI Н,VALUE MOV A.M MEND 0000 320400 15 STA VALUE 0003 16 REPEAT ONCE.TWICE + LXI &REG,VALUE ERROR-UP A 17 END Errors» 1. previous error at line 16 Код ошибки “US”-неопределенная ссылка (указанный символ не определен как метка и не объявлен глобальным). FILE: AECUS:YOURID HEWLETT-PACKARD: ASSEMBLER ERROR CODE: UNDEFINED SYMBOL LOCATION OBJECT CODE LINE 1 “8085” SOURCE LINE 0000 00 3 START NOP 0001 <0040> <5000> 3A0040 4 VALUE 5 HERE 6 EQU 040H EQU 5000H LDA VALUE 0004 C35000 7 JMP HERE 0007 210000 8 LXI H.F7H Для различения числа и ERROR-US 000A 77 9 д символа числу должен MOV М.А предшествовать нуль Errors» 1 10 , previous error at line END 8 11.6. Компоновщик системы HP 64000 Как указывалось ранее, задачей компо- новщика является генерация рабочего ко- да, привязанного к абсолютным адресам памяти, из перемещаемых модулей, подго- товленных ассемблером. Компоновщик обеспечивает большую гибкость процесса разработки программ, компонуя в единую абсолютную программу несколько пере- мещаемых программных модулей. Кроме того, каждая программа может быть пере- компонована и загружена в различные раз- делы памяти. В этом случае программы не надо переписывать для привязки к раз- личным разделам памяти при разных кон- фигурациях системы. Компоновщик подготавливает карту загрузки, в которой указываются адреса, с которых скомпонованы различные моду- ли, и сообщения об ошибках, возникших во время компоновки. Кроме того, может быть сгенерирована таблица перекрестных ссылок, в которой указывается, где опреде- лен каждый символ или метка программы и в каких операторах есть ссылки на эти символы. 11.6.1. Запуск компоновщика Для запуска компоновщика выполните следующую последовательность дей- ствий : 1. Нажмите программный ключ “LINK” и затем “RETURN”. Система от- ветит следующим образом: a) OBJECT FILES? Введите имена всех перемещаемых мо- дулей, которые надо скомпоновать. б) LIBRARY FILES? Введите имя, ранее присвоенное группе перемещаемых модулей. в) LOAD ADDRESSES? PROG, DATA, COMN = 0000H, 0000H, 0000H Введите загрузочные адреса модулей. Перемещаемые модули могут быть
Система HP 64000 Hewlett-Packard(HP) 125 сгруппированы под именами PROG, DATA, COMN. Затем нажмите “RETURN”. г) MORE FILES? Нажмите соответствующий про- граммный ключ, затем “RETURN”. д) ABSOLUTE FILE NAME? Введите имя требуемого компоновщи- ку командного файла. Поскольку фай- ловая система различает файлы по типу так же, как и по имени, можно исполь- зовать то же имя, что и у файла с пере- мещаемым кодом. Каждый раз, когда появляется необхо- димость изменить исходные программы, проще всего это сделать, оттранслировав и скомпоновав их с помощью командного файла. 2. Нажмите программный ключ “LINK”, введите имя файла, затем нажми- те “RETURN”. Имя будет присвоено фай- лу с генерируемым абсолютным кодом. Следующий ниже каталог директории на диске показывает появление файлов с ти- пами LINK-SYM, LINK.COM и ABSOLUTE, каждый из которых имеет имя SAMENAME. Directory List File. SAMENAME: Disc. 0 Mon, 9 Feb 1981 11.7. Эмулятор системы HP 64000 Схемотехническая эмуляция в систе- мах, базирующихся на микропроцессорах, состоит в замене микропроцессора и (или) принадлежащей ему памяти на устрой- ство, которое виртуально аналогично за- меняемому. Это достигается переключе- нием микропроцессорной системы с базо- вого процессора на процессор, устанавли- ваемый в разъеме эмулятора, что позво- ляет управлять им и проверять необхо- димые сигналы целевой системы. Именно возможность контроля за эмулируемым процессором в соединении с всесторонним анализом его возможностей предостав- ляется разработчикам вместе со средства- ми, необходимыми для комплексной от- ладки аппаратных и программных средств в системе HP 64000. Перечень программных ключей эмуля- тора приведен в приложении D. 11.7.1. Эмуляционное оборудование Система HP 64000 оборудуется эмуля- 4.04 Раде NAME TYPE SIZE LAST MODIFY LAST ACCESS SAMENAME: source 1 9 Feb 1981, 2:37 SAMENAME: asmb_sym 1 9 Feb 1981,2:37 SAMENAME: link—com 1 6 Jun 1981, 0:35 SAMENAME: listing 1 9 Feb 1981, 2:37 SAMENAME: absolute 1 6 Jun 1981. 0:35 SAMENAME: reloc 1 9 Feb 1981, 2:37 SAMENAME: link_sym 1 6 Jun 1981, 0:36 ♦♦♦* Files listed 8, 0.34% disc space used ♦♦♦♦ 23.41% disc space available ♦♦** 9 Feb 1981, 2:37 9 Feb 1981, 2:37 6 Jun 1981, 0:35 9 Feb 1981, 2:37 6 Jun 1981, 0:35 9 Feb 1981, 2:37 6 Jun 1981, 0:36 Файл с типом LINK-SYM содержит карту загрузки, подготовленную компо- новщиком. Командный файл для компо- новщика, содержащий информацию о кон- фигурации компонуемой программы, имеет тип LINK-СОМ. Каждый раз, ког- да возникает потребность в перекомпонов- ке файлов, используя старую конфигура- цию программы, необходимо только ука- зать компоновщику имя командного фай- ла. Список команд компоновщика си- стемы HP 64000 приведен в приложении D. ционной системой с дополнительной эму- ляционной памятью и платой управления памятью. Кроме того, рекомендуется иметь плату внутреннего анализа, так как она обеспечивает дополнительные воз- можности мощного логического анализа- тора, встроенного в систему HP 64000. 11.7.2. Анализ В дополнение к логическому анализа- тору в систему HP 64000 добавлена новая
126 Глава 11 возможность анализа программного обес- печения. Разработчик имеет средства уста- навливать временные события в абсолют- ном времени или относительно других событий, что дает возможность опреде- лять длительность происходящих в систе- ме процессов. Временной анализ позво- ляет разработчику измерять эффектив- ность его программного обеспечения, определяя, сколько времени затрачивается на выполнение различных подпрограмм. Можно также определить места, которые должны быть улучшены более эффек- тивным кодом. Анализатор допускает за- дание нескольких последовательных запу- сков по достижению указываемых адресов или при выборке определенных данных, которые должны быть обнаружены в ука- занном порядке перед каждым последова- тельным запуском анализатора. Кроме то- го, он позволяет различать выборку команд и данных. 11.7.3. Символьная отладка Для программ, скомпонованных в си- стеме HP 64000, автоматически генери- руется карта загрузки. Наличие этого фай- ла позволяет пользователю проводить анализ и отладку программного обеспече- ния в символьном виде. Используя логиче- ский анализатор при эмуляции, легче от- метить определенные точки в программе символами или метками, чем абсолютны- ми адресами, присваиваемыми им при компоновке. Система, кроме того, допу- скает описание стартового адреса про- граммы в символьном виде. Если метка “START” используется в начале про- граммы у первой выполняемой команды, можно использовать команду “RUN FROM START” для запуска программы. 11.7.4. Архитектура эмулятора системы HP 64000 Эмуляция в системе HP 64000 осущест- вляется с использованием двухпроцессор- ной (главный/подчиненный) системы и от- дельной шины, используемой только для эмулятора. Один из процессоров является главным, он управляет действиями си- стемы и позволяет пользователю общать- ся с эмулируемой системой. Другой про- цессор является эмулируемым и располо- жен в разъеме эмулятора. Этот процессор выполняет команды пользовательской программы. Эта двухпроцессорная систе- ма с отдельной эмуляционной шиной по- зволяет эмуляционной системе работать со скоростью микропроцессора, даже ког- да главный процессор выполняет свои си- стемные функции или пользователь исправляет свои программы с помощью редактора. В режим эмуляции можно во- йти и тогда, когда главный процессор про- должает выполнять пользовательскую программу. Это ценное свойство струк- туры с двойной шиной, так как в про- граммном обеспечении пользователя мо- гут присутствовать ошибки, проявляю- щиеся однократно в течение длительного времени. При этом появляется необходи- мость пользователю покинуть эмулируе- мую систему и предоставить анализатору возможность следить за ней. Выйдя из ре- жима эмуляции, пользователь может ис- править свои программы с помощью ре- дактора текстов, оттранслировать и ском- поновать их, а потом опять войти в режим эмуляции без прерывания эмулируемого процессора (рис. 11.4). 11.7.5. Эмуляция процессоров других типов Поскольку эмулируемая память и эму- лируемый процессор не используются главным процессором, можно легко заме- нить эмулирующую систему для эмуляции другого 8-битового процессора. Для этого требуется только изменить разъем эмуля- тора, в который вставляется эмулируемый процессор, и плату управления. 11.7.6. Начало работы с эмулятором До начала использования эмулятора необходимо упомянуть о следующем: 1. Никогда не вставляйте плату в разъ- ем эмулятора и не вынимайте ее оттуда при включенном питании системы. 2. Все программы должны быть от- транслированы и скомпонованы до того, как их потребуется загрузить в память на исполнение или записать в ППЗУ.
Система HP 64000 Hewlett-Packard(HP) 127 3. Система HP 64000 не обеспечивает питанием целевую систему, которая дол- жна иметь собственный блок питания. При первой инициализации эмулятора для запуска программы системой по отве- там пользователя на последовательность вопросов генерируется командный файл. Эти ответы пользователь дает, основы- ваясь на конфигурации эмулируемой си- стемы. Для работы с эмулятором необхо- димо сделать следующее: 1. Нажмите программный ключ "EMULATE” и затем "RETURN”. Систе- ма ответит: п) Processor Clock: (тактовый генера- тор процессора) internal (внутрен- ний) external (внешний) В ответ нажмите нужный про- граммный ключ и затем "RETURN”. Внут- ренний тактовый генератор выбирается при отсутствии соответствующей внешней аппаратуры. б) Restrict processor to real time runs? yes no Нажмите нужный программный ключ и "RETURN”. Положительный ответ на этот вопрос не позволит пользователю вы- зывать команды, выводящие процессор из режима реального времени. Выполнение команды "DISPLAY REGISTERS DYNAMIC” вызывает такое прерывание процессора, при котором может быть по- лучена информация о регистрах. в) Stop processor on illegal opcodes? yes no Нажмите нужный программный ключ и "RETURN”. До продолжения ответов на другие вопросы определим несколько тер- минов. Эмуляционное ОЗУ: эта память располо- жена в HP 64000 и используется толь- ко как память про- грамм. Эмуляционное ПЗУ: позволяет использо- вать эмуляционную память только для чтения, чем дости- гается защита тех программ пользова- теля, которые он не хочет менять в про- цессе эмуляции. Пользовательское ОЗУ: расположено в це- левой системе. Пользовательское ПЗУ: тоже находится в целевой системе. г) Emulate RAM address? (address) (интервал адресов эмуляционно- го ОЗУ) Введите начальный адрес области па- мяти, затем программный ключ “thru” и конечный адрес. Области памяти разде- лены на блоки по 1 Кбайт. Система будет продолжать спрашивать пользователя о границах областей эмуляционного ОЗУ до тех пор, пока в ответ Вы не нажмете просто "RETURN” д) Emulate ROM address range? (address) (интервал адресов эмуляционного ПЗУ) Если предполагается использовать эмуляционное ПЗУ, введите адреса его областей так же, как и в ответе на предыду- щий вопрос, в противном случае нажмите "RETURN” е) User RAM address range? (address) (интервал адресов пользовательского ОЗУ) Отвечать из тех же соображений, что и в пункте г. ж) User ROM address range? (address) (интервал адресов пользовательского ПЗУ) Отвечать из тех же соображений, что и в пункте д. з) Illegal memory address range? (address) (интервал адресов несуществующей па- мяти) Если программа работает в известных адресах памяти, то может быть указана зо- на несуществующих адресов. При обраще- нии к ячейке памяти в этой зоне програм- ма будет остановлена и на дисплее будет выведено значение этого адреса. и) Simulate I/O? yes no (имитируемый ввод/вывод) Нажмите соответствующий про- граммный ключ, затем "RETURN”. До тех пор, пока Вы не ознакомитесь подробно с имитируемым вводом/выводом, отве- чайте на этот вопрос отрицательно. к) Comand file name? (file) (имя командного файла)
Диск, АЦПУ, другие станции -НР-1В |RS-232 Задняя панель Ч и нездо # 1 Клавиатура Наборное поле ввода/вывода HP-IB/RS-232-C Управл. клавиатурой. Управл. прерываниями. Вспомогательная плата. Выборка Эмуляционная шина (по особому запросу) ОЗУ и управл дисплеем^ Гнездо # 2 Процессор/ПЗУ Гнезда Гнездо # 13 Монитор дисплея 32К слов ОЗУ и контроллер дисплея Процессор и 16К слов ПЗУ Гнездо вспомогат платы вспомогат плат Гнездо вспомогат платы Блок питания V и Л
Рис. 11.4. а-центральный процессор во время эмуляции имеет незави- симые шины и может работать независимо от эмуляцион- ной системы Таким образом, разработка программ может проходить параллельно процессу эмуляции, б-эмуляционная система состоит из эмулятора микропроцессора, эмулятора памяти, логического анализатора и пакета программной под- держки Источник печатается с разрешения фирмы Hewlett- Packard
130 Глава 11 Введите имя командного файла эмуля- тора. Он будет использоваться всегда, ког- да будет требоваться аналогичная конфи- гурация эмуляционной системы. На этот ввод система отреагирует очисткой экрана и надписью “PROGRAM LOADED”. Описания функций про- граммных ключей эмулятора изобра- жаются в нижней строке экрана. Так как файловая система различает файлы не только по имени, но и по типу, имя ко- мандного файла эмулятора может совпа- дать с именем программы, которая будет выполняться, что избавляет пользователя от необходимости запоминать несколько различных имен файлов. Когда в следующий раз потребуется та же конфигурация эмулятора, достаточно набрать следующую командную строку: л) “emulate” (имя файла) “load” (имя файла) адрес программы может быть введен в форме константы или выражения. 4. Для проверки содержимого реги- стров нажмите программные ключи “DISPLAY REGISTERS DYNAMIC” и “RETURN”. 5. Для установления пошагового режи- ма выполнения программы нажмите про- граммные ключи “STEP FROM (ADDRESS)” и “RETURN”. Эта команда занесет в счетчик адреса значение введен- ного адреса и установит пошаговый ре- жим выполнения программы. Нажмите программный ключ “STEP”. Заметьте, что теперь каждое нажатие клавиши “RETURN” вызывает выполнение одной команды программы и на экране изобра- жается выполняемая команда и содержи- мое регистров. После нескольких шагов экран дисплея выглядит следующим обра- зом: REGISTER (Hex) рс opcode а b с d е h 1 szxac хрхсу sp next—p 0000 ♦♦ С9 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0000 0000 ♦♦ С9 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0700 0700 ЗЕ MVI А, 01Н 01 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0702 0702 32 STA 0901Н 01 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0705 0705 32 STA 0920Н 01 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0708 0708 32 STA 0902Н 01 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 070B 070В 32 STA 0921Н 01 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 070E 070Е ЗЕ MVI А, 80Н 80 80 00 00 00 07 ОЕ 00 0 1 0 OOFF 0710 Система инициирует эмулятор в со- ответствии с ранее определенной конфигу- рацией и загрузит программу на исполне- ние. Как и в предыдущем случае, система очистит экран дисплея, выведет надпись “PROGRAM LOADED” и описания про- граммных ключей эмулятора. 2. Для проверки того, что программа была загружена правильно, нажмите про- граммные ключи “DISPLAY MEMORY (ADDRESS) MNEMONIC” и “RETURN”. На экране появится текст программы на языке ассемблера используемого процес- сора. С помощью соответствующих клю- чей можно перемещать текст вверх или вниз. 3. Для запуска программы нажмите программные ключи “RUN FROM (ADDRESS)” и “RETURN”. Стартовый 6. Для остановки программы нажмите программные ключи “STOP RUN” и “RETURN”. 7. Для запуска программы на исполне- ние вплоть до определенного адреса на- жмите программные ключи “RUN FROM (ADDRESS) UNTIL (ADDRESS)” и “RETURN”. 8. Для выхода из режима эмуляции на- жмите программные ключи “END” “RETURN”. 11.8. Командные файлы Кроме эмулятора система HP 64000 представляет пользователям широкие воз- можности в использовании командных файлов. Командные файлы обеспечивают
Система HP 64000 Hewlett-Packard(HP) 131 выполнение стандартных программ си- стемы в максимально короткое время. Ко- мандные файлы компоновщика и эмулято- ра выполняют это, запоминая информа- цию о карте загрузки и конфигурации памяти и другого оборудования системы. После того как командный файл был под- готовлен, компоновщик или эмулятор мо- гут быть вызваны с помощью только со- ответствующей команды и имени команд- ного файла. До сих пор мы рассматривали ко- мандные файлы компоновщика и эмулято- ра, но система HP 64000 поддерживает также возможность создания и командных файлов общего назначения. Эти ко- мандные файлы создаются пользователем и осуществляют функции дополнительных программ в соответствии с его желаниями. Задача исправления программного обеспе- чения, а затем переассемблирования, пере- компоновки и перезапуска эмулятора за- нимает довольно длительное время. Если пользователь освободится от этой рутин- ной работы, он сможет более продуктивно использовать свое время. В качестве примера использования ко- мандного файла возьмем следующий. После редактирования исходного текста программы с целью исправления ошибки с клавиатуры вводится имя командного файла. Это может быть просто символ, на- пример «Q». Командный файл выполняет следующие действия. Он ассемблирует файл, подготавливая листинг, и, если не было ошибок, компонует программу. Если при компоновке не обнаружено ошибок, командный файл вызывает эмулятор и за- пускает программу с некоторой предопре- деленной символьной метки. Вся эта про- цедура может быть выполнена единствен- ной командной строкой пользователя. Командный файл может быть подготовлен двумя способами. Первый способ использует программный ключ, по- сле нажатия которого в файл с указанным пользователем именем записывается по- следовательность правильных командных строк. Другой заключается в использова- нии редактора текста и вводе с его по- мощью команды строка за строкой в той последовательности, в которой они дол- жны выполняться. В командных файлах можно использовать любые разрешенные в системе команды, так, как будто они вво- дятся с помощью программных ключей. Допускается передавать параметры в командные файлы, что позволяет созда- вать вариантные файлы. Например, в каче- стве параметра можно передать имя фай- ла. После запуска командный файл спра- шивает у пользователя имя файла и затем начинает его обрабатывать. 11.8.1. Простой пример командного файла Простым примером командного фай- ла, подготовленного с помощью редакто- ра текста, является следующий: assemble KEY _ DISP listfile KEY DISP Этот командный файл был подготов- лен с помощью редактора текстов. Он был назван “А”, так как предназначен для ас- семблирования. Теперь нажатие клавиши “А” на клавиатуре вызовет ассемблирова- ние файла “KEY-DISP” и подготовку фай- ла с листингом. 11.8.2. Другой пример командного файла Этот командный файл тоже был подго- товлен с помощью редактора текстов и назван “Q”, т. е. быстрый (QUICK), assemble KEY _ DISP listfile KEY _ DISP link KEY _ DISP listfile KEY _ DISP emulate KEY _ DISP load KEY _ DISP Этот командный файл ассемблирует файл “KEY-DISP”, затем компонует его с помощью определенного ранее команд- ного файла компоновщика. Эмулятор вы- зывается с помощью командного файла с тем же именем “KEY-DISP”, а в память загружается при этом абсолютный файл “KEY-DISP”. 11.8.3. Пример командного файла: передача параметров И этот командный файл был подготов- лен с помощью редактора. Ключевое сло- во “PARMS” указывает на то, что команд- ному файлу передается параметр. Этот
132 Глава 11 параметр должен быть выделен в той же строке с префиксом Командному фай- лу может быть передано и большее число параметров. PARMS &FILENAME assemble &FILENAME listfile &FILENAME link &FILENAME listfile &FILENAME emulate &FILENAME load &FILENAME run from START Данный командный файл ассембли- рует, компонует файл, запускает эмулятор и программу с адреса “START”. 11.9. Имитируемый ввод-вывод Возможность объединения аппаратной и программной частей проекта на как можно более ранней стадии процесса раз- работки является большим достижением системы. Такое раннее объединение позво- ляет управлять процессом разработки и обнаруживать логические ошибки до то- го, как исправления станут слишком труд- ноосуществимыми. Однако на ранней ста- дии разработки не вся аппаратура целевой системы может быть уже- подготовлена. Для большего удобства разработки, когда могут потребоваться такие устройства, как АЦПУ, дисплей, диск, клавиатура для вво- да данных или, возможно, интерфейс RS-232, в системе HP 64000 имеется сред- ство, называемое «имитируемый ввод-вы- вод», которое позволяет программам пользователя обращаться к системной ши- не ввода-вывода. Этим достигается возможность для пользователя использовать клавиатуру или дисплей системы HP 64000 для нужд целевой системы. Пользователь получает, таким образом, в свое распоряжение АЦПУ и даже интерфейс RS-232 для орга- низации связи. На диске могут быть одно- временно открыты не более пяти файлов. Пример программы, использующей имитируемый ввод-вывод системы HP 64000, приведен в главе 10. Это простая программа, так как она просто принимает символ с клавиатуры и выводит его на дис- плей. Эта программа может быть в прин- ципе частью системного монитора. Имитируемый ввод-вывод имеет много приложений - от моделирования внешней аппаратуры до разработки опера- ционной системы процессора, в настоящее время эмулируемого. Безотносительно к области применения имитируемый ввод- вывод является еще одним средством сре- ди многих предоставляемых системой HP 64000. Именно эти средства, представ- ляемые одной системой, позволяют бы- стро разрабатывать и анализировать мик- ропроцессорную аппаратуру. 11.10. Примеры, демонстрирующие процесс разработки программного и аппаратного обеспечения на типичной системе поддержки Этот раздел состоит из нескольких примеров, разработанных с целью обуче- ния пользователей системы HP 64000 ос- новам, необходимым для дальнейшего изучения возможностей системы. Глубо- кое знание по применению различных воз- можностей системы может быть получено с помощью изучения соответствующей до- кументации или разбора примеров. Следующие примеры начинаются с последовательности шагов, которые надо выполнить для загрузки системы. Та- кой же подход применен и к изучению ре- дактора текстов, ассемблера, компонов- щика и эмулятора. После примеров приве- дено несколько программ, показывающих применение имитируемого ввода-вывода и аппаратной эмуляции для микропроцес- сора HP 5036. HP 5036-это микрокомпь- ютер, базирующийся на процессоре 8085, его описание приведено в приложении С. Принципы построения данных приме- ров помогут читателю подойти к изуче- нию других подобных систем. 11.10.1. Загрузка системы HP 64000 Задача состоит в загрузке системы поддержки. Шаг. 1: Включите питание на всех диско- водах, подключенных к систем- ной шине. Тумблеры располо- жены рядом со шнурами питания.
Система HP 64000 Hewlett-Packard(HP) 133 Пример 11.3 Используя редактор текстов системы HP 64000 и следуя указанной последова- тельности действий, создайте новый файл и введите приведенную ниже программу. Текст программы ADD дан на с. 134. Алгоритм Шаг 1: Нажмите программный ключ “USERID”, введите Ваш код идентификации пользователя YOURID (не более шести симво- лов, первый из них-буква) и вве- дите правильные дату и время су- ток. Не надо использовать один код идентификации пользователя на нескольких станциях одновре- менно, в противном случае на Шаг 2: Включите питание на АЦПУ. Убедитесь, что лампочка “ON-LINE” горит. Если нет, то нажмите соответствующую кноп- ку. Шаг 3: Включите питание на всех инстру- ментальных станциях, подсоеди- ненных к системной шине. Шаг 4: Включите питание на станции, со- единенной с главным контролле- ром. Она должна быть включена для управления системой. Шаг 5: Проверьте, что все включенные устройства появились в списке конфигурации шины ввода-выво- да, таком, как приведенный ниже. Конфигурация шины ввода-вывода ADRS DEVICE О 13037 DISC CONTROLLER UNIT О 7906 DISC MEMORY LU = O NA32 1 2631 PRINTER 2 64100 3 64100 4 64100 5 64100 6 64100 7 THIS 64100, MASTER CONTROLLER STATUS Awaiting command userid .............. 00 00 edit compile assemble link emulate prom_prog <CMDFILE> —ETC— Основные проблемы Если устройство выключилось после включения питания или не появилось в конфигурации шины ввода-вывода на экране дисплея, приостановите работу станций одновременным нажатием кла- виш “SHIFT” и “RESET”. Если устройство все равно не появилось в конфигурации шины, проверьте соединения проводов шины. Включение в первую очередь главной станции может привести к отсутствию не- которых устройств системы в конфигура- ции шины. В качестве частного примера можно привести АЦПУ, которое может быть не найдено системой для распечаты- вания файла. При получении сообщения “PRINT FILE NOT FOUND” приостано- вите основной контроллер, убедившись предварительно, что питание на АЦПУ включено. экране появится сообщение “I/O BUS WAIT”. userid YOURID (RETURN) time HH : MM (RETURN) date DD/MM/YY (RETURN) В последних версиях системы функции даты и времени объеди- нены в одном программном клю- че. Шаг 2: Войдите в режим редактирова- ния и назовите Ваш новый файл “ADD”. edit into ADD (RETURN) Шаг 3: Первой строкой программы дол- жна быть директива ассемблера, начинающаяся с первой позиции строки. Введите ее. “8085” (RETURN) Шаг 4: Введите строки с комментария-
134 Глава 11 "8085" * Эта программа запускается с адреса 2000Н, складывает содержимое * ячеек 100Н и 101Н и запоминает результат в ячейке 102Н * NAME "ADD : WORKSHOP I" START ORG LXI 2000H H,100H ; Стартовый адрес программы ; 2000H MOV INX A, M H ; Загрузить в регистровую пару H-L100H ; Загрузить содержимое ячейки 100Н в аккумулятор ; Увеличить на 1 пару H-L ADD M ; Прибавить содержимое ячейки 101Н к аккуму- INX H ; лятору ; Увеличить на 1 пару H-L MOV JMP M, A START ; Запомнить аккумулятор в ячейке 102Н ми, начинающиеся с символа * ЭТА ПРОГРАММА НА- ЧИНАЕТСЯ С АДРЕСА 2000Н И ... Комментарии могут на- чинаться с символа “*” в первой позиции или символа “в любой позиции строки. Шаг 5: Введите директиву “NAME”, ес- ли она Вам необходима. Это имя используется при компоновке не- скольких модулей в одну про- грамму. “TAB” NAME “TAB” “ADD _WORKSHOP _ I” (RETURN) Шаг 6: Введите оператор “ORG”. (TAB) ORG (TAB) 2000H (TAB)*COMMENTS (RETURN) Шаг 7: Введите “START” в поле метки, начинающейся с первой позиции строки. START(TAB) LXI (TAB) Н, 100Н (TAB); COMMENTS (RETURN) Шаг 8: Поскольку далее в программе нет меток, используйте автома- тическое табулирование для эко- номии времени. Нажмите про- граммный ключ “AUTOTAB” и “RETURN”. Система ответит “AUTOTAB IS NOW ON”. Теперь при нажатии клавиши возврата каретки курсор встанет в следующей строке на позицию первого символа в текущей. Шаг 9: Введите остаток программы в со- ответствии с распечаткой в разд. 9.3.1. (TAB)MOV(TAB)A,M(TAB) *COMMENTS(RETURN) INX(TAB)H(TAB)*COMMENTS (RETURN) Шаг 10: Распечатайте содержимое файла, убедившись, что АЦПУ включе- но. list printer all (RETURN) Шаг 11: Если Вы редактировали суще- ствующий файл, закройте его следующий образом: end (RETURN) Если Вы вошли в редактор с помощью команды “EDIT RETURN”, то при закрытии фай- ла ему надо присвоить имя. end ADD (RETURN) Шаг 12: Теперь файл запомнен на диске. Распечатаем список файлов ди- ректории, соответствующей коду идентификации пользователя. directory (RETURN) Результат выполнения этой команды при- веден на с. 135 В этом списке перечислены все программы, соответствующие Вашему коду идентифи- кации пользователя. Обратите внимание на тип файлов. Шаг 13: Опять вызовите редактор тек- стов для редактирования этого
Система HP 64000 Hewlett-Packard(HP) 135 Directory List UserYOURID Disc’ 0 Mon, 9 Feb 1981, 2:53 Page NAME TYPE SIZE LAST MODIFY LAST ACCESS ADD source 1 9 Feb 1981, 2 53 9 Feb 1981, 2.53 * * Files listed 2, 0.08% disc space used **** 18 30% disc space available **** же файла. edit ADD (RETURN) Учтите, что можно явно указать номер диска, на котором распо- ложен Ваш файл, командами ADD: 0 для диска 0 или ADD : 1 для диска 1. Если номер диска яв- но не указан, по умолчанию бе- рется диск 0. Шаг 14: Вставим оператор “NOP” после строки 9 исходного текста. 9 (RETURN) insert (TAB)NOP(TAB)(TAB); NO OPERATION (RETURN) Шаг 15: Перенумеруем строки исходного текста для упрощения редактиро- вания. renumber (RETURN) Шаг 16: В программах, больших, чем эта, задача поиска в тексте требуемых символов занимает довольно много времени. Найти в тексте требуемые символы можно с по- мощью команды редактора “FIND”. Найдем в нашей про- грамме строку с оператором “NOP”. find “NOP” all (RETURN) Курсор после выполнения этой команды будет указывать на но- мер строки, содержащей опера- тор “NOP”. На экран выведется номер позиции в строке, с кото- рой начинается найденная после- довательность символов. Шаг 17: Для вставки текста введите сле- дующую команду, и после этого Вы сможете с помощью ключей редактирования управлять пере- мещением курсора по экрану вверх, вниз или в стороны, insert Шаг 18: Для исправления текста введите следующую команду и управляй- те перемещением курсора по экрану ключами редактирования, revise Шаг 19: Для перемещения экрана с целью увидеть все 240 позиций строк текста надо нажимать одновре- менно клавиши “SHIFT” и “левая стрелка”. Шаг 20: Для вставки или стирания сим- волов при исправлении текс- та после установки курсора на требуемую позицию исполь- зуйте соответственно клавиши “INSERT CHAR” или “DELETE CHAR”. Шаг 21: Используя программный ключ “DELETE”, сотрите часть файла. Исходный текст будет неиз- менным до тех пор, пока Вы не выйдете из редактора. Шаг 22: Части файла могут быть размно- жены с помощью следующей по- следовательности действий. Установите курсор на нужную Вам строку. extract (RETURN) retrieve 5 (RETURN) Указанная строка будет размножена указанное в команде “RETRIEVE” число раз. Шаг 23: Предпочтительно заканчивать редактировать файл не командой “END”, а двукратным нажатием ключа “RESET”. Это приведет к сохранению исходной и со- зданию новой версии этого фай- ла на диске. Продолжите экспе- рименты со следующими клю- чами: replace, find, copy, extract, retrieve, list, merge
136 Глава 11 Пример 11.4 Оттранслируйте файл “ADD”, исполь- зуя программные ключи ассемблера. В ре- зультате должен появиться файл с переме- щаемым объектным кодом. Алгоритм Шаг 1: Введите код идентификации поль- зователя и установите дату и вре- мя суток. userid YOURID (RETURN) TIME НН:MM (RETURN) date DD/MM/YY (RETURN) Шаг 2: Вызовите ассемблер, передав ему имя исходного файла и файла с листингом. Процесс ассемблиро- вания начинается с момента нажа- тия клавиши “RETURN”. Выход листинга ассемблера осуществит- ся на выбранном пользователем устройстве, которое может быть дисплеем, АЦПУ или файлом на диске. Введите следующие ко- манды : assemble ADD listfile options xref (RETURN) На АЦПУ будет выведен листинг про- граммы : В таблице перекрестных ссылок, распо- ложенной за листингом программы, пока- заны номера строк, в которых определены символы, их тип и номера всех строк, в ко- торых есть ссылки на эти символы. Ниже приведены все возможные типы символов. Шаг 3: Для лучшей иллюстрации воз- можностей ассемблера добавьте в исходный текст программы не- правильный оператор: edit ADD (RETURN) И (RETURN) insert (TAB)MVI(TAB)D,FFH(RE- TURN) end(RETURN) Шаг 4: Оттранслируйте измененную про- грамму. assemble ADD listfile printer options xref (RETURN) Ниже приведен листинг про- граммы. Обратите внимание на то, что ассемблер воспринимает “FFH” как символ. Так как этот символ не был определен в про- грамме, было сгенерировано сооб- щение об ошибке. Заметьте, что сообщение об ошибке появилось FILE: ADD:YORID HEWLETT-PACKARD: 8085 Assembler Mon, 9 Feb 1981, 3 45 LOC. OBJ. CODE LINE SOURCE LINE l"8085" 2000 210100 2* Эта программа запускается с адреса 2000Н, склады- 3* вает содержимое ячеек ЮОН и 101Н и запоминает 4* результат в ячейке 102Н 5* 6 NAME "ADD WORKSHOP Г 7 ORG 2000Н ; Стартовый адрес программы 8 ; 2000Н 9 START LXI Н, ЮОН ; Загрузить в регистр пару H-L 2003 7E 2004 23 10 MOV А, М ; Загрузить содержимое ячейки ЮОН в аккумулятор 11 INX Н , Увеличить на 1 пару H-L 2005 86 2006 23 12 ADD М ; Приблизить содержимое ячейки Ю1Н к аккуму- ; л я то ру 13 INX Н ; Увеличить на 1 пару H L 2007 77 14 MOV M,A : Запомнить аккумулятор в ячейке 102Н 2008 С32000 15 JMP START ; Переход на метку "START" Errors = 0 FILE: ADD:YORID CROSS REFERENCE TABLE PAGE 2 LINE# SYMBOL TIPE REFERENCES 9 START A 15
Система HP 64000 Hewlett-Packard(HP) 137 Коды типов символов Код Тип Код Тип А Абсолютный М Многократно определенный Е Внешний R Предопределен- ный регистр D Данные С Общий Р Программа и Неопределенный и в таблице перекрестных ссылок. FILE ADD YOURID HEWLETT-PACKARD 8085 Assembler Шаг 5: Когда ассемблер встречает букву в поле операнда, он рассматривает ее как символ. Шестнадцате- ричные константы поэтому дол- жны начинаться с цифры 0. Ис- правьте программу следующим образом: edit ADD (RETURN) 12 (RETURN) revise (TAB)(TAB)D,OFFH (RE- TURN) end Mon, 9 Feb 1981, 5 54 LOC OBJ CODE LINE SOURCE LINE 1 *'8085” 2 * 3* Эта программа запускается с адреса 2000Н, 4* складывает содержимое ячеек 100Н 5* и 101Н и запоминает результат ячейке 102Н 6 NAME “ADD WORKSHOP I” 7 ORG 2000H , Стартовый адрес программы 2000H 2000 210100 8 9 START LXI H.100H , Загрузить в регистре 2003 7Е 10 MOV A,M вую пару Н L 10ОН Загрузить содержимое 2004 23 11 INX H ячейки 100Н в сумматор . Увеличить на 1 пару 2005 86 12 ADD M , Прибавить содержимое 2006 23 13 INX H ячейки 101Н к сумматору , Увеличить на 1 пару 2007 77 14 MOV M.A . Запомнить сумматор 2008 3E00 15 MVI A.FFH в ячейке102Н ERROR-US 200А С32000 16 JMP START , Переход на метку Errors = 1, previous error at line 15 US - Undefined Symbol, The indicated symbol is not defined as a label or declared as an external FILE ADD YOURID CROSS REFERENCE TABLE PAGE 2 LINE* SYMBOL TYPE REFERENCES *** FFH U 15 9 START A 16 Отметьте, что ошибка появляется Шаг 6: Опять оттранслируйте програм- также в таблице перекрестных му, на этот раз листинг выведите ссылок. на экран дисплея.
138 Глава 11 assemble ADD listfile display options xref (RETURN) Для остановки выдачи листинга на экран нажмите клавишу “RESET”. Чтобы продолжить, до- статочно нажать любую другую клавишу клавиатуры. Шаг 7: Объектный файл теперь запомнен на диске. Взгляните на список фай- лов Вашей директории. В резуль- тате ассемблирования исходного файла появились два новых - файлы с объектным кодом и лис- тингом. “Load addresses: PROG, DATA, COMN = 0000H, 0000H, 0000H” Шаг 4: Эта команда позволяет пользова- телю указать различные относи- тельные адреса для программной секции, секции данных и общей секции. В данной программе не надо указывать явного адреса программной секции, так как в ней используется оператор ORG. (RETURN) “More files?” Directory List User:YOURID Disc: 0 Mon, 9 Feb 1981, 6:25 Page 1 ADD source 1 9 Feb 1981, 5:54 9 Feb 1981, 6:24 ADD reloc 1 9 Feb 1981, 6:24 9 Feb 1981, 6:24 ADD asmb_sym 1 9 Feb 1981, 6:24 9 Feb 1981, 6:24 **** Files listed 3, 0.25% disc space used **** 18.05% disc space available Пример 11.5 Используя компоновщик системы HP 64000, скомпонуйте файл с перемещаемым объектным кодом “ADD”, чтобы получить файл с абсолютным кодом. Этот файл можно загружать как в эмуляционную па- мять, так и в память пользовательского процессора, а также «прошивать» в ППЗУ. Алгоритм Шаг 1: Вызовите компоновщик и укажите ему на необходимость подготовки карты загрузки. link listfile display (RETURN) “Object files?” Шаг 2: Введите имена компонуемых фай- лов. ADD (RETURN) “Library files?” Шаг 3: Для компоновки данной про- граммы не требуются библио- течные файлы, поэтому продол- жайте, нажав возврат каретки. (RETURN) ♦♦♦♦ Шаг 5: Требуется скомпоновать только один файл, поэтому ответьте со- ответствующим программным ключом. по Шаг 6: В этом месте компоновщик будет спрашивать Вас, надо ли компоно- вать еще какие-нибудь объектные файлы. (RETURN) “LIST, XREF = on off’ Шаг 7: Компоновщик спрашивает поль- зователя о формате карты загруз- ки. По умолчанию карта загрузки генерируется без таблицы пере- крестных ссылок. (RETURN) “Absolute file name?” Шаг 8: Введите имя, которое присвоится файлу с абсолютным кодом и ко- мандному файлу компоновщика. Командный файл содержит все от- веты на вопросы и список файлов, которые были скомпонованы.
Система HP 64000 Hewlett-Packard(HP) 139 ADD (RETURN) “HP 64000S linker: Pass 1” ““HP 64000S linker: Pass 2” “HP 64000S linker: Pass 3” Шаг 9: Карта загрузки выведется на экран в следующем виде: HP 64000 LINKER 2.0 FILE/PROG NAME PROG DATA COMN ABSOLUTE DATE В данном случае особый интерес представляют два файла: ко- мандный файл компоновщика и файл с абсолютным кодом. Ра- бота командного файла будет продемонстрирована на следую- щем шаге. Файл с абсолютным Мои, 9 Feb 1981, 7:22 TIME COMMENTS ADD:YOURID next address XFER address- 0000 Defined by DEFAULT absolute & link_.com file name-ADD:YOURID Total# of bytes loaded- 000B Обратите внимание на следующие мо- менты в карте загрузки: 1. Имя файла и код идентификации пользователя расположены в левом углу. 2. Имена файла с абсолютным кодом и командного файла компоновщика оди- наковы, так как файловая система разли- чает файлы по имени и по типу. 3. Привязка к абсолютным адресам была осуществлена оператором ORG. 4. Поле комментария содержит инфор- мацию, полученную от использования ас- семблерной псевдооперации NAME. Шаг 10: В процессе компоновки были по- лучены новые файлы. Посмотрите на список файлов директории. directory(RETURN) Directory List UserYOURID Disc: 0 NAME 2000-200А Mon, 9 Feb 1981, 7:21 ADD WORKSHOP кодом подготовлен для исполь- зования в эмуляторе и для про- грамматора ППЗУ. Шаг 11: Процесс разработки програм- много обеспечения состоит из большого числа исправлений ис- ходного текста, многократного ассемблирования, компоновки и запуска эмулятора. Для ускоре- ния этого процесса система HP 64000 предлагает пользователю средство, называемое командный файл. Командный файл компо- новщика содержит информацию, необходимую для перекомпонов- ки программ без переинициали- зации компоновщика. Для иллю- страции этой возможности сде- Моп, 9 Feb 1981, 7:36 Page 1 TYPE SIZE LAST MODIFY LAST ACCESS ADD ADD source link—sym 1 1 9 Feb 1981, 7:21 9 Feb 1981, 7:22 9 Feb 1981, 7:21 9 Feb 1981, 7:22 ADD link—com 1 9 Feb 1981, 7:14 9 Feb 1981, 7:22 ADD absolute 1 9 Feb 1981, 7:22 9 Feb 1981, 7:22 ADD reloc 1 9 Feb 1981, 7:21 9 Feb 1981, 7:22 ADD asmb_sym 1 9 Feb 1981, 7:21 9 Feb 1981, 7:21 ♦♦♦♦ Files listed 6, 0.38% disc space used ♦♦♦♦ 17.88% disc space available ♦♦♦♦
140 Глава 11 лаем следующее: link ADD listfile ADD_L (RETURN) Этой командой с помощью ко- мандного файла “ADD” будет перекомпонован файл “ADD” и подготовлена карта загрузки в файле с именем “ADD-L”. Пример 11.6 С помощью эмулятора системы HP 64000 проверить работу абсолютного фай- ла “ADD” без внешней аппаратуры, разме- стив программу во внутренней эмуляцион- ной памяти. Во время эмуляции будут использованы следующие функции: накладывают ограничения на возможность работы процессора в режиме реального времени. Например, системный запрос “DISPLAY REGISTERS DYNAMIC” требует прерывания основным процессором эмули- руемого для чтения содержимого регистров. Следовательно, про- цессор не сможет работать в ре- жиме реального времени. Отве- тим отрицательно на постав- ленный вопрос. no (RETURN) “Stop processor on illegal opcodes?” LOAD, DISPLAY MEMORY, RUN, STEP, BREAKPOINTS, DISPLAY REGISTERS, STOP RUN, END EMULATION Для распечатки на АЦПУ содержимо- го экрана дисплея используйте команду list display to printer (RETURN) Алгоритм Шаг 1: Введите исходную программу ADD, которая приведена в при- мере 11.3, потом оттранслируйте и скомпонуйте ее, как указано в примерах 11.4 и 11.5. В данном примере используется та же про- грамма, что и в предыдущих, так что, если Вы их уже выполнили, начинайте сразу с шага 2. Шаг 2: Войдите в режим эмуляции и за- грузите абсолютный файл. emulate load ADD (RETURN) “Processor clock?” Шаг 3: В этом вопросе спрашивается: используете Вы внутренний или внешний тактовый генератор процессора по отношению к ин- струментальной станции? Так как в данном примере предпола- гается, что внешняя аппаратура не используется, выбираем внут- ренний генератор. internal (RETURN) Restrict processor to real-time runs?” Шаг 4: Некоторые функции анализатора Шаг 5: Ответьте на этот вопрос “YES”. В этом случае эмуляция будет остановлена при обнаружении неверного кода команды. yes (RETURN) “Emulation RAM adress range?” Шаг 6: Опишите области памяти, ис- пользуемые для работы про- граммы. Поскольку в данном случае требуется только внутрен- няя память, внешняя память не будет использоваться. Раздел па- мяти с адресами от 1 ООН до 1ОЗН нужен для хранения данных, по- этому определим эти адреса в ОЗУ. С целью защиты про- граммы отнесите область памяти для хранения кодов команд к зо- не, занимаемой ПЗУ. Для этого опишите как ПЗУ раздел памяти с адресами от 2000Н до 200СН. При записи данных в ПЗУ возни- кает сообщение об ошибке. (RETURN) “Emulation ROM address range 9“ 2000H thru 20FFH (RETURN) “Emulation ROM address range 9“ (RETURN) “User RAM address range 9” (RETURN) “User ROM address range9’’ (RETURN)
Система HP 64000 Hewlett-Packard(HP) 141 Обратите внимание на то, что на каждый ввод в качестве ответа интервала адресного простран- ства система снова задает воп- рос: “EMULATION (или USER)RAM (или ROM) ADDRESS RANGE?”. Это след- ствие того, что память может не быть непрерывной. “illegal memory address range?” Шаг 7: Любое значение адреса или ин- тервал адресов, введенный в от- вет на этот вопрос, приведет к возникновению сообщения об ошибке, если во время эмуляции будет обнаружено обращение процессора к этим адресам. В бо- лее критических применениях это средство является хорошим спо- собом для сигнализации о том, что программа вышла за гра- ницы предоставленной ей памя- ти. (RETURN) Шаг 8: “Simulated I/O?” по Нажмите возврат каретки-и на экране появится карта памяти. “Command file name?” Шаг 9: Этот вопрос требует ввода имени файла, под которым будет создан командный файл. Командный файл эмулятора появится в спи- ске директории с типом “EMUL-COM”. ADD (RETURN) Шаг 10: Все требования для эмуляции уже установлены. Теперь про- грамма должна быть загружена в эмуляционную память. load-memory ADD (RETURN) “STATUS: 8085 -------Program loaded” Если Вы хотите изменить про- грамму, повторите редактирова- ние, трансляцию и компоновку так же, как и ранее. Затем для за- пуска эмулятора используйте ко- мандный файл, набрав команду “EMULATE ADD LOAD ADD (RETURN)”. Этим Вы повторите все шаги с 1 по 10. Шаг 11: Используйте функцию распечат- ки содержимого памяти для про- смотра загруженной программы. display memory 2000Н mnemonic (RETURN) На экран дисплея будет выведено изображение такого вида, как приведенное ниже. Учтите, что система выводит на экран сразу целую страницу информации, так что не обращайте внимания на ненужные Вам строки. MEMORY 2000Н LXI Н, 0100Н 2003Н MOV A.M 2004Н INX H 2005H ADD M 2006H INX H 2007H MOV M.A 2008H JMP 2000H Шаг 12: Теперь изменим значения двух ячеек памяти, содержимое ко- торых суммируется программой “ADD”, и выведем их значение на экран дисплея. modify memory 100Н thru 102 to 02H (RETURN) display memory 100H dynamic (RETURN) На экран будет выведено изобра- жение такого вида, как приведен- ное ниже. Учтите, что Вас интере- суют лишь первые три ячейки с адресами от 100Н до 102Н. Не обращайте внимание на лишнюю информацию.
142 Глава 11 MEMORY-DYNAMIC Adr -Data (hex) 0100 02 02 04 В7 80 D4 2F В5 0108 19 01 ОЕ 56 СС ОА 13 BE 0110 СЗ ов 9С 1С D3 41 1А АЕ 0118 6F 40 1F 19 OF 2А DD В8 0120 BF 7В 03 7В FF 02 42 06 0128 С8 38 54 00 74 F9 44 49 0130 79 81 С4 С7 ЕЕ АА 05 8В 0138 9А 76 ОВ 22 В6 42 Е7 С6 0140 EF С4 1F D4 83 92 9Е 8В 0148 9Е 41 7А D6 38 42 75 12 0150 45 ОС СА ОА D4 40 DB DD 0158 ЗС В2 38 DD 76 10 СВ 90 0160 В8 ОВ 20 84 Е4 64 43 7В 0168 FB 9А 18 А5 С9 FF 19 95 0170 АВ ЕО 8В D5 7D ED DE DC 0178 7F 63 44 55 Е5 25 20 CD В правой колонке изображаются символы в кодах ASCII, эквива- лентные соответствующим шест- надцатеричным кодам. Шаг 13: Выйдя из режима распечатки со- держимого памяти, запустите программу “ADD” и проследите за суммой, расположенной в ячейке 102Н. run from 2000Н (RETURN) или run from START (RETURN) “STATUS: 8085 ------Running” Теперь измените содержимое ячейки ЮОН и следите за измене- нием суммы. Шаг 14: Одним из средств анализа является выполнение программы в пошаговом режиме. Для запу- ска программы “ADD” в пошаго- вом режиме с распечаткой содер- жимого регистров после каждого шага выполните следующую по- следовательность действий. stop run (RETURN) “STATUS: 8085-------Stopped” display registers dinamic (RETURN) step from START или step from 2000H (RETURN) — (ASCII)— 7 Т/ 5 V L > C SA оЕЗ ♦ ] 8 ? { { # ’ В H 8T t yDI у DG n * v " 6 Bg F о D T AzV 8Bu E J ТШ [ ] < 28] v К 8 d dC ( ( % I # + ' U 1 m \ # cDU e % M step (RETURN) (RETURN) При каждом нажатии клавиши “RETURN” выполняется одна команда программы. На дисплее отражается изменение счетчика адреса и содержимого регист- ров (с. 143). Шаг 15: Изучите на экране дисплея распе- чатку пошагового режима вы- полнения программы. В ячейку 100Н было загружено число 01Н, в ячейку 101Н-число 02Н. а их сумма появилась в ячейке 102Н. Можно установить точку остано- ва программы командой “RUN FROM 2000Н UNTIL 2006Н (RETURN)”. На экране появится сообщение о содержимом реги- стров к моменту выполнения ко- манды по адресу 2006Н (с. 143). Шаг 16: Установка точек останова про- граммы и проверка содержимого регистров, состояния флагов и т.п. являются мощным сред- ством анализа. В листинге про- граммы в строке 9 по адресу 2005Н находится команда “ADD М”. Для установки точки оста- нова на эту команду сделайте
Система HP 64000 Hewlett-Packard(HP) 143 REGISTER (Hex) рс 2000 opcode а 01 ь 00 с 00 d 00 е 00 h 01 I 00 szxac 00 0 хрхсу 1 0 sp OOFF next—p 2003 21 LXI Н, 01 ООН 2003 7Е MOV А.М 01 00 00 00 00 01 00 00 0 1 0 OOFF 2004 2004 23 INX Н 01 00 00 00 00 01 01 00 0 1 0 OOFF 2005 2005 86 ADD М 03 00 00 00 00 01 01 00 0 1 0 OOFF 2006 2006 23 INX Н 03 00 00 00 00 01 02 00 0 1 0 OOFF 2007 2007 77 MOV М.А 03 00 00 00 00 01 02 00 0 1 0 OOFF 2008 2008 СЗ JMP 2000Н 03 00 00 00 00 01 02 00 0 1 0 OOFF 2000 2000 21 LXI Н, 01 ООН 03 00 00 00 00 01 00 00 0 1 0 OOFF 2003 2003 7Е MOV А.М 01 00 00 00 00 01 00 00 0 1 0 OOFF 2004 FILE ADDYOURID HEWLETT-PACKARD 8085 Assembler Mon, 9 Feb 1981, 3 45 LOC OBJ CODE LINE 1 “8085” 2 * 3 ♦ 4 * 5 * SOURCE LINE ЭТА ПРОГРАММА ЗАПУСКАЕТСЯ С АДРЕСА 2000Н, СКЛАДЫВАЕТ СОДЕРЖИМОЕ ЯЧЕЕК 1000Н И 101Н И ЗАПОМИНАЕТ В ЯЧЕЙКЕ 102Н РЕЗУЛЬТАТ 6 NAME "ADD WORKSHOP I” 7 ORG 2000H , СТАРТОВЫЙ АДРЕС ПРОГРАММЫ 8 ; 2000Н 2000 210100 9 START LXI H.100H ; ЗАГРУЗИТЬ В РЕГИСТР. ПАРУ Н - L 100Н 2003 7E 10 MOV A.M ; загрузить СОДЕРЖИМОЕ ЯЧЕЙКИ 100НВ АККУМУЛЯТОР 2004 23 11 INX H , УВЕЛИЧИТЬ НА 1 ПАРУ Н - L 2005 86 12 ADD M ; ПРИБАВИТЬ СОДЕРЖ. ЯЧЕЙКИ 101Н К АККУМ. 2006 23 13 INX H ; УВЕЛ, НА 1 ПАРУ Н - L 2007 77 14 MOV M.A , ЗАПОМНИТЬ АККУМУ- ЛЯТОР В ЯЧЕЙКЕ 102Н 2008 C32000 15 JMP START . ПЕРЕХОД НА МЕТКУ “START” Errors- 0 следующее: run from START until address = = 2005H (RETURN) Шаг 17: Ниже приведен пример еще одно- го способа установки точек останова. По этой команде про- грамма будет остановлена после записи чего-либо в ОЗУ. run from 2000Н until status = = memory write (RETURN) Программа остановится после выполнения команды “MOV М,А”. Шаг 18: Для выхода из режима эмуляции введите следующую команду: end (RETURN) Шаг 19: Если Вы хотите эмулировать эту или любую другую программу с той же конфигурацией эмулято- ра (т. е. распределением памяти, внутренними часами и т.д.), за- грузите программу с помощью
144 Глава 11 командного файла эмулятора. emulate ADD load ADD (RETURN) Для изменения конфигурации эмулятора в процессе эмуляции используйте программный ключ “EDIT-CNFG”. edit-cnfg (RETURN) Учтите, что система HP 64000 может выполнять схемотехниче- скую эмуляцию без аппаратуры целевой системы, позволяя поль- зователю описать карту распре- деления памяти и т. п. Кроме то- го, во время эмуляции может проводиться логический анализ, что дает возможность управле- ния регистрами для целей отлад- ки программного обеспечения. Пример 11.7 Этот пример демонстрирует возмож- ности аппаратной эмуляции с использова- нием микропроцессора HP 5036 в качестве целевой системы. Программное обеспече- ние состоит из трех модулей: “ЕХЕС”, “DISP” и “KYBRD”. Эти программы при- ведены в приложении Е. Модуль “ЕХЕС” осуществляет управление интерфейсом между вспомогательными подпрограм- мами, “DISP” управляет дисплеем, а “KYBRD” - клавиатурой. Цель Скопируйте файлы “EXEC”, “DISP” и “KYBRD” в Вашу директорию, оттранс- лируйте их и скомпонуйте в файл с именем “SYS”. Алгоритм Шаг 1: Введите исходные тексты про- грамм на диск в Вашу директо- рию. Если эти файлы уже есть на диске в другой директории, скопи- руйте их в Вашу. userid YORID (RETURN) copy EXEC : OTHERID : source to EXEC (RETURN) copy DISP : OTHERID : source to DISP (RETURN) copy KYBRD: OTHERID : source to KYBRD (RETURN) Теперь в Вашей директории по- явились три файла с исходными текстами программ. Шаг 2: Оттранслируйте эти файлы, чтобы получить перемещаемые объ- ектные модули. assemble EXEC (RETURN) assemble DISP (RETURN) assemble KYBRD (RETURN) Три файла с типом “RELOC” по- явились в Вашей директории. Шаг 3: Скомпонуйте эти три модуля в программу с именем “SYS”. Подготовьте командный файл компоновщика и выведите карту загрузки на АЦПУ. link listfile printer (RETURN) “Object files?” Шаг 4: Введите через запятую имена объектных модулей (с. 145). Шаг 5: Введите имя для файла с абсо- лютным кодом и командного фай- ла компоновщика. SYS (RETURN) Распечатка на АЦПУ имеет вид, представленный на с. 145. Шаг 6: Выведите на экран дисплея список файлов Вашей директории (с. 145). Резюме Три модуля были оттранслированы и скомпонованы в одну программу “SYS”. Различные средства анализа и символьной отладки системы HP 64000 позволяют от- лаживать каждый из модулей в отдельно- сти. После этого их можно компоновать вместе для окончательной отладки. Пример 11.8 Цель Используя в качестве целевой системы микропроцессор HP 5036, проведите эму- ляцию с помощью программы “SYS”. Уч-
Система HP 64000 HewletfPaekard(HP) 145 EXEC, DISP, KYBRD, (RETURN) ‘‘Library files” (RETURN) “Load addresses PROG, DATA, COMN = 0800H, OOOOH, OOOOH” (RETURN) ‘‘More files 9” (RETURN) ‘‘LIST, XREF - on off (RETURN) ‘‘Absolute file name = ” HP 64000 LINKER 2.0 Mon, 9 Feb 1981, 1 16 FILE/PROG NAME PROG. DATA COMN. ABSOLUTE DATE TIME COMMENTS EXEC:CHAP_9 DISP:CHAP_9 KYBRD:CHAP_9 next address XFER address= 0000 Defined by absolute & link_com file name=SYS Total# of bytes loaded- 00E3 Directory List User YOURID, 0 Mon, 9 Feb 0810-0848 0A00-0A46 0900-0962 DEFAULT 1981, 1 43 Page 1 LAST MODIFY Mon, 9 Feb 1981, 4:18 Mon, 9 Feb 1981, 5:24 Mon, 9 Feb 1981, 4:52 LAST ACCESS NAME TYPE ! SIZE ADD emul—com 1 9 Feb 1981, 0:40 9 Feb 1981, 1:05 ADD link_sym 1 9 Feb 1981, 7:22 9 Feb 1981, 1 05 ADD link_com 1 9 Feb 1981, 7:14 9 Feb 1981, 7 22 ADD source 1 9 Feb 1981, 7.21 9 Feb 1981, 1:27 ADD reloc 1 9 Feb 1981, 1:27 9 Feb 1981, 1:27 ADD asmb—sym 1 9 Feb 1981, 1:27 9 Feb 1981, 127 ADD absolute 1 9 Feb 1981, 7:22 9 Feb 1981, 1:05 ADD listing 1 9 Feb 1981, 7:21 9 Feb 1981, 7:21 DISP asmb—sym 1 9 Feb 1981, 1:39 9 Feb 1981, 1.39 DISP reloc 1 9 Feb 1981, 1:38 9 Feb 1981, 1.38 DISP source 1 9 Feb 1981, 1:34 9 Feb 1981, 1:34 EXEC asmb—sym 1 9 Feb 1981, 1:41 9 Feb 1981, 1:41 EXEC reloc 1 9 Feb 1981, 1:40 9 Feb 1981, 1:40 EXEC source 1 9 Feb 1981, 1:34 9 Feb 1981, 1:34 KYBRD asmb—sym 1 9 Feb 1981, 1:37 9 Feb 1981, 1:37 KYBRD reloc 1 9 Feb 1981, 1:37 9 Feb 1981, 1.37 KYBRD source 2 9 Feb 1981, 1:37 9 Feb 1981, 1:37 SYS link—sym 1 9 Feb 1981, 1:36 9 Feb 1981, 1:36 SYS link—com 1 9 Feb 1981, 1:36 9 Feb 1981, 1:36 SYS absolute 1 9 Feb 1981, 1.35 9 Feb 1981, 1:35 ♦♦♦♦ Files listed 19, 1 13% disc space used »«»» ♦ ♦♦♦ 16.71% disc space available ***
146 Глава 11 тите, что вставлять целевой процессор в разъем эмулятора надо при выключен- ном на нем питании. Алгоритм Шаг 1: Осторожно выньте микропроцес- сор 8085 из упаковки и положите его на кусок токопроводящего по- ролона. Прежде чем брать микро- процессор руками, убедитесь, что на Вас нет излишков статического электричества. Шаг 2: Вставьте панель микропроцессора в разъем эмулятора, проследив за правильной ориентацией первого контактного штырька. Шаг 3: Включите питание на целевой си- стеме. Шаг 4: Запустите эмулятор и введите имя загружаемой программы. emulate load SYS (RETURN) “Processor clock?” Шаг 5: В этом вопросе спрашивается: хо- тите ли Вы использовать процес- сорный тактовый генератор или, за отсутствием внешней аппара- туры, тактовый генератор си- стемы HP 64000? external (RETURN) “is clock speed greater than 4,43 MHz?” Шаг 6: Так как процессор 8085 делит так- товую частоту на 2, а на выходе тактового генератора имеется ча- стота 4 МГц, то на самом деле требуется тактовая частота 2 МГц. no (RETURN) “Restrict processor to real-time runs?” Шаг 7: Некоторые средства анализатора ограничивают возможность ра- боты целевого процессора в режи- ме реального времени. Например, попытка определить содержимое регистров во время выполнения программы приводит к прерыва- нию процессора и, следовательно, к выведению его из режима реаль- ного времени. no (RETURN) “Stop processor on illegal opcodes?” Шаг 8: Ответьте на этот вопрос согла- сием, тогда при обнаружении не- верного кода команды процессор будет остановлен. Это, к примеру, может послужить сигналом поль- зователю о том, что был загружен неверный абсолютный файл. yes (RETURN) “Emulation RAM adress range?” Шаг 9: С этого вопроса начинается рас- пределение памяти для коррект- ной работы программы во время эмуляции. В зависимости от по- требности пользователя програм- ме может выделяться внутренняя и внешняя память в любых комби- нациях. В процессоре 5036 опреде- лены следующие адреса: OOOO-O7FFH ROM Monitor 0800—OBFFH RAM Memory 1800H Keyboard Register 2800H Scan Register 3800H Display Register OFFFOH-OFFFFH Top Defined Addresses Модули программы скомпоно- ваны co следующих адресов: 0810Н-0848Н EXEC Program Module 0A00H - 0A46H DISP Program Module 0900H - 0962 KYBRD Program Module В соответствии с этим распределе- нием памяти к пользовательской памяти отнесены разделы, содер- жащие монитор и регистры, а раз- дел с адресами от 0800 до OBFFH-к эмуляционному ОЗУ, хотя можно было бы отнести его и к пользовательской памяти (с. 147). Распределение памяти теперь бу- дет выглядеть примерно так, как изображено ниже. Обратите вни- мание на то, что в приведенной распечатке карты распределения памяти первый раздел ПЗУ прихо-
Система HP 64000 Hewlett-Packard(HP) 147 “Emulation RAM address range ?” 0800H thru OBFFH (RETURN) “Emulation RAM address range?” (RETURN) "Emulation ROM address range ?” (RETURN) “User RAM address range?” 1800H thru 3800H (RETURN) “User RAM address range ?” OFFFOH thru OFFFFH (RETURN) "User RAM address range?” (RETURN) “User ROM address range ?” 0 thru 7FFH (RETURN) “User ROM Address range? (RETURN) дится на адреса от 0000H 03FFH, второй - от 0400Н 07FFH и т.д. -ООО -400 -800 -COO 0— ROM ROM RAM 1 — RAM RAM 2— RAM RAM RAM RAM 3— RAM RAM RAM 4— 5— 6— 7— STATUS: Memory assignments 8— §- А— В— С— D— Е— F— 12:12 Шаг 11: В этом вопросе спрашивается о желании использовать во время эмуляции возможности имити- руемого ввода или вывода си- стемы HP 64000. Если в разра- батываемом проекте требуется наличие АЦПУ, дисплея, до пяти дисков, клавиатуры или интер- фейса RS 232, а их нет в наличии на целевой системе, Вы можете продолжать работать, имитируя их наличие с помощью устройств ввода-вывода системы HP 64000. В данном случае имитируемый ввод-вывод не требуется. no (RETURN) “Command file name?” до Шаг 12: Последний вопрос требует ввода до имени, которое будет присвоено создаваемому командному фай- -000 -400 -800 "Illegal memory address range?" Шаг 10: Допускается указывать диапазон адресов, которые будут считать- ся несуществующими на данном процессоре. Если будет обнару- жена ссылка на эти адреса, про- REGISTER (Hex) pc opcode abed 0000 ** 00 00 00 00 STATUS: 8085—program loaded цессор будет остановлен, а на экране появится значение счетчи- ка команд при останове. Ответь- те отрицательно на этот вопрос, no (RETURN) “Simulated I/O?” лу. Назовите этот файл “SYS”. SYS (RETURN) На экране появится изображение такого типа, как приведенное ни- же. е h I szxac хрхсу sp next—pc 00 00 00 00 О 0 0 0000 0000 -1300 Шаг 13: Установите микропроцессор 5036А в исходное состояние, за- пустив его с нулевого адреса. Это вызовет сброс процессора по включению питания, что приве- дет к появлению во всех ячейках его ОЗУ значения ООН. Будет услышан звонок, и на экране дис-
148 Глава 11 плея микропроцессора появится надпись “VLAB UP”. run from О (RETURN) и L А b и Р Шаг 14: Запустите демонстрационную программу “ROCT”, которая хранится в ПЗУ микропроцессо- ра HP 5036. Эта программа опи- сана в приложении Е. run from 05F9H (RETURN) На экране дисплея целевого про- цессора будет продемонстриро- ван обратный счет чисел, сопро- вождаемый звуковым сигналом. Шаг 15: Запустите демонстрационную программу “WTM”, расположен- ную в адресе О53ЕН. Эта про- грамма приведена в приложении Е среди других демонстра- ционных программ. run from 053ЕН (RETURN) Из микропроцессора послышат- ся звуки, генерируемые псевдо- случайным генератором зву- ковых сигналов. Шаг 16: Выйдите из режима эмуляции, чтобы продемонстрировать воз- можности, предоставляемые двухшинной организацией эму- лятора. Процессор, находящийся в разъеме эмулятора, будет про- должать работу без прерываний со стороны основного процессо- ра системы. Эта возможность позволяет работать в основной системе, не прерывая эмуляцию, end-emulation (RETURN) Целевая система продолжает ге- нерировать звуковые сигналы. Шаг 17: Опять войдите в режим эмуля- ции, используя командный файл эмулятора. Можно опять полу- чить управление над процессом эмуляции, не прерывая выполне- ние активной программы. emulate SYS options continue (RETURN) Шаг 18: Остановите программу. stop run Шаг 19: Выведите на экран дисплея со- держимое памяти, начиная с ячейки 08 ЮН. Таким способом можно проверить, правильно ли была программа загружена в па- мять. display memory 81 ОН (RETURN) Учтите, что программа “SYS” за- гружается в адреса от 08 ЮН до 0848Н. Содержимое остальных ячеек памяти случайно. На дис- плее появится изображение тако- го типа, как приведенное ниже. MEMORY Adr Data (hex) (ASCII)- 0810 31 00 ОС 21 05 08 ЗЕ F7 1 I >w 0818 77 2D F2 18 08 CD 00 09 w-r М 0820 D2 2В 08 AF 2F 32 06 08 R+ / /2 0828 СЗ 43 08 21 26 03 BE СА СС I & >J 0830 43 08 77 F5 21 05 08 11 С WU ! 0838 04 08 1А 77 1D 2D С2 ЗА w -В: 0840 08 F1 77 CD 00 ОА СЗ 1D qwM С 0848 08 В7 86 45 23 А7 74 9С 7 E#'f 0850 96 F7 F0 5А FF 30 5А Е6 wpZ #OZf 0858 8А А6 8В ЕА А4 34 А5 BE & j $4°/о> 0860 СЗ ЗВ 56 D5 F8 21 11 FD C;VUx! ( 0868 F5 80 АО 9D ЕО 37 17 05 u m7 0870 А1 47 33 59 F2 D4 12 АС !G3YrT , 0878 F1 2С 6D 3F F8 9D 10 В4 q, m? x 4 0880 42 20 2С 35 С2 СЗ 01 91 В ,5 ВС 0888 09 ОВ BE ЗЕ ЕА 01 21 FC »j 'I
Система HP 64000 Hewlett-Packard(HP) 149 После установки HP 5036 в ис- ходное состояние или включения питания изображение содержи- мого памяти будет заполнено нулями. Шаг 20: Для запуска программы с опре- деленного адреса вплоть до до- стижения заданной команды вы- полните следующую последова- тельность действий. Сначала произведите программную уста- новку процессора в исходное со- стояние, которое очистит счетчик команд. Содержимое остальных регистров не изменится, display registers dynamic restart (RETURN) “STATUS: 8085 READY” run from 081 OH until address = = 0A00H status = read (RETURN) На дисплее появится изображе- ние такого вида: REGISTER (Hex) pc opcode abed 0810 31 LXI SP, 0C00H 00 00 00 00 0813 21 LXI Н, 0805Н 00 00 00 00 0816 ЗЕ MVI A, F7H F7 00 00 00 0818 77 MOV М.А F7 00 00 00 0A00 0A00 ** С9 00 00 00 Е5 PUSH Н FF 00 00 00 STATUS: 8085—stopped Шаг 21: Можно запускать программу с указанного адреса вплоть до того момента, как пользователь введет команду “STOP RUN”. Например, чтобы запустить про- грамму с адреса 08 ЮН, надо вве- сти команду run from 810Н (RETURN) Шаг 22: Теперь опять выведем на экран содержимое ячеек памяти и изме- ним их в процессе выполнения программы. display memory 800Н mode dynamic (RETURN) На дисплее появится следующее изображение. При этом не тре- буется перезагружать программу (с. 150). Для изменений содержимого адресов от 0800 до 0805 введите следующую команду: modify memory 0800Н thru 0805Н to 0FFH На экран будет выведено следую- щее изображение (с. 150). Шаг 23: Для приостановки программы в любой момент времени введите команду “STOP”. stop run (RETURN) “STATUS: 8085 ------Stopped” Шаг 24: При каждом ассемблировании исходного файла может быть сге- нерирована таблица пере- крестных ссылок. На самом деле генерируются две таблицы. Одна содержит определения ло- кальных символов ассемблируе- мого модуля, другая - гло- бальных. Глобальными назы- ваются символы, определенные в данном, но ссылаВэщиеся на е 00 h 00 I 00 szxac 00 0 хрхсу sp ocoo next—pc 0813 0 0 00 08 05 00 0 0 0 ocoo 0816 00 08 05 00 0 0 0 ocoo 0818 00 08 05 00 0 0 0 ocoo 0819 00 08 18 01 0 1 0 OOFF 0000 00 08 FF 01 0 1 0 OBFC 0A01 другие модули. Для вывода на дисплей определений локальных символов модуля “ЕХЕС” ис- пользуйте следующую команду, display local “symbols in” EXEC (RETURN) Символы и их значения будут вы- ведены на экран примерно сле- дующим образом (с. 150). Шаг 25: Для того чтобы посмотреть, пра- вильно ли Ваша программа за- гружена в память, выведите на экран содержимое памяти в ре- жиме изображения мнеМоник ко- манд. display memory 8 ЮН mnemonic (RETURN)
150 Глава 11 MEMORY— DYNAMIC Adr -(ASCII)- Udld iica^ 0800 F7 F7 F7 F7 F7 F7 FF 00 wwww ww# 0808 00 00 00 00 00 00 00 00 0810 31 00 oc 21 05 08 3E F7 1 I >w 0818 77 2D F2 18 08 CD 00 09 w-r M 0820 D2 2B 08 AF 2F 32 06 08 R + / /2 0828 C3 43 08 21 06 08 BE CA CC I >J 0830 43 08 77 F5 21 05 08 11 C wu I 0838 04 08 1A 77 1D 2D C2 ЗА w -B: 0840 08 F1 77 CD 00 0A C3 1D qwM C 0848 08 00 00 00 00 00 00 00 0850 00 00 00 00 00 00 00 00 0858 00 00 00 00 00 00 00 00 0860 00 00 00 00 00 00 00 00 0868 00 00 00 00 00 00 00 00 0870 00 00 00 00 00 00 00 00 0878 00 00 00 00 00 00 00 00 MEMORY—DYNAMIC Adr Data (hex)- • (ASCII)- 0800 FF FF FF FF FF FF FF 00 tftttttl ### 0808 00 00 00 00 00 00 00 00 0810 31 00 OC 21 05 08 3E F7 1 I >w 0818 77 2D F2 18 08 CD 00 09 w-r M 0820 D2 2B 08 AF 2F 32 06 08 R+ / /2 0828 C3 43 08 21 06 08 BE CA CC I >J 0830 43 08 77 F5 21 05 08 11 C wu I 0838 04 08 1A 77 1D 2D C2 ЗА w -B: 0840 08 F1 77 CD 00 OA C3 1D qwM C 0848 08 00 00 00 00 00 00 00 0850 00 00 00 00 00 00 00 00 0858 00 00 00 00 00 00 00 00 0860 00 00 00 00 00 00 00 00 0868 00 00 00 00 00 00 00 00 0870 00 00 00 00 00 00 00 00 0878 00 00 00 00 00 00 00 00 LOCAL SYMBOLS IN EXEC: CHAP_9 Symbol Address Value EXEC 081 OH 31H GO1 083AH 1AH LIGHT 0843H CDH LP1 0818H 77H LP2 081DH CDH XX 082BH 21H
Система HP 64000 Hewlett-Packard(HP) 151 На дисплей будет выведено сле- дующее изображение (содержи- мое экрана не будет изменяться, пока выполняется программа, или если не задан режим динами- ческого вывода изображения): MEMORY 08ЮН LXI SP, 0C00H 0813Н LXI Н, 0805Н 0816Н MVI A, F7H 0818Н MOV М.А 0819Н DCR L 081 АН JF 0818Н 081ЬН CALL 0900Н 0820Н JNC 082ВН 0823Н XRA A 0824H CMA 0825H STA 0806H 0828H JMP 0843H 082BH LXI H, 0326H 082EH CMP M 082FH JZ 0843H 0832H MOV M.A Шаг 26 : Запустите программу с адреса 08 ЮН и проследите за измене- нием содержимого ячеек с 0800Н до 0805Н при нажатии клавиш клавиатуры целевой системы. run from 08 ЮН (RETURN) display memory 0800Н mode dynamic (RETURN) До нажатия клавиш клавиатуры изображение на дисплее будет следующим: MEMORY—DYNAMIC Adr -Data (hex)- 0800 F7 F7 F7 F7 F7 F7 FF 0808 00 00 00 00 00 00 00 0810 31 00 ОС 21 05 08 ЗЕ 0818 77 2D F2 18 08 CD 00 0820 D2 2В 08 AF 2F 32 06 0828 СЗ 43 08 21 06 08 BE 0830 43 08 77 F5 21 05 08 0838 04 08 1А 77 1D 2D С2 0840 08 F1 77 CD 00 0А С3‘ 0848 08 00 00 00 00 00 00 00 Теперь нажмите клавиши 1, 2 и 3 клавиатуры эмулируемой си- стемы. Содержимое ячеек памяти изменится автоматически (с. 152). Шаг 27: Наблюдение за изменением со- держимого регистров в динами- ческом режиме вывода позволяет получить информацию о ходе выполнения программы. С по- мощью следующей команды можно наблюдать содержимое регистров эмулируемого процес- сора во время выполнения про- граммы. display register mode dynamic (RETURN) Однократным нажатием ключа “RESET” очистите экран, вторым нажатием того же ключа переве- дите систему в режим системного монитора. После этого возобно- вите выполнение программы. Во время паузы экран дисплея будет выглядеть примерно следующим образом (с. 152). Шаг 28: Для вывода на экран текущей ха- рактеристики выполняемой про- граммы введите следующую ко- манду. display run spec (RETURN) На экране появится такое изо- бражение: CURRENT RUN SPECIFICA- TION run from 08 ЮН STATUS: 8085 --------Stopped - - 14:29 -(ASCII)- 00 WWWW WW# 00 F7 1 I >w 09 w-r М 08 R+ / /2 СА СС I >J 11 С wu 1 ЗА W -В: 1D qwM С STATUS: 8085—Running
152 Глава 11 MEMORY-DYNAMIC Adr —Data (hex) -(ADCII)- 0800 03 02 01 F7 F7 F7 FF 00 wwww ww# 0808 00 00 00 00- 00 00 00 00 0810 31 00 ОС 21 05 08 3E F7 1 1 >w 0818 77 2D F2 18 08 CD 00 09 w-r M 0820 D2 2B 08 AF 2F 32 06 08 R + / /2 0828 C3 43 08 21 06 08 BE CA CC ! >J 0830 43 08 77 F5 21 05 08 11 C wu I 0838 04 08 1A 77 1D 2D C2 ЗА w -B 0840 08 F1 77 CD 00 OA C3 1D qwM C 0848 08 00 00 00 00 00 00 00 0850 00 00 00 00 00 00 00 00 REGISTER (Hex) PC opcode a b c d e h 1 szxac xpxcy sp next_pc 0A33 6F MOV L.A 38 16 10 08 FF OA 38 00 0 0 0 0BF4 0A34 Шаг 29: Данный пример показывает, как определить, насколько часто на- жимаются клавиши клавиатуры целевой системы. При каждом нажатии клавиши модуль “ЕХЕС” вызывает модуль “KYBRD”, загруженный с адреса 0900Н. trace only address = 900Н (RETURN) На экране появится изображение, подобное приведенному ниже, но действительные значения време- ни могут отличаться. TRACE ADDRESS.DATA, STATUS COUNT TIME ABSOLUTE AFTER 0A15H DCR A + 0 gS •001 0900H PUSH H sp-1 **** hi **** + 8 390 MS - 002 0900H PUSH H sp-1 **** hi **** + 23.756 MS -003 0900H PUSH H sp-1 **** hi **** + 39 121 MS + 004 0900H PUSH H sp-1 **** h 1 **** + 54 487 MS 4-005 0900H PUSH H sp-1 **** hi **** + 69 852 MS + 006 0900H PUSH H sp-1 **** hi *♦** + 85 218 MS + 007 0900H PUSH H sp-1 **** hi ♦ *** + 100 583 MS <008 0900H PUSH H sp-1 *♦♦* hi **** + 1 15 949 MS 4-009 0900H PUSH H sp-1 *♦** hi **** + 131 315 MS + 010 0900H PUSH H sp-1 *♦** hi **** + 146 680 MS rO1 1 0900H PUSH H sp-1 **** hi **** + 162 046 MS •012 0900H PUSH H sp-1 **** hi **** + 177 411 MS ^013 0900H PUSH H sp-1 **♦* hi **** + 192 777 MS -014 0900H PUSH H sp-1 **** hi *♦♦* + 208.142 MS -015 0900H PUSH H sp-1 *♦♦♦ hi ***♦ + 223 508 MS STATUS 8085----Running Trace complete —14 39
Система HP 64000 Hewlet-Packard(HP) 153 Шаг 30: По умолчанию по команде “TRACE” отмечается момент об- наружения ожидаемого события. Для определения интервала времени между событиями ис- пользуйте режим относительно- го счета времени. display count relative (RETURN) Изображение на экране будет примерно следующего вида: TRACE ADDRESS,DATA,STATUS AFTER 0A16H JNZ **** + 001 0900H PUSH H sp-1 **** hi **** 3 269 MS + 002 0900H PUSH H sp-1 **** hi **** 15 371 MS + 003 0900H PUSH H sp-1 *♦*♦ hi ♦*♦♦ 15.371 MS + 004 0900H PUSH H sp-1 **** hi **** 15 371 MS ^005 0900H PUSH H sp-1 **** hi **** 15 371 MS ^006 0900H PUSH H sp-1 **** hi **** 15 371 MS + 007 0900H PUSH H sp-1 **** hi ♦♦♦♦ 15 371 MS + 008 0900H PUSH H sp-1 **** Ы **** 15 371 MS ^009 0900H PUSH H sp-1 **** hi **** 15 371 MS + 010 0900H PUSH H sp-1 **** hi **** 15 371 MS + 01 1 0900H PUSH H sp-1 **** Ы **** 15 372 MS + 012 0900H PUSH H sp-1 **** -j ♦ ♦ ♦ ♦ 15 371 MS + 013 0900H PUSH H sp-1 **** hi **** 15 371 MS + 014 0900H PUSH H sp-1 **** hi **** 15 371 MS 1-015 0900H PUSH H sp-1 **** Ы **** 15 371 MS STATUS 8085 ---Running trace complete — 14 46 Шаг 31: Возможность следить за интере- сующим событием является мощным отладочным средством. Для слежения за программой, сдвигающей данные в буфере дисплея, используйте следую- щую команду: trace about address = 805Н status = write (return) Теперь вводите данные с клавиа- туры целевой системы. После ввода данных экран дисплея бу- дет выглядеть примерно таким образом: TRACE ADDRESS,DATA,STATUS -008 082EH CMP M hi 0806H (hi) FFH 5 mS -007 082FH JZ *♦** 3. mS -006 0832H MOV M,A Ы 0806H (hl) 01H 3. mS -005 0833H PUSH PSW sp-1 OBFFH a 01H flag 01H 3. mS
154 Глава 11 -004 0834Н LXI Н, 0805Н 6. gS -003 0837Н LXI D, 0804Н 4. gS -002 083АН LDAX D de 0804H a 02H 5. gS -001 083BH MOV M.A Ы "" (Ы) •• 3. gS ABOUT 0805H 02H 15H 1. gS 4-001 083CH DCR E 1. MS + 002 083DH DCR L 1. gS + 003 083EH JNZ 083AH 1. gS + 004 083AH LDAX D de 0803H a 03H 5. gS + 005 083BH MOV M.A Ы 0804H (hl) 03H 3. gS + 006 083CH DCR E 3. gS + 007 0$3DH DCR L 1. gS STATUS: 8085—Runnina Trace complete —14:51 Шаг 32: Можно не только просто следить за событием. Есть специальный режим слежения за программой, начиная с некоторого происшед- шего события. Данный пример показывает, как можно опреде- лить число изменений содержи- мого ячеек буфера дисплея при вводе новых данных с клавиа- туры. trace after address = 82ВН (RETURN) Нажмите клавишу клавиатуры целевой системы для заполнения буфера. Трасса выполнения про- граммы появится на экране. TRACE COUNT TIME RELATIVE ADDRESS, DATA,STATUS AFTER 082BH LXI H, 0806H + 001 082EH CMP M hi 0806H (hi) FFH 5. mS + 002 082FH JZ 3 MS + 003 0832H MOV M.A hi 0808H*(h1) 01H 3. mS + 004 0833H PUSH PSW sp* 1 OBFFH a 01H flag 01H 3. mS + 005 0834H LXI H, 0805H 5. mS + 006 0837H LXI D, 0804H 5. mS + 007 083AH LDAX D de 0804H a 03H 5. fiS + 008 083BH MOV M,A hi 0805H (hl) 03H 3 MS +009 083CH DCR E 3. mS + 010 083DH DCR L 1. MS + 011 083EH JNZ 083AH 1. fiS + 012 083AH LDAX D de 0803H a 01H 5. nS + 013 083BH MOV M,A hi 0804H (hl) 01H 3. MS + 014 083CH DCR E 3. mS + 015 083DH DCR L 1. MS STATUS: 8085—Running Trace complete - -14-54 Шаг 33 : Другим полезным способом ОТ- ладочной трассировки является счет состояний. Для счета состоя-
Система^НР 64000 Hewlett-Packard(HP) 155 ний записи в память с момента ввода данных с клавиатуры ис- пользуйте следующую команду: count address = 800Н status = write (RETURN) После нажатия клавиши клавиа- туры целевой системы на экране Резюме Система HP 64000 является мощным инструментальным средством. Предше- ствующие примеры продемонстрировали некоторые предоставляемые системой воз- можности отладки и трассировки про- грамм. Применение этих средств анализа значительно ускоряет разработку микро- процессорных изделий. появится следующее ние: изображе- TRACE COUNT STATES RELATIVE ADDRESS,DATA,STATUS AFTER 082ВН LXI Н, 0806Н + 001 082ЕН CMP М h1 0806H (hl) FFH 0 + 002 082FH JZ 0 + 003 0832Н MOV М,А hi 0806H (Ы) 01H 0 + 004 0833Н PUSH PSW sp-1 OBFFH a 01H ftag 01H 1 + 005 0834Н LXI Н, 0805Н 0 + 006 0837Н LXI D, 0804Н 0 + 007 083АН LDAX D de 0804H a 01H 0 + 008 083BH MOV M.A hi 0805H (hi) 01H 0 + 009 083CH DCR E 1 + 010 083DH DCR L 0 + 011 083EH JNZ 083AH 0 + 012 083AH LDAX D de 0803H a 02H 0 + 013 083BH MOV M.A Ы 0804H (hl) 02H 0 + 014 083CH DCR E 1 + 015 083DH DCR L 0 STATUS 8085—Running Trace complete ---15 00 Шаг 34: Теперь остановите процесс эму- ляции. stop run (RETURN) end-emulation (RETURN) Шаг 35: Выключите питание на целевой системе. После выключения пи- тания аккуратно выньте микро- процессор из разъема эмулятора и вложите его в упаковку. Учтите, что каждый раз, когда во время эмуляции на экране появляется сообщение «8085 SLOW CLOCK», нажимайте про- граммный ключ «RESTART». Ес- ли сообщение не исчезает, убеди- тесь в следующем: (1) тактовый генератор целевой системы рабо- тает нормально; (2) на линии пря- мого доступа низкий уровень; (3) высокий уровень на линии сбро- са; (4) низкий уровень на линиях прерывания. Пример 11.9 Цель Для ознакомления с программатором ППЗУ выведите содержимое ППЗУ в файл на диске, измените прошитую в нем про- грамму и заново запишите ее в ППЗУ. Для выполнения данного примера не обяза- тельно иметь ППЗУ, необходимо лишь иметь сам программатор. Алгоритм Шаг 1: Введите код идентификации поль- зователя и установите дату и вре- мя суток, после чего войдите в ре- жим работы с программатором ППЗУ. prom_prog (RETURN) “Prom_type?” 2716 (RETURN) “ENTER: Command”
156 Глава 11 Шаг 2: На вопрос о типе ППЗУ введите, например, “INTEL 2716А EPROM”. Отвечать на этот во- прос не обязательно, если ППЗУ отсутствует. Закройте крышку приемного кармана программато- ра. Шаг 3; На этом шаге неизвестное содер- жимое ППЗУ переписывается в файд. Теперь можно редактиро- вать этот файл и перепрограмми- ровать ППЗУ или скомпоновать и загрузить программу в эмуля- ционное ОЗУ. Это позволит реас- семблировать программу, если она была написана для микропро- цессора того же типа, что исполь- зуется для эмуляции. В данном случае это должен быть микро- процессор 8085. list_rom PROM (RETURN) end (RETURN) Шаг 4: Теперь посмотрим на содержимое файла по имени “PROM”. edit PROM: listing (RETURN) На экране появится изображение такого типа, как приведенное ни- же, но содержимое ячеек памяти будет различным в зависимости от типа используемого ППЗУ. R данном случае приведен пример чтения пустого кармана програм- матору 2716. < 0000> FF FF FF FF FF FF FF FF FF FF FF FF < 0010> FF FF FF FF FF FF FF FF FF FF FF FF < 0020> FF FF FF FF FF FF FF FF FF FF FF FF < 0030> FF FF FF FF FF FF FF FF FF FF FF FF < 0040> FF FF FF FF FF FF FF FF FF FF FF FF <0050> FF FF FF FF FF FF FF FF FF FF FF FF <0060> FF FF FF FF FF FF FF FF FF FF FF FF Шаг 5: Можно отредактировать содержи- мое файла, а затем перепрограм- мировать ППЗУ. В данном случае сделаем вид, что содержимое па- мяти уже изменено и можно при- ступать к перепрограммирова- нию. Если бы данные были изме- нены, программатор не смог бы выполнить перепрограммирова- ние, так как он не может записать нуль в ППЗУ при его отсутствии. Выйдите из режима редактирова- ния и перепрограммируйте ППЗУ, end (RETURN) prom_prog (RETURN) program from PROM: listing (RETURN) end (RETURN) На экране будут показаны команды программатора и общее количество программируемых байтов. Шаг 6: Редактируя файл “PROM”, можно привести его к виду, пригодному для ассемблирования и дальней- шей компоновки. После этого он может быть загружен в ОЗУ и ре- ассемблирован с помощью проце- дур, описанных в руководствах по компоновщику и эмулятору. edit PROM: listing into PROM (RETURN) С помощью редактора текстов FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF <07C0> FF FF FF FF <07D0> FF FF FF FF <07E0> FF FF FF FF <07F0> FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Система HP 64000 Hewlett-Packard(HP) 157 приведите файл к следующему виду: “8085” HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF HEX HEX HEX Это можно сделать, вставив строку с директивой ассемблера, заменив про- белы между данными на запятые и значе- ния адресов на слово “HEX”. Результатом ассемблирования и ком- поновки этого файла будет файл с абсо- лютным кодом, готовый к загрузке в па- мять. После загрузки можно выполнить команду “DISPLAY MEMORY ADDRESS MNEMONIC”, чтобы увидеть реассемблированный текст программы. Подготовив командный файл для редактирования выходного файла про- грамматора ППЗУ, можно без особого труда реассемблировать неизвестные ППЗУ при условии, что они содержат про- граммы для того же типа процессора, что и используемый при эмуляции. Резюме Программатор ППЗУ позволяет бы- стро читать содержимое ППЗУ в выход- ной файл, редактировать его и потом зано- во программировать ППЗУ из этого файла. Кроме того, программатор позво- ляет переносить все программы пользова- теля из ОЗУ в ППЗУ целевой системы. С помощью командного файла можно быстро идентифицировать, содержимое не- известных ППЗУ и получать реассембли- рованный текст программ, подготов- ленных для микропроцессоров того же типа, что и эмулируемый. Пример 11.10 Цель В данном примере рассматривается самотестирующая программа клавиатуры, состоящая из трех программных модулей. Это небольшие модули, предназначенные для демонстрации подключения и эмуля- ции внешней аппаратуры. После того как эти файлы будут оттранслированы, ском- понованы и загружены в память эмулято- ром, можно запустить программу с сим- вольной метки “START”. В результате запуска программы на дисплее системы HP 5036 появится изображение числа. Это число является подсказкой пользователю, чтобы он ввел это число с клавиатуры ми- кропроцессора. После этого введенный код сравнивается с выведенным на экран, чтобы определить, правильно ли был вве- ден код. Если правильно, то на экране ин- дикаторного дисплея эмулируемой си- стемы появится сообщение “GO”, в про- тивном случае выводится сообщение “ER” и повторяется прежнее число. Эта про- цедура повторяется до тех пор, пока не бу- дут опрошены все клавиши клавиатуры, после чего выводится сообщение “PASSED”. Алгоритм Шаг 1: С помощью редактора текстов введите следующие программы, текст которых приведен в прило-
158 Глава 11 жении Е: KYTST, SEQKY, KSCAN, VALID, MSGRQ, DBASE Шаг 2: Оттранслируйте все файлы. Шаг 3: Скомпонуйте файлы, как указано ниже. link listfile KYTST (RETURN) Object files'? KYTST,SEQKY,KSCAN,VALID,MSGRQ,ОВЛ TURN) HP 5036 аналогичной аппаратурой си- стемы HP 64000. Ввод с клавиатуры будет осуществляться через клавиатуру системы, а вывод сообщений-на системный дис- плей. В данном примере будем использо- вать те же файлы, что и в примере 11.10. Два модуля, однако, должны быть пере- (RE- Library'? (RETURN) load_addresses PROG,DATA,COMN-0800H.0900H.0000H (RETURN) more files'? no (RETURN) Absolute filename'? KYTST (RETURN) Шаг 4: Подготовьте аппаратуру, необхо- димую для эмуляции. Убедитесь, что питание на системе 5036 вы- ключено, и после этого вставьте микропроцессор 8085 в разъем эмулятора. Внимательно следите за ориентацией разъема. Шаг 5: Создайте командный файл эмуля- тора. Emulate load KYTST (RETURN) Processor clock, external (RETURN) Is clock speed greater than 4 48 MHz? no (RETURN) Restrict processor to real time runs? no (RETURN) Stop processor on illegal opcodes? yes (RETURN) Emulation RAM address range*? (RETURN) Emulation ROM address range? (RETURN) User RAM address range? 0 thru OFFFFH (RETURN) User ROM address range'? (RETURN) Illegal address range*? (RETURN) Simulate I/O? no (RETURN) Command filename*? KYTST (RETURN) run from START Программа-тест клавиатуры выведет 0 на экран дисплея целевой системы. На- жмите соответствующую клавишу и про- следите за результатом. Если Вы правиль- но ввели тексты и программа работает, переходите к примеру 11.11. Пример 11.11 Цель Данный пример демонстрирует, что можно проводить эмуляцию при отсут- ствии различных частей внешней аппара- туры. В данном случае можно заменить дисплей и клавиатуру целевой системы программированы, чтобы добавить связи, необходимые для имитации дисплея и кла- виатуры. Эти два модуля будут введены в этом разделе. Алгоритм Шаг 1: Выключите питание на системе 5036 и выньте ее из разъема эмулятора. Шаг 2: С помощью редактора текстов введите в Вашу директорию сле- дующие файлы, текст которых приведен в приложении Е. SIMDS, SIMKD, REALTOSIM, SIMTOREAL Шаг 3: Оттранслируйте файлы SIMDS и SIMKD. Шаг 4: Скомпонуйте файлы, руковод- ствуясь следующей последова- тельностью действий (с. 159). Карта загрузки памяти будет вы- глядеть следующим образом (с. 159).
Система HP 64000 Hewlett-Packard(HP) 159 Link listfile SIMIO (RETURN) Object files? KYTST.SEQKY,SIMDS,SIMKD,VALID,DBASE (RETURN) Library files? (RETURN) Load addresses? PROG,DATA,COMN=0800H,09D0H,OOOOH (RE- TURN) More files? no (RETURN) List.Xref on on (RETURN) Absolute filename? SIMIO (RETURN) HP 64000 LINKER 2.0 Mon, 9 Feb 198 FILE/PROG NAME PROGRAM DATA COMN ABS DATE TIME COMMENTS KYTST:YOURID SEQKY:YOURID SIMDS:YOURID 0800 • 0824 0848 09D0 Mon, 9 Feb 1981, 22:31 Mon, 9 Feb 1981, 22:31 KYTST SEQKY SIMKD:YOURID 08D8 0A27 VALID:YOURID 099E Mon, 9 Feb 1981, 22:31 VALID DBASE:YOURID 0A28 next address 09C9 0AB5 XFER address = 084B Defined by SIMDS absolute & link_com file name = SIMIO:YOURID Total # of bytes loaded = 02AE SYMBOL R VALUE DEF BY REFERENCES BUFR D 0A28 DBASE:YOURID KEYCT D 0AB4 DBASE:YOURID VALID.YOURID SEQKY:YOURID KYTST P 080B KYTST:YOURID MATRX D 0A9C DBASE:YOURID SEQKY P 0824 SEQKY YOURID KYTST:YOURID SIMDS P 084B SIMDS:YOURID VALID:YOURID SEQKY:YOURID KYTST:YOURID SIMKD P 08D8 SIMKD:YOURID SEQKY:YOURID VALID P 099E VALID:YOURID SEQKY:YOURID Шаг 5: Вызовите командный файл “REALTOSIM”. REALTOSIM (RETURN) Этот командный файл произведет в используемых модулях тре- буемые изменения. Если Вам не- обходимо восстановить прежний текст программ для эмуляции внешней аппаратуры, вызовите командный файл “SIMTOREAL”. Шаг 6: Создайте командный файл эмуля- тора и запустите программу. Emulate load SIMIO Processor clock? internal (RETURN) Is clock speed greater than 4 48 MHz? no (RETURN)
160 Глава 11 Restrict processor to real time runs'? no (RETURN) Stop processor on illegal opcodes'? yes (RETURN) Emulation RAM address range? 0800H to OBFFH (RETURN) User RAM address range? 0FC00H to OFFFPH (RETURN) Simulate 10? yes (RETURN) Simulate display? yes (RETURN) Control address? OACOH (RETURN) Simulate printer? no (RETURN) Simulate rs232? no (RETURN) Simulate keyboard? yes (RETURN) Control address? 00B4H (RETURN) Simulate disc files? no (RETURN) Command file name? SIMIO (RETURN) Run from START (RETURN) Теперь в качестве дисплея и клавиа- туры целевой системы будут использо- ваться аналогичные устройства системы HP 64000. Резюме Использование имитируемого ввода- вывода предоставляет возможность отла- живать программное обеспечение до того, как требуемая аппаратура реально стано- вится доступной. Это средство является большим достижением системы, так как приводит к уменьшению сроков разработ- ки микропроцессорных систем. Пример 11.12 Алгоритм Шаг 1: Вызовите редактор текстов и вве- дите текст программы, приведен- ной в табл. 11.2. edit into KEY_DISP (RETURN) Таблица 1T2 FILE: KEYJISP:CHAPII HEWLETT-PACKARD: 8085 Assembler Htn, 9 Feb 1981, 2:41 PAGE 1 LOCATION OBJECT CODE LINE SOURCE LINE 1 *8085’ 2 3 « 4 « 5 н 6 H 7 н 8 н 9 и Функция Данная программа является примером использования имитируемого ввода/вывода Программа принимает символы с клавиатуры и выдает их на экран дисплея. Эта программа может использоваться как часть системного монитора
Система HP 64000 Hewlett-Packard(HP) 161 (0008) шт <001А> <тв> (0010) (НИ) (0013) (0014) (0115) (0016) FILE: KEYJ)ISP:CHAP10 11 « 11 НАЛЕ "KEY_»I»»e 12 « 13 н 14 H 15»» « „ * . Данный раздел присваивании определяет 16 И ii числовые значения, которые помещаются • J7 Н ff в ячейку "KEY СМО” при нажатии f jg II II соответствующей клавиши । 19 н НИ1НН1НННЖ1ЖНЖНШННННННН» 20 н 21 *« 22 ) Приведенные здесь символы используются для 23 ) повышения быстродействия программы 24 • Обычно используется управляющий си мвол — возврат 2g , каретки При обнаружении возврата каретки * программа сбрасывает счетчик колонок в 1 * и увеличивает на 1 счетчик строк, делая проверку 27 > на равенство входного символа одному из других 28 J управляющих символов, приведенных в этом 29 . разделе 30 31 32 INSERT-KEY EQU 8H Программа может перейти на выполнение i 33 TAB KEY EQU 9H > соответствующей подпрограммы, 34 DOWN_KEY EQU IAH i написанной пользователем Эта программа 35 UP KEY EQU OBH i является хорошим примером использования 36 DELETE KEY EQU 10H j имитируемого ввода/вывода 37 SHIFT KEY EQU 11H f 38 ROLL DOWN EQU 19 39 ROLL UP EQU 20 j 40 SHIFT RIGHT EQU 21 41 SHIFT LEFT EQU 22 42 * HEWLETT-PACKARD: 8085 Assembler Hen, 9 Feb 1981, 2:41 PAGE 2 LOCATION OBJECT CODE LINE SOURCE LINE 43 * 44 н ННННННШННННННННННННННШН 45 н >1 Данный раздел присваиваний определяет f 46 н If числовые значения символов, используемых । 47 »» If в подпрограммах ввода и вывода данных * 48 w 49 м 50 н 51 »« <0010 52 CAR RET EQU ЮН (0800) 53 KEY.CONT EQU 800Н (0801) 54 KEY CHD EQU 801Н (0812) 55 К REC LEN EQU 802Н 6-1213
162 Глава 11 <1810 <ooeo> <0080 <OI83> <0910 <0901) <0901 > <0902> <0902> <0920 <0921> <1000 56 KEY CHAR EQU 804H 57 OPDt KYBD EQU BOH 58 OPEN DISP EQU BOH 59 SAV BUFF EQU 83H 60 DISP CONT EQU I900H 61 D REC LEN EQU 0901H 62 LINE EQU I9I1H 63 COLUW EQU 0902H 64 DISP CHAR EQU I902H 65 TENP.LINE EQU 092 OH 66 TEMP COL EQU I921H 67 STACI EQU HO OH 68 « 69 » 0000 311000 LXI SP ,STACK J Инициализировать указатель стека 71 « 72 « 73 н«**н*нн**н*нн*н*нннннн*»н»*н*ннн*н 74 НН В данном разделе до начала работы ННН 75 iiii с дисплеем устанавливаются tiiiii 76 НН требуемые параметры дисплея 77 hhhhihhhhhhhhihhhhhhhhhhhhhhi 78 * 79 * 80 нннннннн»нннн1н»ннн»ннннннншн 81 Инициализировать счетчик строк Hi*** 82 н*«*н«**н**«н**н***н*нн*н*нннн****нннн FILE: KEY.D1SP:CHAP1O HEWLETT-PACKARD: 8185 Assembler Hon, 9 Feb 1981, 2:41 PAGE 3 LOCATION OBJECT CODE LINE SOURCE LINE 0003 3EI1 0005 320911 0008 320920 83 START MVI A, 1 84 STA LINE 85 STA TEMP.LINE 86 ***i«H**M**»»*****«***»H«*»«**«***i*M»»«»»**»*«»» 87 Hill Инициализировать счетчик столбцов Hi*ii 88 H*i*Hii*liHiHiiHiiiH*HiiiiiHii*iiHiii**ii*Hi« OOOB 320902 000E 320921 89 STA COLUMN 90 STA TEHP.COL 91 »н******н1»***н»н***н*»н*«ш***н**нн**нн*** 92 ***** Открыть дисплей для работы ИНН 93 *****Н«ННШНМНМHi **ii***H*««H***Hi*#*Hi*ii ООН 3E80 0013 320900 94 MVI A,OPEN_DISP J 80H записывается в регистр 95 STA DISP_CONT J управления дисплеем 96 Hi**Hii*i**i*i*i*#*****i*ii***i****i*******i*ii*ii*i* 97 Дождаться ответа Н***« 98 Hi***i*i**i*******ii**i*l**i**iiii***********ii*ii***i 0016 210900 0019 CD0087 99 LXI Н, DISP. CONT 100 CALL WAIT J Вызов подпрограммы 101 iiiiHiHiiiiiiiHHiiiiiiiHiHiiiHiiiHiiiHiOHH* 102 «И** Сохранить начальные значения счетчиков ****** 103 »*«»» строк и столбцов в буфере НИН 104 IHtiHi*H*i*ii*iiiiii**i*iiiiiiiitiiiitiiiiiiiii***** 001C 3E83 001E 320900 105 NEXT LINECOL MVI A,SAV BUFF 106 STA DISP.CONT 107 *i»i**i*i*iii*******H**H*iHi*Hi**ifi***H***H*****
Система HP 64000 Hewlett-Packard(HP) 163 108 ***** Дождаться ответа *H«*f 119 ННШНШН»НШН«ЖНННЖНЖНННШ1ШН 1121 210910 0024 CD0087 110 LXI H,DISP CONT 111 CALL WAIT 112 iHHHiH ********* *« *«**««« »** ************ ****** *«« ««« 113 »»»»« В этом разделе до начала работы ИНН 114 »*»»« с клавиатурой устанавливаются ****** 115 »»*Н требуемые параметры ИНН 116 м***************************************************** 0027 210801 002A 36FE 002C 210802 002F 3601 117 LXI H,KEY_CM0 118 MVI И,-2 J Установить команду клавиатуры 119 LXI H,KEY_C0NT+2 ) Указатель на длину записи 120 MVI М,1 ; Максимальная длина записи - 1 FILE: KEY DISP;CHAP10 HEWLETT-PACKARD; 8085 Assembler Min, 9 Feb 1981, 2:41 PAGE 4 LOCATION OBJECT CODE LINE SOURCE LINE 0031 210800 0034 3680 0036 CD0087 121 НННШННШШИН1НШШ1ШШ1ШШНШШ1 122 ***** Этот раздел открывает клавиатуру 1ННШ« 123 ***** и ждет ответа «ННННИН 124 ****т««**т*»**н***н«*ш**ш«**н#*«ш***ш*«* 125 LXI H,KEY_CONT J Указатель на управляющий регистр 126 MVI И,OPEN KYBD J Открыть клавиатуру 127 CALL ПАП ' 128 ********************** **н »*н* *н«***н ****** ********* 129***** Проверка выходного регистра ********* 130 ***** клавиатУРЬ| на наличие возврата каретки #*<**«** •039 3A0801 003C FEOD 003E CA005F 131 ******************************************************* 132 LDA KEY СМО 133 CPI CAR RET 134 п next line 135 «н*»»»»*»»***»»*»»»*»**»*»»**»*»»»*»»»*»»»»**»»»»»»»» 136 ***** ********* 137 ***** Записать символ по адресу 0902Н ********* 0041 3A0804 0044 320912 138 ********************««*н***ш**н**ш****н*«******* 139 LDA KEY CHAR 140 STA DISP.CHAR 141 м***************************************************** 142 ***** ****** < лч За писать длину записи по адресу 0901Н 1 ***** •***•• 0047 3E01 0049 320901 144 «******«**«*««««****н**н*ш**«н***н*»**н********* 145 MVI А,1 146 STA D.REC.LEN 147 н***************************************************** 004C 3E84 004E 320910 148 ***** Проверить, был ли этот символ выведен ****** 149***** на дисплей ****** 150 «*******************н**н«*ш***н***н*»*н****н*** 151 MVI А,84Н 152 STA DISP.CONT 153 н***************************************************** 154 ***** Дождаться ответа ****** 6*
164 Глава 11 155 1ШНЖННШНННШНШШННШННШИННН 0051 210900 0054 CD0087 156 LXI H,DISP_CONT 157 CALL WAIT 158 шшшшнншнншнншнншннншннш 159 ******* THE FOLLOWING SECTION CHECKS THE ******* 160 »»**»*» В этом разделе проверяется, дошел ли НШН 161 ******* вывод до столбца 80. Если да, то счетчикщМ*щ 162 **««»*« столбцов устанавливается в 1 мм*** 163 *М«Н« а счетчик строк увеличивается на 1 *«*««*« 164 M***HM«MM*M«tfH***MM*H**MMtftfH**MHtf*M***** 0057 3A0921 I05A FE50 165 LDA TEHPCOL } Взять счетчик столбцов 166 CPI 80 J Колонка 80? FILE: KEY_DISP:CHAP10 HEWLETT-PACKARD: 8085 Assembler Hon, 9 Feb 1981, 2:41 PAGE 5 LOCATION OBJECT CODE LINE SOURCE LINE 005С С20074 167 JNZ NEXT COL ) Если нет, увеличить счетчик столбцов 0I5F ЗЕ01 168 NEXT LINE HVI A,1 > Если да, вернуться к первому столбцу, 0061 320902 169 STA COLUHN } записав 1 в ячейку 0902Н 0064 320921 170 STA TEHP.COL 0067 ЗА0920 171 LDA TEHP LINE 006А ЗС 172 INR A > Увеличить на 1 счетчик строк 0D6B 320901 173 STA LINE 006Е 320920 174 STA TEHP LINE 0071 С3001С 175 JHP NEXT.LINECOL J Переинициализировать счетчики 176 > строк и столбцов 0074 ЗА0921 177 NEXT COL LDA TEHP COL 0077 ЗС 178 INR A J Увеличить на 1 счетчик столбцов 0078 320902 179 STA COLUHN ; Запомнить в ячейке 0902Н 007В 320921 180 STA TEHP.COL 007Е ЗА0920 181 LDA TEHP LINE 0081 320901 182 STA LINE 0084 С3001С 183 JHP NEXT LINECOL > Вернуться для ввода следующего символа 0087 7Е 184 WAIT MOV A,H 0088 FE00 185 CPI 1 008А С20087 186 JNZ WAIT 008D С9 187 RET 188 END Error 5= 0 Шаг 2: Оттранслируйте программу “KEYJDISP”. assembly KEY.DISP listfile KEY-DISP (RETURN) Ассемблерный листинг будет та- кой же, как и приведенный в разд. 10.2.4. Шаг 3: Скомпонуйте файл “KEY-DISP”. link (RETURN) Object files'? KEY_DISP (RETURN) Library files'? (RETURN) Load addresses PROG,DATA,COMN = 0700H,OOOOH,OOOOH (RE- TURN) More files'? no (RETURN)
Система HP 64000 Hewlett-Packard(HP) 165 LIST,XREF on on (RETURN) Absolute file name = KEY-DISP (RETURN) После внесения изменений в ис- ходный текст программы ее нуж- но перетранслировать и заново скомпоновать. При повторном вызове компоновщика используй- те командный файл, например link KEY-DISP (RETURN) Карта загрузки памяти будет вы- глядеть так: НР 64000 LINKER 2 О После того как командный файл будет подготовлен, для повторно- го запуска эмулятора достаточно в качестве параметра указать его имя. emulate KEY-DISP (RETURN) Шаг 5: Начните эмуляцию. run from START (RETURN) Теперь можно нажимать клавиши кла- виатуры, и на экране будут появляться со- ответствующие символы. Необходимо четко представлять себе, что программа Моп, 9 Feb 1981, 2 17 FILE/PROG NAME PROG DATA COMN ABS DATE TIME COMMENTS KEY_DISP KWG 0700 Mon, 9 Feb 1981, 2 17 KEY-DISP next address 078E XFER address ~ 0000 Defined by DEFAULT absolute & link—com file name = KEY-DISP KWG Total # of bytes loaded = 008E Шаг 4: Установите конфигурацию эмуля- тора и имя командного файла. Emulate (RETURN) Processor clock: internal (RETURN) Restrict processor to real time runs? no (RETURN) Stop processor on illegal op_codes? yes (RETURN) Emulation RAM address range? 0000H thru 017FFH (RETURN) Emulation ROM address range? (RETURN) User RAM address range? (RETURN) User ROM address range? (RETURN) Illegal memory address range? (RETURN) Simulate I/O? yes (RETURN) Simulate display? yes (RETURN) Control address? 0900H (RETURN) Simulate printer? no (RETURN) Simulate rs232? no (RETURN) Simulate keyboard? yes (RETURN) Control address? 0800H (RETURN) Simulate disc files? no (RETURN) Command file name? KEY_DISP (RETURN,) выполняется в микропроцессоре 8085, под- соединенном к разъему эмулятора. Про- грамме требуется использовать клавиату- ру и дисплей основной системы, которая передает ей данные с клавиатуры и выво- дит ответ на дисплей. Резюме В качестве примера использования имитируемого ввода-вывода была приве- дена последовательность шагов, которую необходимо выполнить для того, чтобы в качестве дисплея и клавиатуры целевой системы использовать аналогичные уст- ройства системы НР 64000. Задачи и вопросы 11.1. Коротко опишите аппаратные и про- граммные средства, предоставляемые пользователю системой поддержки НР 64000. 11.2. Какие элементы системы НР 64000 используются пользователями совместно при работе в многопользовательском ре- жиме? 11.3. Как много накопителей на маг- нитных дисках может одновременно об- служить система НР 64000?
166 Глава 11 11.4. Опишите системные программные ключи. 11.5. В чем заключается преимущество ис- пользования программных ключей? 11.6. Какие элементы системы поддержки способствуют снижению стоимости разра- ботки? 11.7. а) Сколько процессоров содержит система HP 64000 с шестью инструмен- тальными станциями? б) Что Вы можете сказать о преимуще- ствах или недостатках такого устройства системы? 11.8. С какой целью на экране дисплея изображается конфигурация шины ввода- вывода? 11.9. С помощью каких средств загру- жается операционная система HP 64000? 11.10. а) Что такое код идентификации пользователя? б) Что Вы можете сказать о достоин- ствах этого средства? 11.11. Что такое библиотечный файл? 11.12. Какие выгоды предоставляет поль- зователю возможность использования би- блиотечных файлов? 11.13. Какой длины строки можно редак- тировать с помощью редактора текстов системы HP 64000? 11.14. Какие режимы существуют у редак- тора текстов системы HP 64000? 11.15. а) Можно ли объединять файлы в системе HP 64000? б) Если да, то можно ли объединять файлы других пользователей с Вашими? 11.16. Какую информацию должна содер- жать первая строка программы на языке ассемблера? 11.17. Какое назначение программного ключа“КАКСЕ”? 11.18. Какое различие между командами “COPY” и “EXTRACT” системы HP 64000? 11.19. Опишите формат листинга ассем- блера системы HP 64000. 11.20. Какое значение имеет слово “LISTFILE” на экране дисплея системы HP 64000? 11.21. Какое значение имеют слова “LIST FILE DEFAULT” при изменении кода идентификации пользователя? 11.22. Куда будет помещен листинг ассем- блера по команде “ASSEMBLE FILENAME (RETURN)”? 11.23. Почему в примере 11.2 в листинге с макрорасширением присутствует только часть макроопределения? 11.24. Какое значение первой колонки ли- стинга ассемблера системы HP 64000? 11.25. Приведенная ниже команда микро- процессора 8085 загружает в сумматор со- держимое ячейки с шестнадцатеричным адресом FF. Какая была допущена ошибка при написании этой команды? LDA FFH 11.26. Какое назначение компоновщика системы HP ? 11.27. Какие выходные файлы готовит компоновщик системы HP 64000? 11.28. а) Что обозначают слова “PROG”, “DATA” и “COMN” в системе HP 64000? б) Что достигается их использова- нием? 11.29. Что такое адрес загрузки? 11.30. Что такое адрес перехода? 11.31. Что такое командный файл компо- новщика? 11.32. Какие преимущества предостав- ляют пользователям командные файлы? 11.33. Благодаря каким особенностям си- стемы различные файлы могут иметь оди- наковые имена? 11.34. Каким образом файловая система отличает один файл от другого? 11.35. Что такое карта загрузки памяти? 11.36. Что такое синтаксическая перемен- ная системы HP 64000? 11.37. Что понимается под символьной отладкой? 11.38. Что понимается под эмуляцией в реальном масштабе времени? 11.39. Что такое конфигурация эмулятора системы HP 64000? 11.40. Что такое командный файл эмуля- тора? 11.41. Какие преимущества предостав- ляют пользователям командные файлы эмулятора? 11.42. Что происходит с процессом эмуля- ции по команде “END EMULATION”? 11.43. Что достигается при использовании командных файлов?
Система HP 64000 Hewlett-Packard(HP) 167 11.44. Можете ли Вы написать простой ко- мандный файл, который был бы полезен для работы в системе? 11.45. Что такое имитируемый ввод-вы- вод? 11.46. а) В чем заключается достоинство имитируемого ввода-вывода? б) Можете ли Вы сказать, какую поль- зу приносит это средство в процессе разра- ботки программного обеспечения? в) Возможно, Вы знаете какие-нибудь новые применения имитируемого ввода- вывода? 11.47. На языке ассемблера микропроцес- сора 8085 напишите условную макро- команду для сложения двух чисел, распо- ложенных в ячейках 2000Н и 2001Н в случае нечетного содержимого суммато- ра и вычитания этих чисел в противном случае. 11.48. Что означает отсутствие адреса внешнего устройства в распечатке конфи- гурации шины ввода-вывода на экране дисплея после включения питания си- стемы? 11.49. Что произойдет, если Вы дважды нажмете ключ “RESET” во время редакти- рования? 11.50. Можете ли Вы восстановить стертый файл? 11.51. а) Сколько можно использовать тактовых генераторов во время эмуляции? б) Какой тактовый генератор Вы буде- те использовать при эмуляции без внеш- ней аппаратуры? 11.52. Отредактируйте, оттранслируйте, скомпонуйте и сэмулируйте программы, использованные в приведенных выше при- мерах. а) KYTST, SEQKY, MSGRQ, VALID, KSCAN и DBASE. б) Напишите командный файл для вы- полнения этой же последовательности дей- ствий. 11.53. Надо ли компоновать программу, если она состоит только из одного про- граммного модуля? 11.54. Модули PROG1 и PROG2 имеют размер соответственно 100 и 50 байт. Что произойдет, если скомпоновать модуль PROG1 с адреса 2000Н, а модуль PROG2 с адреса 2032Н?
Глава 12 ПРИМЕРЫ КОНКРЕТНЫХ РАЗРАБОТОК В данной главе приведено несколько примеров разработки микропроцессорных систем с использованием внешней аппара- туры. Системы базируются на типичном микропроцессоре 8085. Система HP 64000 используется для разработки программно- го и аппаратного обеспечения. Приве- денные здесь примеры резработок могли бы быть реализованы и с помощью других систем поддержки. На примере HP 64000 в данном случае демонстрируются ос- новные возможности типичной системы поддержки микропроцессорных разрабо- ток. 12.1. Задача 1 12.1.1. Постановка задачи Химическому заводу требуется интел- лектуальная система для управления пере- ключением в определенной последова- тельности восьми вентилей с интервалом в 2 с. Вентили должны работать в следую- щей последовательности: Другими словами, в начальном состоя- нии все вентили выключены, потом вклю- чается первый вентиль, через две секунды он выключается и включается второй вен- тиль, еще через две секунды выключается второй и включается третий и т.д. После выполнения всей последовательности включений восьмой вентиль остается включенным 12 с, а потом весь цикл по- вторяется снова. 12.1.2. Решение задачи 1 Эта задача может быть решена с ис- пользованием микропроцессорной си- стемы с программой управления вентиля- ми. Преимуществом микропроцессорной системы по сравнению с жесткой логиче- ской схемой является гибкость. Например, если потребуется изменить последователь- ность включения вентилей, все, что при- дется переделать при использовании ми- кропроцессорной схемы,-это внести не- большие изменения в программу. Еще одно достоинство данного подхода заклю- Венгили L> pt lVI zt 1 2 3 4 5 6 7 8 0 OFF OFF OFF OFF OFF OFF OFF OFF 2 ON OFF OFF OFF OFF OFF OFF OFF 4 OFF ON OFF OFF OFF OFF OFF OFF 6 OFF OFF ON OFF OFF OFF OFF OFF 8 OFF OFF OFF ON OFF OFF OFF OFF 10 OFF OFF OFF OFF ON OFF OFF OFF 12 OFF OFF OFF OFF OFF ON OFF OFF 14 OFF OFF OFF OFF OFF OFF ON OFF 16 OFF OFF OFF OFF OFF OFF OFF ON ON включен OFF-выключен
Примеры конкретных разработок 169 чается в том, что функции, выполняемые микропроцессорной системой, могут быть легко расширены. Другими словами, если потребуется включить в контур управле- ния еще несколько вентилей, достаточно будет только добавить нужное количество интерфейсов и изменить программу. LABEL OPCODE "8085" ORG На рис. 12.1 показана схема управле- ния вентилями, базирующаяся на микро- схемах 8085, 8755 и 8155. Для удобства LABEL PORTA пользователя ниже приведена подробная схема процесса разработки данной си- стемы на системе НР 64000. Конфигурация аппаратуры Для данной разработки используется следующая аппаратура1*: Один микропроцессор 8085А Одна микросхема 8755-2К байт ППЗУ и 2 порта ввода-вывода Одна микросхема 8155-256 байт ОЗУ и 3 порта ввода-вывода Один тактовый генератор 4 МГц Восемь индикаторов на светодиодах Один управляющий ключ Процесс разработки 1. Редактирование. До начала редактиро- вания вспомним несколько особенностей, используемых при программировании на языке ассемблера: 1. Как отмечалось ранее, строка ассем- блера делится на четыре поля: LABEL OPCODE OPERAND COMMENTS При вводе ассемблерной программы для правильной разрядки полей строки ре- комендуется использовать ключ «ТАВ». 2. Самая первая строка программы должна содержать название используемо- го микропроцессора, в данном случае «8085». 3. После определения типа процессора надо с помощью псевдокоманды «ORG» задать стартовый адрес программы. OPERAND COMMENTS ЮОН ; Старт программы 1000Н 4. Если Вы хотите использовать сим- вольные значения адресов памяти, исполь- зуйте для этого псевдокоманду «EQU». OPCODE OPERAND COMMENTS EQU ЮН ; адрес порта А = ЮН Преимущество этого способа программи- рования заключается в том, что в процессе программирования не надо помнить адре- са портов или ячеек памяти. Пример (с. 172). Псевдооперация EQU может использо- ваться как для присваивания символу зна- чения адреса, так и неадресного значения. Эта возможность может смутить пользо- вателя при программировании. При ис- пользовании псевдооперации EQU необ- ходимо помнить, что она применяется для установления отношения между символом и значением, причем значение может быть как адресом, так и выражением любого другого типа. Пример LABEL OPCODE OPERAND COMMENTS ‘•8085” ORG 1000H PORTA EQU 10H OFF EQU OOH NOP START MVI A,OFF OUT PORTA END LABEL (TAB) OPCODE (TAB) OPERAND (TAB) COMMENTS n Отметьте, что при типичном использо- вании обычно нужна стековая память. Следова- тельно, микрокомпьютер должен иметь ОЗУ. Теперь основные особенности про- граммирования на языке ассемблера по- вторены и можно приступать к вводу про- граммы с помощью редактора.
170 Глава 12 40 6 MHZ[~ 2 4 5 XI X2 SOD SID HOLD INTR TRAP 8085 RST7 5 RST6 5 Vcc ADO ADI AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 AIO RDY WR RD 10/M ALE CLK 35 32 34 30 37 RST 5 5 RESET OUT 24 All Vss 6 8K RESET IN 36 7400 0 0 0 0 0 Vcc Рис. 12.1. Схема управления вентилями. PORT A 8156 Vss PORTC PORT В
Примеры конкретных разработок 171 + 5 V тин + 5 V ззо а
172 Г лава 12 LABEL OPCODE OPERAND COMMENTS "8085" ORG 1000H PORTA EQU 10H , Адрес порта А ЮН PORTB EQU NOP 20H ; Адрес порта В 20Н START MVI A, OOH , Загрузить в аккумуля- ; тор ООН OUT PORTA ; Вывод по адресу ЮН OUT END PORTB ; Вывод по адресу 20Н Нажмите программный ключ «EDIT». Нажмите клавишу «RETURN». На экране появится сообщение “Editing new file”. Редактор при этом находится в режиме вставки, позволяющем вводить программу. Обратите внимание на то, что определения программных ключей изме- нились на “INSERT”, “REVISE”, “DELETE” и т.д. Теперь программные ключи выполняют функции команд редак- тора текстов, которые позволяют делать такие действия, как перемещение слов в тексте, перенумерация строк файла, кон- текстный поиск и т.д. Некоторые замечания для начинающих 1. При работе в режиме вставки завер- шение ввода строки и переход к следую- щей происходят при нажатии на клавишу “RETURN”. 2. Если Вы ошиблись при набивке тек- ста, нажмите программный ключ “REVISE” и переместите курсор в нужную позицию с помощью ключей «Т», «<-» или « -> ». После этого для исправления ошиб- ки используйте ключи “INSERT CHAR” или “DELETE CHAR”. “8085” 3. Для продолжения набивки переме- стите курсор в конец текста и нажмите программный ключ “INSERT”. 4. При окончании редактирования надо присвоить имя только что созданно- му файлу, например: Нажмите программный ключ “END” Введите имя файла FILENAME Нажмите “RETURN” Учтите, что вводить имя надо только при создании нового файла. Редактор после за- писи файла на диск присваивает ему тип “SOURCE”. 5. Если Вы хотите редактировать уже существующий файл, выполните следую- щую последовательность действий: Нажмите программный ключ “EDIT” Введите имя файла FILENAME Нажмите “RETURN” После этого на экран будет выведено со- держимое файла. Ознакомившись с рабо- той редактора текстов, введите с его по- мощью приведенную ниже программу и назовите ее “VALVE”. Текст программы * Программа управляет восемью вентилями на химическом заводе ORG 0000H , Определить стартовый-адрес программы PORTA EQU OOH > Определить адрес порта А ADIREC EQU 02H , Адрес регистра направления порта А VALVE 1 EQU 01H , Управляющий разряд вентиля #1 (разряд 0) VALVE2 EQU 02H , Управляющий разряд вентиля #2 ( разряд 1) VALVE3 EQU 04H Управляющий разряд вентиля #3 (разряд 2) VALVE4 EQU 08H , Управляющий разряд вентиля #4 ( разряд 3) VALVE5 EQU 10H , Управляющий разряд вентиля #5 ( разряд 4) VALVE6 EQU 20H , Управляющий разряд вентиля #6 ( разряд 5) VALVE7 EQU 40H , Управляющий разряд вентиля #7 ( разряд 6)
Примеры конкретных разработок 173 VALVE8 EQU NOP 80H , Управляющий разряд вентиля #8 ( разряд 7) LXI SP.2OFFH , Установить указатель стека MVI A.OFFH , Определить все разряды порта А OUT ADIREC , как выходные START MVI A, VALVE 1 OUT PORTA , Включить вентиль 1 t остальные выключить CALL MVI DELAY A.VALVE2 , Ждать 2 секунды OUT PORTA , Включить вентиль 2 , остальные выключить CALL MVI DELAY A.VALVE3 , Ждать 2 секунды OUT PORTA , Включить вентиль 3 , остальные выключить CALL MVI DELAY A.VALVE4 . Ждать 2 секунды OUT PORTA , Включить вентиль 4 , остальные выключить CALL MVI DELAY A.VALVES , Ждать 2 секунды OUT PORTA : Включить вентиль 5 , остальные выключить CALL MVI DELAY A.VALVE6 , Ждать 2 секунды OUT PORTA . Включить вентиль 6 , остальные выключить CALL MVI DELAY A.VALVE7 , Ждать 2 секунды OUT PORTA , Включить вентиль 7 , остальные выключить CALL MVI DELAY A.VALVE8 , Ждать 2 секунды OUT PORTA , Включить вентиль 8, остальные выключить CALL DELAY , Ждать 2 секунды CALL DELAY , Ждать 2 секунды CALL DELAY . Ждать 2 секунды CALL DELAY . Ждать 2 секунды CALL DELAY I Ждать 2 секунды CALL DELAY , Ждать 2 секунды JMP START , Снова повторить программу выключить DELAY NOP , Подпрограмма задержки на 2 секунды LXI H.OFFFH : Загрузить в регистровую пару(Н - L) О LOOP DCX MOV ORA H A.H L , Уменьшить на 1 содержимое пары(Н - L) JNZ RET END LOOP . Циклдо (HL)=O . Возврат из подпрограммы 2. Ассемблирование. После редактирова- ния программы в файле с именем VALVE и типом SOURCE можно приступать к преобразованию ее в двоичные ма- шинные коды. Для трансляции программы в ма- шинные коды надо использовать ассем- блер. Например: Нажмите программный ключ “assemble” Введите имя файла: VALVE Нажмите программные ключи “listfile”, “printer”, “options”, “xref’. Нажмите “RETURN” На экране появится изображение вве- денной командной строки: assemble VALVE listfile printer options x _ ref После получения листинга убедитесь, что в программе не было допущено оши- бок. Если ошибки были обнаружены, зано- во отредактируйте программу. В против- ном случае продолжайте изучение данного раздела.
174 Г лава 12 После окончания ассемблирования список файлов Вашей директории будет следующим: Directory List User STUDN Disc 0 Wed, 19 Mar 1980, 0 44 Page 1 NAME TYPE SIZt LAST MODIFY LAST ACCESS VALVE reloc VALVE source 1 19 Mar 1980, 0.43 19 Mar 1980, 0:43 1 19 Mar 1980, 0 38 19 Mar 1980, 0:43 ♦♦♦* Files listed 2, 0 07% disc space used ♦♦♦♦ 67 00% disc space available ♦♦♦♦ Распечатка листинга ассемблера на АЦПУ будет выглядеть примерно так: FILE VALVE STUDN HEWLETT-PACKARD- INTEL 8085 ASSEMBLER Wed, 19 Mar 1980, 0:48 PAGE LINE LOC CODE SOURCE STATEMENT ADDR 1 “8085” 2 * 3 * Программа управляет восемью вентилями на химическом заводе 4 ♦ 5 0000 ORG OOOOH , Определить стартовый адрес программы 6 0000 PORTA EQU OOH ; Определить адрес порта А 7 0002 ADIREC EQU 02H > Адрес регистра направления порта А 8 0001 VALVE 1 EQU 01H , Управляющий разряд вентиля #1 (разряд 0) 9 0002 VALVE2 EQU 02H ; Управляющий разряд вентиля #2 (разряд 1) 10 0004 VALVE3 EQU 04H ; Управляющий разряд вентиля #3 ( разряд 2) 11 0008 VALVE4 EQU 08H , Управляющий разряд вентиля #4 ( разряд з) 12 0010 VALVE5 EQU 10H , Управляющий разряд вентиля #5 (разряд 4) 13 0020 VALVE6 EQU 20H , Управляющий разряд вентиля #6 ( разряд 5) 14 0040 VALVE7 EQU 40H , Управляющий разряд вентиля (разряд 6) 15 0080 VALVE8 EQU 80H > Управляющий разряд вентиля #8 (разряд 7) 16 0000 00 OP 17 0001 3E FF MVI A,OFFH : Определить все разряды порта А 18 0003 D3 02 OUT ADIREC ; как выходные 19 0005 3E 01 START MVI A, VALVE 1 20 0007 D3 00 OUT PORTA ; Включить вентиль 1, остальные выключить 21 0009 CD 004F CALL DELAY , Ждать 2 секунды 22 OOOC 3E 02 MVI A.VALVE2 23 000E D3 00 OUT PORTA , Включить вентиль 2, остальные выключить 24 0010 CD 004F CALL DELAY 25 0013 3E 04 MVI A.VALVE3, 26 0015 D3 00 OUT PORTA , Включить вентиль 3, остальные выключить 27 0017 CD 004F CALL DELAY 28 001A 3E 08 MVI A.VALVE4 29 001C D3 00 OUT PORTA , Включить вентиль 4, остальные выключить 30 001E CD 004F CALL DELAY , Ждать 2 секунды 31 0021 3E 10 MVI A.VALVE5 32 0023 D3 00 OUT PORTA ; Включить вентиль 5, остальные выключить 33 0025 CD 004F CALL DELAY ; Ждать 2 секунды 34 0028 3E 20 MVI A.VALVE6 35 002A D3 00 OUT PORTA I Включить вентиль 6, остальные выключить 36 002C CD 004F CALL DELAY ; Ждать 2 секунды
Примеры конкретных разработок 175 37 OO2F ЭЕ 40 MVI A.VALVE7 38 0031 D3 00 OUT PORTA , Включить вентиль 7, остальные выключить 39 0033 CD 004F CALL DELAY ; Ждать 2 секунды 40 0036 ЗЕ 80 MVI A.VALVE8 41 0038 D3 00 OUT PORTA , Включить вентиль 8, остальные выключить 42 ООЗА CD 004F CALL DELAY , Ждать 2 секунды 43 003D CD 004F CALL DELAY , Ждать 2 секунды 44 0040 CD 004F CALL DELAY , Ждать 2 секунды 45 0043 CD 004F CALL DELAY Ждать 2 секунды 46 0046 CD 004F CALL DELAY , Ждать 2 секунды 47 0049 CD 004F CALL DELAY , Ждать 2 секунды 48 004С C3 0005 JMP START ; Снова повторить всю программу 49 004F 00 DELAY MDP , Подпрограмма задержки на 2 секунды 50 0050 21 OFFF LXI H.OFFFH , Загрузить 0 в регистровую пару (Н L) 51 0053 2B LOOP DCX H , Уменьшить на 1 содержимое пары (HL) 52 0054 C2 0053 JNZ LOOP , Цикл до (HL) = 0 53 0057 C9 RET , Возврат из подпрограммы 54 END Errors= О FILE VALVE STUDN CROSS REFERENCE TABLE PAGE 2 LINE# SYMBOL TYPE REFERENCES А A 17,19,22,25,28.31,34,37,40 7 ADIREC A 18 49 DELAY A 21,24,27,30,33,36,39,42,43.44,45,46,47 Н A 50,51 51 LOOP A 52 6 PORTA A 20,23,26,29,32,35,38,41 19 START A 48 В VALVE1 A 19 9 VALVE2 A 22 10 VALVE3 A 25 11 VALVE4 A 28 12 VALVE5 A 31 13 VALVE6 A 34 14 VALVE7 A 37 15 VALVE8 A 40 3. Компоновка. Как указывалось ранее, ос- новным назначением компоновщика является сборка нескольких переме- щаемых модулей в один абсолютный, при- годный для исполнения эмулятором си- стемы НР 64000. Представляемые компоновщиком воз- можности позволяют нескольким пользо- вателям разрабатывать одну большую программу по частям. В этом случае про- грамма компонуется как единое целое по- сле того, как будут готовы все ее со- ставные части. В данном случае программа VALVE состоит только из одного модуля. Но даже в этом случае, когда программа компо- нуется только из одного модуля, нельзя обойтись без помощи компоновщика, так как только компоновщик может сгенери- ровать файл с абсолютным кодом, един- ственным пригодным к исполнению эму- лятором или к прошивке в ПЗУ. Напри- мер: Нажмите программный ключ “LINK” Нажмите “RETURN” Система задаст Вам последователь- ность вопросов: 1. Object files? VALVE (RETURN) В данном случае VALVE-это имя фай- ла с перемещаемым объектным кодом. 2. Library files? (RETURN) В этом примере для компоновки не тре- буется использование библиотечных фай- лов. 3. Load addresses? PROG, DATA, COMN = 0000H, 0000H, 0000H В данном случае нажмите “RETURN”, так как стартовый адрес 000Н уже устано- влен в программе псевдооперацией “ORG”, а заботиться о размещении в па- мяти программных секций DATA и COMN не надо ввиду их отсутствия. Ес- ли бы стартовый адрес программы нужно было установить на ячейку 1000Н, тогда на этот вопрос Вы ответили бы так: Load addresses? PROG, DATA, COMN = = 10000H, 0000H, 0000H 4. More files? no /RETURN/ 5. List, xref? no /RETURN/ 6. Absolute file name? VALVE85/RETURN/ На последний вопрос Вы ввели имя
176 Г лава 12 файла с абсолютным кодом. Этот файл можно загрузить в эмулятор для отладки и, если полученные результаты будут пра- вильные, впоследствии записать в ППЗУ. Обратите внимание на то, что в резуль- тате работы компоновщика в списке фай- лов Вашей директории появились три новых файла. NAME TYPE SIZE LAST MODIFY LAST ACCESS VALVE asmb_sym 1 10 Dec 1980, 12 55 10 Dec 1980, 12 55 VALVE reloc 1 19 Mar 1980, 0 48 10 Dec 1980, 12 55 VALVE source 1 19 Mar 1980, 0 38 19 Mar 1980, 0 48 VALVE85 absolute 1 10 Dec 1980, 12 55 10 Dec 1980, 12 55 VALVE85 link_sym 1 10 Dec 1980, 12 55 10 Dec 1980, 12 55 VALVE85 hnk_com 1 10 Dec 1980, 12 55 10 Dec 1980, 12 55 **** Files listed 6, О 20% disc space used ♦♦♦♦ ♦♦♦* 66 79% disc space available **** VALVE85 link_sym карта загрузки памя- ти, сгенерированная компонов- щиком. VALVE85 link_com командный файл, в котором записаны все ответы, которые Вы давали компонов- щику на его вопросы. Этот файл позволяет Вам при отлад- ке программы, когда требуется часто ее перекомпоновывать, не отвечать каждый раз на всю по- следовательность вопросов. При наличии этого файла для компоновки программы Вам надо только указать компонов- щику имя командного файла, а тот сам автоматически полу- чит ответы на все свои вопросы, например: (LINK) имя командного файла (RETURN) Для изменения некоторых пунктов ко- мандного файла надо использовать про- граммные ключи «OPTIONS” и “EDIT”, например: /LINK/ valve85 /OPTIONS/ /EDIT/ /RETURN/ После завершения компоновки можно приступать к эмуляции целевой системы. 4. Эмуляция. Целью эмуляции является отладка аппаратного и программного обеспечения с помощью имитруования на системе HP 64000 внешнего процессора. Такое имитирование называется схемотех- нической эмуляцией (ICE). До начала эму- ляции необходимо упомянуть о несколь- ких важных вещах: 1. Не вставляйте в разъем эмулятора устройство при включенном питании. 2. Для эмуляции необходимо подгото- вить файл с абсолютным кодом. Эмулятор не умеет работать с исходными текстами или перемещаемыми модулями. 3. До использования эмулятора или программатора ППЗУ надо скомпоновать все файлы в один файл с абсолютным кодом. 4. Система HP 64000 не обеспечивает питанием целевую систему. Для целевой системы необходимо наличие внешнего источника питания. Достоинством эмулятора является то, что в нем собраны все средства, необхо- димые для отладки. Например, находясь в пошаговом режиме выполнения про- граммы, можно смотреть содержимое ре- гистров (HL, DE, PC, SP,... и т.д.) и ячеек памяти. Кроме того, можно менять содер- жимое регистров и памяти без редактиро- вания программы. В процессе эмуляции можно устанавли- вать точки останова программы для про- верки содержимого регистров и других па- раметров. Анализатор позволяет запо- минать до 256 непрерывных событий, происходящих после выполнения специфи- цированного пользователем условия. Начнем с присоединения к эмулятору целевой системы, убедившись предвари- тельно, что питание на ней выключено. Те- перь можно включить питание. Для ис- пользования эмулятора сделайте следую- щее: Нажмите программный ключ “EMULATE” Нажмите программный ключ “LOAD” Введите имя загружаемого файла “VALVE85” Нажмите “RETURN” Система отреагирует: 1. Processor cloci: /EXTERNAL/ /RETURN/ Ответьте “external”, так как на целевой си- стеме имеется свой тактовый генератор. 2. Is processor clock speed greater than 4 48 MHz9 /RETURN/ 3. Restrict Processor to Real time runs: /NO/ /RETURN/
Примеры конкретных разработок 177 Ответьте «НЕТ», так как иной ответ не по- зволит выполнять команды, прерывающие работу эмулируемой системы. 4 Stop Processor on Illegal Opcodes. /YES/ /RETURN/ Ответьте «ДА», чтобы процессор остана- вливался при обнаружении неверного кода операции. До продолжения ответов на другие во- просы определим несколько терминов. Эмуляционное ОЗУ: эта память распо- ложена в HP 64000 и исполь- зуется для эмуля- ции. Эмуляционное ПЗУ: позволяет ис- пользовать эму- ляционную па- мять только для чтения, чем достигается за- щита тех про- грамм пользо- вателя, которые он не хочет менять в про- цессе эмуляции. Пользовательское ОЗУ: расположено в целевой си- стеме. Пользовательское ПЗУ: тоже находит- ся в целевой системе. При работе программы память всех че- тырех типов может использоваться в лю- бом сочетании. Целью использования па- мяти разных типов является защита пользовательских программ от незапла- нированного обращения за записью в ПЗУ. Теперь продолжим отвечать на во- просы и затем перейдем к описанию некоторых команд эмулятора. 5 Emulation RAM address range? RETURN/ 6 Emulation ROM adress range? /RETURN/ 7. User RAM address range? /RETURN/ 8 User ROM address range? /RETURN/ 9. Illegal memory address range? /RETURN/ Последний вопрос предназначен для организации защиты памяти от любых обращений. 10 Command file Name? VALVECOM /RETURN/ Эмулятор организует командный файл то- го же типа, что и описанный ранее ко- мандный файл компоновщика, с тем отли- чием, что в этом файле содержатся все ответы пользователя на вопросы эмулято- ра. Реакцией системы на последний ответ будут очистка экрана и сообщение: Program Loaded 1. Для проверки правильности загруз- ки программы нажмите следующую по- следовательность программных клю- чей: “DISPLAY”, “MEMORY”, 0000Н, “MODE”, “MNEMONIC”, “RETURN”. Ha экран будет выведена загруженная про- грамма в символьном и шестнадцатерич- ном виде. Для того чтобы увидеть строки программы, не поместившиеся на экране, используйте программные ключи “ROLL UP” и “ROLLD OWN”. 2. Для проверки содержимого реги- стров нажмите последовательность про- граммных ключей: “DISPLAY”, “REGISTERS”, “MODE”, “DYNAMIC”, “RETURN”. Теперь, после того как на экран будет выведено содержимое всех ре- гистров, можно перейти к выполнению программы в пошаговом режиме. 3. Для запуска программы в пошаго- вом режиме нажмите последовательность программных ключей: “STEP”, “FROM”, 0000Н, “RETURN”. В результате будет установлен пошаговый режим выполнения программы, а в счетчик адреса занесется значение 0000Н. Нажмите программный ключ “STEP” и “RETURN” Нажмите “RETURN” Нажмите “RETURN” Нажмите “RETURN” Нажмите “RETURN” Нажмите “RETURN” Заметьте, что после каждого нажатия клю- ча “RETURN” программа выполняет одну команду, а содержимое некоторых реги- стров, например счетчика адреса, меняет- ся. 4. Для запуска программы нажмите
178 Глава 12 последовательность программных клю- чей: “RUN”, “FROM”, 0000Н, “RETURN”. 5. Для остановки программы нажмите последовательность программных клю- чей: “STOP”, “RUN”, “RETURN”. 6. Для запуска программы вплоть до определенного адреса нажмите последова- тельность программных ключей: “RUN”, “FROM”, 0000Н, “UNTIL”, “REGISTERS”, “ЕТС_, “PC”, “ = ”, (адрес). 7. Для остановки эмуляции нажмите программный ключ “END” и “RETURN”. 5. Прошивка ППЗУ. После отладки про- граммы часто требуется записать абсо- лютный код в ППЗУ. Для вызова программатора ППЗУ сде- лайте следующее: Нажмите программный ключ “PROM PROGRMR” Нажмите “RETURN” Система в ответ на это выведет на экран конфигурацию программатора и спросит: Socket Туре? На этот вопрос надо ответить «8755». Если Вы используете ППЗУ типа 2716, то ответить надо соответственно «2716». Для начала прошивки нажмите ключи “PROGRAM” и “RETURN”. Система за- даст вопрос: Program from? Ответить надо следующим образом: VALVE85 /RETURN/ Для того чтобы проверить содержи- мое ППЗУ, нажмите последовательность программных ключей: “LIST PROM”, “ТО”, “DISPLAY”, “RETURN”. Для окончания работы с программато- ром нажмите ключи “END” и “RETURN”. 12.2. Задача 2 12.2.1. Постановка задачи Основной целью решения данной зада- чи является разработка автономной ми- кропроцессорной системы, которая бы из- меряла величину синусоидального напря- жения, а также вычисляла и выводила на экран дисплея его среднеквадратичное зна- чение. Второй целью является ознакомле- ние с микропроцессорными системами поддержки вообще и с системой НР 64000 в частности. От полной системы требуется: 1. 128 раз в секунду взять отсчеты сину- соидального напряжения с частотой 60 Гц. 2. Оцифровать полученные значения с помощью управляемого микропроцессо- ром аналого-цифрового преобразователя. 3. Ввести оцифрованные значения в микропроцессор 8085 по сигналу преры- вания RST 6.5. 4. Вычислить среднеквадратичное зна- чение сигнала по формуле: (Среднеквадратичное значение) = 1,11 х х (среднее значение) 5. Вывести среднеквадратичное значе- ние на дисплей. 12.2.2. Решение задачи 2 Аппаратное обеспечение В разрабатываемой микрокомпьютер- ной системе будем использовать микро- схемы фирмы Intel: 8085-микропроцессор, 8156-ОЗУ с тремя портами ввода-вывода и 8755-ППЗУ с двумя портами ввода-вы- вода. Эти три микросхемы составляют ядро микрокомпьютера. На рис. 12.2 изображена схема микро- компьютера. Следующие управляющие линии с тремя выходными состояниями подключены ко всем устройствам: ALE разрешает запоминание адре- са; по этому сигналу запо- минается состояние адресных ___ линий RD задает режим чтения с внешне- ___ го устройства WR задает режим записи во внеш- __ нее устройство Ю/М определяет операции с па- мятью или операции ввода-вы- вода READY служит для приостановки ци- кла работы системы. Для отмены установить низ- кий уровень напряжения CLK выход тактового генератора микропроцессора 8085 RESET генерируется микропроцессо- ром 8085 в ответ на сигнал внешней аппаратуры. Этот сигнал устанавливает все пор- ты ввода-вывода в состояние ввода
Vcc 2 40 39 28 HOLD TRAP 8085A INTR 40 Vdd VCc 0 ► К индикатору ДЮ Л9 Л8 31 2 CLK 6 2ЕА 6,8К к схеме АЦП ,8 К READY CEi 2 3 AD2 AD3 AD4 AD5 5 6 AD6 AD7 RESET Ю/М WR RD ALE Vss 20 24 25 26 27 28 10 9 29 30 18 19 15 16 17 18 19 Рис. 12.2. Схема микропроцессорной системы Ключ сброса 21 22 23 24 25 26 27 ADO ADI AD2 AD3 AD4 Ior ADO 8755 ADI ППЗУ И порты ввода/ вывода 5 6 Коннектор AD5 AD6 AD7 8156 ОЗУ И порты ввода/ вывода 23 22 21 BD Коннек- тор RESET IO/M WR RD ALE CE CLK
180 Г лава 12 Следующие управляющие сигналы ми- кропроцессора 8085 соединены с внешней аппаратурой или с фиксированным уров- нем напряжения: HOLD используется для приоста- новки процессора при режи- ме прямого доступа в па- мять. В данном случае для запрещения приостановки фиксированно соединен с землей INTR прерывание по одному из восьми допустимых векто- ров. Для запрещения пре- рывания сигнал соединен с землей RST5.5 прерывание по фиксирован- ному вектору, для запреще- ния соединен с землей RST6.5 прерывание по вектору 0034Н. Сигнал соединен с внешней аппаратурой RST7.5 прерывание по фиксирован- ному вектору. Для запреще- ния соединен с землей RESET IN генерирует сигнал сброса и устанавливает счетчик адреса в 0000Н. Для ини- циализации программы со- единен с внешней аппарату- рой. Восемь сигналов адрес-данные (AD0-AD7) подсоединены ко всем трем микросхемам. Эти сигналы служат для передачи восьмиразрядных данных и младших разрядов адреса между процес- сором и устройствами памяти. Адресные сигналы А8-А10 подсоединены только к микросхемам 8085 и 8755, поскольку ОЗУ 8156 содержит только 256 байт, и, следовательно, ей не требуются дополни- тельные адресные разряды. Границы ОЗУ (8156) и ПЗУ (8755) опре- деляются по сигналу АП. Программа в ПЗУ располагается с адреса 000Н до 07FFH (наибольшее значение адреса при памяти в 2 Кбита), и выборка адреса про- исходит при низком уровне сигнала АП. Следовательно, сигнал АП надо подклю- чать к входу СЕ микросхемы 8755. Выбор- ка кристалла 8156 происходит по высоко- му уровню сигнала АП, т.е. в ней находятся адреса от 0800Н до 08FFH (256 бит). Выходные порты А и В микросхемы 8156 предназначены для связи с внешней аппаратурой. Порт А является выходным портом микропроцессора 8085 и передает управляющие сигналы на аналого-цифро- вой преобразователь. Через порт В осуще- ствляется ввод восьмиразрядных данных от аналого-цифрового преобразователя. Ввод-вывод осуществляется стан- дартным образом: при выполнении ин- струкции ввода или вывода микропроцес- сор 8085 отключает память и выбирает порты выставлением высокого уровня сиг- нала Ю/М и передачей восьмибитового адреса порта одновременно на линии DA0-DA7 и А8-А15. Поскольку кристалл 8156 выбирается по высокому уровню сиг- нала АП, разработчик программного обеспечения должен позаботиться о при- сутствии этого разряда в адресах портов. Доступом к портам кристалла 8156 управ- ляют сигналы AD0-AD3: AD2 AD1 AD0 Описание 0 0 0 Регистр команд/состояния 0 0 1 Порт А 0 1 0 Порт В 0 1 1 Порт С 1 0 0 Младший байт таймера 1 0 1 Старший байт таймера В данной разработке используются ре- гистр команд и состояния и порты А и В. Следовательно, сигнал AD2 должен быть низкого уровня, а сигналы AD0-AD1-низкого или высокого в зави- симости от выбираемого порта. Адресный бит АП переносится в бит АЗ адреса порта. В адресах всех портов ввода-вывода кристалла 8156 разряд АЗ должен быть установлен в единицу: Адрес порта ADDR AD3 AD2 AD1 AD0 Описание 08Н 1 0 0 00 Регистр команд/ /состояния 09Н 1 0 0 1 Порт А 0AH 1 0 1 0 Порт В
Примеры конкретных разработок 181 Данные на семисегментный индикатор на светодиодах поступают из микропро- цессора 8085 через выходной порт А кри- сталла 8755. Выходное слово данных со- стоит из передаваемой четырьмя разряда- ми шестнадцатеричной цифры (младшие четыре разряда) и четырехразрядного адреса индикатора (старшие четыре раз- ряда). Каждый бит порта А кристалла 8755 должен быть определен в качестве выход- ного содержимым регистра направления данных порта A (DDRA). Запись данных в порт А или в DDRA осуществляется только при выборке данного кристалла, т. е. сигнал АП (соответствующий разряду АЗ операции вывода данных) должен быть низкого уровня. Исходя из этого, адреса выходных регистров кристалла 8755 долж- ны быть следующие: AD3 AD2 ADI AD0 Адрес порта 0 0 0 0 ООН (порт А) 0 0 1 0 02Н (DDRA) Кроме этих трех описанных устройств микрокомпьютер содержит генератор сиг- налов с частотой 1МГц, ключ для сброса системы и индикаторы на светодиодах для высвечивания среднеквадратичных значе- ний оператору. Аппаратура аналого-цифрового пре- образования состоит из трех схем: выделе- ния абсолютного значения, выборки и хра- нения и аналого-цифрового преобразова- теля. Используемая схема выделения абсо- лютного значения напряжения выпрям- ляет входное напряжение с помощью цепи обратной связи операционного усилителя (рис. 12.3). Когда входное напряжение Е1 становится отрицательным, на выходе первого операционного усилителя по- является положительное напряжение, сме- щенное на величину падения напряжения на нижнем диоде, что запирает верхний диод. Через первый операционный усили- тель практически не течет ток. На выходе второго операционного усилителя напря- жение положительное, причем падение на- пряжения на диоде не вносит никакой ошибки. После выпрямления входного напряже- ния оно выбирается схемой выборки-хра- нения. Сигнал «SAMPLE» длительностью 650 мкс передается из порта А кристалла 8156 и инвертируется КМОП-умощните- лем логического сигнала 4049. При высо- ком уровне сигнала «SAMPLE» на выходе умощнителя будет низкий уровень и тран- зистор 2N2222 заперт. В этом случае на его коллекторе удерживается постоянное на- пряжение 15 В и аналоговый ключ 4066 за- крыт. Для того чтобы открыть ключ, надо установить сигнал «SAMPLE» в низкий уровень. Тогда транзистор 2N2222 откры- вается и отпирающее напряжение аналого- вого ключа становится равным 0В. При за- крытом аналоговом ключе конденсатор заряжается выбранным напряжением. В конце концов выпрямленное и запом- ненное напряжение преобразуется в вось- миразрядное целое аналого-цифровым преобразователем 8703. АЦП 8703 смещен с целью обеспечения шкалы от 0 до 10 В, т. е. код на его выходе ООН соответствует ОВ, a OFFH-10 В (см. рис. 12.3). Все сиг- налы, уходящие в порты микрокомпьюте- ра, пропущены через повторители 4050 для изолирования дорогого КМОП АЦП1}. Восемь выходных линий данных под- соединены к порту А кристалла 8156 и мо- гут быть опрошены программой обработ- ки прерываний. Преобразование начинает- ся по сигналу «START CONVERSION», передаваемому из микропроцессора 8085 через порт В кристалла 8156. После окон- чания цикла преобразования управляю- щий сигнал «BUSY» переходит в низкий уровень. При поступлений от порта В сиг- нала «ENABLE» инвертируемый сигнал «BUSY» подготавливает прерывание RST 6.5 и программа обработки прерывания обрабатывает полученные данные. Для запрещения прерываний в то вре- мя, когда выходной сигнал АЦП «BUSY» находится на низком уровне между двумя преобразованиями, надо использовать программные средства. Поэтому сигнал «BUSY» логически умножается на сигнал «ENABLE». Только наличие их обоих при- п По-видимому, автор имеет в виду, чго выходы АЦП 8703 имеют недостаточную на- грузочную способность-Прим, перев.
Рис. 12.3. Схема измерения среднеквадра- тичного значения синусоидального напря- о РВ Схема 2-полупериодноге выпрямления без сглаживания Выборка и хранение РА7 РА6 РА5 РА 4 РАЗ РА 2 РА1 РАО RST6 РВ SAMPLE --------о РВ 0789 о GND
Примеры конкретных разработок 183 Разрешение аппаратного прерывания Выход данных АЦП Ожидание Подтверждение прерывания прерывания Рис. 12.4. Временная диаграмма. водит к прерыванию RST 6.5. Сигнал «ENABLE» устанавливается только тогда, когда микрокомпьютер готов обрабаты- вать прерывание. Во время выполнения программы обработки прерывания сигнал «ENABLE» устанавливается в низкий уро- вень и остается в этом состоянии вплоть до осуществления следующей выборки значения напряжения и начала аналого-ци- фрового преобразования. На рис. 12.4 изо- бражена временная диаграмма управляю- щих сигналов. Программное обеспечение Используемое в данном проекте про- граммное обеспечение состоит из одной программы, редактируемой и ассембли- руемой как комплексная программная единица. Эта программа выполняет три основные функции: выборку данных, обра- ботку прерываний и вычисление среднек- вадратичного значения. Части программы, реализующие различные функции, могут рассматриваться отдельно. Блок-схема программы изображена на рис. 12.5. При сбросе системы в начальное со- стояние установкой сигнала «RESET» ми- кропроцессора 8085 в счетчик адреса авто- матически заносится значение 000Н. По этому адресу расположена команда «JMP», передающая управление на начало программы выборки данных (адрес ОО37Н). Эта часть программы устанавли- вает разрешение прерывания RST6.5, зано- сит в регистр «В» значение 128 для счета выборок данных, очищает регистры «С», «D» и «Е» и определяет порты кристал- ла 8156 (порт А-входной, порт В-выход- ной). Затем, используя программный цикл задержки, программа на 650 мкс выстав- ляет сигнал выборки (бит 1 порта В), после чего выдает сигнал «START CONVERSION» (бит 2 порта В). В конце этого цикла обработки процессор выходит на команду «НЕТ» и ждет прерывания. После окончания обработки прерывания программа уменьшает на 1 содержимое регистра Вив случае, если были выбраны еще не все 128 выборок данных, передает управление снова на процедуру выборки. Когда все выборки уже обработаны, уп- равление передается на процедуру вычис- ления среднеквадратичного значения. Процедура обработки прерывания (адрес 008ЕН) сначала разрешает прохож- дение сигнала с выхода АЦП 8703, после чего читает восьмиразрядное слово
184 Глава 12 Подпрограмма обработки прерывания Прерывание
Примеры конкретных разработок 185 Подрограмма деления Подпрограмма выдачи на индикатор Закрыть маской младшие 4 бита регистра Конец Рис. 12.5. Блок-схема программного обеспече- ния задачи 2.
186 Г лава 12 данных из порта А и прибавляет введенное число к накопленной сумме, хранящейся в регистрах С, D и Е. Введение таких сум- мирующих регистров позволяет справить- ся с проблемой хранения больших чисел. По выполнении этого шага счетчик цикла уменьшается на единицу и управление передается обратно процедуре выборки данных. При возникновении прерывания содержимое счетчика адреса запоминается в стеке. Поскольку при выходе из про- цедуры обработки прерывания исполь- зуется команда «JMP», а не «RET», необ- ходимо восстановить прежнее значение указателя стека. Для этого содержимое верхушки стека выталкивается перед выхо- дом из процедуры в неиспользуемую пару регистров Н и L. По завершении всего цикла выборки данных вычисляется среднеквадратичное значение накопленных чисел. Для этого сумма введенных чисел в регистрах С, D и Е делится на 128 для получения среднего значения. Полученное среднее умножается на 142 и затем делится на 128. Таким спо- собом вычисляется среднеквадратичное значение синусоидального напряжения. Вычисление основывается на следующих формулах: 142/128= 1,11, (Среднее значение) х 1,11 = (Среднеквад- ратичное значение). Деление суммы, хранящейся в реги- страх С, D и Е, осуществляется семи- кратным сдвигом вправо содержимого всей группы регистров. Умножение дости- гается многократным суммированием по- лученной величины. После вычисления среднеквадратично- го значения остается только вывести полу- ченный результат на дисплей оператора. Процедура выдачи на дисплей рассматри- вает шестнадцатеричные данные регистра Е как разделенные на группы по четыре разряда в каждой (группа представляет од- ну шестнадцатеричную цифру). Группы по очереди пересылаются в порт А кристалла 8755. Занесение каждой цифры осущест- вляется до занесения в порт управляющих данных. После того как код цифры перепи- сан в порт, над содержимым порта и уп- равляющими данными выполняется опе- рация логического ИЛИ, формирующая слово управления дисплея. Два дешифра- тора с запоминанием типа 9356 исполь- зуются для управления дисплеем. Сформи- рованное полное слово передается этим дешифраторам, в результате чего новые данные отображаются дисплеем. Для ото- бражения следующей цифры четыре стар- ших разряда регистра Е меняются места- ми с четырьмя младшими, и описанная последовательность действий повторяется. 12.2.3. Методология Проект развивался следующим обра- зом: аппаратное и программное обеспече- ние разрабатывалось в той же последова- тельности, в которой приведен материал в предыдущем разделе. Программное обеспечение было создано в файлах на ди- ске и отлаживалось до получения листинга ассемблера без ошибок. Аппаратура была изготовлена и эмулирована на системе НР 64000. Во время эмуляции были обнаружены и исправлены ошибки типа отсутствия со- единения в аппаратуре и несоответствия аппаратного и программного обеспечения. Отладка и эмуляция системы потребовали примерно 90 чел.-ч работы. После того как эмуляция с использова- нием эмуляционного ОЗУ прошла успеш- но, программа была записана в ППЗУ 8755. Система работала нормально и при использовании пользовательской памяти. После этого система была отключена от эмулятора и к ней был подключен микро- процессор 8О85А, чтобы микрокомпьютер мог работать в автономном режиме. Си- стема и в этом случае правильно выбирала данные, вычисляла и высвечивала на инди- каторе среднеквадратичное значение сину- соидального напряжения. На этом закон- чился процесс разработки проекта. 12.2.4. Результаты В автономном режиме работы микро- компьютерная система измеряла входное напряжение и выдавала следующие ре- зультаты : Вариант 1: измерение постоянного тока
Примеры конкретных разработок 187 на входе 5,0 В, высвечивается значение 8 Е. Вариант 2: нестабилизированное пере- менное напряжение 7,5 В, выс- вечиваются значения в диапа- зоне А5-С0. Вариант 3: стабилизированное перемен- ное напряжение 7,5 В1}, высве- чиваются значения в диапазо- не BE-BD. Разброс значений при исследовании второго варианта связан с большими коле- баниями входного напряжения во время выборок значений. Показания индикатора при измерении постоянного напряжения оставались неизменными благодаря хоро- шей стабилизации входного сигнала. В третьем случае, при подаче на вход ста- билизированного синусоидального напря- жения, выходные данные различались не более чем на один двоичный разряд. 12.2.5. Заключение В процессе работы было обнаружено, что возможности инструментальной си- стемы HP 64000 полностью охватывают потребности процесса разработки про- граммных и аппаратных компонент проек- та. Важнейшим результатом проведенной работы (кроме получения точности вычис- ления среднеквадратичного значения в 1 бит) было доказательство эффективно- сти инструментальной системы. Обе по- ставленные цели были достигнуты-озна- комление с работой инструментальной системы и реальное конструирование си- стемы для измерения синусоидального на- пряжения и вычисления его среднеквадра- тичного значения. FILE ADCONV:GROUP9 HEWLETT-PACKARD INTEL 8085 ASSEMBLER Wed, 10 Dec 1980, 14 48 PAGE 1 LINE LOC CODE ADDR SOURCE STATEMENT 1 “8085” 2 0000 ORG 0000H Счетчик команд в начале работы указывает на ячейку 0000 3 0000 C3 0037 JMP START Переход на начало программы 4 0034 ORG 0034H Вектор прерывания RST 6.5 в ячейке 034Н 5 0034 C3 008D JMP SVC 6 0037 00 START NOP 7 0038 3E 0D MVI A,0DH 8 003A 30 SIM Разрешить только прерывание RST6 5 9 003В 3E 02 MVI A,02H 10 003D D3 08 OUT 08H Определить порты. А — входной, В — выходной 11 003F 01 8000 LXI B.8000H *• Счетчик циклов для 128 выборок 12 0042 11 0000 LXI D,0000H ’ В регистрах С, D, Е будет накапливаться сумма значений выборок 13 0045 31 08F0 LXI SP.08F0H ’ Инициализация указателя стека для рестарта 14 0048 3E 01 SAMPLE MVI A,01H 15 004A D3 0A OUT OAH । Выставить сигнал ''SAMPLE'' 16 004C 21 004F LXI H.004FH 1 Начать задержку на 650 мкс 17 004F 2B L00P1 DCX H f 18 0050 7D MOV A,L f 19 0051 B4 ORA H f 20 0052 C2 004F JNZ L00P1 1 Кончить задержку на 650 мкс 21 0055 D3 0A OUT OAH Сбросить сигнал ''SAMPLE'', входное напряжение запомнено на конденсаторе Измеренное с помощью вольт-омметра типа 310 фирмы Beckman.
188 Глава 12 22 0057 00 NOP 23 0058 3E 04 CONV MVI A.04H 24 C05A D3 OA OUT OAH ’ Начать преобразование Разряд 2 порта A = 1 25 005C 3E 00 MVI A,OOH 26 005E D3 OA OUT OAH ’ Закончить преобразование Разряд 2 порта А = 0 27 0060 3E 02 MVI A.02H 28 0062 D3 OA OUT OAH ’ Разрешить ввод данных 29 0064 FB El 1 Разрешить прерывание RST6 5 30 0065 C3 0065 WAIT JMP WAIT ’ Ждать прерывание 31 0068 00 NOP 32 0069 E1 BACK POP H 33 006A 05 DCR В 1 Уменьшить счетчик циклов 34 006В C2 0048 JNZ SAMPLE ’ Если в счетчике не 0, возврат на подпрограмму выборки 35 006E 00 NOP 36 006F CD 007A CALL DIVIDE ’ Получение среднего накопленная сумма делится на 128 37 0072 00 NOP ! Результат в регистрах D и Е 38 0073 00 NOP ! Переслать D - Е в Н - L 39 0074 00 NOP ’ Запомнить Н - L в ячейке 0800Н (для подпрограммы умножения} 40 0075 C3 00A2 JMP MULT г 41 0078 00 NOP 42 0079 00 NOP 43 007A 06 07 DIVIDE MVI B.07H 1 В регистре В счетчик сдвига D - Е надо сдвинуть вправо на 7 разрядов 44 007C AF LOOP2 XRA A 1 Очистить флаг переноса 45 007D 79 MOV A.C 46 007E 1F RAR 47 007F 4F MOV C.A 48 0080 7A MOV A.D 49 0081 1F RAR 50 0082 57 MOV D,A 51 0083 7B MOV A.E 52 0084 1F RAR 53 0085 5F MOV E,A 54 0086 05 DCR В г Уменьшить показания счетчика циклов 55 0087 C2 007C JNZ L00P2 1 Если счетчик не 0, надо еще сдвигать 56 008A C9 RET 1 Возврат из подпрограммы деления 57 008B 00 NOP FILE ADCONV GR0UP9 HEWLETT-PACKARD INTEL 8085 ASSEMBLER Wed, 10 Dec 1980, 14 48 PAGE 2 LINE LOC CODE ADDR SOURCE STATEMENT 58 008С 00 NOP 59 008D ЗЕ 08 SVC MVI A.08H i Подпрограмма обработки прерываний 60 008F D3 OA OUT OAH 1 Разрешить выход данных с преобразователя 8703 61 0091 AF XRA A 62 0092 DB 09 IN 09H Ввод данных с преобразователя 63 0094 83 ADD E ।******************************************* 64 0095 5F MOV E.A * 65 0096 7A MOV A,D *
Примеры конкретных разработок 189 66 0097 СЗ 00 ACI OOH ♦ Прибавить данные к содержимому регистров С, D и Е 67 0099 57 MOV D,A * 68 009А 79 MOV A.C * 69 009В СЕ 00 ACI OOH * 70 009D 4F MOV C,A 1♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦ 71 009Е СЗ 0069 JMP BACK I Конец подпрограммы обработки прерываний 72 00А1 00 NOP 73 00А2 00 MULT NOP I* Подпрограмма умножения 74 ООАЗ 21 0000 LXI H,OOOOH !♦ 75 00А6 06 8D MVI B,08DH I* Прибавляет 141 раз D - Е к Н - L 76 00А8 19 L00P4 DAD D I* 77 00А9 05 DCR В !♦ 78 ООАА С2 00A8 JNZ L00P4 !***********«***************************«*** 79 00AD 00 NOP 80 ООАЕ 54 MOV D,H 1 Переслать данные из H-LbD-E для деления 81 OOAF 5D MOV E,L ! 82 00В0 00 NOP 83 00В1 ОЕ 00 MVI C.OOH 84 00B3 CD 007A CALL DIVIDE I Разделить данные в С, D, Е на 128 85 00В6 00 NOP 86 00В7 CD OOBC CALL UPDAD • Вызов подпрограммы вывода на индикатор 87 OOBA 00 NOP 88 OOBB 76 HLT 1 Конец программы 89 OOBC 00 UPDAD NOP 1 Подпрограмма вывода на индикатор 90 OOBD ЗЕ FF MVI A.OFFH 91 OOBF D3 02 OUT 02H 1 Установить регистр направления для порта 92 00C1 AF XRA A 1 Очистить аккумулятор 93 00C2 7B MOV A.E 94 00C3 E6 OF ANI OFH I Маска 0000 DDDD 95 00C5 D3 00 OUT OOH ! Установить линии данных 96 00C7 F6 1F ORI 1FH 1 Маска 0001 DDDD 97 00C9 D3 00 OUT OOH 1 Включить цифру 0 98 OOCB AF XRA A 1 Очистить флаг переноса 99 OOCC 7B MOV A.E 100 OOCD 1F RAR f 101 OOCE 1F RAR 1 Циклическим сдвигом поменять 102 OOCF 1F RAR f местами 4 младших разряда 103 OODO 1F RAR j с 4-мя старшими 104 00D1 E6 1F ANI 1FH »• Маска 0001 DDDD 105 00D3 F6 10 ORI 10H ’ Маска 0001 DDDD 106 00D5 D3 00 OUT OOH 1 Установить линии данных 107 00D7 F6 30 ORI ЗОН 1 Маска ООП DDDD 108 00D9 D3 00 OUT OOH 1 Включить цифру 1 109 OODB AF XRA A 1 Очистить флаг переноса 110 00DC.F6 30 ORI 03H ’ Маска 0011 0000 111 CODE D3 00 OUT OOH 1 Установить линии данных 112 OOEO F6 FO ORI OFOH ’ Маска Ц1111 0000 113 00E2 D3 00 OUT OOH 1 Выставить цифры 2 & 2 114 00E4 76 HLT ’ Конец программы Errors = О
190 Глава 12 12.3. Задача 3 12.3.1. Постановка задачи На основе микропроцессора 8085 раз- работать систему измерения среднеквад- ратичного значения напряжения такого же типа, что и в задаче 2, но использующую для вычисления формулу Среднеквадратичное значение = где Xj-значения выборок, a N-общее ко- личество выборок напряжения. 12.3.2. Решение задачи В данном проекте предполагается раз- работать микропроцессорную систему, предназначенную для вычисления и выда- чи на дисплей среднеквадратичного значе- ния синусоидального напряжения. В этой системе используются следующие микро- схемы: микропроцессор Intel 8085, ОЗУ с таймером и портами Intel 8156, ППЗУ Intel 8755 и аналого-цифровой преобразо- ватель фирмы Teledyne. Среднеквадратичное значение вычис- ляется по выборкам входного напряжения, которое оцифровывается преобразовате- лем. Полученное значение выводится на два семисегментных индикатора. На рис. 12.6 изображена блок-схема разрабатываемой системы. 12.3.3. Описание аппаратуры Микропроцессорная система вычисле- ния среднеквадратичного значения была сконструирована с использованием ми- кросхем серии Intel 8085. В предлагаемой схеме используются восьмиразрядный ми- кропроцессор Intel 8085, ОЗУ с портами ввода-вывода и таймером Intel 8156 и ППЗУ с портами ввода-вывода Intel 8755. Аналого-цифровое преобразование выполняется преобразователем Teledyne 8703 и приведенной ниже схемой выборки и хранения. Схема аппаратного обеспече- ния проекта приведена на рис. 12.7. Ниже приводится описание и назначе- ние всех используемых в системе микро- схем. Микропроцессор 8085 Все вычислительные операции и функ- ции управления в системе выполняет ми- кропроцессор 8085. В системе не исполь- зуются многие возможности микропро- цессора, например сигналы прерывания INTR, RST 5.5 и TRAP. При включении питания система ини- циализируется сигналом RESET IN, ко- торый подключен к RC-цепочке для того, чтобы его длительность достигала 20 мсек. Микропроцессор имеет выходной сигнал RESET OUT для инициализации других микросхем системы. Сигналы AD0-AD7 на шине выпол- няют двойную функцию адресов и данных. В данной разработке используется ввод- вывод и разряды А8-А15 служат для вы- бора кристалла и определения функции ввода-вывода. В зависимости от состояния сигналов А8-А15 выбор периферийного устройства (8156 или 8755) и выполняемой им функции определяется по прилагаемой таблице на с. 191. Микропроцессор 8085 имеет внутрен- ний тактовый генератор, но в данном слу- чае требуется наличие внешнего кристалла (здесь применен генератор, работающий с частотой 4 МГц), подсоединенного к входным сигналам XI и Х2. Рис. 12.6. Блок-схема системы измерения сред- неквадратичного значения напряжения.
Примеры конкретных разработок 191 Адрес в памяти о|х|х|1|1|х|х|х|-|-|-|-|-|-|-П Адрес ввода/вывода Ixixiq.ixixixi-H-I-H-I-I- Адрес в памяти_____________________ о I х| х|о I о|XIх|х|-1-|-1-|-|-|-|~1 8755 Адрес ввода/вывода I|х|х|о|о|х|х|х|-|-|-|-|-|-|-|-| ОЗУ с портами ввода-вывода и таймером 8156 Микросхема 8156 обеспечивает связь между микропроцессором 8085 и схемой выборки/хранения, программируемым таймером и ОЗУ емкостью 256 байт. Порт А используется в качестве интерфейса со схемой выборки/хранения, а через порт В осуществляется синхронизация. Микросхема 8156 содержит командный регистр, разряды которого устанавли- ваются для выбора необходимых в данной разработке функций ввода-вывода сле- дующим образом: регистра (шестой и седьмой) определяют режим работы таймера, а остальные 14 разрядов используются как счетчик. Схема аналого-цифрового преобразования Преобразование входного переменного напряжения в цифровую форму осущест- вляется схемой выборки/хранения и кри- сталлом аналого-цифрового преобразова- теля 8703. Сначала входное переменное напряже- ние с помощью моста из четырех диодов IN4002 подвергается двухполупериодному Командный регистр. Состояние alt 3 определяет назначение разрядов порта С следующим образом РСО-прерывание порта А, РС1-буфер порта А заполнен, РС2-строб порта А, РСЗ-РС5-выход- ные разряды Регистр состояния служит для того, чтобы программа могла опрашивать фла- ги состояния ввода-вывода и таймера. Раз- ряды регистра состояния распределяются следующим образом (с. 194). Таймер работает в режиме счета им- пульсов тактового генератора. Работа тай- мера управляется парой восьмиразрядных регистров - командным и счетчиком им- пульсов. Два старших разряда командного выпрямлению без сглаживания. Выпрям- ленное напряжение через резистор 100 КОм подается на n-канальный поле- вой транзистор. Операционный усилитель 747, подключенный в режиме компарато- ра, обеспечивает возможность программ- ного управления отпиранием полевого транзистора. Вход компаратора подсоеди- нен к четвертому выходному разряду пор- та С. К входу другого операционного уси- лителя, соединенного последовательно с первым, подключен пленочный конденса- тор с диэлектриком из майлара емкостью 200 пФ. Выход этого операционного уси-
192 Глава 12 Рис. 12.7. Принципиальная схема аппаратуры для измерения среднеквадратичного значения напряжения.
Примеры конкретных разработок 193 7-1213
194 Глава 12 Регистр состояния. лителя подается на делитель напряжения на входе аналого-цифрового преобразова- теля. Восьмиразрядный выход АЦП со- единен с портом А микросхемы 8156. Процедура считывания текущего на- пряжения (рис. 12.8) начинается с выстав- ления высокого уровня сигнала РС4. Этот сигнал отпирает полевой транзистор для выборки и запоминания текущего напря- жения. Затем сигналом РСЗ инициируется начало преобразования. При этом АЦП выставляет сигнал «BUSY», который Импульс напряжения Начало преобразования Рис. 12.8. Временная диаграмма системы.
Примеры конкретных разработок 195 Рис. 12.9. Блок-схема системы. указывает процессору на то, что сейчас осуществляется преобразование. Этот сиг- нал инвертируется и через элемент И - НЕ подается на входную ножку РС2 кристал- ла 8156, что позволяет сигналам «BUSY» и «ABF» (РС1) управлять входным портом А (РС2). После заполнения буфера входного порта А вырабатывается стробирующий сигнал, который инициирует сигнал INTR, вызывающий прерывание RST 6.5 микро- процессора 8085. В результате этого пре- рывания процессор передаст управление процедуре его обработки. Эта процедура записывает данные в ОЗУ. После выполне- ния 128 выборок осуществляется вычисле- ние среднеквадратичного значения. Рис. 12.10. Арифметические операции. 12.3.4. Описание программного обеспечения После получения от АЦП 128 значений выборок напряжения данные возводятся в квадрат и суммируются. Затем получен- ная сумма делится на 128 (количество вы- борок) и из этого числа берется квад- ратный корень. Вычисленное значение с помощью таблицы преобразуется в деся- тичную форму и выводится на индикатор
196 Глава 12 Рис. 12.11. Вывод на индикаторы. Данные от АЦП Рис. 12.12. Аналого-цифровое преобразова- ние.
Примеры конкретных разработок 197 через выходной порт микросхемы 8755. Алгоритм вычисления квадратного корня основан на методе последова- тельных приближений. Число В, из кото- рого вычисляется квадратный корень, за- поминается в регистре. Первая оценка А возводится в квадрат и сравнивается с В. Если квадрат А меньше В, то А увеличи- вается или, в противном случае, умень- шается до тех пор, пока квадрат А не ста- нет приблизительно равным В. После этого А преобразуется в десятичную фор- му и выводится на индикаторы. На рис. 12.9 -12.12 представлены блок- схемы программного обеспечения проек- та. FILE RMS DJ HEWLETT-PACKARD INTEL 8085 ASSEMBLER Thu, 4 Jun 1981, 12 10 PAGE 1 LINE LOC CODE ADDR SOURCE STATEMENT 1 “8085” 2 ♦ Микропроцессорная система измерения среднеквадратичного 3 * значения входного напряжения 4 * 5 6 ♦ ♦INITIALIZATION ROUTINE 7 1890 LDIGIT EQU 1890Н , Младшая цифра 8 1891 HDIGIT EQU 1891Н , Старшая цифра 9 0100 ORG 01 ООН , Стартовый адрес 10ОН 10 0100 31 18FF START LXI SP.18FFH , Указатель стека в верхушке ОЗУ 11 0103 OE 80 MVI С.80Н , Счетчик выборок 12 0105 3E FF MVI A.OFFH , Установить порты кристалла 8156 13 0107 32 8002 STA 8002Н , Порт А — выходной 14 010A 32 8003 STA 8003Н , Порт В — выходной 15 010D 3E D4 MVI A.0D4H , Установить порты кристалла 8755 16 010F 32 9800 STA 9800Н , Порт А - входной, порт С - выход и синхронизация 17 0112 3E 10 MVI А, ЮН । Сбросить сигнал "SAMPLE" 18 0114 32 9803 STA 9803Н 19 0117 21 1800 LXI Н.1800Н , Установить указатель на начало таблицы 20 ♦ Начало загрузки в ОЗУ входных данных 21 011A 31 18FF LOAD LXI SP.18FFH , Указатель стека в верхушке ОЗУ 22 011D 3E 1B MVI А.1ВН , Маска прерываний 23 011F 30 SIM , Разрешить прерывание RST7.5 24 0120 3E 00 MVI А,ООН , Выставить сигнал "SAMPLE" 25 0122 32 9803 STA 9803Н , Разрешить выборку 26 0125 3E 83 MVI А.83Н I Установить таймер 27 0127 32 9805 STA 9805Н 28 012A 3E FF MVI A.0FFH , На 650 мкс 29 012C 32 9804 STA 9804Н 30 012F 3E D4 MVI A.0D4H Включить таймер 31 0131 32 9800 STA 9800Н 32 0134 FB EI , Разрешить прерывания 33 0135 C3 0135 WAIT1 JMP WAIT1 , Ждать до окончания 650 мкс 34 ♦ После остановки таймера и сброса сигнала "SAMPLE" управление вернется сюда 35 ♦ Начало аналого-цифрового преобразования 36 0138 3E 1B ADSTRT MVI А.18Н , Инициация преобразования 37 013A 32 9803 STA 9803Н 38 013D 00 NOP 39 013E 00 NOP 40 013F 3E 10 MVI А, ЮН . Сбросить сигнал "SAMPLE" 41 0141 32 9803 STA 9803Н 42 0144 3E 1D MVI A.1DH , Маска прерываний
198 Глава 12 43 0146 30 SIM , Разрешить прерывание RST6.5 44 0147 FB EI , Разрешить прерывания 45 0148 СЗ 014В WAIT2 JMP WAIT2 . Ждать до окончания преобразования 46 * 47 * 48 ♦ 49 * Подпрограммы обработки прерываний 50 0000 ORG OOOOH I Переход на начало программы 51 0000 СЗ 0100 JMP 01 ООН 52 * 53 * 54 ♦ 55 ♦ 56 003С ORG ОЗСН , Программное прерывание 7.5 57 003С ЗЕ 10 MVI А, ЮН , Сбросит сигнал "SAMPLE" FILE PMSDJ HEWLETT-PACKARD INTEL 8085 ASSEMBLER Thu, 4 Jun 1981, 12 10 PAGE 2 LINE 1 ОС CODE ADDR SOURCE STATEMENT 58 003Е 32 9803 STA 9803H 59 0041 ЗЕ 54 MVI A.54H ; Остановить таймер 60 0043 32 9800 STA 9800H 61 0046 СЗ 0138 JMP ADSTRT 62 ♦ 63 ♦ 64 ♦ 65 0034 ORG 034H , Программное прерывание 6.5 66 0034 СЗ 0005 JMP RST65 67 0005 ORG 05H 68 0005 34 9801 RST65 LDA 9801H , Ввод данных 69 0008 77 MOV M.A , Запомнить в таблице 70 0009 23 INX H ; Увеличить указатель таблицы 71 000А 0D DCR C , Уменьшить счетчик 72 000В СА 0300 JZ MAIN 73 000Е СЗ 011А JMP LOAD , Продолжить загрузку данных 74 ♦ 75 * 76 * * Получение суммы квадратов значений выборок 78 * 79 * 80 * 81 * 82 0300 ORG 0300H 83 0300 31 18FF MAIN LXI SP.18FFH 84 0303 ЗЕ 00 MVI A,OOH 85 0305 11 0000 MULT LXI D.OOH ; Начальное значение суммы =0 86 0308 F5 PUSH PSW 87 0309 D5 PUSH D , 'Запомнить сумму в стеке 88 030А 21 1800 LXI H.1800H , Установить указатель на начало таблицы 89 030D 1Е 08 MULTI MVI E.08H , Счетчик умножения 90 030F 46 MOV B,M , Взять данные 91 0310 ОЕ 00 MVI C.OOH , Очистка регистра для умножения 92 0312 В7 SHIFT ORA A , Очистить флаг переноса 93 0313 79 MOV A,C , Сдвиг на 16 разрядов влево 94 0314 17 RAL 95 0315 4F MOV C.A 96 0316 78 MOV A,В
Примеры конкретных разработок 199 97 0317 17 RAL 98 0318 47 MOV B.A 99 0319 D2 0323 JNC MULT2 100 031С 7Е MOV A.M , Взять данные 101 031D 81 ADD C ; Прибавить младший байт произведения 102 031Е 4F MOV C.A 103 031F 78 MOV A,В , Прибавить перенос к старшему байту 104 0320 СЕ 00 ACI OOH произведения 105 0322 47 MOV B.A 106 0323 1D MULT2 DCR E , Все восемь разрядов? 107 0324 С2 0312 JNZ SHIFT 108 0327 D1 ADD1 POP D 109 0328 F1 POP PSW ; Взять сумму квадратов выборок 11СГ0329 81 ADD C 111 032А F5 PUSH PSW 112 032В 78 MOV A,В ; Теперь готов 113 032С 8В ADC E ; и старший байт 114 032D 5F MOV E,A ; с переносом FILE: RMS:DJ HEWLETT-PACKARD: INTEL 8085 ASSEMBLER Thu, 4 Jun 1981, 12:11 PAGE LINE LOC CODE ADDR SOURCE STATEMENT 115 032E 7A MOV A,D 116 032F CE 00 ACI OOH 117 0331 57 MDV D,A 118 0332 D5 PUSH D 119 0333 23 INX H 120 0334 7D MOV A.L , Все ли 128 выборок 121 0335 EE 80 XRI 80H ; обработаны? 122 0337 C2 030D JNZ MULTI ; Взять следующие данные 123 033A D1 POP D ; Данные в регистровой паре D - Е 124 033B F1 POP PSW , и в аккумуляторе 125 033C B7 ORA A ; Очистить флаг переноса 126 033D 17 RAL Взять младший разряд после деления 127 033E 7B MOV A,E 128 033F 17 RAL 129 0340 5F MOV E.A 130 0341 7A MOV A.D 131 0342 17 RAL 132 0343 57 MOV D,A ; Сумма квадратов поделена на 128 в D - Е 133 0344 C3 0347 JMP SQRT ; Переход на извлечение квадратного корня 134 * 135 * 136 ♦ 137 ♦SQUARE ROOT ROUTINE 138 * 139 ♦ 140 0347 26 80 SQRT MVI H,80H , Старший разряд счетчика сдвига 141 0349 2E 00 MVI L.O ; Очистить двоичное число 142 034B 7D SQRT1 MDV A.L ; Взять двоичное число 143 034C B4 ORA H , Установить разряд в L 144 034D 6F MOV L.A 145 034F 47 MOV B,A ' Возвести в квадрат двоичное число 146 034F CD 037A CALL SQRB 147 0352 7A MOV A.D , В> D? Да, сбросить разряд 148 0353 B8 CMP В , Нет, оставить разряд
200 Глава 12 149 0354 DA 035F JC RSTBIT 150 0357 C2 0362 JNZ SHFTCTR , В =07 Нет^оставить разряды 151 035A 7B MOV A.E ; Да, сравнить младший байт 152 035B B9 CMP C , С > Е? Да, сбросить разряд 153 035C D2 0362 JNC SHFTCTR ' , Нет, оставить разряд 154 035F 7D RSTBIT MOV A.L , Взять последний установленный разряд 155 0360 AC XRA H , Сбросить этот разряд в числе 156 0361 6F MOV L.A 157 0362 7C SHFTCTR MOV A.H , Взять счетчик 158 0363 1F RAR , Сдвинуть вправо 159 0364 67 MOV H.A , Уже сдвигали 8 раз7 160 0365 D2 034B JNC SQRT1 , Да, пошли дальше 161 0368 45 MOV B.L , Квадрат L 162 0369 CD 037A CALL SQRB 163 036C 7B MOV A.E , Взять младший байт Н - L 164 036D 91 SUB C , Вычесть из квадрата L 165 036E BD CMP L , Разность <L или = L? 166 036F DA 0376 JC DONE , Да, L **2 ближе 167 0372 CA 0376 JZ DONE 168 0375 2C INR L , Нет, (L + 1) ближе 169 0376 4D DONE MOV C.L , Квадратный корень в регистре С 170 0377 C3 0397 JMP CDATA , Идти на вывод 171 * Thu, 4 Jun 1981, 12 11 PAGE 4 FILE RMS DJ HEWLETT-PACKARD INTEL 8085 ASSEMBLER LINE LOC CODE ADDR SOURCE STATEMENT 172 * 173 ♦ 174 * Подпрограмма возведения в квадрат содержимого регистра В 175 * Результат в регистровой паре В -С 176 * 177 037А D5 SQRB PUSH D 178 037В 1Е 08 MVI E.08H , Счетчик умножения 179 037D ОЕ 00 MVI С,ООН 180 037F 50 MOV D.B 181 0380 В7 SHIFT 1 ORA A , Очистить флаг переноса 182 0381 79 MOV А,С , Сдвиг на 16 разрядов влево 183 0382 17 RAL 184 0383 4F MOV С,А 185 0384 78 MOV А,В 186 0385 17 RAL 187 0386 47 MOV В,А 188 0387 D2 0391 JNC SQRB1 189 038А 7А MOV A.D , Взять данные 190 038В 81 ADD С 191 038С 4F MOV С,А 192 038D 78 MOV А,В 193 038Е СЕ 00 ACI ООН 194 0390 47 MOV В,А 195 0391 1D SQRB1 DCR Е , Все ли сделано? 196 0392 С2 0380 JNZ SHIFT 1 197 0395 D1 POP D 198 0396 С9 RET ; Все сделано 199 ♦ 200 ♦ 201 * Генерирует изображаемые символы
Примеры конкретных разработок 201 202 ♦ Помещает старшую и младшую цифры в ячейки "HDIGIT" и 203 * "LDIGIT" Подпрограмма использует таблицу перекодировки 204 * размером 256 байт и отдельную таблицу для сегментов 205 * для вывода содержимого регистра С 206 * 207 * 208 0397 21 0500 CDATA LXI H.0500H ; Таблица кодировки 209 039А 69 MOV L.C 210 039В 7F MOV A,M ; Сначала взять старшую цифру 211 039С 1F RAR Циклический сдвиг на 4 разряда для 212 039D 1F RAR маскирования двоично-десятичной цифры 213 039Е 1F RAR 214 039F 1F RAR 215 03АО E6 OF ANI OFH Маска двоично-десятичной цифры 216 03А2 21 0600 LXI H.0600H ; Ссылка на таблицу сегментов 217 03А5 6F MOV L,A Значение ссылки 218 03А6 7E MOV A,M Взять значение сегмента 219 03А7 32 1891 STA HDIGIT Запомнить для дальнейшего использования 220 ОЗАА 21 0500 LXI H.0500H Таблица кодировки 221 03AD 69 MOV L.C 222 ОЗАЕ 7E MOV A,M Теперь взять младшую цифру 223 03AF E6 OF ANI OFH Маска двоично-десятичной цифры 224 03В1 21 0610 LXI Н.06ЮН Таблица младшего сегмента 225 03В4 85 ADD L 226 03В5 6F MOV L,A Значение ссылки 227 03В6 7E MOV A.M Взять значение сегмента 228 03В7 32 1890 STA LDIGIT Запомнить для дальнейшего использования FILE RMS DJ HEWLETT-PACKARD INTEL 8085 ASSEMBLER Thu, 4 Jun 1981, 12 12 PAGE LINE LOC CODE ADDR SOURCE STATEMENT 229 03BA C3 0200 JMP DISPLY , Идти на вывод 230 * 231 * Подпрограмма вывода на индикатор. Входные данные — 232 * индицируемые цифры в ячейках 233 * "HDGH” (старшая) и "LDIGIT ' (младшая) 234 ♦ "HDIGIT” "LDIGIT” 235 * 236 0200 ORG 0200H 237 0200 21 8002 DISPLY LXI H.8002H , Установить порты индикатора 238 0203 36 FF MVI M.OFFH , Порт А—выходной 239 0205 23 INX H 240 0206 36 FF MVI M.OFFH . Порт В —выходной 241 0208 ЗА 1891 LDA HDIGIT ; Взять старшую цифру 242 020B 21 8000 LXI H.8000H . Выдать на индикатор 243 020E 77 MOV M.A 244 020F 23 INX H 245 0210 36 FD MVI M.OFDH ; Включить индикатор 246 0212 ЗА 1890 LDA LDIGIT , Взять младшую цифру 247 0215 36 FF MVI M.OFFH , Выключить индикатор 248 0217 2B DCX H 249 0218 77 MOV M.A , Выдать на индикатор 250 0219 23 INX H 251 021A k 36 FB MVI M.OFBH ; Выключить индикатор 252 021C ; oo NOP 253 021C l 00 NOP 254 021E : 36 FF MVI M.OFFH Выключить индикатор 255 022C l сз 0200 JMP DISPLY ; Повторить
202 Г лава 12 256 * 257 * 258 * 259 * 260 * Кодированная таблица сегментов 261 0600 ORG 0600Н 262 0600 20 HEX 20.F 1,05,41,DO,48,08,Е1,00,СО 263 0610 ORG 06 ЮН 264 0610 22 HEX 22.F3.07,43,D2,4A,0A,E3,02,C2 265 * 266 * 267 * 268 * 269 * Кодировочная таблица для полученного среднеь-квадратичного значения 270 ♦ Содержит значения в 271 ♦ двоично-десятичной форме 272 ♦ 273 ♦ 274 0500 ORG 0500H 275 0500 00 HEX 00,00,01,01,02,02,02,03,03,04,04,04,05,05,06,06 276 0510 06 HEX 06,07,07,08,08,08,09,09,10,10,10,11,11,12,12,12 277 0520 13 HEX 13,13,14,14,14,15,15,16,16,16,17,17,18,18,18,19 278 0530 19 HEX 19,20,20,20,21,21,22,22,22,23,23,24,24,24,25,25 279 0540 26 HEX 26,26,26,27,27,28,28,28,29,29,30,30,30,31,31,32 280 0550 32 HEX 32,32,33,33,34,34,34,35,35,36,36,36,37,37,38,38 281 0560 38 HEX 38,39,39,40,40,40,41,41,42,42,42,43,43,44,44,44 282 0570 45 HEX 45,45,46,46,46,47,47,48,48,48,49,49,60,50,50,51 283 0580 51 HEX 51,52,52,52,53,53,54,54,54,55,55,56,56,56,57,57 284 0590 58 HEX 58,58,58,59,59,60,60,60,61,61,62,62,62,63,63,64 285 05А0 64 HEX 64,64,65,65,66,66,66,67,67,68,68,68,69,69,70,70 FILE: RMS:DJ HEWLETT-PACKARD: INTEL 8085 ASSEMBLER Thu, 4 Jun 1981, 12:12 LINE LOC CODE ADDR SOURCE STATEMENT 286 05B0 70 HEX 70,71,71,72,72,72,73,73,74,74,74,75,75,76,76,76 287 05C0 77 HEX 77,77,78,78,78,79,79,80,80,80,81,81,82,82,82,83 288 05D0 83 HEX 83,84,84,84,85,85,86,86,86,87,87,88,88,88,89,89 289 05E0 90 HEX 90,90,90,91,91,92,92,92,93,93,94,94,94,95,95,96 290 05F0 96 HEX 96,96,97,97,98,98,98,99,99,99,99,99,99,99,99,99 291 ♦ 292 ♦ 293 ♦ 294 END PAGE 4 Errors - О
Примеры конкретных разработок 203 FILE: RMS:DJ CROSS REFERENCE TABLE PAGE 7 LINE# SYMBOL TYPE REFERENCES А A 12,15,17,22,24,26,28,30,36,40,42,57, 59,69,84,93,95,96,98,100,102,103,105, 112,114,115,117,120,127,129,130,132, 142,144,145,147,151,154,156,157,159, 163,182,184,185,187,189,191,192,194, 210,217,218,222.226,227,243,249 108 ADD1 A 36 ADSTRT A 61 В A 90,96,98,103,105,112,145,161,180,185, 187,192,194 С A 11,71,91,93,95,102,169,179,182.184. 191,209,221 208 CDATA A 170 D A 85,87,108,115,117,118,123,130,132, 147,177,180,189,197 237 DISPLY A 229,255 169 DONE A 166,167 Е A 89,106,114,127,129,151,163,178,195 Н A 19,70,88,119,140,157,159,208,216,220, 224,237,239,242.244,248.250 8 HDIGIT A 219,241 L A 120.141,142,144.154 156,161,168,169, 209,217,221,226 7 LDIGIT A 228,246 21 LOAD A 73 М A 69,90,100.210.218,222,227.238,240, 243,245,247,249,251,254 83 MAIN A 72 85 MULT A 89 MULTI A 122 106 MULT2 A 99 PSW A 86,109,11 1,124 68 RS765 A 66 154 RSTBIT A 149 157 SHFTCTR A 150,153 92 SHIFT A 107 181 SHIFT 1 A 196 SP A 10,21,83 177 SQRD A 146,162 195 SQRB1 A 188 140 SORT A 133 142 SQRT1 A 160 10 START A 33 WAIT1 A 33 45 WAIT2 A 45 Задачи и вопросы С помощью любой микропроцессор- ной инструментальной системы разрабо- тайте и создайте программное и аппарат- ное обеспечение для приведенных ниже задач, используя микропроцессоры и вспо- могательные микросхемы. 12.1. Измеритель емкости. Изучите RC-цепь на рис. 12.13. Напряжение на кон- денсаторе меняется по закону V0(t) = _ ke - t/Rc ПрИ постоянном RC это напря- жение разряжается до k/е. Измеряя проме- жуток времени т, можно по формуле С = — т/R при известном R вычислить значе- ние С. Разработайте программное и аппаратное обеспечение для микропро- цессорной системы, которая бы с по- мощью усилителя заряжала конденсатор до 10 В, измеряла время разряжения и вы- числяла величину емкости конденсатора. 12.2. Разработайте и создайте программ- ное и аппаратное обеспечение микропро- цессорной системы управления семисег- ментными индикаторами, способной выс- вечивать числа от 00 до FF. 12.3. Разработайте микропроцессорный таймер. Таймер должен показывать время в часах, минутах и секундах. 12.4. Требуется измерять температуру
204 Глава 12 Рис. 12.13. терморезистора с помощью произвольно- го микропроцессора. Терморезистор управляет длительностью временного им- пульса мультивибратора с одним устой- чивым состоянием. Можно использовать счетчик для преобразования значения тем- пературы в десятичную форму, после чего надо полученное число градусов Цельсия вывести на индикатор. Разработайте необ- ходимое программное и аппаратное обес- печение. 12.5. Разработайте микропроцессорную систему для тестирования пяти различных типов входных схем-ИЛИ, ИЛИ-НЕ, И, И - НЕ и ИСКЛЮЧАЮЩЕЕ ИЛИ. Систе- ма должна подавать входные сигналы на каждую микросхему и считывать выход- ной сигнал. Затем надо сравнить полу- ченный результат с таблицей истинности, хранящейся в памяти. Если сравнение про- ходит успешно, надо выключить красный светодиод, в противном случае включить его. 12.6. Разработайте микропроцессорную систему, которая с помощью аналого-ци- фрового преобразователя считывала бы величину температуры терморезистора и выдавала бы это значение на два семи- сегментных индикатора. 12.7. Разработайте микропроцессорную систему для измерения мощности, рассеи- ваемой на резисторе 1 кОм. Система Рис. 12.14. должна считывать величину падения на- пряжения на резисторе и вычислять мощ- ность по формуле V2/R (рис. 12.14). 12.8. Требуется разработать систему с приоритетными векторными прерыва- ниями, используя схему последовательно- го соединения прерывающих устройств. Предполагается, что восемь прерывающих устройств DEV0, ..., DEV7 последователь- но выставляют соответствующие команды RST0, ..., RST7 на шину данных. Также предполагается, что устройства DEV0, ... ..., DEV7-аналого-цифровые преобразо- ватели Teledyne 8703 (DEV7 имеет макси- мальный, a DEV0-минимальный приори- тет) или их эквиваленты. а) Нарисуйте блок-схему управляющей программы для ввода данных с аналого- цифровых преобразователей. б) Разработайте и создайте программ- ное и аппаратное обеспечение. 12.9. Требуется разработать микропро- цессорную систему для управления во- семью цифровыми индикаторами. Ис- пользуя индикаторы фирмы Texas Instruments TIL311 (14-штырьковые шест- надцатеричные индикаторы со средней степенью интеграции) или их эквиваленты, выполните следующие шаги задания: а) Разработайте требуемый интерфейс, используя минимум аппаратуры. б) Нарисуйте блок-схему программно- го обеспечения. в) Преобразуйте блок-схему в про- грамму на языке ассемблера. г) Реализуйте программное и аппарат- ное обеспечение. 12.10. Разработайте микропроцессорную комбинационную защелку, различающую комбинацию из четырех цифр. Четыре цифры должны быть введены с шестнадца- теричной клавиатуры за 16 с. Если за отве- денное время была введена правильная комбинация, защелка открывается. Если же за 16 с не были введены все четыре
Примеры конкретных разработок 205 цифры либо комбинация была неправиль- ная, на дисплей выводится сообщение об ошибке-«Е». Для начала повторной по- пытки ввода комбинации система отводит 6 с. Если за это время не была введена пер- вая цифра либо повторная попытка опять была неудачной, включается сигнал трево- ги. При включении сигнала тревоги вы- ключается питание на системе. 12.11. Разработайте микропроцессорное реле времени. Система должна работать следующим образом: оператор вводит три цифры (две для количества минут и одну для десятых долей минуты) с клавиатуры и затем нажимает ключ «GO». Система выполняет обратный счет времени на трех семисегментных индикаторах. 12.12. Разработайте следующую микро- процессорную систему (рис. 12.15). Система управляет тремя семисегментны- ми индикаторами и тремя функцио- нальными ключами. Сначала на индикато- рах высвечивается «ООО». При нажатии ключа увеличения число на индикаторе увеличивается на 1, а при нажатии ключа уменьшения число уменьшается на 1. Ключ изменения режима переводит систе- му из режима вывода шестнадцатеричных Ключ увеличения Рис. 12.15. Ключ уменьшения Ключ смены режима чисел в режим вывода десятичных чисел и обратно. В шестнадцатеричном режиме система выводит числа в диапазоне от «00» до «FF», а в десятичном режиме-от «ООО» до «256». 12.13. Разработайте следующую микро- процессорную систему (рис. 12.16). Система сканирует шестнадцатиклавиш- ную клавиатуру и управляет тремя семи- сегментными индикаторами. При нажатии клавиши система вводит ее значение и вы- водит на самый правый индикатор. Содер- жимое индикаторов при этом сдвигается влево, причем содержимое самого левого индикатора пропадает. Рис. 12.16.
Приложение А СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА 8085 ФИРМЫ INTEL0 А.1. Что такое система команд?* 2) Любой компьютер, вне зависимости от того, как определять это понятие, может делать только то, что ему предписывает делать человек. Программа для компью- тера-это последовательность команд, ко- торые компьютер распознает и в соответ- ствии с этим выполняет определенные действия. Поместив один раз программу в область памяти, доступную для процес- сора, можно заставить компьютер выпол- нить закодированную в этой программе последовательность действий столько раз, сколько раз Вам требуется решить одну и ту же задачу. Набор команд, которые умеет распознавать микропроцессор 8О85А, зафиксирован в конструкции кри- сталла. Каждая команда компьютера иниции- рует выполнение определенного действия. В микропроцессоре 8085А реализована группа команд пересылки данных между регистрами, между регистрами и ОЗУ и между регистрами и портами ввода-вы- вода. Кроме того, имеются арифметиче- ские и логические команды, команды ус- ловного и безусловного перехода, ко- манды управления. Микропроцессор рас- познает эти команды только в том случае, когда они закодированы в двоичном пред- ставлении. п Перепечатано с разрешения фирмы Intel Corporation, copyright 1976. 2) Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976. А.2. Символы и сокращения1) Следующие символы и сокращения ис- пользуются в кратком описании системы команд микропроцессора 8085А. Символ Значение Аккумулятор Регистр А Адрес 16-разрядный адрес Данные 8-разрядные данные Данные 16 16-разрядные данные Байт 2 Второй байт команды Байт 3 Третий байт команды Порт 8-разрядный адрес уст- ройства ввода-вывода г, г1, г2 Один из регистров DDD,SSS Битовые комбинации, указы- вающие на один из регистров А. В, С, D, Е, Н, L (DDD-приемник, SSS-источ- ник): ООЭили SSS Имя регистра 111 А ООО В 001 С 010 D 011 Е 100 Н 101 L гр Одна из регистровых пар: В определяет пару В-С, в ре- гистре В-старшие разряды, в регистре С-младшие. D определяет пару D - Е, в ре- гистре D - старшие разряды, в регистре Е-младшие Н - определяет пару Н - L, в ре- п Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976.
Система команд микропроцессора 8085 207 RP rh rl PC SP I'm LABEL гистре H - старшие разряды, в регистре L-младшие SP определяет 16-разрядный регистр-указатель стека Комбинация разрядов, указы- вающая на одну из пар реги- стров: RP Регистровая пара 00 В-С 01 D-E 10 H-L И SP Первый регистр (содержит старшие разряды) из указывае- мой регистровой пары Второй регистр (содержит младшие разряды) из указы- ваемой регистровой пары 16-разрядный регистр счетчика команд (для ссылки на стар- шие и младшие 8 разрядов ис- пользуются соответственно обозначения РСН и PCL) 16-разрядный регистр указате- ля стека (для ссылки на стар- шие и младшие 8 разрядов ис- пользуются соответственно обозначения SPH и SPL) m-й разряд регистра г (раз- ряды пронумерованы от 7 до 0 слева направо) 16-разрядный адрес подпро- граммы Флаги условий: Z Нуль S Знак Р Четность CY Перенос АС Дополнительный перенос ( ) Содержимое ячейки памяти или регистра, указанного в скобках <- «Пересылается в» П Логическое И у ИСКЛЮЧАЮЩЕЕ ИЛИ U Логическое ИЛИ + Сложение — Двухоперандное вычитание * Умножение ++ «Заменяется на» — «Дополнение» (например, (А)) п Номер ячейки программного прерывания (от 0-7) NNN Двоичное представление номе- ра ячейки программного пре- рывания (000-111) В справочнике по системе команд, при- веденном ниже, дается подробное описа- ние всех команд микропроцессора 8085А. Описание каждой команды состоит из сле- дующих пунктов: 1. Формат макроассемблера MCS-85, состоящий из мнемоники команды и полей операндов, расположен в первой строке описания. 2. В той же строке в скобках приводит- ся название команды. 3. В следующей строке приведено сим- вольное описание действий команды. 4. За символьным следует словесное описание. 5. После словесного описания приведе- но схематичное изображение двоичной формы команды. 6. Последние четыре строки содержат информацию о выполнении команды. Сна- чала приводится количество процессорных циклов и состояний, требуемых для выпол- нения команды. Если возможны два ва- рианта выполнения команды, как, напри- мер, у команд условного перехода (условие выполняется или не выполняется), приво- дятся оба значения времени, разделенные косой чертой. Затем показываются спо- собы адресации операндов. В последней строке указываются флаги условий, на ко- торые влияет данная команда. А.З. Форматы команд и данных1) Используемая в системе MCS-85 па- мять организована в 8-разрядные байты, причем каждый байт имеет свой уни- кальный 16-разрядный физический адрес. Микропроцессор 8085А способен адресо- ваться к адресному пространству до 64 Кбайт (К = 1024, или 210, т.е. при 64 Кбайт памяти максимальный адрес со- ответствует десятичному числу 65535). Адресуемая память может быть как ОЗУ, п Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976.
208 Приложение А так и ПЗУ, но обязательно произвольного доступа. Данные в памяти хранятся в виде 8-раз- рядных двоичных целых чисел: Слово данных —I—I—I—I—I—I—Г“ D7 De D5 D4 D3 D2 D-| Do Старший бит Младший бит При хранении данных в регистре или ячейке памяти необходимо определить по- рядок записи разрядов. В микропроцессо- ре 8085А бит 0 определен как младший значащий разряд (LSB), а бит 7-как стар- ший значащий разряд (MSB). Команды микропроцессора 8085А мо- гут занимать в памяти один, два или три байта. Многобайтовые команды должны храниться в последовательных ячейках па- мяти, причем в качестве адреса команды используется адрес первого байта. Кон- кретный формат команды зависит от опе- рации, которую выполняет эта команда. А.4. Способы адресации^ Часто данные, которые используются командой, хранятся в памяти. Многобай- товые данные, например команды, хранят- ся в памяти в последовательных ячейках, п Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976. начиная с младшего байта данных и далее по порядку. Микропроцессор 8085А имеет четыре способа адресации данных, храня- щихся в регистрах или ячейках памяти. Прямой-второй и третий байты ко- манды содержат адрес данных (младшие разряды адреса содержатся во вто- ром, а старшие - в третьем байте команды). Регистровый - в команде определяется регистр или пара реги- стров, в которых хранят- ся данные. Регистровый косвенный-в команде определяется пара реги- стров, содержащая адрес данных (старшие разряды адреса содер- жатся в первом регистре пары, младшие-во вто- ром). Непосредственный - данные содержат- ся непосредствен- но в команде. Данные могут быть как 8-раз- рядные, так и 16-разрядные (сначала младшие разряды данных, потом старшие). Не считая команд перехода и обработ- ки прерываний, команды выполняются по- следовательно в том порядке, в котором они записаны в память. Команды перехода могут указывать адрес следующей выпол- няемой команды двумя способами: Прямой - команда перехода содержит адрес следующей выполняемой команды (во всех случаях, кроме команды RST, второй байт ко- манды содержит младшие раз- ряды адреса, а третий байт- старшие разряды). Регистровый косвенный-команда перехо- да указывает регистровую пару, в которой содержится адрес сле- дующей выполняемой команды (старшие разряды адреса нахо- дятся в первом регистре пары, а младшие разряды-во вто- ром).
Система команд микропроцессора 8085 209 Команда RST является специальной однобайтовой командой перехода, обычно используемой при обработке прерываний. Эта команда содержит трехбитовое поле, содержимое которого, умноженное на во- семь, является адресом команды, на кото- рую передается управление. А.5. Флаги условий0 В микропроцессоре 8085А существует пять флагов условий, связанных с выпол- нением команд: Нуль, Знак, Четность, Перенос и Дополнительный перенос. Каждый из них представляется в виде одноразрядного регистра (или триггера) микропроцессора. Флаг устанавливается занесением в соответствующий разряд 1, а сбрасывается занесением 0. Во всех случаях, когда это не оговари- вается особо, команды воздействуют на флаги условий следующим образом: Нуль-если результат выполнения ко- манды имел значение 0, то флаг устанавливается, в противном случае сбрасывается. Знак-если старший разряд результата выполнения команды имеет зна- чение 1 (число отрицательное), то флаг устанавливается, в против- ном случае сбрасывается. Четность-если сумма битов результа- та выполнения команды по мо- дулю 2 равна 0 (т.е. если число единиц в нем четное), то флаг устанавливается, в противном случае (т.е. когда число единиц в результате нечетное) сбрасы- вается. Перенос-если в результате выполне- ния команды был перенос (например, в результате сло- жения) или заем (в результа- те вычитания или сравнения) из старшего значащего раз- ряда, то флаг устанавливает- ся, в противном случае сбрасывается. Дополнительный перенос-если коман- да вызывает перенос из третьего в четвертый разряд результата, то флаг устана- вливается, в противном слу- чае сбрасывается. Этот флаг устанавливается командами сложения, вычитания, увели- чения, уменьшения, сравне- ния и логическими операция- ми, но в основном исполь- зуется в команде DAA-де- сятичной коррекции аккумулятора. А.6. Справочник по системе команд0 В данном разделе приводится описание всех команд микропроцессора 8085А, раз- деленных на пять групп следующим обра- зом: 1. Команды пересылки данных-пе- ресылают данные между регистрами или между регистрами и ячейками памяти. Включают команды пересылки, загрузки, записи и обмена. 2. Арифметические команды-склады- вают, вычитают, увеличивают и умень- шают данные в регистрах и памяти. 3. Логические команды - выполнение операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, сравнения, сдвига и дополнения данных в регистрах или ячейках памяти. 4. Команды перехода-условные и бе- зусловные переходы, вызовы подпро- грамм, возвраты из подпрограмм и про- граммные прерывания. 5. Команды работы со стеком, ввод- вывод и управление процессором - ко- манды работы со стеком, чтение входных портов, запись в выходные порты, уста- новка и чтение масок прерываний и флагов условий. Описанные в справочнике форматы ко- манд соответствуют коду, генерируемому ассемблером, используемым в инструмен- тальных системах Intellec® фирмы Intel. 1} Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976. п Все мнемонимики являются собствен- ностью фирмы Intel Corporation, copyright 1976.
210 Приложение А А.6.1. Команды пересылки данных Команды этой группы служат для пере- сылки данных между регистрами, а также между регистрами и ячейками памяти. Эти команды не оказывают воздействия на флаги условий. MOV rl, г2 (пересылка регистровая) (П)-(г2) Содержимое регистра г2 пересылается в регистр rl. I 0 1 1 1 D D D 1 1 S S S Циклов: 1 Состояний: 4(8085), 5(8080) Адресация: регистровая Флаги: не изменяются MOV г, М (пересылки из памяти) (г)-((H) (L)) Содержимое ячейки памяти, адрес кото- рой находится в регистровой паре H-L, пересылается в регистр г. 1 0 1 Г I " D D D I I 1 1 0 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: не изменяются MOV М, г (пересылка в память) ((H)(L))*-(r) Содержимое регистра г пересылается в ячейку памяти, адрес которой находится в паре регистров H-L. I 1 Г 1 0 1110 I I S S S Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: не изменяются MVI г, данные (пересылка непосредствен- ная) (г)*-(байт 2) Содержимое второго байта команды пере- сылается в регистр г. Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: не изменяются MVI М, данные (пересылка в память не- посредственная) ((H) (L)) <-(байт 2) Содержимое второго байта команды пере- сылается в ячейку памяти, адрес которой находится в регистрах Н и L. I 0 I I 0 I 1 I I । 1 0 I 1 I 1 I 0 Данные Циклов: 3 Состояний: 10 Адресация: непоср./регистр. косвенная Флаги: не изменяются LXI гр, данные 16 (загрузка регистровой пары непосредствен- ная) (гЬ)«-(байт 3) (г1)«-(байт 2) Содержимое третьего байта команды за- писывается в старший регистр пары гр, а содержимое второго байта команды-в младший регистр пары. I 0 0 I R Р I I T 0 0 0 1 Младшие разряды данных Старшие разряды данных Циклов: 3 Состояний: 10 Адресация: непосредственная Флаги: не изменяются LDA, адрес (загрузка аккумулятора пря- мая) (А)*-((байт 3)(байт 2)) Содержимое ячейки памяти, адрес кото- рой находится во втором и третьем байтах команды, пересылается в регистр А. ! । । । ! j 0 0 11 10 10 I 0 0 Г I D D D I I 1 1 0 Данные Младшие разряды данных Старшие разряды данных
Система команд микропроцессора 8085 211 Циклов: 4 Состояний: 13 Адресация: прямая Флаги: не изменяются STA, адрес (запоминание аккумулятора прямое) ((байт 3)(байт 2))*-(А) Содержимое аккумулятора пересылается в ячейку памяти, адрес которой находит- ся во втором и третьем байтах коман- ды. ----1---1---1---1---1--1--1— 0 0 1 1 0 0 1 0 Младшие разряды данных Старшие разряды данных Циклов: 4 Состояний: 13 Адресация: прямая Флаги: не изменяются LHLD, адрес (загрузка регистров Н и L прямая) (Н)«-((байт 3)(байт 2)) (Ь)«-((байт 3)(байт 2)+1) Содержимое ячейки памяти, адрес кото- рой расположен во втором и третьем бай- тах команды, пересылается в регистр Н. Содержимое следующей ячейки памяти пересылается в регистр L. ----1---1---1---1---1----1--1---- 0 0 10 10 10 Младшие разряды данных Старшие разряды данных Циклов: 5 Состояний: 16 Адресация: прямая Флаги: не изменяются SHLD, адрес (запоминание регистров Н и L прямое) ((байт 3)(байт 2))<-(L) ((байт 3)(байт 2)4-1) (Н) Содержимое регистра L пересылается в ячейку памяти, адрес которой располо- жен во втором и третьем байтах команды. Содержимое регистра Н пересылается в следующую ячейку памяти. —I---1---1---1--1--1-1— 0 0 1 0 0 0 1 0 Младшие разряды данных Старшие разряды данных Циклов: 5 Состояний: 16 Адресация: прямая Флаги: не изменяются LDAX гр (загрузка аккумулятора косвен- ная) (А)«- ((гр)) Содержимое ячейки памяти, адрес кото- рой расположен в регистровой паре гр, пересылается в аккумулятор. Учтите: в ка- честве регистровой пары в данном случае можно указать лишь «В» (регистры В и С) или «D» (регистры D и Е). I 0 0 I R Р I I I 0 0 10 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: не изменяются STAX гр (запоминание аккумулятора кос- венное) ((гр))-(А) Содержимое регистра А пересылается в ячейку памяти, адрес которой находится в регистровой паре гр. Учтите: в качестве регистровой пары в данном случае можно указать лишь «В» (регистры В и С) или «D» (регистры D и Е). Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: не изменяются XCHG (обмен регистров Н и L с регистра- ми D и Е) (H)-(D) (L)^(E) Регистровые пары Н-L и D-Е обмени- ваются содержимым. 1110 10 11
212 Приложение А Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: не изменяются А.6.2. Арифметические команды Команды этой группы выполняют арифметические операции над данными в регистрах и памяти. Кроме особо указанных случаев, все ко- манды этой группы воздействуют на фла- ги условий Нуль, Знак, Четность, Перенос и Дополнительный перенос стандартным образом. Все операции вычитания выполняются как двухоперандные арифметические дей- ствия и устанавливают флаг переноса для указания о заеме и сбрасывают этот флаг при отсутствии заема в старший разряд. ADD г (сложение регистровое) (А)*-(А) 4-(г) Содержимое регистра г прибавляется к со- держимому аккумулятора. Результат по- мещается в аккумулятор. I II I 1 0 0 0 0 Г г S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС ADD М (сложение с памятью) (A)^-(A) + ((H)(L)) Содержимое ячейки памяти, адрес кото- рой находится в регистрах Н и L, приба- вляется к содержимому аккумулятора. Ре- зультат помещается в аккумулятор. I I I I I I I 1 0 0 0 0 1 1 0 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС ADI, данные (сложение непосредственное) (А) <- (А) + (байт 2) Содержимое второго байта команды при- бавляется к содержимому аккумулятора. 1 I 1 I 0 I I I 0 0 I 1 I 1 I 0 Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС ADC г (сложение регистровое с перено- сом) (A)<-(A) + (r) + (CY) Содержимое регистра г и бит переноса прибавляются к содержимому аккумуля- тора. Результат помещается в аккумуля- тор. I I I I 1 0 0 0 1 I I S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС ADC М (сложение памяти с переносом) (AK(A) + ((H)(L)) + (CY) Содержимое ячейки памяти, адрес кото- рой находится в регистрах Н и L, и содер- жимое флага переноса прибавляются к со- держимому аккумулятора. Результат по- мещается в аккумулятор. ----1----1---1---1---1----1---1--- 1 0 0 0 1 1 1 0 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС ACI, данные (сложение непосредственное с переносом) (А) 4-(А) + (байт 2) + (CY) Содержимое второго байта команды и со- держимое флага переноса прибавляются к содержимому аккумулятора. Результат помещается в аккумулятор. 1 I 1 I 0 Т" г I 0 1 I I 1 ! I 1 I 0 ч Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС SUB г (вычитание регистровое) (А)«-(А) — (г) Содержимое регистра г вычитается из со- держимого аккумулятора. Результат по- мещается в аккумулятор
Система команд микропроцессора 8085 213 1111 10 0 10 I I S S S содержимого аккумулятора. Результат по- мещается в аккумулятор. ---1--1-1--1-1--1--1- 10 0 11110 Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС SUB М (вычитание памяти) (ak(A)-((H)(L)) Содержимое ячейки памяти, адрес кото- рой находится в регистрах Н и L, вычи- тается из содержимого аккумулятора. Ре- зультат помещается в аккумулятор. ----1---1--1---1---1---1--1--- 10 0 10 110 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС SUI, данные (вычитание непосредствен- ное) (А) 4- (А) - (байт 2) Содержимое второго байта команды вы- читается из содержимого аккумулятора. Результат помещается в аккумулятор. 1 1 I 1 I I 0 I I г 1 0 1 I 1 I 0 Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС SBB г (вычитание регистровое с заемом) (А) <-(A)-(r)-(CY) Содержимое регистра г и содержимое флага переноса вычитаются из содержи- мого аккумулятора. Результат помещает- ся в аккумулятор. I Л I n I I 10 0 11 "Г I в S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС SBB М (вычитание памяти с заемом) (A)«-(A)-((H)(L))-(CY) Содержимое ячейки памяти, адрес ко- торой находится в регистрах Н и L, и со- держимое флага переноса вычитаются из Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС SBI, данные (вычитание непосредственное с переносом) (А) <- (А)-(байт 2)-(CY) Содержимое второго байта команды и со- держимое флага переноса вычитаются из содержимого аккумулятора. Результат по- мещается в аккумулятор. I 1 I 1 I 0 I I 1 1 I ' 1 I 1 I 0 Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС INR г (увеличение регистра) (г)*-(г)+1 Содержимое регистра г увеличивается на 1. Заметьте: команда воздействует на все флаги состояния, кроме CY. I 0 0 I I D D D I г 1 0 0 Циклов: 1 Состояний: 4(8085), 5(8080) Адресация: регистровая Флаги: Z, S, Р, АС INR М (увеличение памяти) ((H)(L))*-((H)(L))+1 Содержимое ячейки памяти, адрес ко- торой находится в регистрах Н и L, увели- чивается на 1. Заметьте: команда воздей- ствует на все флаги состояния, кроме CY. 1 1 1--1 1 1 1 0-------------------------------0-110-10-0 Циклов: 3 Состояний: 10 Адресация: регистровая косвенная Флаги: Z, S, Р, АС DCR г (уменьшение регистра) (г) <- (г) - 1 Содержимое регистра г уменьшается
214 Приложение А на 1. Заметьте: команда воздействует на все флаги состояния, кроме CY. -----1--------1----1----1---1----1---- О О D D D 1 0 1 Циклов: 1 Состояний: 4(8085), 5(8080) Адресация: регистровая Флаги: Z, S, Р, АС DCR М (уменьшение памяти) ((H)(L))<-((H)(L))—1 Содержимое ячейки памяти, адрес ко- торой находится в регистрах Н и L, умень- шается на 1. Заметьте: команда воздей- ствует на все флаги состояния, кроме CY. I I I I I I I 0 0 110 10 1 Циклов: 3 Состояний: 10 Адресация: регистровая косвенная Флаги: Z, S, Р, АС INX гр (увеличение регистровой пары) (rh)(rl) (rh)(rl) + 1 Содержимое регистровой пары гр уве- личивается на 1. Заметьте: команда не воз- действует на флаги условий. 1 -- 0 0 1 — R Р 1 1 1 0 0 11 Циклов: 1 Состояний: 6(8085), 5(8080) Адресация: регистровая Флаги: не изменяются DCX гр (уменьшение регистровой пары) (rh)(rl)*-(rh)(rl)— 1 Содержимое регистровой пары гр уменьшается на 1. Заметьте: команда не воздействует на флаги условий. 0 0 R Р 1 0 1 1 Циклов: 1 Состояний: 6(8085), 5(8080) Адресация: регистровая Флаги: не изменяются DAD гр (сложение регистровой пары с па- рой H-L) (H)(L)^-(H)(L) + (rh)(rl) Содержимое регистровой пары гр складывается с содержимым регистровой пары Н-L. Результат помещается в реги- стровую пару Н-L. Заметьте: команда воздействует только на флаг состояния CY. Этот флаг устанавливается при нали- чии переноса из старшего разряда старше- го регистра, в противном случае флаг сбрасывается. I 0 0 I R Р I - Г " I 10 0 1 Циклов: 3 Состояний: 10 Адресация: регистровая Флаги: CY DAA (десятичная коррекция аккумулято- ра) Восьмиразрядное число, содержащееся в аккумуляторе, переводится в формат двух четырехразрядных десятичных цифр в двоичном представлении следующим образом: 1. Если значение четырех младших раз- рядов аккумулятора больше 9 или если флаг АС установлен, к содержимому акку- мулятора добавляется число 6. 2. Если значение старших четырех раз- рядов аккумулятора больше 9 или если флаг CY установлен, число 6 прибавляется к старшим четырем разрядам аккумулято- ра. Команда воздействует на все флаги. ----1---1---1----1---1---1----1 0 0 1 0 0 1 1 1 Циклов: 1 Состояний: 4 Флаги: Z, S, Р, CY, АС А.6.3. Логические команды Команды этой группы выполняют ло- гические (булевские) операции над данны- ми в регистрах и ячейках памяти. Кроме особо упомянутых случаев, все команды воздействуют на флаги Нуль, Знак, Четность, Перенос и Дополни- тельный перенос стандартным образом. ANA г (операция И регистровая) (А)<-(А)П(г) Содержимое регистра г логически умно- жается на содержимое аккумулятора. Ре- зультат помещается в аккумулятор. Для процессора 8085-флаг CY сбрасывается, флаг АС устанавливается. Для 8080-флаг CY сбрасывается, во флаг АС заносится
Система команд микропроцессора 8085 215 результат логического сложения третьих разрядов операндов. I Г I I 10 10 0 I I S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС ANA М (операция И над памятью) (А) (А) П ((H) (L)) Содержимое ячейки памяти, адрес кото- рой находится в регистрах Н и L, логиче- ски умножается на содержимое аккумуля- тора. Результат помещается в аккумуля- тор. 8085-флаг CY сбрасывается, флаг АС устанавливается. 8080-флаг CY сбрасы- вается, во флаг АС заносится результат ло- гического сложения третьих разрядов опе- рандов. -----1 1 1 1 1 1-----1---- 10---------------------------------10-0-110 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС ANI, данные (операция И непосредствен- ная) (А)«-(А) П (байт 2) Содержимое второго байта команды логи- чески умножается на содержимое аккуму- лятора. Результат помещается в аккумуля- тор. 8085-флаг CY сбрасывается, флаг АС устанавливается. 8080-флаг CY сбрасы- вается, в флаг АС заносится результат ло- гического сложения третьих разрядов опе- рандов. 1 I 1 I 1 I I I 0 0 I 1 I 1 I 0 Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС XRA г (операция ИСКЛЮЧАЮЩЕЕ ИЛИ регистровая) (А)*-(А) ¥(г) Выполняется операция ИСКЛЮЧАЮ- ЩЕЕ ИЛИ над содержимым регистра г и содержимым аккумулятора. Результат помещается в аккумулятор. Флаги CY и АС сбрасываются: I I I I 10 10 1 I I S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС XRA М (операция ИСКЛЮЧАЮЩЕЕ ИЛИ над памятью) (A)-(A) ¥((H)(L)) Выполняется операция ИСКЛЮЧАЮ- ЩЕЕ ИЛИ над содержимым ячейки памя- ти, адрес которой находится в регистрах Н и L, и содержимым аккумулятора. Ре- зультат помещается в аккумулятор. Флаги CY и АС сбрасываются. ----1 1 1 1 1--1---1--- 10-----------------------------10-1110 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС XRI, данные (операция ИСКЛЮЧАЮ- ЩЕЕ ИЛИ непосредствен- ная) (А)<-(А) ¥(байт 2) Выполняется операция ИСКЛЮЧАЮ- ЩЕЕ ИЛИ над содержимым второго бай- та команды и содержимым аккумулятора. Результат помещается в аккумулятор. Флаги CY и АС сбрасываются. I 1 I 1 I 1 I I 0 1 I 1 I 1 I 0 Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС ORA г (операция ИЛИ регистровая) (A)«-(A)U(r) Выполняется операция ИЛИ над содер- жимым регистра г и содержимым аккуму- лятора. Результат помещается в аккумуля- тор. Флаги CY и АС сбрасываются. Г" I I 10 110 I I S S S
216 Приложение А Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС OR А М (операция ИЛИ над памятью) (А) (A) U ((H) (L)) Выполняется операция ИЛИ над содер- жимым ячейки памяти, адрес которой на- ходится в регистрах Н и L, и содержимым аккумулятора. Результат помещается в ак- кумулятор. Флаги CY и АС сбрасываются. ----1 1 1-1 1 1-1--- 10--------------------------------110-110 Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС ORI, данные (операция ИЛИ непосред- ственная) (А) 4-(A) U (байт 2) Выполняется операция ИЛИ над содер- жимым второго байта команды и содер- жимым аккумулятора. Результат поме- щается в аккумулятор. Флаги CY и АС сбрасываются. CMP М (сравнение памяти) (А)-((Н)(Ц) Содержимое ячейки памяти, адрес кото- рой находится в регистрах Н и L, вычи- тается из содержимого аккумулятора. Со- держимое аккумулятора не изменяется. Флаги состояния устанавливаются по ре- зультату вычитания. Флаг Z устанавливается, если (А) = = ((H)(L)). Флаг CY устанавливается, если (А) < <((Н)(Ц). ----1----1---1----1---1 I I Циклов: 2 Состояний: 7 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС CPI, данные (сравнение непосредственное) (А)-(байт 2) Содержимое второго байта команды вы- читается из содержимого аккумулятора. Флаги состояния устанавливаются по ре- зультату вычитания. Флаг Z устанавли- вается, если (А) = (байт 2). Флаг CY устана- вливается, если (А) < (байт 2). Данные Данные Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС СМР г (сравнение регистровое) (А)-(г) Содержимое регистра г вычитается из со- держимого аккумулятора. Содержимое ак- кумулятора не изменяется. Флаги состоя- ния устанавливаются по результату вычи- тания. Флаг Z устанавливается, если (А) = = (г). Флаг CY устанавливается, если (А) < (г) Циклов: 2 Состояний: 7 Адресация: непосредственная Флаги: Z, S, Р, CY, АС RLC (циклический сдвиг влево) (Ап+1) <-(Ап); (Ао)<-(А7) (CY)<-(A7) Содержимое аккумулятора сдвигается влево на один разряд. В младший разряд и во флаг CY заносится содержимое стар- шего разряда. Команда воздействует толь- ко на флаг CY. ----1----1---1---1---1----1---1--- 0 0 0 0 0 1 1 1 1 Г 1 1 10 111 I I S S S Циклов: 1 Состояний: 4 Адресация: регистровая Флаги: Z, S, Р, CY, АС Циклов: 1 Состояний: 4 Флаги: CY RRC (циклический сдвиг вправо) (Ап)^(Ап+1); (А7)«-(А0) (CY)-(Ao)
Система команд микропроцессора 8085 217 Содержимое аккумулятора сдвигается вправо на один разряд. В старший разряд и во флаг CY заносится содержимое млад- шего разряда. Команда воздействует толь- ко на флаг CY. ----1----1---1---1----1---1---1---- 0 0 0 0 1 1 1 1 Циклов: 1 Состояний: 4 Флаги: CY RAL (циклический сдвиг влево через пере- нос) (An+1)<-(An); (CY)«-(A7) (Ao)-(CY) Содержимое аккумулятора сдвигается влево на один разряд через флаг переноса. В младший разряд заносится содержимое флага переноса, а во флаг переноса зано- сится значение, сдвигаемое из старшего разряда. Команда воздействует только на флаг переноса. I I I I I I I 0 0 0 1 0 1 1 1 Циклов: 1 Состояний: 4 Флаги: CY RAR (циклический сдвиг вправо через перенос) (An)<-(An+1); (CY<-(A0) (A7)*-(CY) Содержимое аккумулятора сдвигается вправо на один разряд через флаг перено- са. В старший разряд заносится содержи- мое флага переноса, а во флаг переноса за- носится значение, сдвигаемое из младшего разряда. Команда воздействует только на флаг переноса. I I I I I I I 0 0 0 1 1 1 1 1 Циклов: 1 Состояний: 4 Флаги: CY СМА (обратный код аккумулятора) (А)*-(А) Содержимое аккумулятора изменяется на обратное (поразрядно 0 заменяется на 1, а 1 - на 0). Команда не воздействует на флаги условий. ~1—।—।—।—।—।—Г~ 0 0 10 1111 Циклов: 1 Состояний: 4 Флаги: не изменяются СМС (обратный код переноса) (CY)«-(CY) Содержимое флага переноса изменяется на обратное (0 заменяется на 1, а 1 -на 0). Команда не воздействует на остальные флаги условий. Циклов: 1 Состояний: 4 Флаги: CY STC (установить флаг переноса) (CY) 1 Флаг переноса устанавливается в 1. Остальные флаги не изменяются. ----1---1---1---1---1---1---1-- 0 0 110 111 Циклов: 1 Состояний: 4 Флаги: CY А.6.4. Команды перехода Команды этой группы прерывают по- следовательное выполнение команд ми- кропроцессора. Ни одна из команд перехо- да не воздействует на флаги условий. Существует два типа команд перехода: условные и безусловные. Команды безус- ловного перехода выполняют лишь спе- циальную операцию над регистром PC (счетчиком команд). Команды условного перехода для определения своего действия проверяют состояние одного из четырех флагов условий. Допустимые в командах этой группы условия могут быть опреде- лены следующим образом: Условия ССС NZ - не нуль (Z = 0) 000 г-нуль^=1) 001 NC-нет переноса (CY = 0) 010 С-перенос (CY= 12 ОН РО - нечетный (Р = 0) 100 РЕ-четный (Р=1) 101 Р - положительный (S = 0) 110
218 Приложение А М - отрицательный (S = 1) 111 JMP, адрес (безусловный переход) (PC) (байт 3) (байт 2) Управление передается на команду, адрес которой находится во втором и третьем байтах этой команды. 1 1 I 1 I I I I I 0 0 0 0 1 I 1 Младшие разряды адреса Старшие разряды адреса Циклов: 3 Состояний: 10 Адресация: непосредственная Флаги: не изменяются Зусловие, адрес (условный переход) если (ССС), то (PC) <- (байт 3) (байт 2) Если указанное условие истинно, то упра- вление передается команде, адрес которой находится во втором и третьем байтах этой команды, в противном случае вы- полняется команда, следующая за данной. I 1 1 I I ССС I I 0 1 0 Младшие разряды адреса Старшие разряды адреса Циклов: 2/3(8085), 3(8080) Состояний: 7/10(8085), 10(8080) Адресация: непосредственная Флаги: не изменяются CALL, адрес (вызов подпрограммы) ((SP)-IWPCH) ((SP)-2)«-(PCL) (SP)«-(SP)-2 (PS) «- (байт 3) (байт 2) Старшие восемь разрядов адреса следую- щей команды записываются в ячейку па- мяти, адрес которой на 1 меньше содержи- мого указателя стека. Младшие восемь разрядов адреса следующей команды за- писываются в ячейку, адрес которой на 2 меньше содержимого указателя стека. Содержимое регистра SP уменьшается на 2. Управление передается команде, адрес которой находится во втором и третьем байтах этой команды. I 1 I 1 Г I I I I I 0 0 110 1 Младшие разряды адреса Старшие разряды адреса Циклов: 5 Состояний: 18(8085), 17(8080) Адресация: непоср./регистр. косвенная Флаги: не изменяются С условие, адрес (условный вызов подпро- граммы) если (ССС), то ((SP)-1)<-(РСН) ((SP)-2)<-(PCL) (SP)«-(SP)-2 (PC)«-(байт 3) (байт 2) Если указываемое условие истинно, то ко- манда исполняется так же, как и команда CALL (см. выше), в противном случае управление передается на следующую за этой команду. I 1 1 О О О I I 1 0 0 Младшие разряды адреса Старшие разряды адреса Циклов: 2/5(8085), 3/5(8080) Состояний: 9/18(8085), 11/17(8080) Адресация: непоср./регистр. косвенная Флаги: не изменяются RET (возврат из подпрограммы) (PCL)«-((SP)) (PCH)«-((SP)+ 1) (SP) <- (SP) + 2 Содержимое ячейки памяти, адрес кото- рой находится в регистре SP, заносится в младшие разряды регистра PC. Содер- жимое ячейки памяти, адрес которой на 1 больше содержимого регистра SP, зано- сится в старшие восемь разрядов регистра PC. Содержимое регистра SP увеличивает- ся на 2. ----1----1---1----1---1----1---1--- 1 1 0 0 1 0 0 1 Циклов: 3 Состояний: 10 Адресация: регистровая косвенная
Система команд микропроцессора 8085 219 Флаги: не изменяются R условие (условный возврат из подпро- граммы) если (ССС), то (PCL)*-((SP)) (PCH)<-((SP)+ 1) (SP)<-(SP) + 2 Если указанное условие истинно, то ко- манда исполняется так же, как и команда RET (см. выше), в противном случае упра- вление передается на следующую за этой команду. Г" 1 1 - 1 1 ССС 1 1 0 0 0 Циклов: 1/3 Состояний: 6/12(8085), 5/11(8080) Адресация: регистровая косвенная Флаги: не изменяются RST п (программное прерывание) ((SP) — 1) <-(РСН) ((SP) — 2) <-(PCL) (SP)«-(SP) —2 (PC)<-8*(NNN) Старшие восемь разрядов адреса следую- щей команды записываются в ячейку па- мяти, адрес которой на 1 меньше содержи- мого указателя стека. Младшие восемь разрядов адреса следующей команды за- писываются в ячейку, адрес которой на 2 меньше содержимого указателя стека. Содержимое регистра SP уменьшается на 2. Управление передается команде, адрес которой определяется как NNN*8. 1 1 Т"^ 1 I 1 1 N N N 1 1 1 Циклов: 3 Состояний: 12(8085), 11(8080) Адресация: регистровая косвенная Флаги: не изменяются Счетчик адреса после выполнения ко- манды : 15 14 1312 11 10 987654321 0 0 0 0 0 0 0 0 0 0 0 N N N 0 0 0 PCHL (переход по регистрам Н и L кос- венный - занесение регистровой пары Н-L в регистр PC) (рснк(Н) (PCL)-(L) Содержимое регистра Н заносится в стар- шие восемь разрядов регистра PC. Содер- жимое регистра L заносится в младшие во- семь разрядов регистра PC. I I г I I I П I I 1 1 1 О 1 0 0 1 Циклов: 1 Состояний: 6(8085), 5(8080) Адресация: регистровая Флаги: не изменяются А.6.5. Команды работы со стеком, ввод-вывод и управление процессо- ром Команды этой группы выполняют опе- рации ввода-вывода, управляют стеком и изменяют внутренние управляющие фла- ги. Кроме тех случаев, когда об этом не го- ворится особо, команды этой группы не влияют на флаги условий. PUSH гр (загрузка в стек) ((SP)_i)<_(rh) ((SP) — 2) <-(rl) (SP)«-(SP) —2 Содержимое старшего регистра регистро- вой пары гр записывается в ячейку памяти, адрес которой на 1 меньше содержимого регистра SP. Содержимое младшего реги- стра регистровой пары гр записывается в ячейку памяти, адрес которой на 2 мень- ше содержимого регистра SP. Содержимое регистра SP уменьшается на 2. Заметьте: в качестве регистровой пары гр не может быть указан регистр SP.____________ 1 1 1 I R Р I I I 0 10 1 Циклов: 3 Состояний: 12(8085), 11(8080) Адресация: регистровая косвенная Флаги: не изменяются PUSH PSW (загрузка в стек слова состоя ния процессора) ((SP)—1)«-(А) ((SP) — 2)0 *-(CY), ((SP) — 2)2 ♦-(Р), ((SP) — 2)4+-(AC), ((SP) — 2)6 <-(Z), ((SP)«-(SP) — 2 ((SP)t — 2\ <-X ((SP) —2)3«-X ((SP) —2)5*-X ((SP) — 2)7«-(S) Х-не определен. Содержимое регистра А записывается в ячейку памяти, адрес которой на 1 мень-
220 Приложение А ше содержимого регистра SP. Значения флагов условий собираются в слове со- стояния процессора, которое записывается в ячейку памяти по адресу, на 2 меньшему, чем содержимое регистра SP. Содержимое регистра SP уменьшается на 2. Циклов: 3 Состояний: 12(8085), 11(8080) Адресация: регистровая косвенная Флаги: не изменяются D7 Dq D5 D4 D3 D2 Di Do S Z X АС X Р X CY Х-не определен POP гр (выгрузка из стека) (ri)<-((SP)) (rh)<-((SP)+l) (SP) <- (SP) + 2 Содержимое ячейки памяти, адрес кото- рой находится в регистре SP, записывается в младший регистр регистровой пары гр. Содержимое ячейки памяти, адрес кото- рой на 1 больше содержимого регистра SP, записывается в старший регистр регистро- вой пары гр. Содержимое регистра SP уве- личивается на 2. Заметьте: в качестве реги- стровой пары гр не может быть указан регистр SP. 1 1 1 I R Р Т I I 0 0 0 1 Циклов: 3 Состояний: 10 Адресация: регистровая косвенная Флаги: не изменяются POP PSW (выгрузка из стека слова со- стояния процессора) (CY)<-((SP))0 (P)<-((SP))2 (ACW(SP))4 (ZW(SP))6 (S)H(SP))7 (A) <-((SP) + 1) (SP) <-(SP) + 2 Содержимое ячейки памяти, адрес кото- рой находится в регистре SP, используется для восстановления значений флагов усло- вий. Содержимое ячейки памяти, адрес ко- торой на 1 больше содержимого регистра SP, записывается в регистр А. Содержимое регистра SP увеличивается на 2. Циклов: 3 Состояний: 10 Адресация: регистровая косвенная Флаги: Z, S, Р, CY, АС XTHL (обмен верхушки стека с регистро- вой парой H-L) (L)-w-((SP)) (H)~((SP)+1) Регистр L обменивается содержимым с ячейкой памяти, адрес которой находит- ся в регистре SP. Регистр Н обменивается содержимым с ячейкой памяти, адрес ко- торой на 1 больше содержимого регистра SP. Циклов: 5 Состояний: 16(8085), 18(8080) Адресация: регистровая косвенная Флаги: не изменяются SPHL (запись регистровой пары H-L в SP) (SP)+-(H)(L) Содержимое регистров Н и L (16 разрядов) записывается в регистр SP. —I----1---1--1---1--1--1— 1 1 1 1 0 0 0 1 Циклов: 1 Состояний: 6(8085), 5(8080) Адресация: регистровая Флаги: не изменяются IN, порт (ввод) (А) <- (данные) Данные, выставленные на шину данных указанным портом, записываются в ре- гистр А. 1 1 I 1 I I 0 I 1 1 1 I I 0 I 1 I 1 Порт Циклов: 3 Состояний: 10 Адресация: прямая
Система команд микропроцессора 8085 221 Флаги: не изменяются OUT, порт (вывод) (данные)<- (А) Содержимое регистра А выдается на шину данных для передачи в указанный порт. 1 1 I 1 I I 0 " ' Г "1 1 0 1 0 1 1 I 1 Порт Циклов: 3 Состояний: 10 Адресация: прямая Флаги: не изменяются EI (разрешить прерывания) Прерывания разрешаются начиная с мо- мента выполнения следующей команды. Во время выполнения команды EI преры- вания запрещены. Циклов: 1 Состояний: 4 Флаги: не изменяются Запрещается выставлять команду EI на шину в ответ на сигнал INTA во время INA (8085). DI (запретить прерывания) Прерывания запрещаются с начала обра- ботки команды DI. Во время выполнения команды DI прерывания запрещены. 1—I-1-1 Г 11110 0 11 Циклов: 1 Состояний: 4 Флаги: не изменяются Запрещается выставлять команду DI на шину в ответ на сигнал INTA во время ци- кла INA (8085). HLT (останов) Процессор останавливается. Содержимое регистров и значения флагов не изменяет- ся (8080). Во время выполнения команды вырабатывается второй сигнал ALE для стробирования информации, определяю- щей состояние цикла HALT (8085). I I I I I I | 0 1110 110 Циклов: 1 + (8085), 1(8080) Состояний: 5(8085), 7(8080) Флаги: не изменяются NOP (пустая операция) Не выполняется никакой операции. Содер- жимое регистров и значения флагов усло- вий не меняются. ----1—I—Г—I—I—I I 00000000 Циклов: 1 Состояний: 4 Флаги: не изменяются RIM (чтение масок прерываний - только 8085) Команда RIM загружает в аккумулятор данные, имеющие отношение к прерыва- ниям и очередному вводу. Эти данные со- держат следующую информацию: - текущее значение масок для аппаратных прерываний RST 5.5,6.5 и 7.5 (1-запреще- ние); - текущее значение флага разрешения пре- рываний (1 -прерывания разрешены), кроме случая, когда команда RIM сле- дует сразу за прерыванием TRAP (см. ниже). - запрос на аппаратное прерывание (т.е. сигнал получен, но не обслужен) типов RST 5.5, 6.5 или 7.5; - очередные входные данные. В случае если Вы хотите восстановить текущее значение состояния прерываний, когда команда RIM следует сразу же за прерыванием TRAP, она должна быть частью процедуры обработки прерываний. В разряд 3 аккумулятора в этом конкрет- ном случае загружается значение флага разрешения прерываний, предшествовав- шее прерыванию TRAP. Если команда RIM следует за прерываниями RST 5.5, 6.5, 7.5 или INTR, то текущее состояние флага разрешения прерывания инвертируется. В разряд 6 аккумулятора (17.5) загружается значение триггера RST 7.5, который всегда установлен в 1, даже когда прерывания бы- ли предварительно маскированы (см. ко- манду SIM). Код операции Содержимое аккумулятора после выпол- 7 0
222 Приложение А нения команды RIM: SID 17 5 16 5 15 5 IE М7 5 Мб 5 М5.5 1 1 1 । -Маски прерываний (-Флаг разрешения прерываний ------------Запросы на прерывания ------------Очередные входные данные Циклов: 1 Состояний: 4 Флаги: не изменяются SIM (установить маски прерываний — только для процессора 8085) При выполнении команды SIM содержи- мое аккумулятора (предварительно загру- женного) используется для выполнения следующих функций: - запрограммировать маску прерываний для аппаратных прерываний RST 5.5, 6.5 и 7.5; - сбросить в исходное состояние триггер прерывания RST 7.5; - загрузить выходной триггер SOD. Для программирования масок преры- ваний установите разряд 3 аккумулятора в 1, а затем установите в 1 разряды 0, 1 или 2 для запрещения соответственно преры- ваний RST 5.5, 6.5 или 7.5. После этого вы- полните команду SIM. Если при выполне- нии команды SIM разряд 3 аккумулятора равен 0, то регистр масок прерываний не меняется. Если при выполнении команды SIM разряд 4 аккумулятора равен 1, то триггер прерывания RST 7.5 сбрасывается. Прерывание RST 7.5 отличается тем, что его триггер всегда взведен положи- тельным перепадом на ножке RST 7.5 кри- сталла 8085, даже при запрещении перехо- да на процедуру обработки прерывания. Этот триггер остается взведенным вплоть до сброса сигналом RESET IN, вырабаты- ваемым командой SIM при наличии 1 в разряде 4 аккумулятора. Сигнал RESET IN всегда устанавли- вает все три маски прерываний RST. Если вовремя выполнения команды SIM разряд 6 аккумулятора содержит 1, то значение разряда 7 аккумулятора загру- жается в триггер типа «защелка» SOD. Ко- манда SIM не воздействует на триггер SOD, если в разряде 6 аккумулятора нахо- дится 0. Триггер SOD всегда сбрасывается сигналом RESET IN. о I I I I I 1 I I I 0 0 1 1 о с о с |м7 s|m6 ь|м5 b| □ Маска RST 5 5 Маска RST 6 5 Маска RST 7 5 ------Разрешение установки масок ------Сброс тригера RST 7 5 ------ Неопределен ------Разрешение установки ------Последовательные входные данные Циклов: 1 Состояний: 4 Флаги: не изменяются Таблица АЛ. Система команд микропроцессоров 8080А/8085А Типы машинных циклов: F Четырехтактная выборка команды S Шеститактная выборка команды R Чтение памяти I Ввод-вывод-чтение W Запись в память О Ввод-вывод-запись В Задержка шины X Переменная, или зависящая от режима двоичная цифра DDD Битовая комбинация, указывающая на регистр-приемник В = 000, С = 001, D = = 010, Память = 110 SSS Битовая комбинация, указывающая на регистр-источник Е = 011, Н = 100, L = 101, А = 111 RP Регистровая пара ВС = 00, HL = 10 DE = 01, SP = И + Более длинная последовательность машинных циклов, возникающая независимо от оценки условий на 8080А • Особый цикл чтения (R), возникающий на 8080А
Система команд микропроцессора 8085 223 Команда Код Байт Состояния Циклы I085A IOIOA ACI DATA CE data 2 7 7 F R АОС REG 1000 1SSS i 4 4 F АОС M 8E i 7 7 F R ADO REG 1000 OSSS i 4 4 F ADD M 86 i 7 7 F R А01 DATA C6 data 2 7 7 F R ANA REG 1010 OSSS 1 4 4 F ANA M A6 1 7 7 F R ANI DATA E6 data 2 7 7 F R CALL LABEL CO addr 3 18 17 SRRWW’ CC label ОС addr 3 9/18 11/17 SR./SR RWW* CM LABEL FC addr 3 9/18 11/17 SR./SR RWW* CMA 2F 1 4 4 F CMC 3F 1 4 4 F CMP REG 1011 1SSS 1 4 4 F CMP M BE 1 7 7 F R CNC LABEL 04 «oar 3 9/18 11/17 SR./SR RWW* CNZ LApc. C4 addr 3 9/18 11/17 SR./SR RWW* CP LABEL F4 addr 3 9/18 11/17 SR./SR RWW* CPE LABEL EC addr 3 9/18 11/17 SR./SR RWW* CPI DATA FE data 2 7 1 F R CPO LABEL E4 addr 3 9/18 11/17 SR./SR RWW* CZ LABEL CC addr 3 9/18 11/17 SR./SR RWW* OAA 27 1 4 4 F ОАО RP OORP 1001 1 10 10 F 8 8 OCR REG 00SSS101 1 4 5 F* OCR M 35 1 Ю 10 F R W OCX RP OORP 1011 1 6 5 S* DI F3 1 4 4 F El F8 1 4 4 F HLT 76 1 5 7 F 8 IN PORT OB data 2 Ю 10 F R 1 INR REG OOSS Si 00 i 4 5 F* INR M 34 1 Ю 10 F R W INX RP OORP 0011 1 6 5 S* JC LABEL DA addr 3 7/10 10 F R/F R R’ JM label FA addr 3 7/10 10 F R/F R Rt JMP LABEL C3 addr 3 Ю 10 F R R JNC LABEL 02 addr 3 7/10 10 F R/F R Rt JNZ LABEL C2 addr 3 7/10 10 F R/F R Rt JP LABEL F2 addr 3 7/10 10 F R/F R Rt JPE LABEL EA addr 3 7/10 10 F R/F R Rt JPO LABEL E2 addr 3 7/10 10 F R/F R Rt JZ LABEL CAaddr 3 7/10 10 F R/F R Rt LOA AODR ЗА addr 3 13 13 F R R R LOAX RP 000X 1010 1 7 7 F R LHLO AOOR 2A addr 3 16 16 F R R R R Команда Код Байт Состояния 8085X80801 циклы LXI RP.OATA16 OORP 0001 data16 3 10 10 F R R MOV REG,REG 0100 DSSS i 4 5 F* MOV M.REG 0111 OSSS i 7 7 F W MOV REG.M 01D0 0110 i 7 7 F R MVI REG.OATA OODO D110data 2 7 7 F R MVI M.OATA 36 data 2 10 10 F RW NOP 00 1 4 4 F ORA REG 1011 OSSS 1 4 4 F ORA M B6 1 7 7 F R OR) DATA F6 data 2 7 7 F R OUT PORT 03 data 2 10 10 FRO PCHL E9 1 6 5 S* POP RP 11 RP 0001 1 10 10 F R R PUSH RP 11 RP 0101 1 12 11 SWW’ RAL 17 1 4 4 F RAR IF 1 4 4 F RC 08 1 6/12 5/11 S/S R R* RET C9 1 10 10 F R R RIM (8085A only) 20 1 4 - F RLC 07 1 4 4 F RM F8 1 6/12 5/11 S/S R R* RNC DO 1 6/12 5/11 S/S R R* RNZ CO 1 6/12 5/11 S/S R R* RP FO 1 6/12 5/1 S/S R R* RPE E8 1 6/12 5/11 S/S R R* RPO EO 1 6/12 5/11 S/S R R* RRC OF 1 4 4 F RST N 11XX X111 1 12 11 SWW* R2 C8 1 6/12 5/11 S/S R R* SBB REG 1001 1SSS 1 4 4 F S8B M 9E 1 7 7 F R SBl DATA OE oata 2 7 7 F R SHLO AOUP 22 add. 3 16 16 F R RWW SIM (8085A only) 30 1 4 F SPHL F9 1 6 5 S* STA AOOR 32 addr 3 13 13 F R R W STAX RP 000X 0010 1 7 7 F W STC 37 1 4 4 F SUB REG 1001 OSSS 1 4 4 F sue M 96 1 7 7 F R SUI DATA 06 data 2 7 7 F R XCHG EB 1 4 4 F XRA REG 1010 1SSS 1 4 4 F XRA M AE 1 7 7 F R XRl DATA EE data 2 7 7 F R XTHL E3 1 16 18 F R R WW
224 Приложение А Таблица А.2. Система команд микропроцессора 8085А в последовательности кодов операции D8 = константа или логическое либо арифметическое выражение, результатом которого является 8-разрядное число ADR 16-разрядный адрес D16 = константа или логическое либо арифметическое выражение, результатом которого является 16-разрядное число Код опер. Мнемоника Код опер. Мнемоника Код опер. Мнемон. Код опер. Мнемон. Код опер. Мнемон. Код опер. Мнемон. 00 NOP 2В DCX H 56 MOV D.M 81 ADD C AC XRA H D7 RST 2 01 LXI B.D16 2С INR L 57 MOV D.A 82 ADD D AD XRA L D8 RC 02 STAX В 2D DCR L 58 MOV E.B 83 ADD E AE XRA M D9 — 03 INX В 2Е MVI L,D8 59 MOV E.C 84 ADD H AF XRA A DA JC Adr 04 INR В 2F СМА 5A MOV E.D 85 ADD L BO ORA В DB IN D8 05 DCR В 30 SIM 5B mov E.E 86 ADO M B1 ORA C DC CC Adr 06 MVI B,D8 31 LXI SP.D16 5C mov E.H 87 ADD A B2 ORA D DD — 07 RLC 32 STA Adr 5D mov E.L 88 ADC В B3 ORA E DE SBI D8 08 — 33 INX SP 5E mov E.M 89 ADC C B4 ORA H DF RST 3 09 DAD В 34 INR M 5F mov E.A 8A ADC D B5 ORA L EO RPO 0А LDAX В 35 DCR M 60 MOV H.B 88 ADC E B6 ORA M E1 POP H ОВ DCX В 36 MVI M,D8 61 MOV H.C 8C ADC H B7 ORA A E2 JPO Adr ос INR С 37 STC 62 mov H.D 8D ADC L B8 CMP В E3 XTHL 0D DCR С 38 — 63 MOV H.E 8E ADC M B9 CMP C E4 CPO Adr 0Е MVI C.D8 39 DAD SP 64 MOV H.H 8F ADC A BA CMP D E5 PUSH H 0F RRC ЗА LDA Adr 65 MOV H.L 90 SUB В BB CMP E E6 ANI D8 10 — ЗВ DCX SP 66 MOV H.M 91 SUB C BC CMP H E7 RST 4 11 LXI D.D16 ЗС INR A 67 MOV H.A 92 SUB D BD CMP L E8 RPE 12 STAX D 3D DCR A 68 mov L.B 93 SUB E BE CMP M E9 PCHL 13 INX D ЗЕ MVI A.D8 69 mov L.C 94 SUB H BF CMP A EA JPE Adr 14 INR D 3F CMC 6A MOV L.D 95 SUB L CO RNZ EB XCHG 15 DCR D 40 MOV B.B 68 MOV L.E 96 SUB M C1 POP В EC CPE Adr 16 MVI D.D8 41 MOV B.C 6C MOV L.H 97 SUB A C2 JNZ Adr ED — 17 RAL 42 MOV B.D 6D MOV L.L 98 sbb В C3 JMP Adr EE XRI D8 18 — 43 MOV B.E 6E MOV L.M 99 SBB C C4 CNZ Adr EF RST 5 19 DAD D 44 MOV B.H 6F mov L.A 9A SBB D C5 PUSH В FO RP 1А LDAX D 45 MOV B.L 70 mov M.B 98 SBB E C6 ADI D8 F1 POP PSW 13 DCX D 46 MOV B.M 71 mov M.C 9C SBB H C7 RST 0 F2 JP Adr 1C INR Е 47 MOV B.A 72 MOV M.D 9D SBB L C8 RZ F3 DI 1D DCR Е 48 MOV C.B 73 MOV M.E BE SBB M C9 RET Adr F4 CP Adr 1Е MVI E.D8 49 MOV c.c 74 MOV M.H 9F SBB A CA JZ F5 PUSH PSW 1F RAR 4А MOV C.D 75 MOV M.L AO ANA В CB — F6 ORI D8 20 RIM 4В MOV C.E 76 HLT A1 ANA C CC cz Adr F7 RST 6 21 LXI H.D16 4С MOV C.H 77 MOV M.A A2 ANA D CD CALL Adr F8 RM 22 SHLD Adr 4D MOV C.L 78 MOV A,В A3 ANA E CE ACI D8 F9 SPHL 23 INX Н 4Е MOV C.M 79 MOV A.C A4 ANA H CF RST 1 FA JM Adr 24 INR Н 4F MOV C.A 7A MOV A.D A5 ANA L DO RNC FB El 25 DCR Н 50 MOV D.B 7B MOV A.E A6 ANA M D1 POP D FC CM Adr 26 MVI H.D8 51 MOV D.C 7C MOV A.H A7 ANA A D2 JNC Adr FD — 27 DAA 52 MOV D.D 7D MOV A.L A8 XRA В D3 OUT D8 FE CPI D8 28 — 53 MOV D.E 7E MOV A.M A9 XRA C D4 CNC Adr FF RST 7 29 DAD Н 54 MOV D.H 7F MOV A.A AA XRA D D5 PUSH D 2А LHLD Adr 55 MOV O.L 80 ADD В AB XRA E D6 SUI D8 Таблица А.З. Система команд микропроцессора 8085 по функциональным группам Мнемоника Описание Код команды (1) Пересылка, загрузка и запоминание MOV rl, r2 Пересылка регистр-регистр 0 1 D D D S S S MOV M, r Пересылка регистр-память 0 1 1 1 0 S S S MOV r, M Пересылка память-регистр 0 1 D D D 1 1 0 MVI r Пересылка непоср. в регистр 0 0 D D D 1 1 0 MVI M Пересылка непоср. в память 0 0 1 1 0 1 1 0 LXI В Загрузка непосредственная регистр, пары В-С 0 0 0 0 0 0 0 1 LXI D Загрузка непосредственная регистр, пары D-E 0 0 0 1 0 0 0 1 LXI H Загрузка непосредственная регистр, пары H-L 0 0 1 0 0 0 0 1 STAX В Запоминание аккум, косвенное 0 0 0 0 0 0 1 0
Система команд микропроцессора 8085 225 Продолжение табл. А.З Мнемоника Описание Код команды (1) STAX D Запоминание аккум, косвенное 0 0 0 1 0 0 1 0 LDAX В Загрузка аккум, косвенная 0 0 0 0 1 0 1 0 LDAX D Загрузка аккум, косвенная 0 0 0 1 1 0 1 0 STA Запоминание аккум, прямое 0 0 1 1 0 0 1 0 LDA Загрузка аккум, прямая 0 0 1 1 1 0 1 0 SHLD Запоминание Н-L прямое 0 0 1 0 0 0 1 0 LHLD Загрузка Н-L прямая 0 0 1 0 1 0 1 0 XCHG Обмен между парами регистров D-Е и H-L Операции со стеком 1 1 1 0 1 0 1 1 PUSH В Запись в стек per. пары В - С 1 1 0 0 0 1 0 1 PUSH D Запись в стек per. пары D-E 1 1 0 1 0 1 0 1 PUSH H Запись в стек per. пары H-L 1 1 1 0 0 1 0 1 PUSH PSW Запись в стек аккум, и флагов 1 1 1 1 0 1 0 1 POP В Чтение из стека per. пары В-С 1 1 0 0 ООО 1 POP D Чтение из стека per. пары D-E 1 1 0 1 ООО 1 POP H Чтение из стека per. пары H-L 1 1 1 0 ООО 1 POP PSW Чтение из стека аккум, и флагов 1 1 1 1 ООО 1 XTHL Обмен верхушки стека с per. парой H-L 1 1 1 0 0 0 1 1 SPHL Запись per. пары Н-L в указатель стека 1 1 1 1 1 0 0 1 LXI SP Загрузка непоср. указателя стека 0 0 1 1 ООО 1 INX SP Увеличение указателя стека 0 0 1 1 0 0 1 1 DCX SP Уменьшение указателя стека Переходы 0 0 1 1 1 0 1 1 JMP Переход безусловный 1 1 0 0 0 0 1 1 JC Переход, если перенос 1 1 0 1 1 0 1 0 JNC Переход, если нет переноса 1 1 0 1 0 0 1 0 JZ Переход, если нуль 1 1 0 0 1 0 1 0 JNZ Переход, если не нуль 1 1 0 0 0 0 1 0 JP Переход, если больше нуля 1 1 1 1 0 0 1 0 JM Переход, если меньше нуля 1 1 1 1 1 0 1 0 JPE Переход, если четный 1 1 1 0 1 0 1 0 JPO Переход, если нечетный 1 1 1 0 0 0 1 0 PCHL Загрузка per. пары Н-L в счетчик адреса Вызовы 1 1 1 0 1 0 0 1 CALL Вызов безусловный 1 1 0 0 1 1 0 1 CC Вызов, если перенос 1 1 0 1 1 1 0 0 CNC Вызов, если нет переноса 1 1 0 1 0 1 0 0 CZ Вызов, если нуль 1 1 0 0 1 1 0 0 CNZ Вызов, если не нуль 1 1 0 0 0 1 0 0 CP Вызов, если больше нуля 1 1 1 1 0 1 0 0 CM Вызов, если меньше нуля 1 1 1 1 1 1 0 0 CPE Вызов, если четный 1 1 1 0 1 1 0 0 CPO Вызов, если нечетный Возвраты 1 1 1 0 0 1 0 0 RET Возврат безусловный 1 1 0 0 1 0 0 1 RC Возврат, если перенос 1 1 0 1 1 0 0 0 RNC Возврат, если нет переноса 1 1 0 1 ООО 0 RZ Возврат, если нуль 1 1 0 0 1 0 0 0 RNZ Возврат, если не нуль 1 1 0 0 ООО 0 RP Возврат, если больше нуля 1 1 1 1 ООО 0 RM Возврат, если меньше нуля 1 1 1 1 1 0 0 0 RPE Возврат, если четный 1 1 1 0 1 0 0 0 RPO Возврат, если нечетный Программное прерывание 1 1 1 0 ООО 0
226 Приложение А Продолжение табл. А.З Мнемоника Описание Код команды (1) RST Рестарт Ввод-вывод 1 1 А А А 1 1 1 IN Ввод 110 110 11 OUT Вывод Увеличение и уменьшение 110 10 0 11 INR г Увеличение регистра 0 0 D D D 1 0 0 DCR г Уменьшение регистра 0 0 D D D 1 0 1 INR М Увеличение памяти 0 0 1 10 10 0 DCR М Уменьшение памяти 0 0 110 10 1 INX В Увеличение per. пары В-С 0 0 0 0 0 0 1 1 INX D Увеличение per. пары D-E 0 0 0 10 0 1 1 INX H Увеличение per. пары H-L 0 0 10 0 0 1 1 DCX В Уменьшение per. пары В-С 0 0 0 0 1 0 1 1 DCX D Уменьшение per. пары D-E 0 0 0 1 10 1 1 DCX H Уменьшение per. пары H-L Сложение 0 0 10 10 11 ADD r Прибавить регистр к аккум. 1 0 0 0 0 S S S ADC r Прибавить регистр к аккум, с переносом 1 0 0 0 1 S S S ADD M Прибавить память к аккум. 10 0 0 0 1 10 ADC M Прибавить память к аккум, с переносом 10 0 0 1110 ADI Прибавить к аккум, непоср. 11 0 0 0 110 ACI Прибавить к аккум, непоср. с переносом 110 0 1110 DAD В Прибавить В-С к H-L 0 0 0 0 10 0 1 DAD D Прибавить D-Е к H-L 0 0 0 1 1 0 0 1 DAD H Прибавить Н-L к H-L 0 0 1 0 10 0 1 DAD SP Прибавить указатель стека к per. паре H-L Вычитание 0 0 1 1 1 0 0 1 SUB r Вычесть регистр из аккум. 1 0 0 1 0 S S S SBB r Вычесть регистр из аккум, с заемом 10 0 1 1 S S S SUB M Вычесть память из аккум. 10 0 10 1 10 SBB M Вычесть память из аккум, с заемом 10 0 11110 SUI Вычесть из аккум, непоср. 110 10 110 SBI Вычесть из аккум, непоср. с заемом Логические операции 110 11110 ANA r «И» регистра и аккум. 1 0 1 0 0 S S S XRA r «ИСКЛ. ИЛИ» регистра и аккум. 1 0 1 0 1 S S S ORA r «ИЛИ» регистра и аккум. 10 1 1 0 S S S CMP r Сравнение регистра и аккум. 1 0 1 1 1 S S S ANA M «И» памяти и аккум. 10 10 0 1 10 XRA M «ИСКЛ. ИЛИ» памяти и аккум. 10 10 1110 ORA M «ИЛИ» памяти и аккум. 10 110 110 CMP M Сравнение памяти и аккум. 10 111110 ANI «И» непоср. с аккум. 1110 0 110 XRI «ИСКЛ. ИЛИ» непоср. с аккум. 1110 1110 ORI «ИЛИ» непоср. с аккум. 11110 110 CPI Сравнение непоср. с аккум. Циклические сдвиги 11111110 RLC Цикл, сдвиг аккум, влево 0 0 0 0 0 1 1 1 RRC Цикл, сдвиг аккум, вправо 0 0 0 0 1111 RAL Цикл, сдвиг аккум, влево через перенос 0 0 0 1 0 111 RAR Цикл, сдвиг аккум, вправо через перенос Специальные команды 0 0 0 11111 CMA Обратный код аккумулятора 0 0 10 1111 STC Установить флаг переноса 0 0 110 111
Система команд микропроцессора 8085 227 Продолжение табл. А.З Мнемоника Описание Код команды (1) СМС Обратное значение флага переноса 0 0 111111 DAA Десятичная коррекция аккум. 0 0 10 0 111 Управление EI Разрешение прерываний 1 11110 11 DI Запрещение прерываний 1 1110 0 11 NOP Пустая операция 0 0 0 0 0 0 0 0 HLT Останов 0 1110 110 Новые команды 8085 RIM Чтение маски прерываний 0 0 10 0 0 0 0 SIM Запись маски прерываний 0 0 1 1 0 0 0 0 Примечание. DDD или SSS: В ООО, С001, D 010, Е 011, Н 100, L 101, память НО, аккумулятор 111
Приложение В ОПИСАНИЕ МИКРОСХЕМЫ 8279 ФИРМЫ INTEL1) 8279/8279-5- программируемый интерфейс клавиатуры и дисплея Основные возможности микросхемы2) * Микросхема 8279-5 совместима с ми- кропроцессором MCS-85™ * Одновременная работа с клавиатурой и индикатором * Режим сканирования контактной кла- виатуры * Режим сканирования сенсорной клавиа- туры * Режим стробируемого ввода * Буферная память на 8 символов * Режимы: - блокировка одновременного нажатия нескольких клавиш; - независимое восприятие N клавиш. * Устранение дребезга контактов. * Микросхема может управлять: - двумя цифровыми индикаторами по 8 или 16 цифр в строке; - одним алфавитно-цифровым индика- тором на 16 символов в строке * 16-байтовое ОЗУ для хранения индици- руемых знаков п Перепечатано с разрешения фирмы Intel Corporation, copyright 1976. 2) Данное описание было опубликовано фирмой Intel в 1979 г. как предварительное, и потому содержит ряд пропусков и не пол- ностью соответствует последним вариантам документации. Поэтому для подробного изуче- ния работы этой микросхемы можно пореко- мендовать читателю обратиться к более позд- ним документам фирмы Intel, либо воспользо- ваться описанием отечественного аналога ми- кросхемы 8279- КР580ВИ79. П/ШЛ1. перев. * Строка-индикатор может заполняться символами как слева направо, так и справа налево * Режимы работы задаются программно * Частота сканирования задается про- граммно * По нажатию клавиши выдается преры- вание. Краткое функциональное описание микросхемы Микросхема Intel 8279-это универ- сальное программируемое устройство ввода-вывода для сопряжения микропро- цессоров фирмы Intel с клавиатурой и ин- дикаторным дисплеем. Одна часть микросхемы обеспечивает связь с клавиатурой, которая может быть выполнена в виде 64-контактной клавиш- ной матрицы либо в виде набора сен- сорных элементов. Клавиатура может быть выполнена также на основе эффекта Холла или на основе изменения магнитной проницаемости ферритов-в этих случаях применяется режим стробируемого ввода. Возможны два основных варианта ра- боты с клавиатурой: 1. Запрещены (и считаются ошибочны- ми) одновременные нажатия нескольких клавиш. 2. N клавиш сканируются и восприни- маются независимо друг от друга. Коды нажатых клавиш освобождаются от помех, связанных с дребезгом контак- тов, и заносятся в 8-байтовый буфер, орга- низованный по принципу FIFO-«первым записан - первым прочитан». Нажатия кла- виш приводят к выдаче сигнала прерыва- ния, который должен быть заведен в мик- ропроцессор, использующий данную мик- росхему.
Описание микросхемы 8279 229 Другая часть микросхемы 8279 обеспе- чивает работу в режиме сканирования (временного мультиплексирования) инди- катора на светодиодах, жидких кристаллах или другого распространенного типа. Можно использовать как цифровые, так и алфавитно-цифровые индикаторы либо простые лампочки. Микросхема 8279 снабжена ОЗУ 16x8 бит, которое можно использовать также и как два ОЗУ 16x4 бита. Это ОЗУ, пред- назначенное для хранения воспроизво- димых на индикаторе символов, может за- гружаться и опрашиваться программно — процессором. Воспроизводимая строка символов мо- жет заполняться слева направо, как в пи- шущей машинке, либо справа налево, как в калькуляторе. И чтение, и запись дис- плейного ОЗУ могут выполняться с авто- матическим приращением адреса. db7 шина данных. По 1 CLK этим линиям пере- даются все данные и команды между процессором и мик- росхемой 8279 Вход тактового гене- 1 RESET ратора системы, ис- пользуется для синхронизации Высокий уровень сигнала на этом вы- воде сбрасывает 8279 в исходное состоя- ние. После сброса 8279 оказывается в следующем режиме: 1) тип индикато- ра-16 8-раз- рядных символов, левый вход; Расположение выводов ш IRQ С 3CNTL/STB 3 SHIFT RESITC R0 с *»йС 08, с 10 «279 32 Зоит в. 08, С ов,С Зоит «Э Зоит Ао 25 3OUT Az 08, С 18 22 зсг Условное изображение микросхемы Связь с процессором Управление сканированием Данные с клавиатуры Данные на " индикатор Описание выводов микросхемы Микросхема 8279 выпускается в корпу- се типа DIP1* с 40 выводами. Ниже приве- дено функциональное описание каждого сигнала. Число Обозна- Функция выво- чение __ дов 1 CS 8 DB0 - Двунаправленная 1} Прямоугольный корпус с шагом между выводами 0,1 дюйма (примерно 2,5 мм).-Прим, перев. 2) тип клавиатуры - сканируемая кла- виатура, запрет одновременного нажатия несколь- ких клавиш; 3) делитель тактовой частоты - устанав- ливается деление на 31 Выборка кристалла. Низкий уровень это- го сигнала подклю- чает микросхему к описанной выше двунаправленной
230 Приложение В шине данных, разре- шает выдачу или ввод данных и ко- манд в микросхему из процессора 1 Ао Номер интерфейсно- го регистра. Высокий уровень этого сигна- ла означает, что выб- ран (для чтения или записи) регистр ко- манд и состояния. Низкий уровень оз- начает, что выбран регистр данных 2 4 1 RD Чтение. Низкий уро- вень этого сигнала разрешает выдачу данных или состоя- ния из микросхемы 8279 на шину данных. 1 WR Запись. Низкий уро- вень этого сигнала разрешает запись данных или коман- ды с шины данных в соответствующий внутренний регистр микросхемы. 1 IRQ Запрос прерывания. В режиме работы с контактной клавиа- турой этот сигнал переходит в высокий логический уровень, когда в буфере типа FIFO хранится хотя бы один символ. Сиг- нал IRQ переходит в низкий уровень при каждом считывании символа из буфера, но после этого, если буфер все еще не пуст, на нем опять выставляется высо- кий уровень. В режи- ме работы с сен- сорными датчиками каждый раз, когда изменяются показа- 8 ния датчика, на ли- нии прерывания Vss, Vcc SL0- SL3 RL0- RL7 устанавливается вы- сокий уровень. После того как процессор прочтет новое со- стояние сенсоров, сигнал IRQ перехо- дит в низкий уровень. Земля (0 В) и питание ( + 5 В) Сигналы управления сканированием кла- виатуры, а также управление выдачей данных на индика- тор. Эти сигналы мо- гут быть либо коди- рованные (1 из 16), либо декодирован- ные (1 из 4). В первом режиме пред- полагается наличие внешнего дешифра- тора «1 из 16», на адресные входы ко- торого подаются сигналы SL0-SL3, а с выходов снимают- ся сигналы выборки для шестнадцати столбцов клавишной матрицы. Во втором режиме сигналы SL0 - SL3 могут не- посредственно ис- пользоваться как сигналы выборки для четырех столбцов клавишной матрицы Данные из клавиа- туры. В режиме сканирования линии RL0 - RL7 подклю- чаются к строкам клавишной матрицы. Внутри микросхемы эти линии снабжены «подпорочными» ре- зисторами, которые удерживают высокий логический уровень до тех пор, пока на- жатие клавиши не со- единит какую-либо
Описание микросхемы 8279 231 1 SHIFT 1 CNTL/STB из линий RL0 - RL7 с одной из линий вы- бора столбца, в ре- зультате чего соот- ветствующая линия RL перейдет в низкий логический уровень. В режиме «стробиру- емый ввод» 8 линий RL0 - RL7 служат для ввода 8-битового ко- да клавиши в мик- росхему по перепаду сигнала STB из низ- кого уровня в высо- кий «Нижний / верхний» регистр. В режиме «сканирование» этот сигнал воспринима- ется вместе с коорди- натами (кодом) на- жатой клавиши и за- поминается в буфере в виде одного бита. Внутри микросхемы имеется «подпо- рочный» резистор на этот сигнал «Управляющий сим- вол» или «строб кла- виатуры». В режиме «сканирование» этот сигнал воспринима- ется вместе с коор- динатами (кодом) нажатой клавиши и запоминается в бу- фере в виде одно- го бита. Внутри мик- росхемы есть «под- порочный» резистор, который удерживает сигнал CNTL в высо- ком уровне до тех пор, пока нажатие со- ответствующей кла- виши не замкнет его на землю и не переве- дет в низкий уровень. В режиме «строби- руемый ввод» пере- пад этого сигнала из низкого уровня в вы- сокий заносит содер- жимое линий RL0 - RL7 во внут- ренний буфер типа FIFO 4 OUT Вывод на индика- Ао-А3 цию. Данные с этих 4 OUT линий используются Во-В3 для динамической индикации, они синх- ронизируются ли- ниями SL0-SL3. Два 4-битовых порта (А и В) могут быть пога- шены независимо друг от друга. Порты А и В могут рассмат- риваться как один ___ 8-битовый порт. 1 BD Гашение индикации. Этот выход исполь- зуется для гашения индикации во время переключения знаков или при исполнении команды «гашение индикации». Структура и принципы работы Ниже приводится описание основных элементов микросхемы 8279 («Програм- мируемый интерфейс клавиатуры и инди- катора»). Блок-схема приведена на рис. В.1. Управление вводом-выводом и буферы данных К управлению вводом-выводом отно- сятся сигналы CS, Ао, RD и WR, которые управляют считыванием и записью данных в различные внутренние регистры и буферы.___ Сигнал CS разрешает передачу данных между микросхемой 8279 и процессором. Характер информации, выдаваемой или запрашиваемой центральным процес- сором, определяется сигналом Ао. Уро- вень логической единицы означает, что передается команда или состояние. Уро- вень логического нуля означает, что пере- даются данные.
232 Приложение В OUT А03 OUT В03 BD SL03 RL07 CNTL/STB Рис. В1 Сигналы RD и WR определяют направ- ление передачи через буферные приемопе- редатчики данных. Эти буферные прие- мопередатчики являются двунаправ- ленными и соединяют внутреннюю шину с внешней. Когда микросхема не выбрана (CS = 1), буферные приемопередатчики на- ходятся в состоянии с высоким электриче- ским сопротивлением, т. е. являются неак- тивными. Буферные приемопередатчики пере- ключаются на прием при условии WRVCS = 0 и на передачу при условии WRVCS = 0. Регистры управления и синхронизации Описываемые регистры хранят ре- жимы работы с клавиатурой и индикато- ром, а также другие параметры, про- граммно задаваемые центральным про- цессором. Для того чтобы запрограммировать режимы работы микросхемы, необходимо выставить на линиях данных код надлежа- щей команды совместно с сигналами Ао = = 1, CS = 0, а затем послать сигнал WR. Функциональное описание Поскольку ввод и отображение данных являются составной частью многих разра- боток на основе микропроцессоров, кон- структору таких систем необходим интер- фейс, который мог бы управлять этими функциями, не создавая большой загрузки центрального процессора. Микросхема 8279 решает эту задачу для 8-разрядных микропроцессоров. Микросхема 8279 может быть условно разделена на две части: связь с клавиату- рой и связь с индикацией. Она может под- ключаться к традиционным клавиатурам такого же типа, как на пишущей машинке, или же просто к произвольному набору кнопок. Отображение информаций может осуществляться на алфавитно-цифровой индикатор или же на произвольный набор индикаторных лампочек. Таким образом, центральный процессор освобождается от
Описание микросхемы 8279 233 сканирования клавиатуры и индикаторов (в режиме динамической индикации). Микросхема 8279 может прямо под- ключаться к шине микропроцессора. Про- цессор может программно задавать все ре- жимы работы микросхемы. Эти режимы описаны ниже. Режимы ввода * Сканирование контактной клавиатуры: - 8 х 8 клавиш-в режиме внешней де- шифрации столбцов клавиатуры; - 4 х 8 клавиш - в режиме внутренней дешифрации столбцов клавиатуры. Нажатие клавиши порождает 6-би- товый код, задающий положение клавиши в матрице (3 бита-номер столбца, 3 би- та-номер строки). Координата клавиши, а также состояние сигналов CNTL и SHIFT запоминаются в буфере типа FIFO. Данные автоматически очищаются от дребезга контактов клавиатуры. При этом возможно блокирование одновре- менного нажатия клавиш или же независи- мое восприятие N клавиш. * Сканирование матрицы сенсорных эле- ментов : - 8 х 8 клавиш-в режиме внешней де- шифрации столбцов клавиатуры; - 4 х 8 клавиш - в режиме внутренней дешифрации столбцов клавиатуры. Состояние клавишных ключей (разом- нутое или замкнутое) запоминается в ОЗУ, к которому имеет доступ центральный процессор. * Стробируемый ввод: данные с линий RL0-RL7, строби- руемые сигналом STB, заносятся в бу- фер типа FIFO. Режимы отображения информации * 8- или 16-символьные динамические ин- дикаторы, которые могут быть органи- зованы либо как два 4-битовые, либо как один 8-битовый. В последнем случае Во = Do-самый младший разряд инди- цируемого байта, a A3 = D7-самый старший. * Заполнение индикаторной строки справа или слева. Характерные черты микросхемы 8279 включают: * Программирование режимов работы. * Делитель тактовой частоты. * Выдача сигнала прерывания в цен- тральный процессор при наличии данных из клавиатуры или из матрицы сенсорных элементов. * 8-байтовый буфер типа FIFO для хране- ния кодов нажатых клавиш. * 16-байтовое ОЗУ для динамической ин- дикации. Это ОЗУ может также читать- ся центральным процессором. Команда фиксируется внутри микрос- хемы по положительному перепаду сигна- ла WR (т. е. по перепаду из низкого уровня сигнала в высокий). Затем команда декоди- руется и микросхема настраивается на вы- полнение соответствующей функции. Схемы синхронизации содержат в своей основе цепочку счетчиков. Первый счетчик - это предварительный делитель тактовой частоты, который может быть запрограммирован на базовую частоту 1000 КГц, что обеспечивает сканирование клавиатуры с периодом 5,1 мкс и подавле- ние дребезга контактов длительностью до 10,3 мкс. Прочие счетчики делят базовую частоту с тем, чтобы обеспечить надлежа- щие времена сканирования отдельных кла- виш, рядов клавишной матрицы, всей ма- трицы в целом, а также индикатора. Счетчик сканирования Счетчик сканирования может работать в двух режимах. В режиме с внешней деши- фрацией счетчик работает как обычный двоичный счетчик. При этом предпола- гается наличие внешнего дешифратора для выбора опрашиваемого столбца клавиш- ной матрицы (1 из 16) в каждый момент времени. В режиме с внутренней дешифра- цией два младших бита счетчика сканиро- вания дешифрируются внутри микро- схемы и обеспечивают прямую выборку 1 из 4 столбцов клавишной матрицы. Заметим, что индикатор управляется теми же сканирующими выходами, что и клавиатура. Поэтому в режиме с внутрн- ней дешифрацией на индикаторе будут отображаться лишь первые 4 знака из со- держащихся в индикаторном ОЗУ. В режиме с внешней дешифрацией ак- тивный уровень сигналов SL0-SL3 высо- кий.
234 Приложение В В режиме с внутренней дешифрацией активный уровень сигналов SL0 - SL3 низ- кий. Обработка сигналов, возвращаемых кла- виатурой 8 сигнальных линий RL0 - RL7, идущих от клавиатуры, буферизуются и заносятся в триггерный регистр внутри микросхемы. В режиме сканирования по этим сиг- нальным линиям обнаруживается замыка- ние клавишного контакта и определяется номер строки, в которой замкнулся кон- такт. Как только обнаружено замыкание контакта, противодребезговая цепь ждет еще около 10 мкс для того, чтобы прове- рить, сохранилось ли замкнутое состояние контакта. Езли контакт устойчиво сохра- няет замкнутое состояние, его адрес в кла- вишной матрице плюс состояние сигналов CNTL и SHIFT заносятся во внутреннюю буферную память типа FIFO. В режиме сканируемой сенсорной ма- трицы содержимое линий RL0 - RL7 непос- редственно заносится в соответствующую ячейку памяти внутреннего буферного ОЗУ на каждом такте, образуя в конечном итоге 64-битовую карту клавиш. В режиме стробируемого ввода содер- жимое линий RL0 - RL7 заносится во вну- тренний буфер FIFO по положительному перепаду сигнала на линии CNTL/STB. Входное буферное ОЗУ клавиатуры Этот блок представляет собой ЗУ 8 х 8 бит, которое используется по-разному в зависимости от режима работы микро- схемы. В режиме «сканирование контактной клавиатуры» и «стробируемый ввод» это ОЗУ используется как буфер типа FIFO. Последовательно вводимые коды на- жатых клавиш заносятся в последова- тельные ячейки ОЗУ и затем в том же по- рядке извлекаются из памяти. Блок со- стояния FIFO следит за количеством символов, хранящихся в буфере, и за тем, полон он или пуст. Чрезмерное число опе- раций считывания или занесения в буфер будет опознано как ошибка (переполнение буфера или считывание из пустого буфера). Состояние буфера может быть опрошено сигналом RD при CS = 0 и АО = 1. Если бу- фер не пуст, выдается сигнал IRQ. В режиме «сканирование сенсорной ма- трицы» описываемое ОЗУ используется для хранения состояния сенсорных датчи- ков. Каждая строка «сенсорного» ОЗУ хранит состояние соответствующей стро- ки матрицы сенсорных датчиков. В этом режиме сигнал IRQ переходит в высокий уровень при каждом изменении состояния сенсоров. Индикаторное ОЗУ и регистры адреса инди- каторного ОЗУ Регистры адреса индикаторного ОЗУ содержат: - адрес слова в ОЗУ, записываемого или опрашиваемого процессором; - адреса двух 4-битовых цифр, во- спроизводимых на индикаторах в данный момент. Адреса ОЗУ могут устанавливаться ко- мандой из процессора. Можно сделать так, чтобы адреса автоматически увеличива- лись или уменьшались после каждого считывания или записи. Адреса ОЗУ для индикаторов А и В аутоматически моди- фицируются в микросхеме 8279 с тем, чтобы они соответствовали данным, вво- димым из процессора. Цифры на индика- торы А и В можно вводить либо независи- мо, либо вместе, как один байт, в зависимости от режима, выставленного центральным процессором. Заполнение индицируемой строки возможно слева на- право или справа налево. Программирование Команды микросхемы 8279 Следующие команды задают режимы работы микросхемы 8279. Команды посылаются по шине данных DB0 - DB7 при CS = 0, АО = 1 по положи- тельному перепаду сигнала WR. Установка режима работы с клавиатурой и индикатором Старший бит Младший бит Код| 0 | 0 |0 |Р | D | К |К | к]
Описание микросхемы 8279 235 где DD задает режим работы с индика- тором, а ККК задает режим работы с клавиатурой. Режимы работы с индикатором: DD 00 8 х 8-битовых символов, строка за- полняется слева 01 16 х 8-битовых символов, строка заполняется слевап 10 8 х 8-битовых символов, строка за- полняется справа 11 16 х 8-битовых символов, строка заполняется справа Особенности правого и левого запол- нения строки описаны в разделе «Интер- фейс». Заметим, что, когда действует режим сканирования клавиатуры с внутренней де- шифрацией, на индикацию выдаются лишь 4 первых символа индикаторного ОЗУ не- зависимо от значения поля DD. Режимы работы с клавиатурой: ККК ООО сканирование контактной клавиа- туры с внешней дешифрацией. Бло- кируется одновременное нажатие клавиш* 2*. 001 сканирование контактной клавиа- туры с внутренней дешифрацией. Блокируется одновременное нажа- тие клавиш. 010 сканирование контактной клавиа- туры с внешней дешифрацией. N клавиш воспринимаются незави- симо. 011 сканирование контактной клавиа- туры с внутренней дешифрацией. N клавиш воспринимаются незави- симо. 100 сканирование матрицы сенсоров с внешней дешифрацией. 101 сканирование матрицы сенсоров с внутренней дешифрацией. 110 стробируемый ввод. Сканирование индикатора с внешней дешифра- цией. п Устанавливается после сброса. 2) Код команды не указан в предваритель- ном описании микросхемы 8279-Прим, перев. 111 стробируемый ввод. Сканирование индикатора с внутренней дешифра- цией. Программирование тактовой частоты Код | 0 1 0 1 1 | Р | Р | Р | Р [~Р] Вся внутренняя синхронизация микрос- хемы 8279 строится на базовой тактовой частоте, выдаваемой внутренним предва- рительным делителем. Этот делитель де- лит внешнюю тактовую частоту (сигнал CLK, вывод 3 микросхемы) на заданное программно целое число. Разряды РРРРР определяют это число, которое может быть задано в пределах 2-31. Выбор делителя, который даст в ито- ге частоту 100 КГц, обеспечивает опреде- ленные выше времена сканирования и по- давление дребезга. Например, если на вывод 3 микро- схемы 8279 подана внешняя тактовая ча- стота 2 МГц, следует выбрать значение: РРРРР = 10100 (2) = 20 (10), что обеспечит внутреннюю базовую часто- ту 100 кГц. Чтение буферного ОЗУ клавиатуры Код| о| 1 | 0 | Al | X | Л| А [л] где X не используется. Прежде чем читать содержимое буфер- ного ОЗУ клавиатуры, центральный про- цессор выдает в микросхему 8279 эту команду. В режиме сканирования контактной клавиатуры флаг автоувеличения (AI) и адрес ОЗУ (ААА) игнорируются. В этом режиме 8279 будет автоматически выда- вать на шину данных при считываниях (Ао = 0) коды клавиш из буфера FIFO в том порядке, в каком эти коды были ра- нее занесены в буфер FIFO при нажатиях клавиш. В режиме сканирования матрицы сен- сорных датчиков адресные разряды ААА выбирают один из 8 байтов сенсорного ОЗУ. Если AI = 1, то каждое последующее чтение будет выбирать следующий байт сенсорного ОЗУ.
236 Приложение В Чтение индикаторного ОЗУ Код |o|i|i|ai|a|a|a|a| Прежде чем читать содержимое инди- каторного ОЗУ, центральный процессор должен выдать эту команду. Адресные разряды АААА выбирают один из 16 байтов индикаторного ОЗУ. Если Al = 1, то адрес индикаторного ОЗУ будет увеличиваться на единицу по- сле каждого обращения (неважно, чтение или запись) к индикаторному ОЗУ. Запись в индикаторное ОЗУ Код| 1 | 0 | 0 | AI | А | А | А [а] Центральный процессор выставляет эту команду перед тем, как начать запись в индикаторное ОЗУ. После этой команды, которая, как и все команды, сопровождает- ся сигналом Ао = 1, все последующие опе- рации записи данных (отличающиеся от записи команд сигналом Ао = 0) будут вы- полняться в индикаторное ОЗУ. Значение полей AI и АААА в этой команде такое же, как и в команде «Чтение индикаторного ОЗУ», однако команда «Запись в индика- торное ОЗУ» не влияет на источник считы- ваемых данных, т.е. после этой команды можно писать в индикаторное ОЗУ, а чи- тать из буферного ОЗУ клавиатуры. Блокировка записи в индикаторное ОЗУ. Гашение индикации Разряды IW1* могут использоваться для того, чтобы раздельно блокировать запись 4-битовых цифр в порты А и В. Выставив флаг IW для одного из по- ртов (А или В), можно заблокировать за- пись в индикаторное ОЗУ старшей или младшей 4-битовой цифры из байта, пере- данного процессором. Таким образом, процессор сможет независимо управлять двумя цифровыми индикаторами. Заметим еще раз, что разряд Во со- ответствует разряду Do на шине данных центрального процессора, а разряд А3 со- ответствует разряду D7. п Код команды не указан в предваритель- ном описании микросхемы 8279-Прим. перев. Если пользователь хочет очистить (по- гасить) индикатор, то он может использо- вать флаг BL для каждой из цифр. Послед- няя команда «Очистка» определяет значе- ние кода символа, который будет затем использоваться как «пробел». После сбро- са таким кодом становится код 0. Заметим, что необходимо выставить оба флага BL для того, чтобы погасить ин- дикатор в том случае, когда он рассматри- вается как 8-битовый порт. Очистка Эта команда очцщает содержимое ин- дикаторного ОЗУЧ Разряды CD в этой команде позволяют выбрать один из нескольких кодов для за- полнения индикаторного ОЗУ во время очистки. Со Со Cq Код-заполнитель ОЗУ АВ=0 - заполняется нулями АВ=20Н — заполняется пробелами АВ=11111111 —все единицы Разрешение очистки индикатора, когда CD=1 (или при CD=1) Во время очистки индикаторного ОЗУ (примерно 160 мкс) в него нельзя записы- вать данные. Все это время старший раз- ряд слова состояния буфера FIFO удержи- вается в значении 1. Когда доступ к индикаторному ОЗУ вновь свободен, этот разряд автоматически сбрасывается в 0. Если разряд CF = 1, то будет выполне- на также и очистка состояния буфера FIFO-запрос прерывания будет сброшен, адрес текущего байта в сенсорном ЗУ бу- дет установлен в 0. Разряд Сд-«Полная очистка». Дей- ствует как совокупность разрядов CF и CD. При этом происходит сброс и перезапуск внутренних цепей синхронизации. Конец обработки прерываний или установка режима обнаружения ошибок Код 11 11 1 1 | Е|х|х|х|х | где X не используется. В режиме сенсорной матрицы эта ко-
Описание микросхемы 8279 237 манда сбрасывает в низкий уровень сигнал IRQ (запрос прерывания) и разрешает дальнейшую запись информации в буфер- ное ЗУ (сигнал IRQ должен был выста- виться в высокий уровень после обнаруже- ния изменения состояния сенсоров, при этом была запрещена запись в сенсорное буферное ЗУ). В режиме независимого восприятия N клавиш, если Е = 1, данная команда включит специальный режим обнаружения ошибок (см. далее «Описание интерфей- са»). Слово состояния Слово состояния содержит информа- цию о состоянии буфера FIFO, ошибках и сигналах запрещения индикации. Цен- тральный процессор может считывать сло- во состояния при высоком уровне сигнала АО и низких уровнях сигналов CS и RD (бо- лее подробно о слове состояния написано в разделе «Описание интерфейса»). Чтение данных Данные из 8279 можно читать при низ- ком уровне сигналов Ао, CS и RD. Источ- ник данных определяется командами «Чтение буферного ОЗУ клавиатуры» или «Чтение индикаторного ОЗУ». При уста- новленном флаге автоувеличения отрица- тельный перепад сигнала RD вызывает увеличение текущего адреса ОЗУ, из кото- рого читаются данные. При чтении буфера FIFO адрес увеличивается всегда (если не было ошибки) независимо от наличия фла- га автоувеличения. Запись данных Данные можно записывать только в индикаторное ОЗУ при низком уровне сигналов Ао, CS и WR. Адрес определяется последней командой «Чтение индикатор- ного ОЗУ» или «Запись в индикаторное ОЗУ». Если последняя из этих двух команд установила флаг автоувеличения, то по по- ложительному перепаду сигнала WR теку- щий адрес индикаторного ОЗУ будет увеличен. Описание интерфейса Режим сканирования контактной клавиа- туры с блокировкой одновременного нажа- тия двух клавиш При сканировании клавиатуры воз- можны три различные ситуации. 1. Нажата одна клавиша. Сразу вслед за этим включаются в работу схемы по- давления дребезга контактов. В течение двух последующих периодов сканирова- ния проверяется, не нажаты ли еще какие- нибудь другие клавиши. Если за время проверки не будет обнаружено нажатие других клавиш, значит это одиночное на- жатие. Координаты нажатой клавиши вме- сте со значениями сигналов CNTL и SHIFT заносятся во входной буфер типа FIFO. Если входной буфер был до этого пустым, то выставляется сигнал прерыва- ния IRQ, чтобы сообщить процессору о получении смивола. Если входной буфер был уже полон, код нажатой клавиши не будет введен, а в регистре состояния по- явится разряд ошибки. 2. Нажаты несколько клавиш. До тех пор пока остаются замкнутыми два (или более) клавишных контакта, ввод символа производиться не будет. 3. Нажаты несколько клавиш, затем все клавиши, кроме одной, отжаты. В бу- фер будет введен код последней удержи- ваемой в нажатом состоянии клавиши. Режим сканирования контактной клавиа- туры с независимым распознаванием кла- виш В этом режиме каждая клавиша рас- сматривается независимо от всех остальных. Когда обнаруживается нажа- тие некоторой клавиши, схема ждет в тече- ние двух циклов сканирования и затем проверяет, остается ли данная клавиша по- прежнему нажатой. Если клавиша все еще нажата, ее код заносится в буфер. Если одновременно нажаты несколько клавиш, они будут опознаны, а их коды за- несены во входной буфер, причем последо- вательность, в которой будут восприняты клавиши, определяется последователь- ностью сканирования.
238 Приложение В Режим сканирования контактной клавиа- туры с обнаружением ошибок В режиме независимого распознавания клавиш пользователь может задать спе- циальный подрежим: «обнаружение оши- бок». В этом случае обнаружение одновре- менного нажатия клавиш в течение одного цикла противодребезгового контроля при- водит к выдаче прерывания, выставлению разряда ошибки в регистре состояния FIFO и к полной блокировке записи сим- волов во входной буфер до команды CLEAR (очистка) с параметром CF = 1. Режим сканирования матрицы сенсорных датчиков В этом режиме схемы защиты от дре- безга контактов отключаются. Входной буфер (который в этом режиме называется «сенсорное ОЗУ») содержит в виде 64-х двоичных разрядов состояния всех элемен- тов сенсорной матрицы. Хотя аппаратный противодребезговый контроль не действует, описываемый ре- жим имеет и некоторое преимущество: центральный процессор знает, когда была нажата клавиша и когда она была отпуще- на. Между тем в режиме сканирования контактной клавиатуры обнаруживается лишь сам факт нажатия клавиши. Для того чтобы облегчить программи- рование, разработчику рекомендуется сгруппировать близкие по функциям кла- виши в одном ряду сенсорной матрицы, поскольку именно в таком формате, по ря- дам, процессор будет считывать состояния сенсоров. Сигнал запроса прерывания IRQ пере- ходит в высокий уровень при любом изме- нении состояния сенсоров, обнаруженном в течение цикла сканирования клавиатуры. Если флаг «автоприращение адреса» в ну- ле, то первая же операция чтения данных сбросит сигнал IRQ в низкий уровень. Ес- ли флаг «автоприращение адреса» равен единице, то сигнал IRQ сбросится в низкий уровень лишь после команды «конец обра- ботки прерывания». Замечания: 1. Одновременное изменение состоя- ния нескольких датчиков в сенсорной ма- трице может породить не одно, а целую се- рию прерываний. 2. После сброса микросхема 8279 мо- жет зафиксировать состояние датчиков как измененное. 3. В режиме сканирования с внешней дешифрацией сигнал SL0 = 0. Формат данных В режиме «сканирование контактной клавиатуры» однобайтовый код, зано- симый во входной буфер FIFO, строится из координат нажатой клавиши и состоя- ния сигналов CNTL и SHIFT. Значения сигналов CNTL и SHIFT заносятся в два самых старших разряда однобайтового кода символа: CNTL-самый старший, 7-й разряд байта; SHIFT-6-й разряд. Разряды 3, 4 и 5 содержат в двоичном коде номер столбца, выбранного сигнала- ми SL0-SL3, в котором обнаружена нажа- тая клавиша. Самые младшие 3 разряда: 2, 1 и 0-со- держат номер линии RLo-RL7, к которой оказалась подключенной нажатая клави- ша. Старший бит CNTL SHIFT Т" —т SCAN Формат данных в режиме сканирования клавиатуры Младший бит ~т— г RETURN ,1,- , L Здесь CNTL-значение сигнала «упра- вляющий символ»; SHIFT-значение сиг- нала «верхний регистр»; SCAN-номер «сканирующей» линии; RETURN-номер «ответившей» линии. В режиме «сканирование матрицы сен- соров» данные с клавиатуры, поступившие по линиям RL0-RL7, попадают прямо в тот байт сенсорного ОЗУ, номер которо- го равен номеру опрашиваемого в данный момент столбца сенсорной матрицы. Таким образом, каждый сенсорный датчик представлен одним битом сенсор- ного ОЗУ. Сигналы CNTL и SHIFT в этом режиме игнорируются. Замечание: в этом режиме к микросхе- ме можно подключить не только сен- сорные датчики, но и, например, на ка-
Описание микросхемы 8279 239 ждую линию RLo-RL7 можно подклю- чить по одному 8-входному мультиплексо- ру, управляемому от сигналов SL0-SL3. Формат данных в режиме «сканирова- ние матрицы сенсоров»: Старший бит Младший бит I RL7 | RL6 I RL5 I RL4 I RL3 I RL2 I RLi I RL0 I В режиме «стробируемый ввод» данные во входную буферную память FIFO вводятся побайтно по положитель- ному перепаду сигнала CNTL/STB с ли- нией RLo-RL7. Формат данных в режиме «строби- руемый ввод»: Старший бит Младший бит I RL7 I RL6 I RL5 I RL4 I RL3 I RL2 I RLi | RL0 I Индикатор Режим заполнения строки слева направо Этот режим является простейшим в том смысле, что каждый байт (или пол- байта) индикаторного ОЗУ прямо со- ответствует определенному знакоместу на индикаторе. Адрес 0 в индикаторном ОЗУ соответствует самому левому символу на индикаторе. Адрес 15 (или адрес 7 в вось- мисимвольном режиме индикации) со- ответствует самому правому символу. За- несение байтов в индикаторное ОЗУ, начиная с адреса 0 соответствует заполне- нию индицируемой строки слева направо. 17-й (9-й) символ попадает опять в са- мую левую позицию, и все начинается сна- чала. Вывод 1-го символа! Адрес 14 15-<—индикаторного озу 01 14 15 Вывод Г "ТТЛ------------1—I—I 2-го символа! I I________I I I О 1 14 15 16 госимвопл! ’ I 2 Г I _ ~ Н’6! Вывод 1 17-го символа! 0 1 14 15 ,7I2I ы и Вывод 1 18-го символа! 0 1 14 15 ё И Индикация слева направо (автоприращение адреса) Режим заполнения строки справа налево Этот режим используется в большин- стве электронных калькуляторов. Каждый вводимый знак сначала индицируется в самой правой позиции строки. Затем он вытесняется влево следующим символом, который теперь занимает самую правую позицию, и так далее. При появлении но- вого знака, таким образом, все содержи- мое строки сдвигается на одну позицию влево. При этом самый левый знак теряет- ся. Адрес 12 м 15 0-•—индикаторного Вывод I 1-д-----------I | 'ГЛ ОЗУ 1-го символа 1 1 1______ 1 I 1 I 2 3 15 0 1 iTc~am::::nzEi 3 4 0 1 2 Вывод Г-Т-Т I J 2| з”| 3-го символаI 1 1-J—I—I—I 01 13 14 15 ,’ь““ ».о..из::: :ffl Вывод 17-го символа Вывод 18-го символа 14 15 О 15 0 1 Индикация справа налево (автоприращение адреса) Заметим, что в этом режиме адрес в ин- дикаторном ОЗУ и номер позиции в стро- ке не совпадают. Следовательно, запись байта в индикаторное ОЗУ в некоторый произвольный адрес в режиме автоматиче- ского приращения может дать самый не- ожиданный результат. Рекомендуется ис- пользовать режим последовательного приращения, начиная с адреса 0. Автоматическое приращение адреса В режиме заполнения слева с автомати- ческим приращением адреса запись каждо- го следующего байта будет происходить в следующую ячейку индикаторного ОЗУ. При этом запись в любой произвольный адрес не дает нежелательных побочных действий, результат этой операции одно- значен и предсказуем. Адрес 0 1 2 3 4 5 6 7-<— индикаторного ?ь,вод 11 I I I I I I I I ОЗУ 1-го символа I I I I I I I I I
240 Приложение В 01234567 2то символа ГФТ Г I I I I I 0 1 2 3 4 5 6 7 Команда П [2 | I I I I I I 10010101 I—1—I— 1 I _L.._1 J,, J Вывод следующ. симв. в ячейку 5 ОЗУ с автоприращ. адреса 0 1 2 3 4 5 6 7 З-го символа I ’ I ? I I Г И Т1 0 1 2 3 4 5 6 7 .в>“—.1ф 11 l-l-l I Индикация слева направо (автоприращение адреса) В режиме заполнения справа автопри- ращение (или отсутствие автоприращения) адреса действует так же, как и в режиме за- полнения влево, если только не нарушает- ся последовательный порядок обращений к адресам индикаторного ОЗУ. Индикация справа налево (автоприращение адреса) Произвольный режим заполнения про- текает следующим образом: Команда Ю0Ю101 Адрес 0 1 2 3 4 5 6 7индикаторного 2 3 4 5 6 7 0 Вывод следующ. символа в ячейку 5 ОЗУ с автоприращ. адреса Вывод 1-го символа Индикация справа налево (автоприращение адреса) Режимы вывода на индикатор 8 или 16 символов В режиме вывода на индикатор 8 сим- волов частота сканирования в два раза больше, чем при выводе 16 символов. На- пример, при частоте внутреннего тактово- го генератора 1000 кГц время сканирова- ния при выводе 8 символов 5,1 мкс, а при выводе 16 символов 10,3 мкс. Состояние буфера Слово состояния буфера FIFO исполь- зуется в режимах сканирования контакт- ной клавиатуры и стробируемого ввода для определения количества символов в буфере и обнаружения ошибок. Возмож- но возникновение ошибок двух типов: переполнение буфера и потеря символа. Ошибка переполнения возникает при запи- си символа в полный буфер. Потеря проис- ходит при чтении пустого буфера. В слове состояния буфера FIFO имеет- ся разряд, указывающий, что индикатор- ное ОЗУ недоступно из-за того, что ко- манды CLEAR DISPLAY или CLEAR ALL не закончили операцию. В режиме сканирования матрицы сен- соров в слове состояния буфера FIFO устанавливается разряд для указания того, что в сенсорное ОЗУ загружена информа- ция о состоянии последнего сенсорного датчика. В режиме обнаружения ошибок разряд S/Е слова состояния буфера FIFO служит для индикации одновременного нажатия нескольких клавиш. Слово состояния буфера Буфер полон | du|s/e| о | U | F | N | N f~N~| I ... Количество символов в буфере I_Ошибка (потеря символа) ------ Ошибка (переполнение буфера) ------Сенсорный датчик/нажато несколько клавиш -------- Индикатор недоступен Вывод появляется в виде точки. начальной
Описание микросхемы 8279 241 Схема применения SHIFT CONTROL с клавиат. Матр. клавиат 8 столбцов 8 строк 8-разряд- ная микро- Шина проц, данных сист. Сигн. управл.' Шина адреса Вых. такт, генер. SHIFT INT °0-7 CNTI.Ro.7 VDD ' I Дешифратор I । —— 1-----‘ S0-3 8279 3 млад разряда I0R row RESET CS A0 CLKB0-3 a0-3 Линии сканир. Очистка ИНДИК. Адреса (декодир ) Данные на ИНДИК. Индикатор ^Не подавать на дешифратор клавиатуры старший из сигналов сканирования Абсолютные максимальные оценочные значения1* Температура окружающей среды 0-70°С Температура хранения от