Наборы команд

Нет сомнения в том, что ЭВМ со всеми возможными командами не существует. Большинство ЭВМ содержит от 20 до 200 отдельных команд, многие из которых могут отличаться только используемым методом адресации. Число действительно различных команд нередко трудно определить, так как ЭВМ может иметь комбинированные команды или необычную архитектуру. Широкий набор команд делает программы короче, а быстродействие выше. Однако такой набор команд требует более длинных команд и более сложного декодирования; кроме того, он более труден для изучения и эффективного использования. Программисты редко используют большое число команд из набора; как правило, только немногие программисты могут эффективно применять наборы, в которых более 100 команд. Вместе с тем малое число команд приводит к необходимости выполнять неудобные манипуляции для реализации простых операций. Наиболее оптимальными следует считать наборы из 40—80 команд.

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

  1. Арифметические и логические операции могут выполняться только над содержимым регистров. Пример:
  • Чтобы сложить содержимое ячейки памяти 50 с содержимым аккумулятора, необходимо использовать последовательность команд:
    LOAD R2, 50 ADD R2
    вместо одиночной команды ADD 50. Это ограничение проявляется в программах, требующих большого числа команд передачи данных.
  1. В однооперандных командах, таких как СДВИГ, ВЗЯТЬ ОБРАТНЫЙ КОД, УВЕЛИЧИТЬ или УМЕНЬШИТЬ НА 1, разрешается использовать только аккумулятор. Пример:
  • Данные необходимо засылать в аккумулятор и после операции снова запоминать их в исходной ячейке. Это ограничение также сказывается в том, что в программе появляется много команд передачи данных.
  1. Обмен данными с памятью и операции ввода-вывода можно осуществить только через аккумулятор. Пример:
  • Чтобы переслать содержимое регистра 2 в ячейку памяти 50, потребуется последовательность команд:
    MOVE ACC, R2 STORE 50
    Заметим, что при этом необходимо запомнить предыдущее содержимое аккумулятора.
  1. Команды условных переходов могут использовать только короткие относительные адреса. Пример:
  • Более длинные условные переходы потребуют последовательностей команд. Например:
    JUMP ON NOT CONDITION, +2 JUMP ADD R
    выполняет то же действие, что и неразрешенная команда JUMP ON CONDITION ADD R.

Таблица ограничений команд:

ОграничениеПримерВлияние на программирование
Арифметические и логические операции только над регистрамиLOAD R2, 50 ADD R2 вместо ADD 50Требует большого числа команд передачи данных
Однооперандные команды только с аккумуляторомДанные в аккумулятор, затем обратно в ячейкуУвеличивает количество команд передачи данных
Обмен данными и ввод-вывод только через аккумуляторMOVE ACC, R2 STORE 50Требует запоминания предыдущего содержимого аккумулятора
Короткие адреса в условных переходахJUMP ON NOT CONDITION, +2 JUMP ADD RНеобходимость использования дополнительных команд для длинных переходов

Все эти ограничения упрощают декодирование команд, но они же делают длинные программы труднее для написания и понимания.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top