Информатика. Курс лекций. Громов Ю.Ю - 34 стр.

UptoLike

Рис. 2.2. Сложение двух чисел, сохраняемых в основной памяти машины
Машинные команды. Показанная на рис. 2.2 последовательность этапов представляет собой пример команд, которые
должен уметь выполнять центральный процессор любой машины. Такие команды называются машинными командами (ma-
chine instruction). Полный список машинных команд относительно невелик. Одной из наиболее удивительных особенностей
компьютерных наук является то, что если машина способна выполнять определенный тщательно продуманный набор эле-
ментарных операций, то дальнейшее расширение набора команд машины не приведет к увеличению ее теоретических функ-
циональных возможностей. Другими словами, после какого-то момента добавление новых функций позволяет повысить
лишь комфортность эксплуатации машины или скорость ее работы, однако никак не влияет на основные ее свойства. Под-
робнее об этом речь пойдет в главе 11.
При изучении системы машинных команд полезно будет разделить их на три категории: команды передачи данных,
арифметические и логические команды, а также команды управления.
Команды передачи данных включают те команды, при выполнении которых происходит перемещение данных из одного
места в другое. На рис. 2.2 к этой группе относятся действия, выполняемые на этапах 1, 2 и 4. Как и в случае с основной памя-
тью, наиболее типичной является ситуация, когда перемещаемые данные сохраняются и в месте их исходного расположения.
Процедура выполнения команд передачи данных больше напоминает копирование информации с одного места в другое, а не
обычное их перемещение. Поэтому чаще всего употребляемые названия команд пересылка (transfer) или перемещение (move)
следует считать выбранными неверно. Более подходящими названиями для этих команд можно считать копирование (copy)
или дублирование (clone). Поскольку мы коснулись терминологии, то следует указать, что для передачи данных между ЦП и
основной памятью существуют специальные термины. Запрос на заполнение регистра общего назначения содержимым
ячейки памяти обычно называют командой загрузки (load), а запрос на передачу содержимого регистра в ячейку основной
памятикомандой сохранения (store).
Вторую, очень важную группу команд этой категории составляют команды связи с устройствами, выходящими за рам-
ки интерфейса ЦПосновная память. Поскольку эти команды отвечают за выполнение в машине операций ввода/вывода,
они обычно называются командами ввода/вывода и в некоторых случаях помещаются в отдельную категорию. Однако в раз-
деле 2.6 будет показано, что для выполнения операций ввода/вывода обычно используются те же команды, с помощью кото-
рых выполняется передача данных между ЦП и основной памятью машины. А это означает, что выделение данных команд в
отдельную категорию следует считать неправомерным.
К арифметическим и логическим командам относятся те команды, которые указывают блоку управления на необходи-
мость запросить выполнение определенных действий арифметико-логического блока. На рис. 2.2 к этой категории относятся
действия, выполняемые на этапе 3. Как следует из самого названия арифметико-логического блока, он также предусматрива-
ет выполнение группы операций, отличающихся от основных арифметических действий. К ним относятся обычные логиче-
ские операции AND, OR и XOR, которые уже рассматривались в главе 1. В этой главе мы обсудим эти операции более под-
робно.
В основном они используются для манипуляции отдельными битами некоторого регистра общего назначения; при этом со-
стояние остальных регистров остается неизменным.
Другая группа операций, реализованная в большинстве типов арифметико-логических блоков, состоит из команд, по-
зволяющих перемещать содержимое регистров влево или вправо в пределах самих этих регистров. Такие операции называ-
ются операциями сдвига (shift) или вращения (rotate), в зависимости от того, что происходит с битами, выходящими при пе-
ремещении содержимого регистра за его пределы. При операции сдвига эти биты просто отбрасываются, а при операции
вращения биты, покидающие пределы регистра с одного конца, помещаются во вновь вставляемые позиции на другом конце
регистра. (Иногда последняя операция называется циклическим сдвигом.)
Команды управления предназначены для управления ходом выполнения программы, а не обработки каких-либо данных. На
рис. 2.2 к этой категории относятся действия, выполняемые на этапе 5, однако это очень простой пример. Данная категория
включает много интересных команд, например группа команд перехода (jump) или ветвления (branch). Они используются
для перенаправления управляющего блока на выполнение команды, отличной от той, которая является очередной в выпол-
няемой последовательности. Команды перехода реализуются в двух вариантах: команды безусловного перехода и команды
условного перехода. К первому варианту относится команда типа "Пропустите все команды до этапа 5", а ко второмуко-
манда типа "Если полученное число равно 0, то перейдите к этапу 5". Разница между ними состоит в том, что при выполне-
нии команды условного перехода изменение последовательности произойдет только при выполнении указанного условия. В
качестве примера можно привести последовательность команд (рис. 2.3), которая представляет собой реализацию алгоритма
деления двух чисел. В этом примере этап 3 содержит команду условного перехода, предназначенную для предотвращения
операции деления на нуль.
Этап 1. Выбрать первое слагаемое из основной памяти и поместить
его в регистр.
Этап 2. Выбрать второе слагаемое из основной памяти и поместить
его в другой регистр.
Этап 3. Активизировать электронную схему суммирования, указав
используемые на этапах 1 и 2 регистры в качестве входных и задав еще
один регистр в качестве выходного, предназначенного для размещения
результата.
Этап 4. Сохранить результат выполнения операции в основной памяти.
Этап 5. Завершить выполнение операции.