Что такое система команд эвм. Система команд эвм и способы обращения к данным

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Может показаться, что одноадресной машине для решения задачи потребуется втрое больше команд, чем трехадресной. На самом деле это далеко не всегда так. Попробуйте самостоятельно спланировать программу вычисления выражения Y=(X1+X2)*X3/X4 и вы с удивлением обнаружите, что потребуется 3 трехадресных команды и всего 5 одноадресных. Таким образом, одноадресная машина в чем-то даже эффективнее, т.к. она не производит ненужной записи в память промежуточных результатов.

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

© Е.А.Еремин , 1997
Из книги:
Еремин Е.А. Как работает современный компьютер . - Пермь: изд-во ПРИПИТ, 1997. 176 с.

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

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. Укажите отличия в устройстве памяти ЭВМ третьего поколения по сравнению с двумя предыдущими.

Александр Савватеев

Общие сведения

Вычислительная машина М-3 разработана под руководством И. С. Брука. Она относится к классу малых универсальных машин.

Машина выполняет действия над 31-разрядными числами с фиксированной запятой со скоростью 30 двухадресных операций в секунду. Оперативная память реализована на магнитном барабане и имеет емкость 2048 чисел. В случае подключения к ЭВМ памяти на магнитных сердечниках быстродействие возрастает до 1500 операций в секунду.

Устройств внешней памяти М-3 не имеет.

Для ввода-вывода информации используются перфолента и телетайп.

Машина имеет 770 электронных ламп и 3000 полупроводниковых диодов, потребляет 10 кВт электроэнергии. Для ее размещения достаточно 30-40 м 2 .

Память и структура информации

Оперативная память ЭВМ М-3 имеет объем 2048 31-разрядных чисел или команд. Все ячейки памяти равноправны между собой. Для обращения к ячейкам памяти используются 11-разрядные адреса. Разряды ячеек памяти нумеруются слева направо; старший (самый левый) разряд имеет номер 0.

Двоичные числа с фиксированной точкой содержат в нулевом разряде знак числа, а остальные 30 разрядов занимает абсолютная величина числа. Таким образом, М-3 использует прямой, а не дополнительный код для представления отрицательных чисел. Принято считать, что целая часть числа равна нулю, а разряды 1-30 содержат дробную его часть.

Десятичные числа также имеют нулевую целую часть. Их знак размещается в нулевом разряде, а в разрядах 1-28 расположены семь тетрад, кодирующих десятичные цифры дробной части числа. Разряды 29-30 не используются.

Ввод-вывод информации

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

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

Вывод информации осуществляется на печатающее устройство типа телетайпа.

Система команд

ЭВМ М-3 относится к двухадресным машинам. Каждая команда занимает одну ячейку памяти. Разряд кода команды 0 не используется, разряды 1-6 содержат код операции, разряды 7-18 - адрес первого операнда, разряды 19-30 - адрес второго операнда и результата.

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

При получении отрицательного результата, в том числе отрицательного нуля, формируется признак w =1. При получении положительного результата признак w =0.

Все команды можно разделить на две группы: арифметико-логические и команды управления.

Код арифметико-логической команды имеет вид xy , где x - модификатор операции (одна восьмеричная цифра); y - код операции (вторая восьмеричная цифра). Возможные значения кодов и модификаторов арифметико-логических операций приведены в нижеследующих табл. 1-2.

Таблица 1

Таблица 2

В табл. 1 a и b означают ячейки памяти, заданные первым и вторым адресом в коде команды соответственно; r - регистр-сумматор.

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

Таблица 3

Код операции Название команды Действия, выполняемые по команде
07
27
Ввод числа с перфоленты Одно число с перфоленты вводится в ячейку b . В сумматор оно не заносится. Адрес ячейки a равен нулю
05
15
Перенос числа Число из ячейки a переносится в ячейку b
45
55
Перенос числа и печать Число из ячейки a переносится в ячейку b и одновременно печатается на телетайпе
24 Безусловный переход по первому адресу a
b
64 Безусловный переход по первому адресу и печать Происходит передача управления на ячейку с адресом a
и одновременно содержимое сумматора записывается в ячейку с адресом b и печатается на телетайпе
74 Безусловный переход по второму адресу Управление передается команде с адресом b . Адрес a в коде команды равен нулю. Знаковый разряд сумматора очищается, т. е. в сумматоре остается абсолютная величина его первоначального значения
34 Условный переход Если w =1, происходит передача управления на ячейку с адресом a , а если w =0 - на ячейку с адресом b
37 Останов Машина останавливается. На пульт управления выдается a . Содержимое сумматора не изменяется. Поле адреса b в коде команды равно нулю

Лекция 11 ОСНОВНЫЕ КОМАНДЫ ЭВМ Классификация команд по различным признакам Структура команд ЭВМ Команды передачи данных Команды обработки данных Команды передачи управления Команды для работы с подпрограммами. Стеки. Прочие команды ЭВМ.

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

Классификация команд ЭВМ По функциональному назначению Команды передачи данных Команды обработки данных Команды передачи управления Дополнительные (прочие) По количеству адресов Нульадресные или безадресные С одним адресом С двумя адресами С тремя адресами По способу кодирования операции По длине С фиксированной длиной кода операции С переменной длиной кода операции По способу адресации Один байт (слово) Два байта (слова) Три байта (слова)

Код операции а 1 а 2 а 3 - Трехадресная команда а 1, а 2 – адреса ячеек (регистров), где находятся числа, участвующие в операции (операнды) а 3 – адрес ячейки оперативной памяти, куда нужно поместить результат Код операции а 1 а 2 - Двухадресная команда Результат записывается в ячейку а 2 Код операции а 1 - Одноадресная команда а 1 – адрес ячейки, где хранится число участвующее в операции или адрес ячейки, где записывается результат Код операции - Нуль адресная команда Все операнды в регистре ЦП

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

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

Результат операции формируется в регистре-приемнике или в специализированном регистреаккумуляторе. Команды данной группы формируют также признаки результатов, устанавливаемые в регистре флагов процессора: перенос из старшего разряда, переполнение, нулевой результат и др.

Подробнее о команде сравнения Обычно для сравнения двух чисел процессор выполняет операцию вычитания. По результату вычитания устанавливаются флаги во флаговом регистре. Очевидно, что если сравниваемые числа равны, результат вычитания будет нулевым и в регистре установится флаг нулевого результата. Если первое из сравниваемых чисел больше - результат вычитания будет отрицательным и установится флаг отрицательного результата. Результат вычитания не сохраняется в памяти, поскольку по состоянию флагового регистра можно судить о результатах сравнения чисел.

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

Src="http://present5.com/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-11.jpg" alt="Пример команды условного перехода Оператор IF (A>B) then go to L некоторого языка"> Пример команды условного перехода Оператор IF (A>B) then go to L некоторого языка высокого уровня может быть реализован двумя командами ЭВМ: СРАВНИТЬ А и В ПЕРЕЙТИ ЕСЛИ БОЛЬШЕ К АДРЕСУ L Если А>В, то результат вычитания будет положителен и соответственно флаг знака во флаговом регистре не установится. Вторая команда (условный переход) проверяет состояние флага знака и, если он не установлен, модифицирует программный счетчик так, чтобы его значение указывало на адрес L.

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

Где надо хранить адрес возврата? Для того, чтобы начать выполнять подпрограмму, в программный счетчик необходимо загрузить адрес первой команды подпрограммы. Для осуществления возврата из подпрограммы необходимо запомнить в каком-то месте адрес возврата. Можно, например, сохранить адрес возврата в одном из регистров процессора. Такой способ сохранения адреса возврата очень прост и легко реализуется. Однако часто встречаются подпрограммы, которые вызывают другие подпрограммы. Пусть основная программа вызвала подпрограмму А. Она в свою очередь обратилась к подпрограмме В. Если адрес возврата для подпрограммы А хранится в регистре процессора, то куда размещать адрес возврата при вызове подпрограммы В?

Обобщенный алгоритм функционирования фон – неймановской ЭВМ Инициализация Выборка команды Увеличение программного счетчика Дешифрация и выполнение команды Нет Команда «Остановка процессора» Да Инициализация

Понятие стека Большинство ЭВМ используют аппаратно поддерживаемую структуру данных, называемую стеком. Стек - это структура данных, организованная по принципу: последним вошел - первым вышел, т. е. последние записанные в стек данные извлекаются из него первыми. В переводе с англ. stack - стопка. Аналогом стека может служить стопка тарелок. Положить тарелку в стопку можно только сверху, извлечь без проблем опятьтаки только верхнюю тарелку.

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

4. При извлечении из стека данные считываются из той ячейки ОП, на которую показывает указатель, затем указатель стека модифицируется так, чтобы указывать на предпоследнее сохраненное в стеке значение. 5. Обычно стеки растут в сторону уменьшения адресов, т. е. при записи числа указатель стека уменьшается, при извлечении числа из стека - увеличивается.

Команды для работы с подпрограммами. Стеки Стек = ячейки ОП + регистр - указатель стека (АЛУ ЦП) Регистр - указатель стека хранит адрес ячейки ОП, в которой содержится последний помещенный в стек адрес возврата Структура данных стека на примере А) Начальное состояние: стек пустой Ячейки ОП Адреса ячеек 1000 Указатель стека 998 996 Б) В стек записаны два адреса возврата: 1234 и 5678 1234 1000 Указатель стека 5678 998 Запись адресов возврата 996 В) Из стека извлечен один адрес, последний Указатель стека 1234 1000 998 996 Считывание 1000

Src="http://сайт/presentation/3/-29919247_13569617.pdf-img/-29919247_13569617.pdf-19.jpg" alt="Работа команды вызова подпрограмм САLL 1. Когда процессор считывает из памяти команду САLL"> Работа команды вызова подпрограмм САLL 1. Когда процессор считывает из памяти команду САLL , программный счетчик увеличивается и показывает на команду, следующую за командой САLL. То есть программный счетчик теперь содержит адрес возврата, с которого должно продолжиться выполнение основной программы после окончания работы подпрограммы. 2. При выполнении обращения к подпрограмме процессор сохраняет содержимое программного счетчика в стеке, точнее, в его ячейках ОП. 3. Далее в программный счетчик загружается адрес команды, с которого начинается подпрограмма. Процессор приступает к выполнению подпрограммы.

Работа команды возврата RETURN 1. Для возврата из подпрограммы в основную программу служат команды возврата RETURN. 2. Команда возврата из подпрограммы извлекает из стека сохраненный в нем адрес возврата помещают его в программный счетчик. 3. Процессор приступает к выполнению основной программы. 4. Если имели место несколько вложенных вызовов подпрограмм, то возврат произойдет по адресу возврата, сохраненному последнего вызова, (так как для хранения адресов возврата используется стек и последний сохраненный адрес возврата будет вызван первым).

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