
Вопросы на экзамен - Ответы на экзамен - .doc + .pdf / 24. Определение команды, способы адресации
..doc-
Определение команды, способы адресации.
Команда (инструкция) – элемент программы, приводящий к выполнению определенных действий. Команда представляет собой код, содержащий информацию, необходимую для управления машинной операцией.
Формат команды – количество и интерпретация разрядов, представляющих машинную команду.
Команда состоит из операционной и адресной частей. Операционная часть содержит код операции (КОП), т.е. некоторое число, которое задает вид операции (сложение, умножение, передача и т.д.). Адресная часть команды содержит информацию об адресах операндов и результатах операции, а в некоторых случаях информацию об адресе следующей команды. При описании команд приходится указывать, какие операнды в них допустимы, а какие – нет. Результат работы команды помещается в регистр или ячейку памяти, откуда берется один из операндов.
Способы адресации команд
Под адресацией команд понимается способ вычисления следующей команды.
Принудительная адресация. Адрес следующей команды в самой команды.
Недостатки:
1. Неперемещаемость программы.
2. Команды, с точки зрения длины формата, длинные.
При естественной адресации адрес следующей команды получается из адреса выполняемой команды увеличением его на шаг адресации (1, 2, 4 и т.д. в зависимости от количества байт в команде). Производится эта операция путем автоматической модификации содержимого СчК после выполнения текущей команды.
Для управления ходом выполнения программ и организации ветвлений в систему команд процессоров с естественной адресацией были введены команды условных и безусловных переходов.
В разных машинах реализация этих команд различная, однако общий подход следующий: содержимое поля адреса перехода команды загружается в СчК, после чего процессор продолжает выполнение программы с нового адреса.
Команды безусловного перехода предписывают совершать переход по программе независимо от каких-либо условий.
При условном переходе адрес следующей команды зависит от некоторого условия, полученного в результате выполнения предыдущей.
К основным способам адресации относятся следующие: прямая, непосредственная, косвенная, относительная.
Прямая адресация. Физический адрес операнда совпадает с кодом в адресной части команды. Допускается использование прямой адресации при обращении как к основной, так и к регистровой памяти.
Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд. Непосредственная адресация позволяет повысить скорость выполнения операции, так как в этом случае вся команда, включая операнд, считывается из памяти одновременно и на время выполнения команды хранится в процессоре в специальном регистре команд (РК). Однако при использовании непосредственной адресации появляется зависимость кодов команд от данных, что требует изменения программы при каждом изменении непосредственного операнда.
Косвенная адресация. Адресная часть команды указывает адрес ячейки памяти или номер регистра, в которых содержится адрес операнда. Применение косвенной адресации операнда из оперативной памяти при хранении его адреса в регистровой памяти существенно сокращает длину поля адреса, одновременно сохраняя возможность использовать для указания физического адреса полную разрядность регистра. Недостаток этого способа – необходимо дополнительное время для чтения адреса операнда. Вместе с тем он существенно повышает гибкость программирования. Изменяя содержимое ячейки памяти или регистра, через которые осуществляется адресация, можно, не меняя команды в программе, обрабатывать операнды, хранящиеся по разным адресам. Косвенная адресация не применяется по отношению к операндам, находящимся в регистровой памяти.
Относительная адресация. Этот способ используется тогда, когда память логически разбивается на блоки, называемые сегментами. В этом случае адрес ячейки памяти содержит две составляющих: адрес начала сегмента (базовый адрес) и смещение адреса операнда в сегменте. Адрес операнда определяется как сумма базового адреса и смещения относительно этой базы. Как правило, базовый адрес находится в одном из регистров регистровой памяти, а смещение может быть задано в самой команде или регистре. Главный недостаток относительной адресации – большое время вычисления физического адреса операнда. Но существенное преимущество этого способа адресации заключается в возможности создания "перемещаемых" программ – программ, которые можно размещать в различных частях памяти без изменения команд программы.