Ознакомление с внутренним устройством микропроцессора. Изучение грамматики и синтаксиса языка Ассемблер. Получение навыков разработки простейшего программного обеспечения.
Краткие теоретические сведения
8-битный микропроцессор Intel 8080 был выпущен в апреле 1974 года. Представляет собой усовершенствованную версию процессора Intel 8008. По заверениям Intel этот процессор обеспечивал 10-кратный прирост производительности, по сравнению с микропроцессором Intel 8008.
Процессор выпускался по 6 микронной NMOS/N-МОП технологии, что позволило разместить на кристалле 4500 транзисторов. Процессор, хотя и был построен на архитектуре Intel 8008, имел множество отличий от своего предшественника, благодаря которым процессор получил большую популярность. Cистема команд микропроцессоры состоит из 16 команд передачи данных, 31 команда для их обработки, 28 команд для перехода (с прямой адресацией), 5 команд управления. В микропроцессоре Intel 8080 нет команд умножения, для их использования приходится применять сопроцессор. Процессор, благодаря наличию 16-разрядной адресной шины, может адресовать 64 Кбайт памяти, которая не разделяется на память команд и данных. Хотя процессор и 8-разрядный и содержат 7 8-битных регистров (A, B, C, D, E, H, L), он может обрабатывать и 16-разрядные числа. Для этого объединялись некоторые пары регистров (BC, DE, HL). В процессоре используется стек внешней памяти (в i8008 стек был внутренним).
КР580ВМ80А — 8-разрядный микропроцессор, полный аналог микропроцессора Intel i8080 (1974 год). Является основным элементом микропроцессорного комплекта серии КР580. В различных вариантах выпускался с конца 1970-х годов до середины 1990-х годов. Изначально выпускался под названием К580ИК80, представляя собой клон i8080 в 44-выводном планарном металлокерамическом корпусе. Впоследствии был выпущен вариант для широкого применения, КР580ИК80А, являющийся полным клоном i8080A — в стандартном пластиковом корпусе PDIP40, с цоколёвкой, соответствующей оригинальному i8080A. В 1986 году, после изменения советской системы обозначений микросхем, получил название КР580ВМ80А, получившее наибольшую известность. Штатная тактовая частота для процессора К580ИК80 — 2 МГц, для КР580ИК80А и КР580ВМ80А — до 2,5 МГц (теоретически позволял работать на более высокой частоте). Каждая команда выполняется за 1..5 машинных циклов, каждый из которых состоит из 3..5 тактов. Таким образом средняя производительность оценивается на уровне 200..300 тыс. оп/c на частоте 2 МГц. Процессор содержал 4500 транзисторов по технологии 6 мкм n-МДП (данные для i8080, но для КР580ВМ80А вероятно должны быть аналогичными). Микропроцессор имел раздельные 16-разрядную шину адреса и 8-разрядную шину данных. 16-разрядная шина адреса обеспечивает прямую адресацию внешней памяти объемом до 64 Кбайт и 256 устройств ввода/вывода.
Помимо процессора КР580ВМ80А, ориентированного на широкое применение, выпускался военный вариант — 580ВМ80. Он отличался исполнением в металлокерамическом корпусе CDIP40, и являлся клоном i8080 (тактовая частота — 2 МГц).
КР580ВМ80А имеет 12 недокументированных команд (аналогично 8080). Опкоды #08, #10, #18, #20, #28, #30, #38 являются аналогами операции NOP; опкод #CB является аналогом JMP; опкоды #DD, #ED, #FD являются аналогами CALL; опкод #D9 является аналогом RET. Существует информация, что КР580ВМ80А отличался от зарубежного оригинала i8080 наличием двух дополнительных недокументированных команд. Однако, помимо перечисленных выше кодов операций, все остальные операции задокументированы, больше свободных кодов нет.
Zilog Z80 — 8-разрядный микропроцессор, разработанный и производимый фирмой Zilog с 1976 года. Он широко использовался в домашних и персональных компьютерах, а также во встраиваемых и военных системах. Z80, вместе с его наследниками и клонами, составляют одно из наиболее широко использовавшихся семейств микропроцессоров, а также, вместе с семейством MOS Technology 6502, было доминирующим семейством на рынке 8-разрядных компьютеров с 1970-х до середины 1980-х.
Zilog Z80 вышел спустя некоторое время после появления на рынке Intel 8080. Новый процессор создавался бинарно-совместимым с 8080, так что большая часть кода для 8080 шла на новом процессоре, в частности — операционная система CP/M. Z80 имел ряд улучшений по сравнению с 8080:
расширенный набор команд, включая побитовые операции, поблочное копирование, поблочный ввод/вывод, инструкции поиска
новые регистры IX и IY, и инструкции для них
новые режимы прерываний
два отдельных блока регистров, между которыми можно быстро переключиться
единственный 5-вольтовый источник питания
встроенная схема регенерации динамической памяти
значительно меньшая цена
Первые модели Z80 работали на тактовой частоте 2,5 МГц, более поздние модели достигали частоты до 20 МГц.
В Советском Союзе были созданы полностью совместимые клоны Z80 — микропроцессоры Т34ВМ1 и КР1858ВМ1.
Микропроцессоры серии Zilog eZ80 являются дальнейшим развитием Z80 и выпускаются в настоящее время. Используются во встраиваемых 8-разрядных устройствах. Микропроцессоры eZ80 выполняют код для Z80 в четыре раза быстрее, чем традиционные Z80-процессоры, и это при одинаковой частоте. Максимальная частота новых микропроцессоров - 50 МГц. В отличие от большинства 8-разрядных микропроцессоров с адресным пространством 64 Кб, представители серии eZ80 могут использовать 16 Mбайт. Более того, eZ80 поддерживает сетевые приложения, требующие TCP/IP, за счет встроенного стека протоколов Интернета. Это дает возможность передавать данные по протоколу HTML, осуществлять динамическую генерацию web-страниц, выполнять функции сетевых протоколов высокого уровня, таких, как протоколы электронной почты и SNMP.
Flash-микроконтроллеры серии Zilog eZ80, за которые компания Zilog получила награду, используют то же процессорное ядро, что и микропроцессоры серии eZ80, но отличаются объемом внутренней памяти (до 256 Кбайт flash-памяти и 16 Кбайт SRAM), частотой ядра процессора (до 50 МГц), а также встроенным модулем поддержки Ethernet EMAC. Микроконтроллеры eZ80 совмещают в себе новый уровень производительности для 8-разрядных устройств и новые возможности использования различных видов связи.
Указанные микропроцессоры, в основном, программируются с помощью языка ассемблера с использованием систем кросс-разработки (трансляторы работают на платформе, отличной от целевой). Основой языка ассемблера является прямая связь машинного кода (кода операции) процессора с мнемоникой (командой) ассемблера. Ассемблер также вносит ряд новых псевдо-команд, которые являются вспомогательными при трансляции. Типичная программа на ассемблере выглядит следующим образом:
;**************************************;* Программа сложения чисел 23h и 32h *;************************************** org 100h ; Начало программы, характерное для систем CP/Mstart: mvi a, 23h ; Поместить в аккумулятор число 23h mvi b, 32h ; Поместить в регистр b число 32h add b ; Сложить аккумулятор и регистр b ; и результат вернуть в аккумулятор rst 0 ; Возврат в операционную систему
После трансляции в машинные коды программа примет следующий вид:
Адрес Код0100h 3Eh0101h 23h0102h 06h0103h 32h0104h 80h0105h C7h
При ручной трансляции достаточно удобно использовать такой формат представления программы:
Адрес Код Метка Команда Комментарии org 100h ; Начало программы, характерное для систем CP/M0100h 3Eh start: mvi a, 23h ; Поместить в аккумулятор число 23h0101h 23h 0102h 06h mvi b, 32h ; Поместить в регистр b число 32h0103h 32h0104h 80h add b ; Сложить аккумулятор и регистр b ; и результат вернуть в аккумулятор0105h C7h rst 0 ; Возврат в операционную систему
В листинге на ассемблере, начиная с символа ; до конца строки все символы игнорируются, т.е. считаются коментариями.
В первой позиции каждой строки обычно присутствует метка, которая может быть использована для обращения к данной ячейки памяти. После метки, которая не является обязательной, следует команда процессора. После команды процессора идет от нуля до двух операндов.
В приведенном листинге команда org указывает, что следующие комады должны располагаться по адресам памяти, начиная с операнда команды org.
Команда mvi предназначена для помещения числа, указанного во втором операнде 23h в регистр, указанный в первом операнде a.
Более подробное описание команд можно найти в справочнике по системам команд микропроцессоров Intel 8080/Zilog 80
Рассмотрим работу микропроцессора на примере выполнения команды mov m, c, расположенной по адресу 0000h. В начальный момент времени микропроцессор выставляет на шине (магистрали) адреса (ADDRESS BUS) значение счетчика команд PC (Program Counter). Т.к. при включении микропроцессора содержимое счетчика команд равно нулю, ты будет выставлен на шину адреса 0000h. После чего подается на шину (магистраль) управления сигнал RD (П) (Read). Устройство, декодирующее данный адрес (обычно ОЗУ/RAM или ПЗУ/ROM), выставляет на шину (магистраль) данных (DATA BUS) то или иное значение в зависимости от адреса. Микропроцессор запоминает код с шины данных, снимает сигнал RD и декодирует данные с помощью дешифратора команд ДШК (INSTRUCTION DECODER). После дешифрации команды микропроцессор выполняет операции в соответствии выполняемой командой. Например, для команды mov m, c микропроцессор выполняет следующие операции:
Выставляет на шину адреса значение пары регистров HL
Выставляет на шину данных значение регистра C
На шину управления подается сигнал WR
В результате чего значение запоминается устройством, декодирующий данный адрес.