система команд микропроцессора.

advertisement
МИКРОПРОЦЕССОР,
МИКРОПРОЦЕССОРНАЯ СИСТЕМА И
СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА.
Теоретический материал к лабораторной работе № 4
МИКРОПРОЦЕССОР КР580ВМ80А
Структурная схема
На рис.1 приведена структурная схема БИС КР580ВМ80А. Кратко опишем ее узлы.
Рис. 1
Арифметико-логическое устройство.
В 8-разрядном АЛУ предусмотрена возможность выполнения четырех арифметических
операций (сложение с передачей переноса в старший разряд и без учета этого переноса,
вычитание с передачей заема в младший разряд и без него), четырех видов логических
операций (конъюнкции, дизъюнкции, неравнозначности, сравнения), а также четырех
видов циклического сдвига. При реализации арифметических и логических операций одним
из операндов служит содержимое аккумулятора, результат операции помещается в
аккумулятор. Циклический сдвиг выполняется только над содержимым аккумулятора.
Предусмотрена возможность выполнения арифметических операций над десятичными
числами, представленными в коде 8421. При хранении десятичного числа разряды регистра
делятся на две группы по четыре разряда, и в каждой группе разрядов хранится одна
десятичная цифра, представленная в коде 8421. Таким образом, в регистре можно хранить 2-
разрядное десятичное число. В теории показывалось, что при выполнении операции
суммирования десятичных цифр может потребоваться коррекция результата путем
прибавления к нему числа 01102. Такая коррекция результата в каждой 4-разрядной группе
результата в микропроцессоре выполняется схемой десятичной коррекции (СДК).
Регистры данных.
Для хранения участвующих в операциях данных предусмотрено семь 8-разрядных
регистров. Регистр А, называемый аккумулятором, -предназначен для обмена
информацией с внешними устройствами (т.е. содержимое этого регистра может быть
выдано либо на вход микропроцессора, либо со входа микропроцессора в него может быть
принято от внешнего устройства число), при выполнении арифметических, логических
операций и операций сдвига он служит источником операнда (числа, участвующие в
операции), в него помещается результат выполненной операции.
Шесть других регистров, обозначенных В, С, D, E, H, L, образуют блок регистров
общего назначения (РОН) (название связано с тем, что в этих регистрах могут храниться как
данные, так и адреса). Эти регистры могут использоваться как одиночные 8-разрядные
регистры. Если необходимо хранить 16-разрядные двоичные числа, регистры объединяются
в пары ВС, DE, HL.
Указатель стека.
Регистр SP (16-разрядный) служит для адресации особого вида памяти, называемой
стеком. Стек — память с определенной (упрощенной) формой адресации. В
микропроцессорной системе на МПК КР580 стек организуется следующим образом. В ОЗУ
команды размещаются в ячейках с младшими, последовательно нарастающими адресами. Стек
использует ячейки со старшими адресами, и по мере заполнения стека занимаются ячейки с
адресами, последовательно убывающими. Особенность организации стека состоит в следующем.
Указатель стека SP содержит так называемый адрес входа в стек; при чтении из стека
производится выборка содержимого ячейки по адресу входа в стек (адресу, хранящемуся в SP);
при записи в стек вводимое в стек число помещается в ячейку с адресом, на единицу меньшим
содержимого SP; одновременно с записью и чтением изменяется содержимое SP: при записи
уменьшается, а при чтении увеличивается на единицу.
Обмен со стеком производится двухбайтовыми словами, занимающими две ячейки
памяти. Пусть указатель стека хранит адрес А. При вводе нового слова его байты должны быть
помещены в пару соседних со входом в стек ячеек, имеющих адреса (А – 1) и (А – 2).
Счетчик команд.
Регистр PC (16-разрядный) предназначен для хранения адреса команды; после выборки
из оперативной памяти текущей команды содержимое счетчика увеличивается на единицу,
и таким образом формируется адрес очередной команды (при отсутствии безусловных и
условных переходов).
При обращении к памяти в качестве адреса может использоваться и содержимое пары
регистров блока РОН.
При выдаче адреса содержимое соответствующего регистра передается в 16-разрядный
регистр адреса РА, из которого далее через буферы адреса адрес поступает на 16разрядную шину адреса. С этой шины адрес может быть принят в оперативную память.
Число кодовых комбинаций 16-разрядного адреса равно 216, каждая из этих кодовых
комбинаций может определять адрес (номер) одной из ячеек оперативной памяти. Таким
образом обеспечивается возможность обращения к памяти, содержащей до 216 = 26 • 210 =
64К 8-разрядных слов (байтов).
Регистр признаков (РП).
Этот 5-разрядный регистр предназначен для хранения определенных признаков,
выявляемых в числе, которое представляет собой результат выполнения некоторых операций.
Пять триггеров этого регистра имеют следующее назначение:
триггер переноса Тс при выполнении арифметических операций устанавливается в состояние,
соответствующее переносу из старшего разряда числа, при выполнении операции сдвига — в
состояние, соответствующее содержимому выдвигаемого из аккумулятора разряда;
триггер нуля Tz устанавливается в состояние 1, если результат операции АЛУ или операции
приращения содержимого регистра равен нулю;
триггер знака Ts устанавливается в состояние, соответствующее значению старшего разряда
результата операции АЛУ или операции приращения содержимого регистра;
триггер четности Тр устанавливается в состояние I, если число единиц в разрядах
результата четное;
триггер дополнительного переноса TV хранит возникающий при выполнении операции
перенос из 4-го разряда.
Блок управления.
Состоит из регистра команд, куда принимается первый байт команды, и устройства
управления, формирующего управляющие сигналы, под действием которых выполняются
микрооперации в отдельных узлах. Управляющее устройство содержит выполненную на
программируемой логической матрице управляющую память, в которой хранятся
микропрограммы отдельных операций. Пользователь не может изменить содержимого
управляющей памяти, а значит, и состава команд.
Буферы.
Буферы данных и буферы адреса обеспечивают связь центрального процессора с
внешними шинами данных и адреса. Особенность буферов состоит в том, что в каждом
разряде они используют логические элементы с тремя состояниями. В них кроме состояний 0 и 1
предусмотрено еще третье состояние, в котором они имеют практически бесконечное
выходное сопротивление и оказываются отключенными от соответствующих шин. Такие
буферы позволяют процессору отключаться от внешних шин (шин данных и адреса),
предоставляя их в распоряжение внешних устройств, а также использовать одну и ту же шину
данных как для приема данных (т.е. в качестве входной шины), так и для выдачи данных (т.е.
в качестве выходной шины), что сокращает число выводов микросхемы.
На рис. 2 показан принцип двунаправленного обмена данными между внутренней и
внешней шинами данных. Если осуществляется прием данных (передача данных с внешней
Рис. 2
шины данных на внутреннюю шину данных), отключаются, переходя в третье состояние,
выходные логические элементы; при выдаче данных (передаче с внутренней шины на
внешнюю шину) отключаются входные логические элементы.
Формат данных и команд
Данные (обрабатываемая информация и результаты обработки) хранятся в оперативной
памяти и в процессоре в виде 8-разрядных двоичных чисел . Таким образом, слово имеет
следующий формат:
D7 D6 D5 D4 D3 D2 D1 D0
Байт данных
Di
Db
Для
D5команд используются одно-, двух- и трехбайтовые форматы. Большинство команд
является однобайтовыми.
D4
з Однобайтовый формат команды:
D
D72 D6 D5 D4 D3 D2 D1 D0
D\
Код операции
Di
Do
Двухбайтовый формат команды:
Db
B1D
5
D7
D4 D6 D5 D4 D3 D2 D1 D0
Код операции
Di
з
Db
B2
D2
D7D
D\5 D6 D5 D4 D3 D2 D1 D0
D
Do4
Операнд или номер (адрес) устройства ввода-вывода
з
DВ2 первом байте двухбайтовой команды указывается вид выполняемой операции, во втором
D\ приводится число, являющееся операндом при выполнении операции, либо адрес устройства
байте
Doили вывода при обмене данными с периферийными устройствами
ввода
Трехбайтовый формат команды:
В1
D7
D6
D5
D4
D3
D2
D1
D0
Код операции
В2
D7
D6
D5
D4
D3
D2
D1
D0
Младший байт адреса ОП или младший байт операнда
В3
D7
D6
D5
D4
D3
D2
D1
D0
Старший байт адреса ОП или старший байт операнда
Байты трехбайтовой команды имеют следующее назначение: в первом указывается вид
выполняемой операции. Следующие два байта используются для указания
двухбайтового адреса команды (при выполнении безусловных и условных переходов,
обращении к подпрограммам), или адреса ячейки оперативной памяти, содержимое которой
является операндом, или двухбайтового операнда. Во всех случаях байт В2 является
младшим, байт В3 — старшим.
Принцип работы микропроцессора
На рис. 3 показана структурная схема микропроцессорной системы на МПК КР580.
Генератор тактовых импульсов (ГТИ) формирует две импульсные последовательности Ф1 и Ф2,
необходимые для тактирования работы микропроцессора (рис. 4). Импульсы двух
последовательностей не должны перекрываться во времени и должны иметь амплитуду 12 В. ПЗУ
может быть использовано для хранения программы, ОЗУ — для хранения данных.
Общий принцип функционирования микропроцессорной системы заключается в
следующем. Из микропроцессора на шину адреса выдается адрес очередной команды.
Считанная по этому адресу из памяти (например, из ПЗУ) команда поступает на шину данных
и принимается в микропроцессор, где она исполняется. В счетчике команд микропроцессора
формируется адрес следующей команды. После исполнения данной команды на шину адреса
поступает адрес следующей команды и т.д. При исполнении команды могут потребоваться
дополнительные обращения к памяти для вызова в микропроцессор дополнительных байтов
команды (в случае двух-, трех- байтовых команд), операндов или для записи в память числа,
выдаваемого из микропроцессора.
Рис.3
Рис. 4
Рассмотрим подробнее процесс выполнения команды. Этот процесс разбивается на циклы,
обозначаемые М1, М2, М3, М4, М5. В каждом цикле производится одно обращение
микропроцессора к памяти или к устройству ввода или вывода (УВВ) (исключение составляет
лишь выполнение команды DAD). В зависимости от типа команда может быть выполнена за
один цикл (М1), либо за два цикла (М1, М2), либо за три цикла (М1, М2, M3) и т.д. Самые
длинные по времени исполнения команды выполняются в пять циклов (М1,..., М5).
Каждый цикл включает несколько тактов, обозначаемых Tl Т2 Т3, Т4, Т5. Циклы могут
содержать три (Tl, ..., Т3), четыре (T1,..., Т4) такта либо пять (T1,..., Т5) тактов. Первые три такта
во всех циклах используются для организации обмена с памятью и УВВ, такты T4 и Т5 (если они
присутствуют в цикле) - для выполнения внутренних операций в микропроцессоре. На рис. 5
показана временная диаграмма цикла из пяти тактов.
Отсчет тактов производится от положительных фронтов импульсов Ф 1 .Рассмотрим цикл
М 1 . В такте T1 , содержимое счетчика команд выдается на шину адреса, адрес принимается
памятью, где начинается процесс чтения байта команды из указанной ячейки.
Рис. 5
В такте Т2 проверяется наличие сигнала (уровня лог. 1) на входе Готовность (см. рис. 1). Этот
сигнал подается на вход микропроцессора через интервал времени, достаточный для
завершения процесса чтения из памяти. Если на входе Готовность сигнал отсутствует
(действует уровень лог.О), то микропроцессор устанавливается в режим ожидания, в котором
каждый следующий такт рассматривается как такт Т2 до тех пор, пока не появится сигнал на
входе Готовность. С приходом этого сигнала микропроцессор выходит из режима ожидания,
переходя в такт Т3. В этом такте выданный из памяти байт команды с шины данных
принимается в микропроцессор, где он помещается в регистр команд. В такте T4
анализируется принятый байт команды и выясняется, нужны ли дополнительные обращения в
оперативную память. Если такие обращения не требуются (команда однобайтовая и операнды
находятся в регистрах микропроцессора), то в этом же такте либо с использованием
дополнительно такта T5 выполняется предусматриваемая командой операция.
Если необходимы дополнительные обращения в оперативную память, то после такта T4
цикл М1 завершается и происходит переход к циклу M2. Пусть, например, команда
однобайтовая, но в операции должен участвовать операнд, хранящийся в оперативной
памяти. Тогда в цикле M2 происходят следующие процессы: в такте Т1выдается адрес ячейки
памяти, в такте Т2 проверяется наличие сигнала на входе Готовность (сигнала о том, что
прошел интервал времени, достаточный для чтения из памяти). С появлением этого сигнала
происходит переход к такту T3, в котором выданное из памяти число с шины данных
принимается в микропроцессор, и в этом же такте выполняется операция,
предусматриваемая командой.
При исполнении большинства команд в случаях, когда происходят дополнительные
обращения к памяти, первый цикл М1 содержит четыре такта, в каждом следующем цикле
содержится три такта и происходит одно дополнительное обращение к памяти.
Информация о состоянии микропроцессора
В каждом цикле в интервале времени от момента положительного фронта импульса
последовательности Ф 1 в такте T1 до момента положительного фронта импульса Ф 2 в такте
Т2 микропроцессор выдает на выход Синхронизация (рис. 1) уровень лог.1 и на шину данных информацию о состоянии. ГТИ (см. рис. 3) формирует строб состояния, которым
осуществляется прием информации о состоянии микропроцессора с шины данных в регистр
состояния – РС (временное положение строба состояния показано на рис. 5).
Программирование на языке ассемблера МП КР580ИК80А
Программно-доступные элементы. В микропроцессорной системе на
КР580 для программиста являются доступными 16-разрядный счетчик
регистр-накопитель (А), шесть 8-разрядных регистров (В, С, D, Е, H, L),
признаки результатов, 16-разрядный указатель стека (SP), триггер
прерывания, каналы ввода — вывода, память.
основе серии
команд (PC),
однобитовые
разрешения
Память представляется как последовательность, ячеек размером один байт. Каждая
ячейка имеет свой адрес в диапазоне от 0 до 65536. При программирова нии на
ассемблере обычно используется шестнадцатеричное значение адреса, тогда диапазон
адресации составляет 0000—FFFF. При считывании или записи информации в ячейку
указывается ее адрес.
Рис. 6. Формат байта признаков результата
Каждая микропроцессорная система имеет свою структуру памяти. Количество ячеек
памяти в специализированной системе часто меньше максимально возможного, причем в
ряде случаев адреса имеющихся ячеек могут располагаться не подряд. Например, адреса
м о г ут и м е т ь з н а ч е н и я о т 0 0 0 0 д о 0 F F F и о т F 8 0 0 до FFFF. Кроме того, только
часть памяти может быть выполнена в виде ОЗУ, остальная, часть может представлять
собой ПЗУ. При написании программы разработчик должен использовать адреса только
реально имеющихся ячеек и следить за тем, чтобы запись информации
осуществлялась только по адресам, соответствующим ОЗУ.
В ассемблере всем программно-доступным элементам поставлены в соответствие числа,
использование которых возможно для обращения к соответствующим элементам:
Мнемоническое обозначение элемента .B C D E H L M A Цифровой эквивалент
обозначения. 0 1 2 3 4 5 6 7 . Цифрой 6 кодируется ячейка памяти, адрес
которой находится в регистрах Н, L (в Н — старший байт адреса, в L —младший).
Хотя ячейка ЗУ не является РОН, обозначение М (память) приведено вместе с
обозначениями регистров, так как ячейка ЗУ и РОН используются в одних и тех же
командах.
Таблица 1.
Адрес
83ЕВ
Регистр
Аккумулятор
83ЕА
Регистр признаков
83Е9
Регистр В
83Е8
Регистр С
83Ё7
Регистр D
83Е6
Регистр Е
83Е5
Регистр H
83Е4
Регистр L
Адрес
Регистр
83ЕЗ
Указатель стека (ст. байт).
83E2
Указатель стека (мл. байт).
83E1
Программный счетчик
(ст. байт).
83Е0
Программный счетчик
(мл. байт).
Ряд команд МП обращается к парам регистров, что дает возможность оперировать
16-разрядными данными и использовать пары регистров (табл. 2) для косвенной
адресации.
Таблица 2.
Обозначения пар регистров
Обозначение
регистров
Старший
регистр
пары
В
В
С
D
D
Е
Н
Н
Младший
Обозначение
регистр пары регистров
PSW
Старший
регистр
пары
Младший регистр
пары
А
Байт признаков
результата
-
L
SP
Старший байт
Младший байт
С помощью сокращения PSW (Слово состояния программы) производится
обращение к накопителю и байту, составленному из однобитовых признаков
результата (рис. 6). Пять одноразрядных признаков: С (Перен о с ) , А С
( В с п о м о г а т е л ь н ы й п е р е н о с ) , S ( З н а к ) , Z (Нуль), Р (Четность) —
устанавливаются в зависимости от результата операции при выполнении
арифметических и логических команд.
Указатель стека SP является единым 16-разрядным регистром, обращение к нему
осуществляется как к паре регистров.
Стек — это область ОЗУ микропроцессорной системы, последовательность
считывания данных из которой обратна последовательности их записи. Иными
словами, первым может быть считано только число, записанное последним.
Рис. 7. Операция занесения в стек содержимого пары регистров
Операции занесения и извлечения данных из стека широко используются при
написании прикладных программ, а также необходимы при работе с подпрограммами и
обслуживании прерываний. Стек по усмотрению программиста может быть размещен в
любом месте ОЗУ. При этом, в указатель стека SP заносится адрес последней занятой
ячейки стека. В качестве информации при записи может выступать содержимое пары
регистров или счетчика команд. На рис. 7 показана операция занесения в стек
содержимого пары регистров Н, L. При выполнении этой операции выполняются
следующие действия: старший байт данных запоминается в ОЗУ по адресу, на единицу
меньшему содержимого указателя стека; младший байт данных запоминается по адресу,
меньшему содержимого указателя стека на два;_содержимое указателя стека
уменьшается на два. Таким образом, стек растет в сторону младших адресов. При
выборке данных из стека содержимое двух его последних ячеек помещается в нужные
регистры, а содержимое указателя стека увеличивается на два.
Система команд МП К580ИК80.
Система команд МП К580ИК80 лежит в основе систем команд и более сложных и
совершенных однокристальных МП и микроЭВМ. Поэтому освоение ассемблера 580 служит
основой для развития навыков программирования широкого класса современных
однокристальных МП.
Формат команд МП К580ИК80 бывает одно-, двух- и трехбайтным. Первый байт
команды всегда задает код операции, а в ряде случаев также и адрес источника и (или)
приемника операнда. Второй и третий байты представляют собой операнд или адрес,
указываемые непосредственно в команде.
При описании команд будем пользоваться следующими условными обозначениями: 1) R,
R1, R2 — один из восьмиразрядных регистров МП, включая А; 2) RP — регистровая пара В,
D, Н или указатель стека SP; 3) HR, LR — старший и младший регистры регистровой пары,
например В и С; 4) М — ячейка памяти, адрес которой хранится в регистрах H и L; 5) В2, В3 второй и третий байты команды; 6) PC — счетчик команд; 7)  — направление передачи
операнда; 8) ( ) — содержимое регистра или ячейки памяти, имя которых указано в скобках;
9) [ ] — символы в скобках означают адрес; 10) z, s, с, ас, р — биты регистра признаков.
Систему команд принято разделять на группы в соответствии с функциональным
назначением.
Команды пересылки и загрузки (табл. 3) обеспечивают:
 передачу операнда из одного регистра в другой (МОV), причем источником или
приемником операнда может быть и ячейка памяти, косвенно адресованная
содержимым регистровой пары H (МОV М, R; MOV R, М);
 загрузку регистра или косвенно адресованной ячейки памяти вторым байтом
команды (MVI);
 пересылку операнда из ячейки памяти в аккумулятор и обратно (LDA; STA;
LDAX; STAX);
 загрузку регистровой пары вторым и третьим байтами команды (LXI);
 пересылку данных из регистровой пары в стек и обратно (PUSH; POP);
 пересылку данных из регистровой пары H в ячейки памяти,
адресованные в т о р ы м и т р е т ь и м б а й т а м и к о м а н д ы , и о б р а т н о
(LHLD, SHLD);
 загрузку указателя стека или программного счетчика содержимым
регистровой пары H (SPHL; PCHL);
 обмен данными между регистровыми парами (XCHG, XTHL}.
Все команды этой группы не меняют состояние ре гистра признаков,
установленного предшествующими командами. При выполнении трехбайтовых команд
МП воспринимает второй байт как младший, а третий — как старший при определении
адреса или порядка пересылки.
Мнемоника
Комментарии
МОV R1, R2
MVI R, B2,
LDА В3 B2
STA В3 B2
LDAX RP
STAX RP
LXI RP, В3 B2
PUSH RP
POP RP
LHLD В3 B2
SHLD В3 B2
SPHL
PCHL
XCHC
XTHL
(R2)  R1
B2  R
([В3B2]) A
[В3В2] (А)
([(RP)])  A
(A)  [(RP)]
B2  LR, B3  HR
(LR)  [(SP) - 1], (HP)  [(SP) - 2]
([(SP)])  HP, ([(SP +1)])  LR
([В3 B2])  L, ([В3 B2 + 1]) H
(L)  [ В3 B2], (H)  [ В3 B2+l]
(HL)  SP
(HL)  PC
(H)  (D), (L)  (E)
([SP])  (L), ([SP+1]) (H)
Таблица 3.
Число
байт
1
2
3
3
1
1
3
1
1
3
3
1
1
1
1
тактов
5
7
13
13
7
7
10
11
10
16
16
5
5
4
18
Например, при выполнении команды LXI Н,0В, 1 А (21, 1A, 0В) получим 1A  L и 0В 
H. При косвенной адресации старший и младший байты адреса размещаются соответственно
в старшем и младшем регистрах пары.
Команды PUSH и POP позволяют оперировать, не только с регистровыми парами В, D,
Н, но и с регистром признаков и аккумулятором, которые рассматриваются как регистровая
пара PSW. Команда PUSH PSW заносит содержимое аккумулятора в ячейку с адресом (SР) 1, a признаки — по адресу (SP) — 2. Разряды второй ячейки устанавливаются следующим
образом: D0 = с, D1 = 1, D2 = p, Dз = 0, D4 = aс, D5 = 0, D6 =z, D7 = s. Для правильной работы
стека команды PUSH и POP в программе должны быть парными, что необходимо учитывать
программисту, причем очередность при выводе должна быть обратной порядку ввода.
Нарушение такого порядка в ряде случаев может быть использовано для обмена данными
между регистровыми парами. Например, при выполнении последовательно команд PUSH
PSW и POP В, содержимое аккумулятора перепишется в регистр В, а в регистре С будет
продублировано содержимое регистра признаков.
Команды обработки данных (табл. 4), кроме INR, INX, DCR, DCX, DAD и
DAA, обрабатывают два операнда, один из которых всегда размещается в
аккумуляторе, куда заносится и результат, другой хранится в одном из регистров
РОН или в косвенно адресованной ячейке памяти для команд ADD, ADC, SUB,
SBB, ANA, ORA, XRA, CMP, или во втором байте команды ADI, ACI, SUl, SBI, ANI,
ORI, XRI, CML.
Команды INR и DCR изменяют на единицу содержимое регистра или косвенно
адресованной ячейки памяти, а команды INX и DCX изменяют на единицу
содержимое регистровой пары. Операция десятичной коррекции DAA выполняется
только над содержимым аккумулятора и позволяет корректировать результат
двоичного сложения, если слагаемые представлены в двоично-десятичной форме.
Команды DAD обеспечивают суммирование двух 16-разрядных чисел, одно из
которых размещено в регистровой паре Н, туда же записывается и сумма. При
использовании арифметических команд следует учитывать, что команд ы 1 N X и D C X
н е в л и я ю т н а р е г и с т р п р и з н а к о в , команда DAD модифицирует один признак
с, а команды INR и DCR только этот признак и не меняют.
Таблица 4
Мнемони
ка
ADD R
ADC R
ADI B2
ACI B2
DAD RP
DA A
SUB R
SBB R
SUI B 2
SBI B2
ANA R
ANI B2
ORA R
ORI B2
XRA R
XRI B2
CMP R
CMI B2
INR R
INX RP
DCR R
DCX RP
Koмментарии
(A) + (R)  A
(A) + (R) + c A
B2 +(A)  (A)
B2 +(A) + c  A
(H) + (HR)  H, (L) + (LR) L
коррекция
(A)-(R) A
(A)-(R) –c  A
(A) - B2  A
(A) - B2 - с  A
(A) ∧ (R)  A
(А) ∧ B2  A
(A)∨ (R)  A
(A) ∨ B2  A
(A) ⊕ R A
(A) ⊕ B2  A
(A) - (R)
(A) - B2
(R)+ 1  R
(RP) + 1  RP
(R) - 1  R
(RP) - 1  RP
Число
байт
тактов
1
4
4
7
7
1
2
2
1
1
1
1
2
2
1
2
1
2
1
2
1
2
1
1
1
1
3
4
4
4
7
7
4
7
4
7
4
7
4
7
5
5
5
5
Устанавливаемые
признаки
Все
»
»
»
»
»
»
»
»
»
z, s, р, с = 0
z, s, р, с = 0
z, s, p, с = ас = 0
z, s, p, с = ас = 0
z, s, р, с = 0
z, s, р, c = 0
z, c
z, c
z, s, р, ас
Не меняет
z, s, р, ас
Не меняет
В отличие от арифметических команд, которые воспринимает операнд как 8- или 16разрядное число, логические выполняются над каждым разрядом операнда отдельно. Все
логические команды сбрасывают бит переноса (с = 0). Это свойство используется для
обнуления разряда с, так команда ОRА А иногда обозначается специальной мнемоникой CLC
-очистка бита переноса. Команды ORA А и ANA А применяются для проверки содержимого
аккумулятора на нуль, если предыдущие команды в программе не формировали признаков
(например, команды пересылки, ввода и т. д.). Команды XRA А и SUB А позволяют сбросить
содержимое аккумулятора А = 0.
Результат операций сравнения СМР и CMI определяется по значениям признаков z и с,
как показано в табл. 5.
Таблица 5
с
z
Результат
0
0
(А) > (R)
0
1
(А) < (R)
1
0
(А) = (R)
Контроль признака z позволяет судить о равенстве двух операндов, а признак с
различает условия «меньше» и «больше или равно».
К командам обработки данных можно отнести также операции сдвига (табл. 6).
Таблица 6
Мнемоника
Число тактов
Комментарии
RLC
Циклический сдвиг влево
4
RRC
Циклический сдвиг вправо
4
RAR
Арифметический сдвиг вправо
4
RAL
Арифметический сдвиг влево
4
Отличие команд RRC и RLC от RAR и RAL заключается в том, что первые обеспечивают
циклический сдвиг восьмиразрядного слова в аккумуляторе с дублированием вытесняемого
разряда в бите с регистра признаков, а вторые - циклический сдвиг девятиразрядного слова,
где девятым разрядом является разряд с.
В табл. 7 приведены три специальные однобайтовые команды, которые могут
потребоваться при выполнении арифметических действий.
Таблица 7
Мнемоника
Комментарии
Число тактов
СМА
(Ā)  А
4
STC
с=1
4
CMC
ĉс
4
Команды перехода и передачи управления служат для организации
разветвлений и вложения подпрограмм, Команды этой группы бывают безусловными
(табл. 8) и условными (табл. 9).
Таблица 8
Мнемоника
Комментарии
JMP В3 В2
Число
байт
тактов
В3 В2  PC
3
10
CALL В3 В2
(НРС)  [SP - 1]
(LPC)  [SP - 2]
В3 В2  PC
3
17
RET
[(SP)] LPC
[(SP)] + 1]) HPC
1
10
(HPC]  [SP - 1]
RST N
1
4
(LPC)  [SP - 2]
ANРС
В отличие от безусловных команд условные обеспечивают переход только при строго
определенном значении одного из разрядов регистра признаков. Если соответствующее
условие не выполнено, то передачи управления не происходит и выполняется следующая по
порядку команда. Длительность условных команд зависит от того, выполнены условия
перехода или нет. В графе «число тактов» табл. 9 в числителе указана длительность
выполнения команды при отсутствии перехода, а в знаменателе - при его выполнении.
Таблица 9
Условия перехода
Функция
Переход
Вызов
Возврат
z= 1 z= 0 с= 1
с= 0
р=1
р=0
s= 1 s= 0 тактов
JNZ
CNZ
RNZ
JNC
CNC
RNC
JPE
СРЕ
RPE
JPO
СРО
RPO
JM
CM
RM
JZ
CZ
RZ
JC
CC
RC
JP 11/17
СР 11/17
RR 5/11
байт
3
3
1
В группу передачи управления входят четыре вида команд:
1. Команды перехода загружают счетчик команд вторыми третьим байтами и
позволяют организовать циклы и разветвления путем перехода к новой последовательности
команд. Однако команды перехода не допускают возвращения в то место программы, откуда
был осуществлен переход.
2. Команды вызова дают возможность запомнить текущее значение адреса в счетчике
команд и возвратиться к прерванной последовательности после выполнения подпрограммы.
Эти команды при реализации перехода заносят в стек содержимое счетчика команд,
который, в свою очередь, заполняется вторым и третьим байтами команды, указывающими
начальный адрес подпрограммы.
3. Однобайтовой командой возврата, которая извлекает из стека содержимое двух
верхних ячеек и загружает им счетчик команд, заканчивается выполнение подпрограммы.
При этом на следующем шаге МП обращается к тому месту программы, из которого
произошел переход к подпрограмме. Команды вызова и возврата дают возможность
сократить объем разрабатываемых программ за счет неоднократного использования их
частей.
4. Условные команды определяют способность МП анализировать ситуацию и
принимать решения. Команды обработки данных формируют признаки, которые
проверяются при выполнении условных команд и определяют последующий ход выполнения
программы.
Особое место среди команд передачи управления занимают однобайтовые команды
повторного старта RST. Они представляют собой команды вызова с фиксированными
адресами перехода, причем точка перехода задается кодом команды. Команды RST
используются для обеспечения входа в подпрограммы обработки прерывания. В этом случае
код команды RSТ формируется аппаратными средствами и запрашивается МП с помощью
сигнала обслуживания прерывания ОП. Команды RST, как и команды вызова, перегружают
содержимое счетчика команд в стек, но счетчик загружают иначе: в старший байт СК
заносится 00, а в младший - так называемый вектор прерывания, задающий начальный адрес
подпрограммы. Этот вектор прерывания задает один из восьми ареалов в первых 64 байтах
памяти (табл. 10).
Ч
и
с
л
о
Таблица 10
Мнемоника
Код
команды
Начальный
адрес ареала Мнемоника
Код
команды
Начальный
адрес ареала
RSIV
C7
0000
RST4
E7
0020
RSTl
CF
0008
RST5
EF
0028
RSn
D7
0010
RST6
F7
0030
RST3
DF
0018
RST7
FF
0038
Объем каждого ареала составляет 8 байт. Если подпрограмма обработки
прерывания превышает этот объем, то по адресу вектора прерывания записывается
команда JMP, вызывающая переход к остальной части подпрограммы. Отличием
команд RST от команд вызова является также сброс внутреннего триггера разрешения
прерывания (РП = 0). Этим обеспечивается запрет на обработку очередных запросов в
ходе выполнения данной подпрограммы.
Команды управления (табл. 11) включают команды ввода IN и вывода OUT,
обеспечивающие обмен данными между МП, периферийными устройствами и устройствами
ввода - вывода. Второй байт этих команд задает адрес устройства, с которым ведется обмен.
При выполнении команд IN и OUT формируются специальные системные сигналы
управления ЧВ и 3В, что позволяет обеспечить разделение адресных пространств памяти и
периферийных устройств. Байт адреса дает возможность обращаться к 256 портам ввода и
256 портам вывода.
Команды управления прерываниями E1 и D1 устанавливают и сбрасывают триггер
разрешения прерывания. Когда выполняется начальная установка МП, триггер разрешения
прерывания сбрасывается, и система не воспринимает запросов на прерывание от внешних
устройств. Разрешить прерывание можно только программно с помощью команды EI,
устанавливающей РП = 1. Эта команда подается также в ходе выполнения подпрограмм
обработки прерываний: вначале, если требуется организовать вложение прерываний, или в
конце для обеспечения следующего прерывания по окончании обработки данных.
Таблица 11
Мнемоника
Комментарии
Число
байт
тактов
IN B2
(P B2 )  A
2
10
OUT В2
(А)  РВ2
2
10
EI
Разрешение прерывания
1
4
DI
Запрет прерывания
1
4
HLT
Останов
1
7
NOP
Нет операции
1
4
Команда HLT вызывает прекращение выполнения программы и переход МП в
состояние ОСТАНОВ при сохранении состояния всех регистров МП. Выход из состояния
ОСТАНОВ возможен при подаче сигнала сброса Сб, вызывающего сброс программного
счетчика, или путем перехода к обработке запроса прерывания, если предварительно
установлен триггер разрешения прерывания. В последнем случае после выполнения
подпрограммы обработки прерывания в счетчик команд МП заносится адрес команды,
следующей за командой HLT.
Холостая команда NOP используется для организации коротких задержек и замены
ненужных команд при отладке программы. Все команды управления не меняют состояния
регистра признаков.
Кодирование команд МП К580ИК80 приведено в табл.12.
1\2 0
1
0
2
3
4
5
6
7
8
9
A
В
С
D E
F
LXI
B&
STA
INR
N
INX В
XВ
ВO
DCR
В
MVI
B#
RLC
—
DAD
В
LDA
XВ
DCX
DCR
INR С
В
С
MVI
C#
RRC
0
LDA
XD
1
—
LXI
D&
STA
XD
INX
D
INR
P
D
DCR
D
MVI
D#
RAL
—
DAD
D
OCX
DCR
INR E
D
E
MVI
RAR
E#
1
2
—
LXI
H&
SHL
D*
INX
H
IHR
H
DCR
H
MVI
H#
DAA
—
DAD LHLD DCX
DCR
INR L
H
*
H
L
MVI
CMA
L#
2
3
—
LXI
SP&
STA
*
INX
SP
INR
M
DCR
M
MVI
M#
STC
—
DAD
SP
MVI
CMC
A#
3
4
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
B,B B,C B,D B,E B,H
B,L
B,M B,A
C,B
C,C
C,D
C,E
C,H
C,L C,M C,A
4
5
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
D,B D,C D,D D,E D,H
D,L D,M D,A
E,B
E,C
E,D
E,E
E,H
E,L E,M E,A
5
6
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV
H,B H,C H,D H,E H,H
H,L H,M H,A
L,B
L,C
L,D
L,E
L,H
L,L L,M L,A
6
7
MOV MOV MOV MOV MOV MOV
M,B M,C M,D M,E M,H M,L
HLT
7
8
ADD ADD ADD ADD ADD
В
С
D
E
H
ADD ADD
M
A
9
SUB
В
A
ANA ANA ANA ANA ANA
В
С
D
E
H
ANA
L
ANA ANA
M
A
XRA XRA
B
С
XRA
D
В
ОRА ОRА ORA ORA ORA
В
С
D
E
H
ORA
L
ORA ORA
M
A
СMР
В
CMP
С
SUB
С
SUB
D
SUB
E
ADD
L
SUB
SUB
SUB L
H
M
LDA
*
DCX
DCR
INR A
SP
A
MOV MOV MOV MOV MOV MOV MOV MOV MOV
M,A A,B
A,C A,D
A,E
A,H A,L A,M A, A
ADC
В
ADC
С
SUB
SBB
SBB В
A
C
ADC
D
ADC
E
ADC ADC ADC ADC
H
L
M
A
8
SBB
A
9
XRA
E
XRA XRA XRA XRA
H
L
M
A
A
CMP
D
CMP
E
CMP CMP CMP CMP
H
L
M
A
SBB
SBB
SBB E
D
H
SBB
L
SBB
M
В
С
RNZ
POP
JMP
JNZ *
В
X
CNZ PUSH
ADI # RST 0
*
В
R'Z
RET
JZ *
—
CZ *
D
RNC
POP
OUT
JNC *
D
N
CNC PUSH
SVl # RST 2
*
D
RC
—
JC *
IN N
CC *
—
SBI # RST J
E
RPO
POP
H
JPO
CPO PUSH
XTHL
ANI # RSI 4
*
*
H
JPE
*
XCH
G
CPE
*
—
XRl #
RST
5
E
F
RР
POP
PSW
JP *
Dl
CP *
El
CM
X
—
CPI
#
RST
7
F
0
1
2
3
4
В
С
D E
Примечание
PUSH
ORl * RST 6
PSW
5
6
7
HPE PCHL
RM
SPHL
8
9
JM
*
A
CALL
RST
ACl #
*
1
N- номер порта ввода - вывода;
* - двухбайтовый операнд ADR;
& - двухбайтовый операнд D16; # — однобайтовый операнд D8;
F
C
D
Download