9. Форматы микрокоманд при разных способах адресации.
10. Основные способы кодирования микрокоманд.
11. Варианты синхронизации выполнения микрокоманд.
Тема 13. Универсальные микропроцессоры
Лекция 16. Архитектура процессора КР580ВМ80
В разделе 12 уже рассматривались принципы функционирования элементарного гипотетического микропроцессора (термин "микропроцессор" и "процессор" далее используются как синонимы). Между тем для изучения принципов функционирования даже простейшей микроЭВМ необходимо выбрать конкретный тип процессора с конкретной системой команд и управляющих сигналов. Примером простейшего универсального процессора (т.е. процессора с универсальной системой команд) аккумуляторного типа является I8080 (отечественный аналог КР580ВМ80А), выпущенный Intel в 1974 году. В этом же году на процессоре I8080 был спроектирован компьютер "Альтаир 8800", который некоторые эксперты называют первым персональным компьютером в истории развития техники. Именно это поколение 8-разрядных МП (I8080, I8085, Z80 и др.) стало широко применяться в управляющих микроЭВМ, контроллерах АСУ ТП, микрокомпьютерах общего назначения и в учрежденческой деятельности, в основном для обработки текстов.
Процессор I8080 имеет 8-разрядное АЛУ и УУ, выполненные на одном кристалле, содержащем около 5000 транзисторов. БИС МП имеет 40 выводов. Управляющее устройство выполнено на ПЛМ и недоступно пользователю, т.е. процессор имеет фиксированную систему команд. Напряжение питания ±5 В и +12 В. МП имеет двухфазную синхронизацию (F1 и F2) при тактовой частоте до 2,5 МГц и следующие шины:
· ША – 16-разрядная. Используется для адресации:
- ОЗУ, ПЗУ (команды R/W) – 16 разрядов (адресное пространство составляет 64 К);
· ШУ – отдельно не оформлена и имеет 10 линий, по которым передаются 4 входных и 6 выходных сигналов.
Условное обозначение МП на схемах приведено на рис. 16.1.
Рассмотрим коротко, без подробных пояснений, назначение управляющих сигналов, учитывая, что ряд входных и выходных сигналов образуют как бы пары, отвечая за те или иные действия МП.
Рис.16.1. Условное обозначение МП КР580ВМ80
Управление прерыванием
INT – входной сигнал запроса прерываний от ПУ, воспринимаемый МП после выполнения текущей команды. Сигнал не воспринимается, если МП находится в режиме захвата или запрещения прерывания.
INTE – выходной сигнал разрешения прерывания. Этот сигнал отражает состояние внутреннего триггера "разрешение прерывания", который устанавливается только программно.
Управление режимом ожидания
READY – входной сигнал готовности, который сообщает о готовности устройства вести обмен с МП. При его отсутствии МП переходит в состояние ожидания. Позволяет синхронизировать работу МП и более медленной памяти или ПУ. Сигнал READY может задаваться как с ПУ, так и со вспомогательного таймера. В простейших устройствах этот вход не используется и подключается через сопротивление к источнику +5 В.
WAIT – выходной сигнал ожидания, подтверждающий, что МП находится в режиме ожидания.
Управление обменом информации
HOLD (HLD) – входной сигнал захвата шин от ПУ. Переводит буферы ША и ШД МП в третье состояние (состояние Z) , т.е. МП отключается от шин. Это позволяет ПУ занимать магистраль для инициализации обмена
HLDA – выходной сигнал подтверждения состояния захвата МП.
Управление чтением/записью
DBIN – выходной сигнал приема. Указывает памяти и ПУ, что ШД находится в режиме приема информации в МП, т.е. в режиме чтения.
– выходной сигнал выдачи. Используется для управления выдачей информации из МП в память и ПУ (режим записи). Активным является
Упрощенная функциональная схема МП изображена на рис. 16.2. На схеме изображены только функциональные связи между основными узлами МП. Цепи передачи управляющих сигналов, порождающих соответствующие микрооперации в узлах МП, на рисунке отсутствуют. В скобках указана разрядность устройств МП.
16.1. Регистры данных
Для хранения участвующих в операции данных предусмотрены семь 8-разрядных регистров. РгА, называемый аккумулятором, предназначен для обмена информацией с памятью и ПУ, т.е. его содержимое может быть выдано на ШД либо число с ШД записано в него. При выполнении арифметических, логических операций и операций сдвига он служит источником операнда. В него же всегда помещается результат выполнения операций.
Шесть других регистров называются B, C, D, E, H, L и образуют блок регистров общего назначения – РОН. Эти регистры программно доступны, и обращение к ним осуществляется посредством команд передачи данных. Причем обмен данными внутри МП (т.е. между РОН, АЛУ и аккумулятором) осуществляется по внутренней 8-разрядной шине через двунаправленный мультиплексор. РОН могут хранить как данные, так и адреса. Эти регистры можно использовать двояко – как одиночные восьмиразрядные регистры и как регистровые пары BC, DE, HL для хранения 16-разрядных двоичных чисел.
Рис.16.2. Функциональная схема МП
Регистры БР1, БР2, W, Z используются как буферные и программно недоступны (т.е. их содержимое посредством команд пользователь изменять не может).
Указатель стека SP служит для адресации стековой памяти и может хранить 16-разрядные адреса.
Счетчик адреса команд PC предназначен для хранения 16-разрядного адреса команды, а точнее, адреса текущего байта команды, поскольку команды могут занимать 1, 2, 3 байта. После выборки из памяти текущего байта содержимое счетчика увеличивается на 1, т.е. формируется адрес следующего байта. При обращении к памяти (если используется косвенная адресация) в качестве адреса может использоваться содержимое любой регистровой пары РОН.
При выдаче адреса содержимое соответствующих регистров передается в 16-разрядный регистр адреса (РА), из которого далее через БА адрес поступает на ША системного интерфейса.
16.2. Арифметико-логическое устройство
МП имеет 8-разрядное АЛУ, которое позволяет выполнять 4 арифметические операции (сложение с передачей переноса в младший разряд и без него, вычитание с передачей займа в младший разряд и без него), четыре вида логических операций (конъюнкция дизъюнкция, неравнозначность, сравнение), а также 4 вида циклических сдвигов.
При выполнении арифметических операций одним из операндов всегда является содержимое аккумулятора. Результат всегда помещается в аккумулятор. Циклический сдвиг выполняется только над содержимым аккумулятора.
Предусмотрена возможность выполнения арифметических операций над десятичными числами. При этом в байт укладываются две десятичные цифры в коде 8421. При рассмотрении операций десятичной арифметики отмечалось, что может потребоваться коррекция результата, т.е. прибавление к нему числа 0110(2). Такая коррекция в каждой тетраде результата осуществляется схемой десятичной коррекции (СДК).
16.3. Регистр признаков
Ранее отмечалось, что РгП называют еще регистром флажков и обозначают часто буквами Ф или F. Это 8-разрядный регистр, в котором используются только 5 разрядов. Он предназначен для хранения ряда признаков, выявляемых в числе, которое является результатом операции в АЛУ или РОН. Триггеры регистра имеют следующее назначение:
Tc (триггер переноса) – устанавливается в 1 при наличии переноса из старшего разряда при выполнении арифметических операций (c=1 – перенос есть; c=0 – переноса нет). Кроме того, запоминает содержимое выдвигаемого из аккумулятора разряда при выполнении операции сдвига.
Tz (триггер нуля) – устанавливается в состояние логической 1, если результат операции в АЛУ или операции приращения содержимого РОН равен 0 (z=1 – результат равен 0, z=0 – результат не 0).
Ts (триггер знака) – устанавливается в состояние, соответствующее значению старшего разряда результата операции в АЛУ или операции приращения содержимого РОН (s=0 – результат положительный, s=1 – результат отрицательный).
Tp (триггер четности) – устанавливается в состояние логической 1, если число единиц в разрядах результата четно (p=1 – вес результата четный, p=0 – нечетный).
Tv (триггер дополнительного переноса) хранит перенос из 3-го разряда, возникающий при выполнении операции в АЛУ.
16.4. Блок управления
Состоит из регистра команд, куда принимается первый байт команды, дешифратора команд и непосредственно управляющего устройства, формирующего управляющие сигналы, под действием которых выполняются последовательности микроопераций в отдельных узлах МП. Как уже отмечалось, управляющее устройство выполнено на ПЛМ, т.е. микропрограммы хранятся за счет системы жестких связей и не могут быть изменены пользователем. Четыре входных и шесть выходных сигналов управляющего устройства при наличии системного контроллера позволяют процессору управлять вычислительными системами достаточно сложной структуры.
16.5. Буферы
Буферы адреса и данных связывают МП с внешними шинами адреса и данных (шинами системного интерфейса). В качестве выходных каскадов в буферах используются логические элементы с тремя состояниями. Это позволяет процессору отключаться от внешних шин и предоставлять их в распоряжение ПУ. Буфер ШД двунаправленный, что позволяет использовать ШД в полудуплексном режиме для приема и передачи информации в неперекрывающиеся интервалы времени.
Принцип двунаправленного обмена данными между внутренней и внешней ШД можно пояснить схемой, изображенной на рис. 16.3.
Следует помнить, что передача информации по шинам как внутренним, так и внешним осуществляется в параллельном коде, т.е. выходные и входные логические элементы буфера ШД имеют 8- канальную структуру.
Рис.16.3. Функциональная схема буфера ШД МП
16.6. МП с точки зрения программиста
С точки зрения пользователя, реализация физических процессов, протекающих в микросхеме, не представляет особого интереса, как и физическая реализация отдельных узлов МП. В распоряжение пользователя предоставляется ряд формальных устройств МП, с которыми он может производить те или иные манипуляции посредством команд программы. Для общения с тем или иным устройством пользователю необходимо знать адрес или номер этого устройства.
Структура МП I8080 (КР580), с точки зрения программиста, представлена на рис. 16.4. Аккумулятор и регистр признаков (флагов) являются половинами одного 16-битного регистра, но пользователь может обращаться к ним как к отдельным 8-битовым регистрам. В документации на МП КР580 содержимое РгП названо словом состояния процессора (PSW). Однако некоторые авторы под PSW понимают не только содержимое РгП, но и содержимое аккумулятора, т.е. PSW ≡ (А)(F). Такая трактовка PSW (регистра PSW) используется при дальнейшем изложении материала.
Таким образом, пользователь имеет в своем распоряжении:
- восьмибитовые регистры A, B, C, D, E, H, L, каждый из которых имеет свой трехразрядный адрес (номер);
- 16-битовые регистровые пары BC, DE, HL, определяемые по имени старшего регистра пары (т.е. B, D, H);
- 16-битовые регистры PC, SP, PSW;
- 8-битовый РгП(F), который можно рассматривать отдельно от PSW;
- однобитовый регистр (триггер) разрешения прерывания.
Рис.16.4. МП с точки зрения программиста
Более подробно РгП (F) изображен на рис. 16.5.
Рис.16.5. Регистр признаков
16.7. Форматы данных в КР580ВМ80
Основной формат данных изображен на рис. 16.6.
Рис.16.6. Основной формат данных
В микропроцессоре байт данных может интерпретироваться следующим образом:
· Целое число без знака
255(10) = 1111 1111(2) = FF(16) (FFH)
. . . . . . . . . . . . . . . .
0(10) = 0000 0000(2) = 00(16) (00H).
· Число со знаком в дополнительном коде
+127(10) = 0111 1111(2) = 7F(16)
. . . . . . . . . . . . . . . .
0(10) = 0000 0000(2) = 00(16)
-1(10) = 1111 1111(2) = FF(16)
. . . . . . . . . . . . . . . .
-128(10) = 1000 0000(2) = 80(16).
· Двухразрядное двоично-десятичное число
99(10) = 1001 1001(2) = 99(16)
. . . . . . . . . . . . . . . .
0(10) = 0000 0000(2) = 00(16).
· Логический байт данных.
В ряде случаев используется двухбайтовый формат данных:
· Двухбайтовое число со знаком в дополнительном коде
· Двухбайтовое число без знака
16.8. Форматы команд в КР580ВМ80
Для команд используются одно-, двух-, трехбайтовые форматы, причем код операции (КОП) занимает всегда 1 байт. Кроме того, следует помнить, что ША имеет 16 разрядов, т.е. позволяет адресоваться к памяти в 64К однобайтовых ячеек. Следовательно, в этом случае для адреса требуется 2 байта.
В то же время, используя команды INPUT/OUTPUT, программист может адресоваться к 256- регистрам ППУ. Следовательно, в этом случае для адреса требуется только 1 байт, который передается по младшим разрядам ША А7...А0. (Этот же байт дублируется в старших разрядах ША А15...А8, т.е. если адрес регистра F8, то на ША присутствует F8F8).
В общем случае форматы команд МП имеют вид, показанный на рис. 16.7. В первом байте помещается КОП, а во втором однобайтовый операнд или номер регистра ППУ (рис. 16.7, а, б).
Рис.16.7. Форматы команд
В трехбайтовом формате (рис. 16.7, в) первый байт содержит код операции (КОП). Два следующих байта содержат соответственно младший и старший байты адреса ячеек ОП (ПЗУ) либо двухбайтовый операнд.
16.9. Способы адресации
Способы адресации рассмотрим очень коротко, поскольку все типы адресации в общем виде разобраны ранее.
Прямая адресация
В этом случае источником или приемником операнда являются ячейки памяти или регистр ППУ.
Адрес ячейки памяти или регистра ППУ записывается в команде:
- двухбайтовая команда – адрес регистра ППУ;
- трехбайтовая команда – адрес ячейки памяти.
Регистровая адресация
В этом случае источником или приемником операнда является РОН. Номер РОН записывается в коде операции. Команды однобайтовые (номер РОН – 3 разряда).
Косвенная адресация
В этом случае источником или приемником операнда является ячейка памяти. Команды однобайтовые. Адрес ячейки памяти находится в регистровой паре, например HL. Есть команды инкремента и декремента (±1) содержимого регистровых пар, что позволяет модифицировать адрес.
Стековая адресация
В этом случае источником или приемником операнда является ячейка памяти. Команды однобайтовые.
Адрес вершины стека находится в указателе стека SP. При заполнении стек растет в сторону уменьшения адресов, т.е. формируется стек, который ранее был назван перевернутым. Начальный адрес стека устанавливается в указателе стека (SP) программным путем. Уже отмечалось, что SP имеет 16 разрядов, поэтому, если начальным адресом стека выбрать последний адрес всего адресного пространства, то стек может иметь емкость 64 Кбайт.
Обмен со стеком (т.е. загрузка/выгрузка) производится двухбайтовыми словами. При этом загрузка в стек сводится к следующей последовательности действий со стороны МП:
- выполняется операция (SP) = (SP) - 1;
- по новому адресу записывается старший байт вводимого двухбайтового слова;
- выполняется операция (SP) = (SP) - 1;
- по новому адресу записывается младший байт (второй) вводимого двухбайтового слова.
Выгрузка стека сводится к следующему:
- считывается младший байт по адресу (SP);
- выполняется операция (SP) = (SP) + 1;
- считывается старший байт по новому адресу;
- выполняется операция (SP) = (SP) + 1.
Непосредственная адресация
В этом случае операнд находится в самой команде. Операнд может быть одно- и двухбайтовым. В соответствии с этим команды могут быть двухбайтовыми и трехбайтовыми (первый байт всегда занимает КОП).
Следует помнить, что в трехбайтовой команде младшие разряды 16-битового числа содержатся во втором байте команды, а старшие в третьем.
16.10. Контрольные вопросы
1. Приведите условное обозначение МП КР580ВМ80. Опишите назначение всех выводов.
2. Функциональная схема МП КР580ВМ80.
3. Назначение отдельных разрядов слова состояния регистра признаков МП КР580ВМ80.
4. Функциональная схема буфера ШД МП КР580ВМ80.
5. МП КР580ВМ80 с точки зрения программиста.
6. Форматы данных и команд в МП КР580ВМ80.
7. Способы адресации в МП КР580ВМ80.
Лекция 17. Система команд КР580ВМ80
Для программирования микроЭВМ на базе МП комплекта КР580 используется 244 команды. Ниже очень коротко будет рассмотрена только часть команд, необходимая для программирования простых задач. Таблицы команд и краткие пояснения к ним можно найти во многих источниках.
Следует помнить, что любая машинная команда – это двоичное кодовое слово определенной длины. Однако пользоваться двоичными кодами при программировании человеку крайне трудно, поэтому для программирования используют язык ассемблера или просто ассемблер . В этом языке вместо кодовых комбинаций используется мнемоническая форма записи операций, выполняемых в БИС. Каждой команде на языке ассемблера соответствует одна команда на языке кодовых комбинаций. Ниже будут рассмотрены команды именно на языке ассемблера.
Перед исполнением программа должна быть переведена на язык кодовых комбинаций и помещена в память микроЭВМ. Такая трансляция производится автоматически специальной программой, называемой ассемблером. Если ассемблер отсутствует, то перед вводом программы такой перевод делают вручную. В этом случае ввод команд в микроЭВМ осуществляется обычно в шестнадцатеричной системе счисления.
Все команды МП КР580 целесообразно разделить на группы, например, следующим образом:
· Пересылки однобайтовые для обмена операндами и результатами между аккумулятором, РОН, памятью, регистрами ППУ.
· Пересылки двухбайтовые для обмена адресами, операндами, результатами между SP, регистровыми парами, парами ячеек памяти, стеком.
· Операции в аккумуляторе, которые делятся на арифметические, логические (в аккумуляторе и регистре флагов), сдвиги.
· Арифметические операции в РОН и памяти.
· Команды управления.
17.1. Пересылки однобайтовые
Команды этой группы не изменяют содержимого регистра признаков РгП (F). Принципы их выполнения иллюстрирует рис. 17.1.
Ниже рассмотрим в качестве примера последовательность из нескольких команд однобайтовых пересылок. Операнды и адреса записаны в шестнадцатеричной системе счисления. Кроме того, здесь и далее предполагается, что аккумулятор, ячейки памяти и регистры первоначально (до записи) содержат 00:
Рис.17.1. Схема взаимодействия узлов МП при выполнении однобайтовых пересылок
17.2. Пересылки двухбайтовые
Команды этой группы не изменяют содержимого РгП (F). Принципы их выполнения иллюстрирует рис. 17.2. Предполагается, что PSW≡(A)(F).
Рис.17.2. Схема взаимодействия узлов МП при выполнении двухбайтовых пересылок; & - двухбайтовый операнд; остальные обозначения аналогичны рис.17.1
Поясним две команды:
XCHG – это обмен содержимым пар HL и DE, причем (H) « (D), (L) « (E);
XTHL – это обмен содержимым пары HL и верхушки стека. Значение SP не изменяется, при этом (L) « ((SP)) и (H) « ((SP)+1).
Рассмотрим в качестве примера несколько команд двухбайтовых пересылок.
17.3. Операции в аккумуляторе
Команды этой группы изменяют содержимое РгП (F) в соответствии с содержимым аккумулятора (рис. 17.3).
Выполняемые операции подразделяются на двуместные и одноместные.
В общем случае РОН = AçBçCçDçEçHçL; СКО – символьный код операции.
В свою очередь, двуместные операции в аккумуляторе делятся на арифметические и логические.
Операции двуместные
· Арифметические операции:
- сложение содержимого аккумулятора с содержимым РОН, ячеек памяти (косвенная адресация по HL), непосредственным операндом;
- сложение содержимого аккумулятора и тех же операндов и бита переноса C (часто обозначают CY);
- вычитание из содержимого аккумулятора содержимого РОН, ячеек памяти (косвенно адресуемых по HL) или непосредственного операнда;
- вычитание из содержимого аккумулятора тех же операндов и бита переноса;
- сравнение содержимого аккумулятора с содержимым РОН, ячейками памяти (косвенно адресуемых по HL), непосредственным операндом.
Рис.17.3. Схема взаимодействия узлов МП при выполнении двуместных операций в аккумуляторе
В последнем случае вычисляется разность (A) – (операнд), которая никуда не записывается (т.е. A не изменится), а используется для установки флагов в регистре признаков F.
Рассмотрим несколько примеров:
ADD B A ¬ (A) + (B);
SUB M A ¬ (A) - (ячейка (M));
ACI 07 A ¬ (A) + 07 + C;
CMP D (A) - (D) ® установка F, (A) – не изменилось.
· Логические (побитовые) операции:
- конъюнкция содержимого аккумулятора с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), непосредственным операндом.
- дизъюнкция содержимого аккумулятора с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), непосредственным операндом.
- сложение по модулю 2 с содержимым РОН, ячейки памяти (косвенно адресуемой по HL), с непосредственным операндом.
Рассмотрим несколько примеров:
ANA D A ¬ (A) & (D);
ANI A4 A ¬ (A) & A4;
ORA M A ¬ (A) Ú (ячейка (M));
XRA E A ¬ (A) Å (E);
XRI F4 A ¬ (A) Å F4.
Операции одноместные
· Арифметическая операция:
DAA – десятичная коррекция аккумулятора при работе с двоично-десятичными числами.
· Логические операции:
CMA – инверсия аккумулятора;
STC – установка бита C (т.е. C ¬ 1);
CMC – инверсия бита C (т.е. C ¬`C).
Две последние команды выполняются в РгП (F).
· Сдвиги на 1 разряд:
Примеры реализации сдвиговых команд приведены на рис. 17.4.
Рис.17.4. Схема выполнения операций сдвига
17.4. Операции в РОН и памяти
Ряд операций в МП комплекте КР580 могут быть выполнены помимо аккумулятора, непосредственно в РОН и ячейках памяти. К таким операциям относятся:
Инкремент/декремент
Арифметические однооперандные операции увеличения на 1 (инкремент) и уменьшения на 1 (декремент) являются распространенными операциями для организации счетчиков при просмотре таблиц. На рис. 17.5 представлены примеры выполнения этих команд с РОН, регистровой парой и ячейкой памяти, косвенно адресуемой по HL.
Рис.17.5. Инкремент/декремент
Рассмотрим два примера:
Следует помнить, что при инкременте/декременте регистровой пары содержимое рассматривается как единое 16-разрядное число. При выполнении этой команды РгП не изменяется. При выполнении команды инкремента/декремента РОН и ячеек памяти, косвенно адресуемых по HL, РгП изменяется.
Сложение двухбайтовых операндов
DAD rp HL ¬ (HL) + (rp)
rp = BçDçHçSP
В РгП изменяется только признак C (CY).
17.5. Команды управления
Команды этой группы не изменяют содержимого РгП (F).
Команды безусловного перехода
По прямому адресу
JMP @, где @ – двухбайтовый адрес (@ ® PC).
Например:
По косвенному адресу
PCHL – адрес перехода хранится в регистровой паре HL. При ее выполнении (HL) → PC.
Команды условного перехода
Jcon @, где con – мнемоника условия от английского слова condition.
Ранее отмечалось, что в качестве условия перехода используют состояние разрядов (флажков) РгП (F). Мнемоника, соответствующая этим состояниям, представлена на рис. 17.6.
Рис.17.6. Регистр признаков РгП(F)
Например: JC 8BFE – при C=1 переход по адресу 8BFE, при C=0 выполняется следующая по адресу команда.
Команды вызова ПП и возврата
Ранее отмечалось, что адрес возврата автоматически сохраняется в стеке, т.е. (PC) ® стек.
Безусловные команды
CALL @ – вызов подпрограммы;
RET – возврат из подпрограммы.
Условные команды
Ccon @ – вызов подпрограммы;
Rcon – возврат из подпрограммы.
Действие команд аналогично действию команд условного перехода, т.е. если условие истинно, то вызов или возврат. Если нет, то выполняются следующие команды.