Cisc-процессоры семейства 80х86. Блок сегментации. Формирование адреса в линейном, действительном и защищенном режимах. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Cisc-процессоры семейства 80х86. Блок сегментации. Формирование адреса в линейном, действительном и защищенном режимах.



Каждый процессор семейства 80х86 имеет не менее 4 сегментных регистров (CS, DS, ES и SS). Эти регистры содержат значение сегмента, которое описывает физический блок памяти объемом до 64К

(или до 4 гигабайт в процессоре 80386 и старше). Все адреса вычисляются с использованием в качестве базового значения одного из сегментных регистров.

 

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

процессорах 8086 и 80186), когда сегментное значение представляет собой фактический номер параграфа, или защищенного режима, когда сегментный регистр содержит селектор (не имеющий числового значения).

 

Операционная система или среда программы определяет, работает программа в реальном или защищенном режиме. Если вы используете защищенный режим процессоров 80386 или 80486, то операционная система определяет также, допустимы ли большие сегменты (до 4 гигабайт). Турбо Ассемблер в одинаковой степени поддерживает все эти операционные среды.

 

В случае общей модели 80х86 программы состоят из одного или более сегментов, где каждый сегмент представляет собой физически различные части кода или данных (или код и данные), к которым

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

 

Один из очевидных способов состоит в разбиении программы на инструкции программы и ее данные. Каждый фрагмент данных программы можно определить как инициализированный (содержащий начальные значения, например, текстовое сообщение) и неинициализированный (не содержащий начального значения). Турбо Ассемблер обычно присваивает неинициализированным данным отдельный сегмент, который можно разместить в конце программы, уменьшив объем выполняемой программы.

 

Обычно достаточно большую часть неинициализированных данных занимает стек. Он также специализирован, так как регистры SS и SP при выполнении программы инициализируются обычно автоматически областью стека. Таким образом, в стандартных моделях памяти стек

инициализируется, как отдельный сегмент.

 

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

 

В данной главе описывается, как использовать в вашей программе модели и сегменты, и какие директивы позволяют это делать.

 

 

7. CISC-процессоры семейства 80х86. Регистровая структура операционного блока. Способы адресации(используемые в х86!!).

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

Системы адресации используемые в персональных ЭВМ будут рассмотрены на примере 32-разрядного процессора 80386 фирмы Intel. МП 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 используются либо все либо часть этих слагаемых. Теперь рассмотрим конкретные способы адресации.

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

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

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

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

КОСВЕННО-РЕГИСТРОВАЯ АДРЕСАЦИЯ.

При такой адресации относительный адрес содержится в индексном (SI,DI, ESI, EDI) или базовом (BX, BP, EBX, EBP) регистрах или в регистрах общего назначения EAX, ECX, EDX. Адрес операнда вычисляется как сегмент: смещение. Смещение представлено эффективным адресом.

ПРЯМАЯ АДРЕСАЦИЯ.

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

БАЗОВАЯ АДРЕСАЦИЯ.

Относительный адрес операнда формируется при сложении содержимого базового регистра с непосредственным смещением. Смещение может быть представлено словом или двойным словом.

ИНДЕКСНАЯ АДРЕСАЦИЯ.

Примерно, то же самое, что и базовая адресация, однако здесь и используются индексные регистры (SI,DI) и смещение заданное байтом или словом. При формировании 32-разрядных адресов, в качестве базового или индексного может использоваться любой из регистров EAX, ECX, EDX, EBX, EBP,ESI, EDI.

БАЗОВО-ИНДЕКСНАЯ АДРЕСАЦИЯ.

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



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 656; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.108.7 (0.011 с.)