Способы адресации (прямая и относительная) и форматы команд.
1.1 Форматы команд
Алгоритм, написанный пользователем программы, в конечном счете реализуется в виде машинных команд. Под командой понимают совокупность сведений, представленных в виде двоичных кодов, необходимых процессору для выполнения очередного шага. В ходе команды для сведений о типе операции, адресной информации о нахождении обрабатываемых данных, а также для информации о месте хранения результатов выделяются определенные разряды (поля).
КОП | А3 | ||||||
7 | 0 | ||||||
КОП | А1 | А3 | |||||
15 | 6 | 5 | 0 | ||||
КОП | А1 | А2 | А3 | ||||
23 | 17 | 16 | 12 | 11 | 6 | 5 | 0 |
Форматом команды называется заранее обговоренная структура полей в её кодах, позволяющая ЭВМ распознавать составные части кода.
Главным элементом кода команды является код операции (КОП), что определяет, какие действия будут выполнены по данной команде. Под него выделяется N старших разрядов формата. В остальных разрядах размещаются А1 и А2 v адреса операндов. А3 - адрес результата.
Распределение полей в формате команды может изменяться при смене способа адресации.
Способ адресации - способ вычисления адреса операнда на основе информации, имеющейся в команде.
В системе команд процессора обычно предусматривается несколько способов адресации операндов для одной и той же операции. Поэтому в адресной части команды есть специальное поле - поле признаков операции, в котором кодируется признак адресации. Если такого признака нет, то способ адресации определяется по коду операции. Последний способ используется, если только небольшое число операций должно работать с разными способами адресации, так как иначе слияние признаков адресации с кодом операции значительно увеличит число кодов, а следовательно, и длину команды. При использовании поля признаков адресации любая операция может выполняться с любыми способами адресации.
|
|
Прямая адресация. Указание в команде прямого адреса операнда, т. е. номера ячейки памяти, в которой он записан, - простой и достаточно универсальный способ адресации, широко используемый и в ЭВМ первого и второго поколений. В настоящее время он находит ограниченное использование из-за трудности:
- перемещения программ в памяти;
- обработки массивов данных и организации специальных видов памяти;
- обработки данных, организованных в списочные структуры;
- передачи фактических параметров в подпрограммы.
Во всех этих случаях необходима модификация или формирование адресных частей команд, что усложняет программирование и сами программы.
Относительная адресация. Перемещаемым называется программный модуль, одинаково выполняемый процессором независимо от адресов памяти, в которых он расположен. Возможность создания перемещаемых в памяти программ определяется наличием соответствующих аппаратных средств в процессоре. Одно из таких средств - относительная адресация, реализуемая такими же аппаратными средствами, как и индексная.
|
|
Рис.17 Схема относительной адресации
Основная идея относительной адресации состоит в том, чтобы в команде указывать не абсолютный адрес операнда, а его смешение относительно начала программного модуля. Начальный адрес программного модуля - базовый адрес - загружается при входе в модуль на внутренний регистр B процессора - базовый регистр. Схема относительной адресации приведена на рис.17, откуда видно, что с точностью до обозначений она совпадает с индексной.
Для эффективной обработки массивов при относительной адресации применяется комбинированная индексно - относительная адресация, при которой адрес операнда А вычисляется как сумма трех величин:
A=(B)+(X)+D,
где (В), (X) - соответственно содержимое базового и индексного регистров с номерами В, X; D - смешение.
В команде отводится два поля для указания номеров базового и индексного регистров и одно поле для указания смещения.
|
|
Загрузка базового адреса в базовый регистр обычно делается из самого программного модуля. Так как в процессоре выборка команд происходит по содержимому счетчика команд, то после получения программным модулем управления на счетчике команд будет адрес первой команды модуля. Этот адрес и может быть использован как базовый. Загрузку базового адреса удобно делать с помощью команды вызова подпрограммы, запоминающей содержимое счетчика команд в одном из регистров процессора.
В качестве базового регистра можно использовать и счетчик команд. В этом случае не требуется отводить отдельного регистра для хранения базового адреса и не нужно делать загрузку его. Недостаток адресации относительно счетчика команд в том, что при использовании одного и того же операнда в разных командах требуется указывать разную величину смещения. Однако этот недостаток не существен, так как подсчет смещений при подготовке программ делается транслятором, а при отладке - средствами отладочной программы.
Дата добавления: 2018-05-09; просмотров: 678; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!