<<
>>

1 .МИКРОПРОЦЕССОР СЕРИИ КР580 И ЕГО АРХИТЕКТУРА (ПРОГРАММНАЯ МОДЕЛЬ И НАБОР КОМАНД)

Микропроцессор (МП) серии КР580 (К580) представляет собой однокристальный 8-разрядный процессор, который размещен в 40-контактном корпусе, имеет классическую трехшинную структуру с раздельными шинами адреса, данных, управления и выполняет фиксированный набор команд [2, 4, 12, 19, 20, 31].

Существует несколько модификаций этого МП: К580ИК80, К580ИК80А, КР580ИК80,

КР580ИК80А (КР580ВМ80А), различающихся исполнением корпуса, быстродействием и некоторыми другими техническими характеристиками. Однако эти различия, за исключением особо отмеченных случаев, несущественны для последующего изложения, и поэтому под МП КР580 будем подразумевать любой из вышеперечисленных типов, а также их зарубежные прототипы Intel 8080 и 8080А [6, 16, 42, 59, 60, 63, 75]. Описание цоколевки, назначение выводов, внутренняя структура, принципы работы этих изделий и схемотехнические приемы построения на их основе МП систем подробно рассмотрены в литературе, и здесь нет необходимости их повторять.

Для разработки программ необходимо знание архитектуры микропроцессора и МП системы. Архитектура отражает возможности прикладного использования микропроцессора (а не его техническую реализацию) и содержит описание программной модели МП системы и набора команд, с помощью которых обеспечивается программный доступ к элементам модели [5, 6, іб, 20]. Под программной моделью МП системы понимается совокупность программно-доступных элементов (регистров), объединенных в систему посредством укрупненных направленных связей и дополнительных элементов, обеспечивающих достижение функциональной законченности и целостного представления модели (рис. П.1). Программная модель МП системы на базе МП КР580 содержит непосредственно модели МП, памяти М (MEMORY) и портов ввода-вывода I/O (INPUT/OUTPUT), объединенных тремя шинами: данных — ЩД, адреса — ША и управления — ШУ. Порты ввода-вывода используются для сопряжения с различными системными (внутренними и внешними, или периферийными) устройствами.

Модель МП содержит следующие элементы.

1) шесть 8-разрядных регистров общего назначения (РОН) с однобуквенными именами В, С, D, Е, Н, L. Эти регистры программнодоступны как автономно, так и попарно: как три 16-разрядные регистровые пары с однобуквенными именами по первому, старшему регистру пары В — (В, С), D — (D, Е) и Н— (Н, L). Регистры и регистровые пары используются для временного хранения промежуточных данных, адресов (в качестве сверхоперативного запоминающего устройства — СОЗУ) и косвенной адресации основной памяти М (в качестве указателей памяти). Регистровая пара Н преимущественно

Рис. П.1. Программная модель МП системы

используется как указатель памяти в однобайтных командах МП, причем ячейка памяти, адрес которой указан в Н-паре, называется М-регистром. Этот регистр в функциональном отношении эквивалентен регистрам МП, но имеет большее время доступа;

2) 16-разрядный регистр указателя стека SP (STACK POINTER] — для хранения адреса вершины программного стека, размещаемого в оперативной памяти М и обеспечивающего необходимую глубину вложения подпрограмм при обработке многоуровневых прерываний и модульном построении программ;

3) 16-разрядный регистр счетчика команд, или программный счетчик PC (PROGRAM COUNTER),— для хранения адреса текущей команды выполняемой программы. При естественном ходе выборки команд, последовательно размещенных в памяти, содержимое счетчика увеличивается от команды к команде на число, равное количеству ячеек, занимаемых в памяти выполненной командой;

4) 8-разрядный A-регистр, или аккумулятор (накопитель),— основной, узловой рабочий регистр, используемый во всех арифмети- ческо-логических командах, командах ввода-вывода данных и др. Совместно с F-регистром образует регистровую пару (A, F) слова состояния процессора PSW (PROCESSOR STATUS WORD). Это слово отражает результаты текущих преобразований данных в 8-раз- рядном арифметическо-логическом устройстве (АЛУ);

5) 8-разрядный F-регистр, или регистр признаков (флагов),— для хранения двоичных признаков — бит, отражающих некоторые особенности результата выполнения операции в АЛУ.

Признаки могут использоваться последующими командами как для изменения естественной последовательности выборки команд из памяти (передачи управления, или перехода по программе), так и для модификации обрабатываемых данных. F-регистр фиксирует 5 различных признаков (3 разряда регистра не используются и содержат биты-константы):

S (SIGN) — бит знака, равен единице, если седьмой бит байта результата равен единице, т. е. результат — отрицательное число;

Z (ZERO) — бит нуля, равен единице, если результат операции равен нулю;

АС (AUXILIARY CARRY) — бит вспомогательного переноса, равен единице, если при выполнении операции был перенос из третьего разряда АЛУ в четвертый, используется в команде десятичной коррекции содержимого А-регистра;

Р (PARITY) — бит паритета, равен единице, если число единиц результата операции четное;

CY (CARRY) — бит переноса, равен единице, если при выполнении операции был перенос из седьмого разряда АЛУ или заем в этот разряд (разряды нумеруются, начиная с младшего, нулевого разряда, размещаемого в регистре в крайней правой позиции). Признак очень важен при обработке данных с увеличенной разрядностью;

6) 1-разрядный регистр (триггер) разрешения прерывания INTE (INTERRUPT ENABLE). Если триггер установлен в нуль, МП ие реагирует на запросы прерывания; если в единицу, прерывание разрешено. После приема запроса прерывания или сброса системы триггер INTE автоматически сбрасывается в нуль и для разрешения обработки последующих запросов прерывания его необходимо программно вновь установить в единицу;

7) связи между элементами МП и другими элементами МП системы: внутренняя двунаправленная 8-разрядная шина данных ВШД(8) — для передачи данных между элементами МП; внешняя двунаправленная 8-разрядная шина данных ШД (8) — для обмена данными между МП, памятью и портами ввода-вывода; однонаправленная 16-разряд- иая шина адреса ША(16) —для адресации памяти, портов; 10-разряд- ная шина управления ИЛУ (10), связанная с внутренним устройством управления (УУ) микропроцессора и предназначенная для временной коммутации элементов МП системы.

Модель памяти (М) представляет собой упорядоченную и пронумерованную последовательность 8-разрядных структурных элементов — ячеек памяти, или внешних регистров. 8-разрядное двоичное слово, хранимое в ячейке памяти (регистре), называется байтом, а отдельный двоичный разряд слова — битом. Номер ячейки памяти является ее адресом. 16-разрядная шина адреса МП позволяет обращаться к адресному пространству (максимальной совокупности адресуемых ячеек памяти) размером 216 = 65536 = 64 К байт (К = 1024 — общепринятая константа). Для нумерации адресов памяти используется шестнадцатеричная система счисления с цифрами 0, 1, ..., 9, А, В, С, D, Е, F. Каждый байт может быть представлен двумя полубайтами (старшей и младшей тетрадами бит), значения которых однозначно кодируются указанными шестнадцатеричными цифрами. При этом адрес любой ячейки памяти представляется 4-разрядным, а ее содержимое —

2- разрядньім шестнадцатеричными числами (0000, 0001, ..., FFFF] и {00, 01, ..., FF).

Примем, что в модели памяти время доступа .к содержимому любой ячейки памяти не зависит от значения ее адреса и над каждой ячейкой памяти может быть выполнена пара операций: запись байта в ячейку и чтение ее содержимого. Память такого типа называют запоминающим устройством с произвольной выборкой (ЗУПВ) или оперативным запоминающим устройством (ОЗУ) (оперативной памятью). Эта память используется для хранения программ, исходных, промежуточных и результирующих данных.

В реальных МП системах фактическое количество ячеек памяти — емкость, или рабочее пространство, памяти — может быть меньше адресного пространства и, кроме того, разделено на части по каким-либо конструктивным или функциональным признакам. Например, часть памяти может быть предназначена только для операции чтения хранимой информации. Такая память — постоянное (или перепрограммируемое постоянное — ППЗУ) запоминающее устройство (ПЗУ) — используется для хранения программ и констант. Для учета при программировании подобных реальных ограничений на использование адресного пространства применяют карту памяти —■ графическое распределение рабочего пространства памяти между отдельными блоками последовательных ячеек, сгруппированных по выделенным признакам [28].

Модель портов ввода-вывода представляет собой, как и модель памяти, упорядоченную и пронумерованную последовательность 8-разрядных регистров. В системе посредством однобайтных шестнадцатеричных адресов {00, 01, .... FF) адресуются до 256 портов ввода и столько же портов вывода информации. Каждое системное устройство обменивается информацией (данными, адресами, управляющими сигналами) с МП путем посылки байта информации через соответствующий порт в A-регистр или приема байта из A-регистра. В качестве системных устройств ввода-вывода могут рассматриваться как периферийные устройства типа, например, АЦПУ, НГМД или дисплея, так и внутренние устройства типа, например, программируемого контроллера прерываний КР580ВН59 или программируемого параллельного адаптера интерфейса КР580ВВ55.

Взаимодействие между элементами МП, памяти М и портов ввода-вывода I/O в программной модели МП системы сводится к выполнению четырех операций: записи информации в М и I/O из регистра МП и ее чтения из М и I/O в регистр МП. Вообще говоря, в системе возможны еще две операции: запись в М из порта I/O и чтение из М в порт I/O, которые появляются при организации прямого доступа в память (ПДП) со стороны системного устройства, например программируемого устройства прямого доступа КР580ВТ57 [2, 31]. Режим ПДП реализуется исключительно техническими средствами (за исключением программной инициализации устройства ПДП) и поэтому здесь не рассматривается. Последовательность функциональных взаимодействий между элементами программной модели МП системы определяется набором команд МП.

Выполнение команды в МП системе, как и в большинстве вычислительных систем, состоит из двух крупных фаз: выборки адресованной команды из памяти и ее выполнения, причем вторая фаза в ряде случаев состоит из двух полуфаз: выборки операнда из памяти и выполнения операции над операндом. При естественной последовательности выборки команд в заключение первой фазы или первой полуфазы второй фазы (если она имеет место) происходит автоматическое увеличение на единицу содержимого счетчика команд — адресация следующей команды, и после завершения выполнения текущей команды указанный двухфазный цикл повторяется уже для очередной команды.

В реальных системах этот командный цикл выполняется с гораздо большей детализацией фаз, но для разработчика программ эти технические тонкости несущественны (они важны для схемотехнической реализации системы).

Длительность командного цикла индивидуальна для каждой команды и может быть выражена количеством тактов, или периодов, генератора синхронизации МП. Зная частоту генератора, можно определить реальное время выполнения команды и фрагментов программ. Длительность команд, оперирующих в МП системе с содержимым внутренних регистров, существенно короче, чем команд, использующих внешние регистры. Поэтому при необходимости минимизировать время выполнения программы желательно основную обработку информации вести с использованием внутренних регистров.

Функциональные возможности набора команд определяются в первую очередь форматом данных, команд и способами адресации операндов в командах. Для МП характерна малая разрядность основных структурных элементов (регистров), что приводит к использованию в МП преимущественно одноадресных, реже двухадресных (типа, например, команд межрегистровых пересылок) команд и различных способов непрямой адресации памяти, сокращающих длину командных слов и размеры программ.

Формат данных (базового информационного слова), принятый в МП КР580,— 8-разрядное двоичное слово (В7, ..., Во) — байт, где В7 — старший, а Во — младший разряды байта. Хранение и пересылка всех данных в МП системе реализуются в виде последовательности байтов (побайтно), а для представления данных повышенной разрядности используются программно-организуемые многобайтные слова. Байт может использоваться для представления как целых двоичных чисел без знака в диапазоне от 0 до 255, так и чисел со знаком: целых положительных в диапазоне от 0 до 127 и отрицательных в диапазоне от --1 до —128 при представлении чисел в дополнительном коде (см. прил. 2). Интерпретация числового значения байта (число со знаком или без него) осуществляется программным путем. Для чисел со знаком старший, седьмой разряд байта интерпретируется как знаковый бит: если он равен 0, число положительное; если — 1,— отрицательное. Кроме рассмотренных представлений байта в виде двоичных или шестнадцатеричных чисел, возможна их интерпретация в качестве двоично-десятичных чисел (байт содержит две десятичные двоично-кодированные цифры) или алфавитно-цифровых символов, используемых для обмена с периферийными устройствами (см. гл. 6).

Формат команды (командного слова) зависит от типа операции и может быть одно-, двух- или трехбайтным. Байты многобайтной команды обязательно размещаются в соседних ячейках памяти, и адрес первого байта является адресом команды в целом. Первый байт команды представляет код операции, второй и третий байты — данные или адрес. Заметим, что в трехбайтных командах старший и младший байты адреса или 16-разрядных данных меняются местами, т. е. вначале следует младший, а затем старший байт. Это является особенностью МП КР580, которую необходимо учитывать при программировании. К однобайтным относятся все команды межрегистровых пересылок (или команды типа регистр — регистр), ряд команд обращения к памяти, арифметических и логических операций, команды сдвига, возврата из подпрограммы, обращения к стеку, разрешения и запрещения прерываний; к двухбайтным — команды с непосредственными данными и ввода- вывода; к трехбайтным — команды переходов, вызова подпрограмм, загрузки регистровых пар и прямой записи в память.

В МП КР580 используются пять различных способов адресации.

Прямая адресация, при которой второй и третий байты команды содержат прямой адрес операнда в памяти.

Регистровая, или неявная, адресация, при которой адрес регистра источника и (или) приемника операнда определяется кодом команды.

Регистровая косвенная адресация, при которой адрес операнда находится в регистровой паре, адресуемой кодом команды.

Непосредственная адресация, при которой операнд размещается во втором байте — для двухбайтной команды или во втором и третьем байтах — для трехбайтной команды.

Стековая адресация, при которой адрес определяется указателем стека. Она отличается от регистровой косвенной адресации тем, что при обращении к памяти происходит запись или чтение двух байтов, а содержимое указателя стека автоматически соответственно уменьшается или увеличивается на 2. Информация в стеке хранится в том порядке, в котором туда поступает, а извлекается в обратном порядке, по принципу: «последним пришел — первым вышел».

Набор команд МП КР580 содержит 78 базовых команд, различающихся мнемоническим обозначением кода операции, а в целом включает 244 различные их модификации. Условные обозначения, используемые для описания набора команд, приведены в табл. П.1. В табл. П.2 дано описание набора команд [10, 36, 43, 55]. В табл. П.З — П.5 представлены шестнадцатеричные значения кода операций команд с регистровой адресацией, а в табл. П.6 — определитель типа команд по кодам операций [12]. Этот определитель полезен при восстановлении исходного символического текста программы по ее объектному коду, т. е. при дезассемблировании программы.

Все команды МП подразделяются на 5 функционально специализированных групп:

1) команды передачи данных—используются для пересылки данных из регистра в регистр, из памяти в регистр (регистровую пару) и из регистра (регистровой пары) в память;

2) команды арифметических операций — применяются для двоичных операций сложения, вычитания, инкрементирования и декрементирования содержимого регистра (регистровой пары) или ячейки памяти, а также для сложения двоично-десятичных чисел;

3) команды логических операций — выполняют операции И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ (неравнозначность), сравнения и сдвига;

4) команды передачи управления — используются при условных и безусловных переходах в программе, вызовах подпрограмм и возвратах из них, рестартах подпрограмм при организации многоуровневых векторных прерываний;

out,

Табл. П.З. Коды команд MOV RMI, RM2

Табл. П.4. Коды команд с регистрами

5) команды стека, ввода-вывода и управления — применяются для управления прерыванием, останова МП, ввода-вывода данных и обращения к стеку, его указателю и вершине.

Особый тип образуют команды рестарта RST0, RST7 из четвертой группы. Эти однобайтные команды формируются, как правило, специальными .аппаратными средствами (контроллерами прерываний) в режиме прерывания работы МП. В этот режим МП входит, получив сигнал прерывания от системного устройства (при условии, что триггер INTE был установлен в единицу). При этом МП заканчивает цикл выполнения текущей команды (в программном счетчике содержится уже адрес следующей команды программы), сбрасывает в нуль триггер INTE и считывает с ШД(8) код команды рестарта, который выставляется контроллером прерываний.

Действие этой аппаратной команды аналогично действию команды вызова подпрограммы, но отличается, во-первых, тем, что ограничено возможностью вызова в соответствии с вектором прерывания лишь одной из восьми подпрограмм, размещаемых в первых 64 ячейках оперативной памяти, и, во-вторых, тем, что при выполнении команды рестарта не происходит, как при выполнении любой другой команды, инкрементирования содержимого программного счетчика. Благодаря этому в стек записывается адрес очередной команды прерываемой программы, а по команде возврата (в подпрограмме обслуживания прерывания) этот адрес извлекается из стека и управление передается в ту точку прерванной программы, куда поступило прерывание,— продолжается выполнение основной программы.

Таким образом, команды рестарта — это аппаратные аналоги команд вызова подпрограмм, инициализируемые сигналом прерывания в любой точке и в любой момент времени выполняемой программы. При таком неожиданном вызове подпрограммы необходимо обеспечить сохранение в стеке слова состояния процессора и содержимого РОН для возобновления после обслуживания прерывания нормального хода прерванной программы. Заметим, что модификации МП КР580 с индексом А обладают возможностью отработки в режиме прерывания не только команд рестарта, но любой последовательности команд, аппаратно формируемой в этом режиме контроллером прерываний. В частности, они воспринимают аппаратно формируемую трехбайтную команду CALL В2ВЗ, что позволяет осуществлять вызов подпрограммы из любой области памяти.

В целом набор команд МП КР580 ориентирован на решение сложных задач управления данными, в частности создания систем, работающих в реальном масштабе времени. Эффективному решению этих задач способствует широкий спектр команд передачи данных, передачи управления, вызова и рестарта подпрограмм, управления прерыванием и обращения к стеку программируемой глубины.

2.

<< | >>
Источник: Гуртовцев А. Л., Гудыменко С. В.. Программы для микропроцессоров: Справ, пособие.— Мн.: Выш. шк.,1989.— 352 с.: ил.. 1989

Еще по теме 1 .МИКРОПРОЦЕССОР СЕРИИ КР580 И ЕГО АРХИТЕКТУРА (ПРОГРАММНАЯ МОДЕЛЬ И НАБОР КОМАНД):