Режимы адресации данных

1. Неявная адресация

При этой адресации в команде нет спец полей для определения операнда. Операнд задается самой командой. В таких командах отсутствуют поля для записи и хранения операндов.

Напр.: aaa – аски коррекция после сложения

Std, Cmc – компилируют флагами

2. Регистровая адресация

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

Напр.:

mov AX, BX; копируются данные из BX в AX

mov DS, AX; сегментный регистр DS инициализируется числом из AX

xchg AL, AH; обмен значений регистров AL и AH

3. Непосредственная адресация

При этом виде адресации происходит загрузка в регистр константы непосредственно записанной в команде. С точки зрения программирования говорят что операнд задается своим изображением.

Напр.: mov ax, 0AF1h – изображение

; загрузка адресов в индексные регистры:

lea SI, X

lea DI, Y

4. Адресация операндов памяти

При нахождении операндов в ОП становится вопрос о вычислении адреса смещения операндов. При этом предполагается что адрес смещения определяет № байта с которого начинается операнд относительно сегмента в котором он находится. В большинстве команд предполагается по умолчанию операнд вводится в сегменте адресуемый сегментным регистром ds. Однако при помощи префикса замены сегмента можно указать любой др. сегментный регистр.

Адресация операндов памяти делится на:

1. Прямая (абсолютная)
место нахождения в памяти операнда задается непосредственно в команде адресом смещения. Здесь предполагается передача данных из ячейки памяти в другую ячейку памяти, или из ячейки памяти в регистр, или из регистра в ячейку памяти.
напр.: mov ax, [ 0AF1h ]

2. Косвенная
Этот вид адресации предполагает использование базового регистра BX, используемого в качестве указателя. Это одна из разновидностей базовой адресации.
напр.: mov ax, [bx]

3. по базе со смещением
это разновидность косвенной адресации. Ээффективный адрес вычисляется как сумма адреса находящегося в базовом регистре и const значения. В качестве bx может использоваться люб регистр общего назначения. Если в качестве базового регистра используется bp то по умножению считается что эффективный адрес операнда находится в стеке.
напр.: mov ax, [ bx+4 ]

4. индексная
реализуется аналогично базовой, при этом регистр используется для указания индекса данных относительно некоторой метки.
напр.: mov ax, array [ SI ] – здесь к смещению определяющему метку array + смещение кот находится в SI.
Также индексная адресация может быть со смещением. Для этого значение индексного регистра прибавляется к смещению. (не важно bx или si - базовый)

5. по базе с индексирование
аналогична индексной адресации. Вместо метки определяющей местоположения в памяти операнда используется базовый регистр.
Маштабирование – умножение индексного регистра на 2, 4, 8. напр.: mov ax, [bx] [si*4]

6. стековая
Стековая адресация предназначена для передачи данных из стека и в стек. Для этого предназначены команды push и pop, адресующие ячейки памяти посредством регистра SP(вершина стека), и команды mov, использующие регистр BP.

 













Состав и назначение дескриптора сегмента памяти

Каждый сегмент в защищенном режиме должен иметь соответствующую ему структуру данных наз. дескриптором. Дескриптор (describe - описать) содержит основные характеристики соответствующего ему сегмента памяти. Каждый дескриптор состоит из 8байт (т.е. 64 разряда).

Формат дескриптора:

63         47   32
БА G D X U Предел AR БА
31         15   0

БА

предел

 

Предел – 20бит отводится для хранения max размера сегмента.

БА (базовый адрес) – 32 бита (2,3,4,7 байты) хранят базовый адрес соответствующего сегмента – линейный БА.

G - бит градуальности, определяет единицу счета этого предела (при 0 – байты; при 1- страницы (4Кб))

D – введен для совместимости режима работы 80286 процессора. (при 0 - = 32 бита; при 1 - = 16 бит)

X – резервный бит

U – user пользовательский бит

AR – байт прав доступа, определяет права сегмента и его назначение.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: