Системы адресации в мини- и микро-ЭВМ
Рефераты >> Программирование и компьютеры >> Системы адресации в мини- и микро-ЭВМ

До операции MOVB 10,(R2)

00000305 : 90 КОП

00000306 : CF <——— представление '@(R15)'

00000307 : 07 отрицательное смещение (309-10),

00000308 : FD представленное в доп. коде

00000309 : 62 <——— представление '(R2)'

R2 = 00001000

R15 = 00000305

(00000010) = 00

(00001000) = FF (R2)

После .

R2 = 00001000

R15 = 0000030A <——— + 5

(00000010) = 00

(00001000) = 00 <——— 0

Отметим, что смещение в данном примере отрицательное и представлено в дополнительном коде. Длина смещения и соответствующий конкретный код режима вычисляется автоматически на этапе компилирования. Если использовать счетчик инструкций в косвенном режиме со смещением, то получим еще один способ адресации, который называется косвенно-относительным. Здесь сумма содержимого счетчика инструкций складывается со смещением и рассматривается как адрес адреса операнда. Для программиста этот режим является просто режимом косвенной адресации с использованием произвольной ячейки для хранения адреса. Как и в предыдущем примере смещение должно быть равно разнице между адресом данной ячейки и текущим положением инструкции. На ассемблере этот режим обозначается @Addr, где Addr - адрес ячейки, в которой находится адрес операнда. Рассмотрим инструкцию MOVB @10,(R2):

До операции MOVB @10,(R2)

00000305 : 90 КОП

00000306 : CC <——— представление '@W^FD7(R15)'

00000307 : 07 отрицательное смещение (309-10),

00000308 : FD представленное в доп. коде

00000309 : 62 <——— представление '(R2)'

R2 = 00001000

R15 = 00000305

(00000000) = EE (00000010)

(00000010) = 00

(00001000) = FF (R2)

После .

R2 = 00001000

R15 = 0000030A <—— + 5

(00000000) = EE

(00000010) = 00

(00001000) = EE <—— EE

2.11 АДРЕСАЦИЯ ПЕРЕХОДОВ.

Последний способ адресации, который будет рассмотрен - это адресация переходов. Вот формат инструкции условного перехода:

7 0

КОД ОПЕРАЦИИ

СМЕЩЕНИЕ

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

3. СИСТЕМЫ АДРЕСАЦИИ ИСПОЛЬЗУЕМЫЕ В ПЭВМ

Системы адресации используемые в персональных ЭВМ будут рассмотрены на примере 32-разрядного процессора 80386 фирмы Intel. Все что касается этого процессора, системы его команд и способов адресации можно так же отнести к 386-ым процессорам фирм Cyrix и AMD (Advanced Micro Devices), которые полностью совместимы с I80386. МП 80386 представляет собой высокопроизводительный 32-разрядный микропроцессор, выполняющий 3-4 МОПС (MIPS). Он отличается полной 32-разрядной архитектурой с физическим адресным остранством 4 Гбайт и встроенными средствами страничной виртуальной памяти, МП 80386 может адресовать 64 Тбайт виртуальной памяти. Система команд МП 80386 содержит 9 категорий команд: пересылки данных, арифметических, сдвига, обработки строк, обработки битов, передачи управления, поддержки языков высокого уровня, поддержки операционной системы и управления процессором. Длина команды в среднем составляет 2-3 байта. Операнды могут иметь длину 8,16 или 32 разряда.

МП 80386 реализует сегментную организацию памяти, при которой физический адрес ячейки вычисляется путем сложения базового адреса сегмента и относительного адреса ячейки внутри сегмента. Базовый адрес определяется содержимым 16-разрядного сегментного регистра и зависит от режима работы микропроцессора. Если микропроцессор работает в режиме обработки 16-разрядных данных ( режим реальных адресов или режим виртуального процессора 8086), то 20-разрядный базовый адрес формируется путем сдвига содержимого сегментного регистра на четыре разряда влево. Т.е. если в сегментном регистре содержится число 45F7, то базовый адрес будет 45F70. Если микропроцессор работает в режиме обработки 32-разрядных данных ( защищенный режим ), то 32-разрядный базовый адрес содержится в дескрипторе, выбор которого из таблицы дескрипторов осуществляется с помощью селектора - содержимого соответствующего сегментного регистра. В зависимости от типа обращения к памяти производится выбор сегментного регистра и способа определения относительного адреса. Для некоторых способов обращения к памяти возможны варианты выбора сегментных регистров. Эти варианты могут быть выбраны с помощью префикса замены сегмента SEG. На мнемонике ассемблера это выглядит просто как DS:[?], ES:[?], CS:[?], FS:[?] и т.д. В качестве относительного адреса используется содержимое регистров EIP(IP), ESP(SP), ESI(SI), EDI(DI) или эффективный адрес EA, который формируется в соответствии с заданным способом адресации (косвенный, индексный и т.д.).

1. Выборка команд.

Сегментный регистр CS ( Code Segment )

Относительный адрес EIP(IP) ( Instruction Pointer )

2. Обращение к стеку.

Сегментный регистр SS ( Stack Segment )

Относительный адрес ESP(SP) ( Stack Pointer )

3. Адресация операнда.

Сегментный регистр DS или (CS,SS,ES,FS,GS)

Относительный адрес EA

4. Адресация элемента строки-источника.

Сегментный регистр DS или (CS,SS,ES,FS,GS)

Относительный адрес ESI(SI)

5. Адресация элемента строки-приемника.

Сегментный регистр ES

Относительный адрес EDI(DI)

6. Адресация операнда с использованием в качестве базового регистра EBP(BP) или ESP(SP).

Сегментный регистр SS или (CS,DS,ES,FS,GS)

Относительный адрес EA

Эффективный адрес операнда EA является 16- или 32-разрядным и формируется в зависимости от значения определенных полей в представлении команды. В общем случае EA образуется путем сложения трех компонент:

· содержимого базового регистра EBP(BP) или EBX(BX);

· содержимого индексного регистра ESI(SI) или EDI(DI);

· 8-, 16- или 32-разрядного смещения, заданного непосредственно в команде.

В разных случаях для формирования EA используются либо все либо часть этих слагаемых. Теперь рассмотрим конкретные способы адресации.

3.1 НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ.

В качестве операнда используется один, два или четыре последних байта команды. Такой способ адресации реализуется при выполнении ряда команд пересылки (MOV, PUSH), арифметических операциях (ADD, ADC, SUB, SBB, CMP, IMUL), и логических (AND, OR, XOR, TEST). Рассмотрим простой пример - умножение содержимого регистра на константу:

Регистры до выполнения IMUL AX,5

AX = 10

После .

AX = 50

3.2 РЕГИСТРОВАЯ АДРЕСАЦИЯ.

При этом способе адресации операндом берется содержимое регистра. Например для операции занесения на стек реализация регистрового способа адресации будет выглядеть как PUSH DS.


Страница: