Способы адресации

Типы операции

 

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

1) перемещения данных;

2) преобразования данных;

3) управления программой;

4) ввода-вывода;

5) специальные.

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

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

Команды управления изменяют содержимое программного счетчика (ПС). Тем самым нарушается «естественный» порядок выполнение команд программы в порядке их записи. Главным средством организации ветвлений в программе являются такие представители этой группы, как команды условных переходов. Принудительная модификация ПС этими командами, а, следовательно, и скачок в программе происходят только при определенном значении указанного в коде операции флага. К этой же группе команд можно отнести операции перехода к подпрограммам и возврата из подпрограммы.

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

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

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

Под способом адресации понимают закодированное в команде правило, по которому на основе содержимого адресных полей Аi (рис.1.3.1) формируются тем или иным путем исполнительные адреса операндов. На примере одноадресной команды рассмотрим наиболее общие способы формирования исполнительных адресов.

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

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

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

Непосредственная адресация означает, что в адресном поле команды содержится не адрес, а сам операнд, участвующий в данной операции. Форматы таких команд имеют «средний» или «длинный» размеры, так как в качестве операнда может выступать код длиной только в 1 байт или целая последовательность байт. Кодами непосредственных операндов являются исходные константы, заносимые в регистры-счетчики, коды «масок» для команд сравнения, адреса ячеек памяти и т.п.

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

Оптимальное сочетание в программе различных способов адресации позволяет рационально использовать память и минимизировать время выполнения программы.