Виды команд эвм. Учебные модели компьютера

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

1. Команды передачи данных (перепись), копирующие информациюиз одного места в другое.

2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно, доля вычислительных действий в современном компьютере заметно уменьшилась, но они по-прежнему играют в программах важную роль. Отметим, что к основным арифметическим действиям обычно относятся сложение и вычитание (последнее в конечном счете чаще всего тем или иным способом также сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным программам.

3. Логические операции, позволяющие компьютеру анализировать обрабатываемую информацию. Простейшими примерами могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

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

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

6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов. Часто к этой же группе команд относят немногочисленные операции по управлению процессором -типа «останов» или НОП («нет операции»). Иногда их выделяют в особую группу.

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


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

Рассматриваясистему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд CISC (Complex Instruction Set Computer) и с ограниченным набором - RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: «20% населения выпивают 80% пива»). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации «отброшенных» команд, но часто эта плата бывает оправданной: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров, будут рассмотрены ниже в этой главе.

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

Команда ЭВМ обычно состоит из двух частей - операционной и адресной. Операционная часть (иначе она еще называется кодом операции - КОП) указывает, какое действие необходимо выполнить с информацией. Адресная часть описывает, где используемая информация хранится. У нескольких немногочисленных команд управления работой машины адресная часть может отсутствовать, например, в команде останова; операционная часть имеется, всегда.

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

Адресная часть обладает значительно большим разнообразием и ее следует рассмотреть подробнее.

Прежде всего отметим, что команды могут быть одно-, двух- и трехадресные в зависимости от числа участвующих в них операндов.

Первые ЭВМ имели наиболее простую и наглядную трехадресную систему команд. Например: взять числа из адресов памяти А1 и А2, сложить их и сумму поместить в адрес A3. Если для операции требовалось меньшее число адресов, то лишние просто не использовались. Скажем, в операции переписи указывались лишь ячейки источника и приемника информации А1 и A3, а содержимое А2 не имело никакого значения.

Трехадресная команда легко расшифровывалась и была удобна в использовании, но с ростом объемов ОЗУ ее длина становилась непомерно большой. Действительно, длина команды складывается из длины трех адресов и кода операции. Отсюда следует, например, что для скромного ОЗУ из 1024 ячеек только для записи адресной части одной команды требуется 3*10 = 30 двоичных разрядов, что для технической реализации не очень удобно. Поэтому появились двухадресные машины, длина команды в которых сокращалась за счет исключения адреса записи результата. В таких ЭВМ результат операции оставался в специальном регистре (сумматоре) и был пригоден для использования в последующих вычислениях. В некоторых машинах результат записывался вместо одного из операндов.

Дальнейшее упрощение команды привело к созданию одноадресных машин. Рассмотрим систему команд такой ЭВМ на конкретном простом примере. Пусть надо сложить числа, хранящиеся в ячейках с адресами ОЗУ А1 и А2, а сумму поместить в ячейку с адресом A3. Для решения этой задачи одноадресной машине потребуется выполнить три команды:

Извлечь содержимое ячейки А1 в сумматор;

Сложить сумматор с числом из А2;

Записать результат из сумматора в A3.

Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения А5 = (А1 + А2)*АЗ/А4 и вы обнаружите, что потребуется три трехадресных команды и всего пять одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, так как она не производит ненужной записи в память промежуточных результатов.

Ради полноты изложения следует сказать о возможности реализации безадресной (нуль-адресной) машины, использующей особый способ организации памяти -стек. Понимание принципов устройства такой машины потребовало бы некоторых достаточно подробных разъяснений. Сейчас безадресные ЭВМ практически не применяются. Поэтому ограничимся лишь упоминанием того факта, что устроенная подобным образом система команд лежала в основе некоторых программируемых микрокалькуляторов (например, типа «БЗ-21» и «БЗ-34» и им подобных).

До сих пор в описании структуры машинной команды мы пользовались интуитивным понятием об адресе информации. Рассмотрим теперь вопрос об адресации элементов ОЗУ более подробно и строго. Наиболее просто была организована память в ЭВМ первых двух поколений. Она состояла из отдельных ячеек, содержимое каждой из которых считывалось или записывалось как единое целое. Каждая ячейка памяти имела свой номер, который и получил название адреса. Очевидно, что адреса соседних ячеек ОЗУ являются последовательными целыми числами, т.е. отличаются на единицу. В рассматриваемых ЭВМ использовались данные только одного типа (вещественные числа), причем их длина равнялась длине машинной команды и совпадала с разрядностью памяти и всех остальных устройств машины. Для примера укажем, что ячейка типичной ЭВМ второго поколения состояла из 36 двоичных разрядов.

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

Описанный механизм модификации адресов существенно упрощал написание циклических программ, таких как нахождение суммы последовательных ячеек ОЗУ, копирование отдельных участков памяти и т.п.

В ЭВМ третьего поколения идеология построения памяти существенно изменилась: минимальная порция информации для обмена с ОЗУ была установлена равной 8 двоичных разрядов, т.е. один байт. Стало возможным обрабатывать несколько типов данных: символы текста (1 байт), целые числа (2 байта), вещественные числа обычной или двойной точности (4 или 8 байт соответственно). В связи с этим была введена новая условная единица измерения информации - машинное слово. Оно равнялось 4 байтам и соответствовало длине стандартного вещественного числа. Все объемы информации начали измеряться в единицах, кратных слову: двойное слово, полуслово и т.п. Естественно, что адрес (номер ячейки ОЗУ) в машинах с байтовой организацией стал относится к отдельному байту; байты памяти имеют возрастающие на единицу номера. Слово состоит из нескольких последовательно расположенных байтов. В качестве адреса слова удобно принимать адрес одного из образующих его байтов (обычно используется младший байт, имеющий наименьший номер). Таким образом, адреса слов меняются уже не через единицу; их приращение зависит от длины машинного слова в байтах и равняется четырем.

Размер машинного слова был, по-видимому, выбран исходя из форматов обрабатываемой информации, а не в связи с разрядностью каких-либо устройств. Для подтверждения этого приведем несколько фактов о типичных ЭВМ третьего поколения из семейства ЕС. Арифметико-логическое устройство модели «ЕС-1022» имело 16 двоичных разрядов, «ЕС-1033» - 32 разряда, а «ЕС-1050» - 64 разряда. В то же время за одно обращение к оперативной памяти в «ЕС-1022» и «ЕС-1033» выбиралось 4 байта, в «ЕС-1050» - 8 байт (а в «ЕС-1045» - 16 байт). Таким образом, разнообразие цифр свидетельствует, что 32 разряда (4 байта) не являлись каким-то технически выделенным объемом информации.

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

Контрольные вопросы

1. Что такое архитектура ЭВМ? Сформулируйте определение и расшифруйте его.

2. Проведите аналогию между архитектурой ЭВМ и обыденным понятием архитектуры. Что общего и в чем различие?

3. Что общего и в чем различие между понятиями «внутреннее устройство ЭВМ»

и «архитектура ЭВМ»?

4. Что такое семейство ЭВМ? Приведите примеры.

5. Объясните, в чем состоит принцип программной совместимости. Что такое совместимость снизу вверх (поясните на примере одного из известных вам семейств)?

6. Имеют ли отношение к понятию «архитектура» следующие факты:

а) в компьютере применяются микросхемы динамического (или статического) ОЗУ?

б) компьютер имеет расширенную память?

в) компьютер имеет (не имеет) общую шину, по которой передается информация между его устройствами?

г) в процессоре INTEL 80386 к системе команд добавлено по сравнению с INTEL 80286 несколько новых?

д) объем памяти новой модели ЭВМ увеличен вдвое?

7. Перечислите основные принципы фон-неимановской архитектуры и разъясните их содержание.

8. Чем обусловлено в ЭВМ широкое применение двоичной системы?

9. Можно ли. посмотрев на содержимое отдельно взятой ячейки памяти, определить, какая информация в ней записана: число, команда, символы?

10. Из каких основных рлов состоит ЭВМ?

11. Что такое счетчик команд и какую роль он играет?

12. Что такое магистраль (шина)?

13. Какие преимущества имеет магистральная структура ЭВМ?

14. Что представляет собой контроллер внешнего устройстваи какую роль он играет в процессе обмена информацией?

15. Какую роль играет в компьютере видеопамять?

а) текстовый режим (24 строки по 80 символов);

б) графический черно-белый режим при размере экрана 640х200 точек;

в) 16- цветный режим при том же размере экрана.

17. Что такое режим прямого доступа к памяти?

18 Как называется элементарная составляющаямашинной команды? От чего может зависеть скорость выполнения команды?

19. Опишите основные этапы выполнения машинной команды. Особое внимание

обратите на роль счетчика команд.

20. Что такое конвейерная обработка команд и какие преимущества она имеет?

21. Какие основные операции входят в состав системы команд любой ЭВМ?

Кратко охарактеризуйте каждою из названных групп.

22. Объясните, почему возможно создать компьютер с уменьшенным (неполным)

набором команд и что это дает.

23. Из каких частей состоит команда ЭВМ? Кратко охарактеризуйте их назначение.

24. Чем различаются одно-, двух- и трехадресные команды?

25. Что такое адрес ОЗУ?

26. Как можно использовать одну и ту же команду для работы с несколькими

последовательно расположенными ячейками?

27. Укажите отличия в устройстве памяти ЭВМ третьего поколения по сравнению с двумя предыдущими.

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

1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.

2. Арифметические операции, которым фактически обязана своим названием вычислительная техника. Конечно для вычислительных действий в современном компьютере заметно уменьшилась, но они по-прежнему играют в программах важную роль. Отметим, что к основным арифметическим действиямлбычно относятся сложение и вычитание (последнее в конечном счете чаще всего тем или иным способом также сводится к сложению). Что касается умножения и деления, то они во многих ЭВМ выполняются по специальным программам.

3. Логические операции, позволяющие компьютеру анализировать отображаемую информацию. Простейшими примерами могут служить сравнение, а также известные логические операции И, ИЛИ, НЕ (инверсия). Кроме того к ним часто добавляются анализ отдельных битов кода, их сброс и установка.

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

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

6. Команды управления, реализующие нелинейные алгоритмы. Сюда прежде всего следует отнести условный и безусловный переход, а также команды обращения к подпрограмме (переход с возвратом). Некоторые ЭВМ имеют специальные команды для организации циклов, но это не обязательно: цикл может быть сведен к той или иной комбинации условного и безусловного переходов.

Ч асто к этой же группе команд относят немногочисленные операции по управлению процессором - типа "останов" или НОП ("нет операции"). Иногда их выделяют в особую группу.

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

В последнее время все большую роль в наборе команд играют команды для преобразования из одного формата данных в другой (например, из 8-битного в 16-битный и т.п.), которые заметно упрощают обработку данных разного типа, но в принципе могут быть заменены последовательностью из нескольких более простых команд. Рассматривая систему команд, нельзя не упомянуть о двух современных взаимно конкурирующих направлениях в ее построении: компьютер с полным набором команд - CISC (Complex Instruction Set Computer) и с ограниченным набором - RISC (Reduced Instruction Set Computer). Разделение возникло из-за того, что основную часть времени компьютеру приходится выполнять небольшую часть из своего набора команд, остальные же используются эпизодически (в одной из популярных статей это в шутку сформулировано в виде следующей наглядной аналогии: "20% населения выпивают 80% пива). Таким образом, если существенно ограничить набор операций до наиболее простых и коротких, зато тщательно оптимизировать их, получится достаточно эффективная и быстродействующая RISC-машина. Правда за скорость придется платить необходимостью программной реализации "отброшенных" команд, но часто это бывает приемлемо: например, для научных расчетов или машинной графики быстродействие существенно важнее проблем программирования. Подробнее вопросы, связанные с системой команд современных микропроцессоров будут рассмотрены ниже в этой главе.

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

Одно определение понятия процессора было дано во введении.

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

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

В современных компьютерах процессор (ядро ЭВМ) есть не формальное объединение АЛУ и ЦУУ, а результат развития структуры ЭВМ, призванный обеспечивать высокое быстродействие и широкие функционально-логические возможности обработки информации. В частности, появление новых ЭВМ привело к необходимости появления компьютере и в процессоре

1) системы прерывания;

2) новых уровней памяти;

3) средств защиты памяти;

4) использования специальных типов индексации, адресации информации;

5) кэш-память команд, ветвлений, предсказаний обменов и т.д.;

6) специальных процедур управления вычислительным процессом

Все эти подсистемы и устройства частично или целиком входят в процессор. Главное же новое структурное явление в процессоре – СОЗУ.

Поэтому ныне процессор имеет более развитую структуру, повторяющую в известном смысле структуру машины фон Неймана.

Но мы не будем касаться новых направлений в организации процессоров. Их осветят в полной мере в курсе «Микропроцессоры».

3.1. Система команд ЭВМ.

Система команд ЭВМ определяется структурой и форматами команд, а также списком (перечнем) команд и способами адресации.

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

Поскольку, в конечном счёте, команда тем или иным образом вводится в ЭВМ и ею воспринимается, то конечный вид команды – цифровой код.

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

3.1.1. Структура и форматы команд.

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

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

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

И на самом деле, такие четырехадресные команды существуют. С такого «формата» команды «стартовали». Но адресов в команде может быть и меньше, и больше!

Адрес источника следующей команды может отсутствовать, поскольку программу (последовательность команд) наиболее естественно и целесообразно размещать в некотором массиве рядом расположенных ячеек ЗУ. И если команды записаны последовательно (от номера 1 до номера n), то весьма просто аппаратно (счетчиком!) реализовать смену адреса ячейки-источника очередной команды. Заметим, что такой порядок выборки называется естественным , тогда как при задании адреса команды в команде порядок выборки именуется принудительным . Заметим также, что использование естественного порядка выборки команд приводит к необходимости введения специальных команд, изменяющих порядок вычислений (путём изменения содержимого счетчика номеров ячеек команд). Это необходимо для обеспечения алгоритмической вычислимости. При принудительном порядке выборки специальные команды не нужны, т.к. каждая команда «меняет» порядок выборки .

Функциональная и структурная организация ЭВМ.

Триггеры

Это элемент памяти. Устройство способное запоминать, хранить и т.п. информацию.

RS триггеры состоят из двух вентилей, один вентиль это или не , второй и не.

RS триггер запоминает на какое его вход подавался сигнал равный единице в последний раз. Если сигнал подавался на S вход, тогда триггер хранит еденицу. Если сигнал подавался на R вход, тогда триггер хранит нуль.

0 1 1 - устанавл. 1

1 0 0 - устанавл 0

1 1 - недопускается

Соединив сумматоры в каскад, можно получить логическую схему сумматоры для двоичных чисел с любым количеством разрядов.

Сумматоры и полусумматоры это однотактные логические схемы. Триггеры –многотактовые.

Регистры – предназначены для записи, хранения и преобразования записанных в них чисел.В качестве элементарной ячейке регистра используется триггер.

Счётчик – узел предназначенный для полсчёта числа сигналов на входе, и фиксации результатов в двоичном коде.

Это абстрактная модель описывающая возможности ЭВМ. Она определяется типом решаемых задач и потребностями в ресурсах и типами задач (память, хар-ки процессора).

Структурная организация ЭВМ – это физиуеская модель, устанавливающая порядок и взаимоствязи компонентов и блоков.

Командой называется совокупность информации, в виде двоичного кода, занимающие определенные поля необходимые процессору, для выполнения требуемых действий.

Формат команды обговорённая структура её полей, кода, включает код операции и адреса операндов, и адрес результата.

Коп А1 А3 Коп А1 А2 А3

Коп. ß--- а3---à

Способы адресации: адресный и ассоциативный(поиск по содержанию).Ассоциативный – просмотр всех ячеек для выявлении кодов содержащие команду.

Адресный поиск– информация, извлекается из памяти по номеру содержащемуся в адресной ячейке. По виду бывает явной и неявной. Явная – ячейки адресного кода не содержит. Неявная адресация используется при стековой адресации.

Стек пуст запись запись чтение В чтение А стек пуст

Стек – группа последовательных ячеек памяти или регистров. Адрес обращения стека отсутствует, и формируется схема управления по следующему правилу. Для чтения или записи доступен только один регистр, одна ячейка - вершина стека. Последний записанный регистр будет считаться первым.

Автоиндексная адресация – применяется в современных компьютерах. Содержимое регистровой памяти или увеличивается или уменьшается, до или после выполнения операции, на постоянно определённую, заданную величину. Этот вид используется при обработки больших массивов данных.



Принцип академика Глушкова.

Универсальное устройство в обработки информации (1956 год). Состоит из регистров, сумматоров и других узлов, позволяющих принимать хранить и преобразовывать информацию. Процесс функционирования во времени устройства обработки информации состоит из последовательности тактовых интервалов, в которых операционный блок производит определённые операции, выполнение этих операций происходит по управляющим сигналам.

Микропрограмма – последовательность микрокоманд, обеспечивающие выполнение операции.

Микрокоманда – последовательность управляющих сигналов.

Общие сведения. Фиксированный набор команд конкретного микропроцессора называют системой команд. Функциональные способности процессора определяются совокупностью базовых команд с различными кодами операций. Общее число команд (кодов операции) в системе всегда больше числа базовых команд. Например, к базовой команде относится команда MOV dst, scr, которая обеспечивает функцию пересылки данных из источника scr в приемник dst. Таких команд в системе может быть очень много. Система команд представляется в виде таблицы. Таблица может иметь различную структуру, однако обычно она содержит следующие сведения о команде:

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

Часто для удобства систему команд разбивают на отдельные группы по функциональному признаку. Например, систему команд микропроцессора КР580ВМ80, содержащую 78 базовых команд, разбивают на 5 групп . Ниже приведено краткое описание функциональных особенностей команд каждой группы.

Команды имеют длину от 1 до 3 байт. Код операции всегда размещен в первом байте команды. Второй байт команды отводится под непосредственный операнд или адрес порта, второй и третий байты являются адресом ячейки памяти. Команды допускают явное задание только одного адреса памяти, т. е. относятся к классу одноадресных команд. При описании команд используются следующие обозначения:

  • src, dst – 8-разрядные источник и приемник. Источником или приемником может быть один из 8-разрядных регистров А, В, С, D, Е, Н или ячейка памяти М, доступ к которой обеспечивает регистровая пара Н L, содержащая адрес пересылаемого байта. В коде операции источник src и приемник dst указаны в виде трехразрядного кода SSS и DDD;
  • RP – двухразрядный код регистровых пар ВС, DE, Н L, А + РП (регистр признаков) или указателя стека SP;
  • data, data 16 – 8- и 16-разрядный операнд;
  • addr, port – 16-разрядный адрес памяти и 8-разрядный адрес порта;
  • (addr), (SP) – содержимое ячейки памяти по указанным адресам;
  • (SP)+, -(SP) – операции постинкремента и предекремента со стеком. Команды пересылки. Г руппа содержит наиболее часто встречающиеся в программах команды пересылки данных, источниками и приемниками которых могут быть внутренние регистры процессора, основная память и внешние устройства. Команды не оказывают воздействия на флаги регистра состояния.

Мнемоника команды отражает особенности выполняемой операции и способ адресации. Например, мнемоника MOV, MVI указывает на перемещение (Move) операндов; LDA, LDAX, LXI, LHLD – на загрузку (Load); STA, STAX, SHLD – на сохранение (Save). Для операций с байтами используется мнемоника MOV, MVI, LDA, STA, LDAX, STAX; для операций со словами– LXI, LHLD, SHLD. Прямая адресация при загрузке и сохранении содержимого аккумулятора отражается мнемоникой LDA и STA, косвенная – мнемоникой LDAX и STAX.

Команды этой группы сведены в табл. 5.8. Они позволяют осуществить:

  • операцию пересылки данных между источником (src) и приемником (dst), которая записывается в виде dst ← src (команда 1). Источниками и приемниками являются внутренние регистры общего назначения (А, В, С, D, Е, Н) и ячейка памяти М. Допускается любая комбинация, за исключением М ← М, т. е. перезагрузка ячейки памяти М не разрешается;
  • загрузку регистров общего назначения и ячейки М вторым байтом В2 (команда 2) и регистровых пар ВС, DE, HL (в том числе указателя стека SP) вторым В2 и третьим В3 байтами (команда 3), причем всегда В3 загружается в старшие регистры (В, D, Н) пары, В2 – в младшие регистры (С, Е,L);
  • пересылку данных между аккумулятором А и основной памятью (команды 4÷7), между аккумулятором и внешним устройством (команды 8, 9). При пересылке между аккумулятором А и памятью адреса ячеек памяти располагаются в регистровых парах ВС, DE или в третьем и втором байтах (В3В2) команды;

Таблица 5.8

Мнемоника

Выполняемая

операция

операции

dst src

А (addr)

Примечания: RP – 2-разрядный код регистровых пар ВС, DE, HL, А + РП (регистр признаков) или указателя стека SP; Б – байты, U – циклы, Т – циклы.

  • пересылку данных между парой регистров HL и памятью (команды 10, 11). При этом операнд из регистра L пересылается в ячейку с адресом В3В2, образованным из третьего и второго байта команды, а из регистра Н – по адресу на единицу больше. При обратной пересылке сначала из ячейки с адресом В3В2 в регистр L загружается первый операнд, затем из ячейки с адресом В3В2+1 в регистр Н – второй;
  • пересылку данных между парами регистров, включая пару из аккумулятора А и регистра признаков РП, и стеком (команды 12, 13). При записи в стек содержимое указателя стека уменьшается на единицу, и по адресу SP-1 загружается первый операнд в один из регистров В, D, Н или А, затем содержимое указателя стека снова уменьшается на единицу, и по адресу SP–2 загружается второй операнд из регистра С, Е, L или РП. При выводе из стека сначала в один из регистров С, Е, L или РП загружается операнд, хранящийся в ячейке с адресом SP указателя стека. Затем содержимое увеличивается на единицу, из ячейки с адресом SP + 1 второй операнд загружается в один из регистров В, D, Н или А, и содержимое указателя стека вновь увеличивается на единицу и принимает значение SP + 2. Следует отметить, что при загрузке регистровой пары А, РП (ее код RP = 11) из стека изменяется состояние триггеров регистра признаков РП. Это единственная команда (из всех команд пересылки данных), которая влияет на признаки;
  • пересылку содержимого пары регистров HL в указатель стека SP и программный счетчик PC (команды 14, 15);
  • обмен данными между парами регистров HL и DE, парой регистров HL и стеком (команды 16, 17). При обмене содержимое регистровой пары HL помещается в пару DE или стек, а содержимое регистровой пары DE или стека – в пару HL. Операция обмена обозначается символом "↔".

Арифметические команды. Вычислительные возможности микропроцессора ограничены простыми командами сложения и вычитания 8-разрядных операндов. Операции умножения и деления реализуются программным способом. Набор команд (табл. 5.9) позволяет выполнить:

  • сложение и вычитание 8-разрядных операндов с учетом и без учета переноса (команды l÷8), при этом один из операндов всегда находится в аккумуляторе, а второй – в одном из регистров общего назначения (ячейке памяти М) или является вторым байтом команды. Команды, учитывающие значение сигнала переноса С регистра признаков, используются при сложении и вычитании многобайтных чисел. Для этой же цели можно использовать команду 9 сложения содержимого пары регистров HL с 16-разрядным адресуемым регистром;
  • арифметическое сравнение содержимого аккумулятора А с содержимым одного из регистров общего назначения Rn (ячейкой памяти М) или вторым байтом В2 (команды 10+11). При этом выполняется вычитание А – Rn или А – В2. Результат сравнения определяется по сигналам триггеров регистра признаков: если Z = 1, то A = Rn или А = В2; если S = 1, то А > Rn или А > В2. Содержимое аккумулятора не изменяется;
  • увеличение и уменьшение на 1 (инкремент и декремент) содержимого регистров и регистровых пар. При программировании часто

Таблица 5.9

Мнемоника

Выполняемая операция

операции

А ← A + src + C

A ←A – src – C

А ← A + data + CY

A ← A – data

А ← A – data – CY

A – scr (сравнение)

A – scr (сравнение)

dst ← dst – 1

A ← 2/10-коррекция A

возникает необходимость увеличения или уменьшения на единицу значения операнда. Для этого можно использовать операции сложения А + В2 или вычитания А – В2, записав в программе В2 = 1. Однако в системе команд предусмотрены специальные команды (12-5-15) инкремента и декремента 8- и 16-разрядных операндов;

десятичную коррекцию содержимого аккумулятора после выполнения арифметических операций в двоично-десятичном коде 8421 (команда 16). При этом содержимое аккумулятора представляется в виде двух полубайтов, каждый из которых соответствует десятичной цифре. Коррекция производится блоком десятичной коррекции по изложенным в § 5.2 правилам (с. 99).

Команды логических операций. Команды этой группы (табл. 5.10) позволяют реализовать:

  • двуместные логические операции умножения (И), сложения (ИЛИ) и исключающее ИЛИ над 8-разрядными операндами (команды 1÷6). Логические операции являются поразрядными и выполняются независимо для каждого из восьми бит операндов. Неадресуемый операнд находится в аккумуляторе, туда же поступает результат операции. Вторым операндом является содержимое одного из регистров общего назначения (ячейки памяти М) или второй байт команды;
  • инвертирование содержимого аккумулятора А (команда 7);
  • флаговые команды (8, 9) инвертирования и установки бита С триггера переноса регистра признаков;
  • два вида циклических сдвигов содержимого аккумулятора влево и вправо (команды Юл-13). Первый вид сдвигов (сдвиги без переноса) реализуется путем замыкания в кольцо всех триггеров аккумулятора, при втором виде сдвигов (сдвиги с переносом, или расширенные сдвиги) в кольцо дополнительно вводится триггер переноса С регистра признаков. Отсутствующие в системе команд логические и арифметические сдвиги в обе стороны можно реализовать предварительной установкой бита С в 0 или 1 совместно с расширенным сдвигом.

Команды передачи управления. При передаче управления нарушается последовательный ход выборки содержимого ячеек памяти и процессор адресуется в другую область памяти. Выделяют

Таблица 5.10

Мнемоника

Выполняемая

операция

операции

А ← А л src – умножение

А ← A v src – сложение

А ← A © src – искл. ИЛ И

А ← А л data

А ← A © data

три вида команд передачи управления: команды перехода по заданному адресу (JMP), вызова подпрограммы (CALL) и возврата из подпрограммы (RET). К ним относятся безусловные и условные команды. Условные команды осуществляют переход, вызов подпрограммы и возврат из подпрограммы в зависимости от состояния флага, задаваемого значением сигнала одного из четырех триггеров Z, С, S, Р регистра признаков (или состояния). В процессоре 8080 используются оба состояния (1 и 0) четырех флагов (Z, С, Р, S), позволяющих получить 8 вариантов каждой команды (табл. 5.11). Обозначение признака (условия) указывается в мнемонике условных команд J**, С**, R** вместо звездочек (**). Например, признаку NC, для которого условия перехода считаются выполненными при С = 0, соответствует команда JNC.

В операциях как условного, так и безусловного перехода и вызова подпрограмм используется полный прямой 16-разрядный адрес, обеспечивающий передачу управления в любую точку 64-килобайтовой области пространства памяти.

Таблица 5.11

Рассмотрим особенности команд, представленных в табл. 5.12.

С помощью трехбайтной команды JМР реализуется безусловная передача управления. При этом второй и третий байты команды (адрес addr продолжения программы) заносятся в счетчик команд PC (содержимое В3 в старшие разряды, В2 – в младшие).

Команды условной передачи управления J** реализуют разветвление вычислительного процесса в зависимости от условия. При выполнении условия (ДА) в счетчик PC заносится второй и третий байты команды, в противном случае (НЕТ) содержимое счетчика увеличивается на 3 единицы. Продолжение программы осуществляется по адресу, находящемуся в счетчике команд, т.е. со следующей команды.

Таблица 5.12

Мнемоника

Выполняемая

операция

операции

Команды безусловного (CALL) и условного (С**) вызовов используются для обращения к подпрограммам, хранящимся в другой части основной памяти. Эти команды всегда предусматривают возможность возврата в прерванную основную программу путем сохранения в стеке содержимого программного счетчика PC. После выполнения операции возврата:

  • при безусловном вызове или выполнении условия второй и третий байты команды заносятся в программный счетчик PC;
  • при невыполнении условия содержимое программного счетчика увеличивается на 3 единицы.

Продолжение программы осуществляется по адресу, находящемуся в счетчике команд PC.

В наборе имеются команды, позволяющие реализовать безусловную (RET) и условную (К**) передачу управления для возврата в прерванную программу. При выполнении этих команд адрес возврата переписывается из стека в программный счетчик PC, для чего используется постинкрементный способ адресации. При невыполнении условия возврата (для команды с условием) осуществляется переход к очередной команде путем увеличения на единицу содержимого программного счетчика PC. Команды возврата являются однобайтными, так как в указателе стека SP хранится адрес ячейки стека с адресом возврата в прерванную программу.

Команда PCHL загружает в программный счетчик PC адрес, хранящийся в регистровой паре HL.

Команды общего управления. Команды этой группы (табл. 5.13) используются для задания режима работы микропроцессора. Команда RST применяется для повторного пуска микропроцессора и при обслуживании прерываний. При ее выполнении:

  • содержимое программного счетчика переносится в стек по адресам SP – 1, SP – 2, формируемым в указателе стека, что обеспечивает возврат к основной программе;
  • в программный счетчик засылается 16-разрядный адрес начала одной из 8 программ обслуживания прерывания.

Таблица 5.13

Мнемоника

Выполняемая

операция

операции

–(SP) ← PC ← 8×n, n = 0 – 7

Разрешение прерываний

Запрет прерываний

Чтение маски

Установка маски

Нет операции

Команда разрешения прерывания EI устанавливает триггер INTE разрешения прерываний в единичное состояние, при этом микропроцессор реагирует на запросы прерываний. Команда запрещения прерываний DI устанавливает триггер INTE в нулевое состояние. Пустая команда NOP используется в циклах программируемой задержки. Команда останова HLT вызывает прекращение выполнения программы.