Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тсис_экз.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

26. Абсолютная, прямая и косвенная адресация.

Адресация — осуществление ссылки (обращение) к устройству или элементу данных по его адресу; установление соответствия между множеством однотипных объектов и множеством их адресов; метод идентификации местоположения объекта.

Абсолютная адресация — адрес на машинноя языке, идентифицирующий ячейку памяти или устройство без использования промежуточных ссылок

Прямая адресация

Адрес указывается непосредственно в виде некоторого значения, все ячейки располагаются на одной странице. Преимущество этого способа в том, что он самый простой, а недостаток — в том, что разрядность регистров общего назначения процессора должна быть не меньше разрядности шины адреса процессора.

Косвенная адресация

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

Относительная (базовая) адресация

При этом способе адресации исполнительный адрес определяется как сумма адресного кода команды и базового адреса, как правило хранящегося в специальном регистре — регистре базы.

Относительная адресация позволяет при меньшей длине адресного кода команды обеспечить доступ к любой ячейке памяти. Для этого число разрядов в базовом регистре выбирают таким, чтобы можно было адресовать любую ячейку оперативной памяти, а адресный код команды используют для представления лишь сравнительно короткого «смещения». Смещение определяет положение операнда относительно начала массива, задаваемого базовым адресом.

Абсолютная, относительная, косвенная адресация:. Абсолютные способы адресации предполагают, что двоичный код адреса ячейки памяти может быть целиком извлечен либо из адресного поля команды, либо из какой-нибудь другой ячейки в случае косвенной адресации. При относительной адресации применяется способ вычисления адреса путем суммирования кодов, составляющих адрес. При косвенной адресации код команды указывает адрес ячейки памяти, в которой находится не сам операнд, а его адрес, называемый указателем. _____________ Адресация может быть: * абсолютная — указывается прямой адрес ячейки памяти. * относительная — указывается смещение относительно какого-либо значения. * косвенная — указывается адрес ячейки, содержащей адрес необходимой ячейки.

Адресация

Для получения данных рассмотрим подробнее все виды адресации

1- Регистровая и непосредственная адресация.

При регистровой адресации МП извлекает операнд из регистра(или загружает его в

регистр).

MOV AX,CX

Непосредственная адресация позволяет Вам указывать 8- или 16-битовое значение

константы в качестве операнда-источника. Эта константа содержится в команде., а не в

регистре или в ячейке памяти..

MOV CX,500

При таком способе адресации необходимо помнить о диапазоне чисел, соответствующих 8-

или 16-битовых значений.

Ассемблер всегда расширяет знак при пересылке непосредственных значений в операнд-

приемник.

2- Прямая адресация.

При прямой адресации исполнительный адрес является составной частью команды. Обычно

прямая адресация применяется, если операндом служит метка.

12

MOV AX, TABLE

Существует абсолютная и относительная прямая адресация.

• Относительная прямая адресация. Используется в командах перехода

• Абсолютная прямая адресация. В этом случае эффективный адрсе является

частью машинной команды, но формируется этот адрсе только из значения

поля смещения в команде.

3- Косвенная регистровая

При косвенной регистровой адресации исполнительный адрес операнда содержится вбазовом регистре BX, в регистре указателя BP или индексном регистре (SI или DI)

Косвенные регистровые операнды надо заключать в квадратные скобки, чтобы отличить их

от регистровых операндов.

MOV AX,[BX]

Для загрузки адреса в BX используется операция OFFSET(смещение) к адресу ячейки

памяти.

MOV BX, OFFSET TABLE

MOV AX,[BX]

4- Адресация по базе.

При адресации по базе Ассемблер вычисляет исполнительный адрес с помощью сложения

значения сдвига с содержимым регистров BXи BP.

Регистр BX удобно использовать при доступе к структурированным записям данных,

расположенным в разных областях памяти. В этом случае базовый адрес помещается в

базовый регистр BX и доступ к ее отдельным элементам осуществляется по их сдвигу

относительно базы.

MOV AX,[BX]+4

MOV AX,4[BP]

MOVAX,[BP+4]

5- Прямая адресация с индексированием.

При прямой адресации с индексированием исполнительный адрес вычисляется как суммазначений сдвига и индексного регистра (DI или SI). Этот тип адресации удобен для доступак элементам таблицы, когда сдвиг указывает на начало таблицы, а индексный элемент к

элементам таблицы, когда сдвиг указывает на начало таблицы, а индексный регистр – на ее элемент.

MOV DI,2

MOV AL,B_TABLE[DI]

Загрузится 3-й элемент таблицы.

6- Адресация по базе с индексированием При адресации по базе с индексированием исполнительный адрес вычисляется как сумма значений базового регистра, индексного регистра и, возможно, сдвига.

В этом режиме адресации складывается два отдельных смещения, то он удобен при адресации двумерных массивов, когда базовый регистр содержит начальный адрес массива, а значение сдвига и индексного регистра суть смещения по строке и столбцу.

MOV AX,SMECH[BX][DI]

Начальный адрес в BX, в DI сдвиг блока(номер строки), а SMECH – сдвиг

Примеры:

MOV AX,[BX+2+DI]

MOV AX,[DI+BX+2}

MOV AX,[BX+2][DI]

MOVAX,[BX][DI+2]