Cтраница 2
Следуя предложенной в [17] классификации языков по степени использования косвенной адресации, входной язык системы может быть отнесен к третьей ступени адресных языков. Благодаря этому в системе ДИАМС может быть эффективно использована технология программирования, основанная на адресных преобразованиях графически подобных выражений [17, 18], которая позволяет сократить объем программ, что особенно важно при использовании микропроцессорных систем. Однако это приводит к невозможности разработки компилятора с языка системы, поскольку косвенные обращения по необходимости должны интерпретироваться динамически. [16]
В случае косвенной адресации по регистру следует использовать два различных указателя памяти, роль которых могут играть либо другие регистры, либо специально для этого выделенные области памяти. С учетом команд, необходимых для определения значений указателя, при использовании косвенной адресации требуется больше команд, чем при использовании адресации с индексированием. [17]
Большинство описанных действий легко программируется на мнемокоде. Определенную трудность представляет сложение, так как в процессе выполнения программы адрес слагаемого должен меняться при каждом повторении цикла. Один из возможных способов организации такого автоматического продвижения по адресам основан на использовании косвенной адресации. Для этого некоторая ячейка памяти отводится под переменную величину, сначала равную адресу первого слагаемого, и обращение к слагаемому производится косвенно через эту ячейку. После каждого обращения содержимое ячейки увеличивается на единицу, образуя адрес следующего слагаемого. [18]
![]() |
Выполнение адресации с индексированием. [19] |
Адресация с индексированием является новым для микропроцессоров способом адресации. Этот способ адресации может использоваться в каждой команде. Команда ADD AX занимает в памяти 2 байт и выполняется за пять циклов. Обычно для выполнения команд при использовании адресации с индексированием требуется большее число микроциклов, чем для выполнения аналогичных команд с использованием косвенной адресации по регистру. [20]
В рассмотренных выше примерах предполагалось, что одноименные фазы различных команд имеют одинаковую длительность. На самом деле, это далеко не так. Во-первых, различные операции, например сложение и деление, требуют различного времени для своего исполнения. Во-вторых, некоторые команды вообще не требуют выборки из памяти операнда. Наконец, при использовании косвенной адресации требуется более чем один цикл памяти для чтения операнда. [21]
Большинство микропроцессоров располагает еще одним способом адресации к памяти, реализуемой командами длиной только в одно слово. Такая адресация называется косвенной или иногда косвенной регистровой. Помимо кода операции в такой команде указывается номер регистра, содержимое которого-адрес местоположения данных в памяти. Этим подобные команды отличаются от команд непосредственной адресации, содержащие данные в самих себе, или от команд прямой адресации, которые включают адреса этих данных. Так, при использовании косвенной адресации в 8-разрядном микропроцессоре соответствующая команда указывает, в какой регистровой паре размещается адрес местоположения данных в памяти. [22]