Intel 8085 (« восемьдесят восемьдесят пять ») — 8-разрядный микропроцессор , произведенный Intel и представленный в марте 1976 года. [2] Это последний 8-разрядный микропроцессор, разработанный Intel.
Он программно- бинарно совместим с более известным Intel 8080 , только с двумя дополнительными инструкциями для поддержки его дополнительных функций прерывания и последовательного ввода/вывода. Однако он требует меньше вспомогательных схем, что позволяет создавать более простые и менее дорогие микрокомпьютерные системы.
«5» в номере детали подчеркивает тот факт, что 8085 использует один источник питания +5 В (В) с использованием транзисторов в режиме истощения , а не требует источников питания +5 В, −5 В и +12 В, необходимых 8080. Эта возможность соответствует возможностям конкурирующего Z80 , популярного процессора на основе 8080, представленного годом ранее. Эти процессоры могли использоваться в компьютерах под управлением операционной системы CP/M .
8085 поставляется в 40-контактном DIP- корпусе. Чтобы максимизировать функции на доступных контактах, 8085 использует мультиплексную шину адреса/данных (AD 0 -AD 7 ). Однако схема 8085 требует 8-битной защелки адреса, поэтому Intel изготовила несколько вспомогательных микросхем со встроенной защелкой адреса. К ним относятся 8755 с защелкой адреса, 2 КБ EPROM и 16 контактами ввода-вывода, а также 8155 с 256 байтами ОЗУ , 22 контактами ввода-вывода и 14-битным программируемым таймером/счетчиком. Мультиплексная шина адреса/данных сократила количество дорожек печатной платы между 8085 и такими микросхемами памяти и ввода-вывода.
И 8080, и 8085 были вытеснены процессором Zilog Z80 для настольных компьютеров, который занял большую часть рынка компьютеров CP/M , а также долю бурно развивающегося рынка домашних компьютеров в начале-середине 1980-х годов.
8085 имел долгую жизнь в качестве контроллера, несомненно, благодаря встроенному последовательному вводу/выводу и пяти приоритетным прерываниям, возможно, микроконтроллерным функциям, которых не было у ЦП Z80. После того, как он был разработан в таких продуктах, как контроллер DECtape II и видеотерминал VT102 в конце 1970-х годов, 8085 служил для нового производства на протяжении всего срока службы этих продуктов. Обычно это было дольше, чем срок службы настольных компьютеров.
8085 — это обычная фон-неймановская конструкция на основе Intel 8080. В отличие от 8080, она не мультиплексирует сигналы состояния на шину данных, а вместо этого 8-битная шина данных мультиплексируется с нижними восемью битами 16-битной адресной шины, чтобы ограничить количество контактов до 40. Сигналы состояния предоставляются выделенными контактами сигнала управления шиной и двумя выделенными контактами идентификатора состояния шины, называемыми S0 и S1. Контакт 40 используется для питания (+5 В), а контакт 20 — для заземления. Контакт 39 используется как контакт Hold.
Процессор Intel 8085 был разработан с использованием схемы nMOS , а более поздние версии "H" были реализованы в усовершенствованном процессе nMOS Intel, известном как HMOS II ("High-performance MOS"), который изначально был разработан для быстрых статических RAM-продуктов. [3] В отличие от 8080, 8085 требует только одного источника питания 5 В, как и его конкурирующие процессоры. 8085 содержит около 6500 транзисторов . [4]
8085 объединяет функции 8224 (генератора тактовых импульсов) и 8228 (системного контроллера) на кристалле, что повышает уровень интеграции. Недостатком по сравнению с аналогичными современными конструкциями (такими как Z80) является тот факт, что шины требуют демультиплексирования; однако адресные защелки в чипах памяти Intel 8155, 8355 и 8755 допускают прямой интерфейс, поэтому 8085 вместе с этими чипами представляет собой почти полную систему.
8085 имеет расширения для поддержки новых прерываний с тремя маскируемыми векторными прерываниями (RST 7.5, RST 6.5 и RST 5.5), одним немаскируемым прерыванием (TRAP) и одним внешне обслуживаемым прерыванием (INTR). Каждое из этих пяти прерываний имеет отдельный вывод на процессоре, что позволяет простым системам избегать затрат на отдельный контроллер прерываний. Прерывание RST 7.5 запускается по фронту (фиксируется), в то время как RST 5.5 и 6.5 чувствительны к уровню. Все прерывания, кроме TRAP, включаются инструкцией EI и отключаются инструкцией DI. Кроме того, инструкции SIM (Set Interrupt Mask) и RIM (Read Interrupt Mask), единственные инструкции 8085, которые не относятся к конструкции 8080, позволяют индивидуально маскировать каждое из трех маскируемых прерываний RST. Все три маскируются после обычного сброса ЦП. SIM и RIM также позволяют считывать состояние глобальной маски прерываний и три независимых состояния маски прерываний RST, считывать состояния ожидающих прерываний тех же трех прерываний, сбрасывать триггер-защелку RST 7.5 (отменяя ожидающее прерывание без его обслуживания), а также отправлять и получать последовательные данные через выводы SOD и SID соответственно, все это под управлением программы и независимо друг от друга.
SIM и RIM выполняются за четыре такта (состояния T), что позволяет производить выборку SID и/или переключать SOD значительно быстрее, чем можно переключать или выбирать сигнал через любой порт ввода-вывода или отображенный в памяти порт, например, один из портов 8155. (Таким образом, SID можно сравнить с выводом SO ["Set Overflow"] процессора 6502, современного 8085.)
Как и 8080, 8085 может работать с более медленной памятью через внешне генерируемые состояния ожидания (контакт 35, READY) и имеет возможности для прямого доступа к памяти (DMA) с использованием сигналов HOLD и HLDA (контакты 39 и 38). Улучшение по сравнению с 8080 заключается в том, что 8085 может сам управлять пьезоэлектрическим кристаллом, напрямую подключенным к нему, а встроенный генератор тактовых импульсов генерирует внутренние высокоамплитудные двухфазные тактовые сигналы на половине частоты кристалла (например, кристалл 6,14 МГц даст тактовую частоту 3,07 МГц). Внутренние тактовые импульсы доступны на выходном контакте для управления периферийными устройствами или другими ЦП в режиме синхронизации с ЦП, с которого выводится сигнал. 8085 также может тактироваться внешним генератором ( что позволяет использовать 8085 в синхронных многопроцессорных системах с использованием общесистемных общих часов для всех ЦП или синхронизировать ЦП с внешним источником времени, например, с видеоисточником или высокоточным источником времени).
8085 — это двоично-совместимое продолжение 8080. Он поддерживает полный набор инструкций 8080 с точно таким же поведением инструкций, включая все эффекты на флаги ЦП (за исключением операции AND/ANI, которая устанавливает флаг AC по-другому). [5] Это означает, что подавляющее большинство объектного кода (любой образ программы в ПЗУ или ОЗУ), который успешно работает на 8080, может работать напрямую на 8085 без трансляции или модификации. (Исключения включают в себя критичный по времени код и код, который чувствителен к вышеупомянутой разнице в настройке флага AC или различиям в недокументированном поведении ЦП.) Временные характеристики инструкций 8085 немного отличаются от 8080 — некоторые 8-битные операции, включая INR, DCR и часто используемую инструкцию MOV r,r', выполняются на один такт быстрее, но инструкции, которые включают 16-битные операции, включая операции со стеком (которые увеличивают или уменьшают 16-битный регистр SP), обычно на один такт медленнее. Конечно, возможно, что фактические характеристики 8080 и/или 8085 отличаются от опубликованных, особенно в тонких деталях. (То же самое не относится к Z80.) Как уже упоминалось, только инструкции SIM и RIM были новыми для 8085. [примечание 1]
Процессор имеет семь 8-битных регистров , доступных программисту, называемых A, B, C, D, E, H и L, где A также известен как аккумулятор. Остальные шесть регистров могут использоваться как независимые байтовые регистры или как три 16-битные пары регистров, BC, DE и HL (или B, D, H, как указано в документах Intel), в зависимости от конкретной инструкции.
Некоторые инструкции используют HL как (ограниченный) 16-битный аккумулятор. Как и в 8080, содержимое адреса памяти, на который указывает HL, может быть доступно как псевдорегистр M. Он также имеет 16-битный счетчик программ и 16-битный указатель стека на память (заменяющий внутренний стек 8008 ). Такие инструкции, как PUSH PSW, POP PSW, влияют на слово состояния программы (аккумулятор и флаги). Аккумулятор хранит результаты арифметических и логических операций, а биты регистра флагов (знак, ноль, вспомогательный перенос, четность и флаги переноса) устанавливаются или очищаются в соответствии с результатами этих операций. Флаг знака устанавливается, если результат имеет отрицательный знак (т. е. он устанавливается, если установлен бит 7 аккумулятора). Флаг вспомогательного или половинного переноса устанавливается, если произошел перенос с бита 3 на бит 4. Флаг четности устанавливается в 1, если четность (количество единичных битов) аккумулятора четная; если нечетная, он очищается. Нулевой флаг устанавливается, если результат операции равен 0. Наконец, флаг переноса устанавливается, если произошел перенос из бита 7 аккумулятора (старшего бита).
Как и во многих других 8-битных процессорах, все инструкции кодируются в один байт (включая номера регистров, но исключая непосредственные данные) для простоты. За некоторыми из них следуют один или два байта данных, которые могут быть непосредственным операндом, адресом памяти или номером порта. Инструкция NOP "no operation" существует, но не изменяет ни один из регистров или флагов. Как и более крупные процессоры, он имеет инструкции CALL и RET для многоуровневых вызовов процедур и возвратов (которые могут быть условно выполнены, как переходы) и инструкции для сохранения и восстановления любой 16-битной пары регистров в стеке машины. Также имеется восемь однобайтовых инструкций вызова (RST) для подпрограмм, расположенных по фиксированным адресам 00h, 08h, 10h,...,38h. Они предназначены для поставки внешним оборудованием с целью вызова соответствующей процедуры обслуживания прерываний, но также часто используются в качестве быстрых системных вызовов. Одной из сложных инструкций является XTHL, которая используется для обмена пары регистров HL со значением, хранящимся по адресу, указанному указателем стека.
Все двухоперандные 8-битные арифметические и логические (АЛУ) операции работают с 8-битным аккумулятором (регистром A). Для двухоперандных 8-битных операций другим операндом может быть либо непосредственное значение, либо другой 8-битный регистр, либо ячейка памяти, адресуемая парой 16-битных регистров HL. Единственными 8-битными операциями АЛУ, которые могут иметь назначение, отличное от аккумулятора, являются инструкции унарного инкремента или декремента, которые могут работать с любым 8-битным регистром или памятью, адресуемой HL, как и для двухоперандных 8-битных операций. Прямое копирование поддерживается между любыми двумя 8-битными регистрами и между любым 8-битным регистром и ячейкой памяти, адресуемой HL, с помощью инструкции MOV. Непосредственное значение также может быть перемещено в любое из вышеупомянутых назначений с помощью инструкции MVI. Из-за регулярного кодирования инструкции MOV (использующей почти четверть всего пространства опкодов) существуют избыточные коды для копирования регистра в себя ( например, MOV B,B ), которые малопригодны, за исключением задержек. [примечание 2] Однако то, что было бы копированием из ячейки с адресом HL в себя (т. е. MOV M,M ), вместо этого кодирует инструкцию HLT , останавливая выполнение до тех пор, пока не произойдет внешний сброс или немаскированное прерывание. [примечание 3 ]
Хотя 8085 является 8-битным процессором, он имеет некоторые 16-битные операции. Любая из трех 16-битных пар регистров (BC, DE, HL) или SP может быть загружена непосредственным 16-битным значением (с использованием LXI), увеличена или уменьшена (с использованием INX и DCX) или добавлена к HL (с использованием DAD). LHLD загружает HL из напрямую адресуемой памяти, а SHLD сохраняет HL аналогичным образом. Операция XCHG обменивает значения HL и DE. XTHL обменивает последний элемент, помещенный в стек, с HL. Добавление HL к себе выполняет 16-битный арифметический сдвиг влево с помощью одной инструкции. Единственная 16-битная инструкция, которая влияет на любой флаг, — это DAD (добавление BC, DE, HL или SP к HL), которая обновляет флаг переноса для упрощения 24-битных или более крупных сложений и сдвигов влево. Добавление указателя стека в HL полезно для индексации переменных в (рекурсивных) кадрах стека. Кадр стека может быть выделен с помощью DAD SP и SPHL, а переход к вычисляемому указателю может быть выполнен с помощью PCHL. Эти возможности делают возможным компиляцию таких языков, как PL/M , Pascal или C с 16-битными переменными и создание машинного кода 8085. Вычитание и побитовые логические операции над 16 битами выполняются за 8-битные шаги. Операции, которые должны быть реализованы программным кодом (библиотеками подпрограмм), включают сравнение знаковых целых чисел, а также умножение и деление.
Несколько недокументированных инструкций и флагов были обнаружены двумя инженерами-программистами, Вольфгангом Денхардтом и Вилли М. Соренсеном, в процессе разработки ассемблера 8085. Эти инструкции используют 16-битные операнды и включают в себя косвенную загрузку и сохранение слова, вычитание, сдвиг, поворот и операции смещения. [6]
К тому времени, когда 8085 был разработан, но еще не анонсирован, многие проектировщики обнаружили, что он уступает конкурирующим продуктам, уже представленным на рынке. Следующее поколение ЦП 8086 уже находилось в разработке. Intel в последнюю минуту приняла решение оставить 10 из 12 новых инструкций 8085 недокументированными, чтобы ускорить и упростить проектирование будущего ЦП 8086. [7]
8085 поддерживает как порт-отображенный, так и отображаемый в память ввод-вывод . Он поддерживает до 256 портов ввода-вывода (I/O) через выделенные инструкции ввода-вывода с адресами портов в качестве операндов. Порт-отображенный ввод-вывод может быть преимуществом на процессорах с ограниченным адресным пространством. Во время цикла шины ввода-вывода с отображением в порт 8-битный адрес ввода-вывода выводится ЦП как на нижней, так и на верхней половине 16-битной адресной шины.
Доступ к устройствам, разработанным для ввода-вывода с отображением памяти, также можно получить с помощью инструкций LDA (загрузить аккумулятор с 16-битного адреса) и STA (сохранить аккумулятор по указанному 16-битному адресу) или любых других инструкций, имеющих операнды памяти. Цикл передачи ввода-вывода с отображением памяти отображается на шине как обычный цикл доступа к памяти.
Intel выпустила серию систем разработки для 8080 и 8085, известную как MDS-80 Microprocessor System. Первоначальная система разработки имела процессор 8080. Позже была добавлена поддержка 8085 и 8086, включая ICE ( внутрисхемные эмуляторы ). Это большой и тяжелый настольный корпус, размером около 20 дюймов (в корпоративном синем цвете Intel), который включает в себя ЦП, монитор и один 8-дюймовый дисковод. Позже был выпущен внешний корпус с двумя дополнительными дисководами. Он работает под управлением операционной системы ISIS , а также может управлять модулем эмулятора и внешним программатором EPROM . Это устройство использует каркас для карт Multibus, который был предназначен только для системы разработки. Было продано удивительное количество запасных каркасов для карт и процессоров, что привело к разработке Multibus как отдельного продукта.
Более поздняя версия iPDS представляет собой портативное устройство размером около 8" × 16" × 20", с ручкой. У него есть небольшой зеленый экран, клавиатура, встроенная в верхнюю часть, дисковод 5¼ дюйма и операционная система ISIS-II. Он также может принимать второй процессор 8085, что позволяет использовать ограниченную форму многопроцессорной работы, когда оба процессора работают одновременно и независимо. Экран и клавиатуру можно переключать между ними, что позволяет собирать программы на одном процессоре (большие программы занимали некоторое время), пока файлы редактируются на другом. Он имеет опцию пузырьковой памяти и различные программные модули, включая EPROM, а также программные модули Intel 8048 и 8051 , которые подключаются сбоку, заменяя автономные программаторы устройств. В дополнение к ассемблеру 8080/8085, Intel выпустила ряд компиляторов, включая компиляторы для PL/M-80 и Pascal , а также набор инструментов для связывания и статического размещения программ, чтобы включить их для записи в СППЗУ и использования во встраиваемых системах .
Более дешевая плата «MCS-85 System Design Kit» (SDK-85) содержит ЦП 8085, ПЗУ 8355 с программой отладки монитора, ОЗУ 8155 и 22 порта ввода-вывода, шестнадцатеричную клавиатуру 8279 и 8-разрядный 7-сегментный светодиод, а также TTY (телетайп).Последовательный интерфейс токовой петли 20 мА . Доступны площадки для еще одного 2K×8 8755 EPROM и еще одногоОпционально можно добавить 256 байт RAM 8155 I/O Timer/Counter. Все сигналы данных, управления и адреса доступны на двухконтактных разъемах, а также предоставляется большая область для прототипирования.
Процессор 8085 использовался в нескольких ранних персональных компьютерах, например, линейка TRS-80 Model 100 использовала 80C85 (MSM80C85ARS) производства OKI. У версии CMOS 80C85 процессора NMOS/HMOS 8085 есть несколько производителей. В Советском Союзе был разработан клон 80C85 под обозначением IM1821VM85A ( русский : ИМ1821ВМ85А [ru] ), который в [обновлять]2016 году все еще производился. [11] Некоторые производители предоставляют варианты с дополнительными функциями, такими как дополнительные инструкции. [ требуется цитата ]
Радиационно -устойчивая версия 8085 использовалась в процессорах данных бортовых приборов для нескольких космических физических миссий NASA и ESA в 1990-х и начале 2000-х годов, включая CRRES , Polar , FAST, Cluster, HESSI , марсоход Sojourner [12] и THEMIS . Швейцарская компания SAIA использовала 8085 и 8085–2 в качестве ЦП своей линейки программируемых логических контроллеров PCA1 в 1980-х годах.
Pro-Log Corp. поместила 8085 и поддерживающее оборудование на карту формата STD Bus, содержащую ЦП, ОЗУ, разъемы для ПЗУ/СППЗУ, интерфейсы ввода-вывода и внешней шины. Входящая в комплект справочная карта набора инструкций использует совершенно другую мнемонику для ЦП Intel 8085. Продукт был прямым конкурентом предложениям карт Multibus от Intel.
Процессор 8085 является частью семейства микросхем, разработанных Intel для построения полной системы. Многие из этих вспомогательных микросхем также использовались с другими процессорами. Оригинальный IBM PC на базе процессора Intel 8088 использовал несколько таких микросхем; эквивалентные функции сегодня обеспечивают микросхемы VLSI , а именно микросхемы " Southbridge ".
Во многих инженерных школах процессор 8085 используется на вводных курсах по микропроцессорам. Учебные комплекты, состоящие из печатной платы, 8085 и вспомогательного оборудования, предлагаются различными компаниями. Эти комплекты обычно включают полную документацию, позволяющую студенту перейти от пайки к программированию на языке ассемблера за один курс. Кроме того, архитектура и набор инструкций 8085 просты для понимания студентом. Версии общих проектов образовательных и любительских одноплатных компьютеров на базе 8085 указаны ниже в разделе Внешние ссылки этой статьи.
Для микропроцессора 8085 доступны программные симуляторы, которые позволяют имитировать выполнение кодов операций в графической среде.
Процессор 8085A на 100% совместим с программным обеспечением процессора Intel 8080A.
Симуляторы:
Доски: