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

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

(или до 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. Адрес операнда вычисляется как сегмент: смещение. Смещение представлено эффективным адресом.

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

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

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

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

Читайте также:  Процессор intel original core i5 10400 oem

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

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

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

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

Источник



Адресация и многозадачность: Правила формирования линейного и физического адреса

Линейный адрес — адрес, формируемый механизмом адресации процессора из логического адреса. Линейный адрес предназначен для обращения к линейному (непрерывному и несегментированному) адресному пространству объемом 2 32 байт (Intel386 …). При отключенном страничном механизме линейный адрес полностью совпадает с физическим адресом. Способ формирования линейного адреса из логического зависит от текущего режима работы процессора (реальный, защищенный, 32 или 16-битная адресация).

Физический адрес — адрес, передаваемый на внешнюю шину для обращения к ячейкам памяти. Типовые 32-разрядные процессоры (Pentium …) позволяют адресовать до 2 32 байт (4 Гб) физической памяти в обычном режиме и до 2 36 байт (64 Гб) в случае поддержки механизма расширения физического адреса (управляется CR4.PAE). Физический адрес образуется из линейного либо напрямую (полное совпадение), либо через механизм страничного преобразования.

Реальный режим

В реальном режиме работа всех современных процессоров происходит аналогично тому, как это делает процессор 8086. Некоторые отличия состоят лишь в поддержке большего количества команд и во много раз более высокой скорости работы. То есть программы, написанные для 8086, в большинстве случаев нормально работают на всех процессорах более поздних модификаций (включая Pentium IV и более поздние). Механизм формирования линейного адреса в реальном режиме работы (см. рис. 2.2.) предельно упрощен и позволяет адресовать адресное пространство объмом 2 20 байт (1 Мб).

Рис. 2.2. Формирование линейного адреса в реальном режиме работы процессора

Полученный таким образом линейный адрес является фактически и физическим адресом. Существует, однако, одна особенность, которая проявляется в процессорах начиная с Intel286, где разрядность физического адреса превышает 20 бит. В случае задания селектора сегмента равным, например, FFFFh сумма базы сегмента и смещения может превысить FFFFFh (может достигать 10FFEFh). В процессоре 8086 в этом случае старший бит теряется и производится обращение к ячейке с адресом 0FFEFh, в более современных процессорах (Intel286 …) старший бит не отбрасывается и весь 21-битный линейный адрес преобразуется в физический и подается на адресную шину. Таким образом, появляется возможность в реальном режиме работы процессора обращаться к дополнительным 64 Кб адресного пространства. Поскольку такой режим работы может вызвать некорректное функционирование программ, написанных для процессора 8086, в процессорах начиная с Intel486 введена возможность маскирования 20-го разряда адресной шины внешним сигналом.

Еще одной особенностью процессоров начиная с Intel386 является возможность использования префикса изменения рамера адреса по умолчанию в реальном режиме работы. Поскольку в реальном режиме по умолчанию используется 16-битная адресация (размер смещения — 16 бит), то ввод данного префикса позволяет переключиться на использование 32-битного смещения. Однако величина этого смещения не должна превышать FFFFh (максимальный размер сегмента в реальном режиме). Для сохранения полной совместимости с процессором Intel286 попытка использования 32-битного смещения, превышающего 0000FFFFh приводит к генерации прерывания 12 (превышение стекового сегмента) или 13 (превышение прочих сегментов).

Защищенный режим

Работа механизма формирования линейного адреса в защищенном режиме работы процессора основана на двух специальных таблицах, размещаемых в памяти. Это глобальная таблица дескрипторов (GDT) и локальная таблица дескрипторов (LDT) (есть еще таблица дескрипторов прерываний, но она используется только при генерации прерываний и особых ситуаций ситуаций). Эти таблицы создаются и заполняются до переключения в защищенный режим, они содержат описания используемых программой сегментов памяти (базовый адрес, размер, тип, привилегии доступа и т.п.). Селектор сегмента, являющийся частью сформированного логического адреса в защищенном режиме содержит не базу физического адреса сегмента, а указатель на описание сегмента (дескриптор сегмента) в какой-либо таблице дескрипторов (LDT или GDT). Из выбранного таким образом дескриптора и смещения (вторая часть логического адреса) процессор автоматически вычисляет требуемый линейный адрес (рис. 2.3.).

Рис. 2.3. Процесс формирования линейного адреса в защищенном режиме работы процессора

Положение таблиц дескрипторов в памяти задается следующим образом: для таблицы GDT — 32-разрядным значением ее линейного адреса в регистре GDTR, для таблицы LDT — специальным дескриптором в таблице GDT, ссылка на который (селектор) помещается в регистр LDTR.

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

В защищенном режиме в процессорах Intel386, Intel486 … может использоваться как 32-х, так и 16-битная модель адресации. Режим «по умолчанию» задается в дескрипторе соответствующего сегмента кода. При применении 16-битной адресации разрядность смещения уменьшается до 16 бит. При этом форматы селекторов и дескрипторов остаются такими же, как и при 32-битной адресации.

Режим V86

Режим V86 (виртуальный-8086) введен в процессорах начиная с Intel386 и является специальным подмножеством защищенного режима. Этот режим предназначен для выполнения программ, предназначенных для процессора 8086 или для реального режима работы более поздих процессоров архитектуры x86, в более гибком, поддерживающем многозадачность защищенном режиме.

Механизм формирования линейного адреса в режиме V86 работает аналогично тому, как это происходит в реальном режиме. Т.е. 16-битный селектор и 16-битное смещение формируют 20-битный логический адрес, который затем расширяется нулями для получения полного 32-битного линейного адреса. Возможно и применение префиксов изменения рамера адреса (смещение в этом случае не должно превышать FFFFFh).

В режиме V86 (также как и в реальном режиме работы процессоров Intel286 …) возможна адресация памяти старше 1Мб (10000h:1FFFEFh), при встрече такого адреса перехода на младшие адреса не происходит. Для эмуляции такого перехода может быть использован страничный механизм (адреса 100000h:110000h отображаются на адреса 00000h:10000h).

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

Читайте также:  Ноут на HM65 Express потянет 16 гигов оперативы

Источник

Система кодирования команд. Способы адресации.

Машинная команда – это двоичный код, определяющий выполняемую операцию, адреса используемых операндов и адрес ячейки ЗУ, по которому должен быть записан результат выполненной операции.

Формат команды – это структура команды, позволяющая распознать назначение её полей.

Для каких целей в ЭВМ используются различные способы адресации?

Для сокращения длины поля адреса команды

Для удобства программирования

ii. Какая адресация обеспечивает наименьшее время выборки операнда?

Какая из систем кодирования команд обеспечивает наибольшую гибкость программирования?

Каковы основные преимущества двухадресной системы команд перед трехадресной?

От каких параметров ЭВМ зависит длина команды?

от длины поля кода операции и суммы длин адресных полей, от объема запоминающего устройства и объема регистровой памяти

Каким образом определяется положение второго операнда в одноадресной системе команд?

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

Какова минимальная длина поля кода операции, если система команд ЭВМ включает 100 команд?

Какова минимальная длина адресного поля, если объем адресуемой памяти составляет 100 Мбайт (адресация – прямая)?

Какова минимальная длина команды двухадресной ЭВМ, если ее система команд включает 200 команд, а объем адресуемой памяти составляет 130 Кбайт (адресация – прямая)?

Какое максимальное количество команд может входить в систему команд ЭВМ, у которой в команде поле кода операции имеет длину 9 бит?

Какой максимальный объем памяти (в килобайтах) можно адресовать с помощью адресного поля длиной 11 разрядов при прямой адресации?

Цикл выполнения команды.

1. Сколько этапов содержит цикл выполнения линейной команды?6

2. На каком этапе происходит считывание первого операнда?2

3. На каком этапе выполнения команды происходит считывание второго операнда?3

4. На каком этапе происходит выполнение операции в АЛУ?4

5. На каком этапе происходит запись результата операции по адресу приемника результата?5

Сколько этапов содержит цикл выполнения команды условного перехода?

В зависимости от условия. (отрицательный результат или результат, равный нулю)

Для чего используется регистр команд?

предназначен для хранения в процессоре считанной из ОЗУ команды на время ее выполнения.

Для чего используется счетчик команд?

Счетчик команд — регистр процессора, содержащий адрес текущей выполняемой команды.

Для чего используются признаки результата?

Для хранения признаков результата выполненной в АЛУ операции

На какую величину изменяется значение счетчика команд при выполнении команды?

На величину выполненной команды. Д ячеек

11. С каким из этапов выполнения команды может быть совмещен этап формирования адреса следующей команды?Первый этап – выборка исполняемой команды из ОЗУ.

Для чего в ЭВМ используется блок управления операциями?

формирует управляющие сигналы, необходимые для выполнения данной операции в АЛУ.

xiii. Чем команды условного перехода отличаются от команд безусловного перехода?

В команде условного перехода нарушение естественного порядка выполнения программы происходит только при выполнении определенного условия

Архитектура персонального компьютера.

1. Какую разрядность имел первый серийный микропроцессор? 4

2. Какова максимальная разрядность современных универсальных микропроцессоров?64

3. Какую разрядность имеет микропроцессор Intel-8086 (К1810ВМ80)? 16

4. По какому принципу строится персональный компьютер?Магистрально-модульному

Какое максимальное количество устройств ввода-вывода может входить в состав персональной ЭВМ?

Определяется разрядностью шины

Каким образом изменяются признаки результата, фиксируемые в регистре флагов?

Процессором в зависимости от результата операции

7. Сколько 16-разрядных регистров общего назначения входит в состав микропроцессора Intel-8086 (К1810ВМ80)?8

8. Сколько 16-разрядных регистров общего назначения в микропроцессоре Intel-8086 (К1810ВМ80) допускают побайтовое обращение?4

В каком коде представляются в персональной ЭВМ числа с фиксированной точкой?

10. Какова длина сегмента в микропроцессоре Intel-8086 (К1810ВМ80)? 64 Кбайт

11. Чему равен физический адрес, если значение сегментного регистра равно AAAAh, а смещение в сегменте равно 2222h? ACCC2h (=AAAA*16+2222=AAAA0+2222=ACCC2)

Каково назначение сегментных регистров микропроцессора Intel-8086 (К1810ВМ80)?

Хранение старших 16 разрядов физического адреса сегмента

Хранение базовых адресов сегментов в оперативной памяти.

13. К памяти какого объема возможно обращение в микропроцессоре Intel-8086?1 Мбайт

14. Какая информация будет считана из памяти, если считывается слово по адресу ABC45h, а в памяти хранятся следующие данные: (ABC44h)=77h, (ABC45h)=88h, (ABC46h)=99h ?

9988h (т.к. сначала считается младший байт (по адресу ABC45h), затем – старший)

Форматы команд и режимы адресации IBM PC.

1. Какую длину может иметь непосредственный операнд в 16‑разрядном микропроцессоре?

8 или 16 бит

Значения каких регистров изменяются при выполнении команд межсегментных переходов?

3. Какое сочетание режимов адресации двухоперандной команды невозможно в системе команд 16‑разрядного микропроцессора?II

Какой из сегментных регистров используется по умолчанию при формировании физического адреса операндов, находящихся в оперативной памяти, при режимах адресации, использующих для формирования эффективного адреса регистр BP?

SS (не использующих — ответ DS)

5. Какие из режимов адресации не используются в системе команд 16‑разрядного микропроцессора?Автодекрементный, Автоинкрементный

7. Какова разрядность физического адреса 16‑разрядного микропроцессора?20 бит

8. Какую длину имеет непосредственный операнд в 16‑разрядном микропроцессоре при значении признака w=1?2 байта

9. Какие регистры можно использовать при косвенной адресации в 16‑разрядном микропроцессоре?BX, DI

10. Какие регистры можно использовать при относительной базово-индексной адресации в 16‑разрядном микропроцессоре?SI, BX,DI,BP

11. Какова максимальная длина команды 16‑разрядного микропроцессора?6 байт

12. Какова разрядность эффективного адреса 16‑разрядного микропроцессора?16 бит

Каково назначение признака s в командах, использующих непосредственный операнд?

Для возможности сокращения длины команды в случае короткого непосредственного операнда

14. Значения каких регистров изменяются при выполнении команд внутрисегментных безусловных переходов?IP

xv. Значения каких регистров изменяются при выполнении команд условных переходов?IP

xvi. Какую длину имеет команда прямого межсегментного перехода?5 байт

Основы схемотехнической реализации ЭВМ.

i. Что входит в понятие система логических элементов?

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

Какие типы триггеров можно использовать для построения регистра хранения?

АЛУ.

Устройство управления.

Система кодирования команд. Способы адресации.

Машинная команда – это двоичный код, определяющий выполняемую операцию, адреса используемых операндов и адрес ячейки ЗУ, по которому должен быть записан результат выполненной операции.

Формат команды – это структура команды, позволяющая распознать назначение её полей.

Читайте также:  Intel Core i5 10600KF vs Intel Core i5 10600K

Прокрутить вверх

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот.

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования.

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем.

Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.).

Источник

Правило формирования физического адреса в памяти ЭВМ для 16-битового микропроцессора. Какие регистры используются при этом?

Изучаемый микропроцессор имеет 1 Мбайт памяти ОЗУ. Следовательно, для указания адреса информации в команде микропроцессора должен был иметь 20 разрядов.

Однако такое количество разрядов микропроцессора не может обработать за 1 операцию 16-битового процессора. Чтобы разрешить это противоречие, было решено формировать физический адрес из 2-х 16-битовых слагаемых: базы (содержимое регистра сегмента) и смещения по правилу:

Физический Адрес = смещение (IP) +16*(регистр сегмента –CS).

В действительности длинная операция умножения при вычислении физического адреса не выполняется по той причине, что микропроцессор использует содержимое 16-битового регистра так, как если бы оно имело 4 дополнительных нулевых бита 0010->0100(*2)->1000(*4)->10000(*8)->100000(*16).

Например, пусть смещение будет 10Н (в шестнадцатеричной системе счисления), а номер блока (содержимое регистра сегмента) равно 2000Н. Тогда, 0000 0000 0001 0000 (смещение)

+ 0010 0000 0000 0000 0000 (номер блока)

0010 0000 0000 0001 0000 (физический адрес)

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

Источник

Формирование физического адреса в реальном режиме.

В реальном режиме механизм адресации физической памяти имеет следующие характеристики:

— Диапазон изменения физического адреса от 0 до 1Мбайта. Эта величина определяется тем, что шина адреса i8086 имела 20 линий;

— Максимальный размер сегмента 64 Кбайта. Это объясняется 16-разрядной архитектурой i8086. Максимальное значение, которое могут содержать 16-разрядные регистры, составляет 64 Кбайта;

— Для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента и смещение внутри сегмента. Сегментная составляющая адреса представляет собой всего лишь 16-битное значение, помещенное в один из сегментных регистров. Адрес начала сегмента может быть только в диапазоне 0-64 Кбайт от начала оперативной памяти. Возникает вопрос о том, как адресовать остальную часть оперативной памяти вплоть до 1 Мбайта с учетом того, что размер самого сегмента не превышает 64 Кбайта. Дело в том, что в сегментном регистре содержатся только старшие 16 бит физического адреса начала сегмента. Недостающие младшие четыре бита 20-битного адреса получаются сдвигом значения в сегментном регистре влево на 4 разряда. Эта операция сдвига выполняется аппаратно и для программного обеспечения абсолютно прозрачна. Получившееся 20-битное значение и является настоящим физическим адресом, соответствующим началу сегмента. Что касается второго компонента, участвующего в образовании физического адреса некоторого объекта памяти, — смещения, — то оно представляет собой 16-битное значение. Это значение может содержаться явно в команде либо косвенно в одном из регистров общего назначения. В микропроцессоре эти две составляющие складываются на аппаратном уровне, в результате чего получается физический адрес памяти разрядностью 20 бит. Данный механизм образования физического адреса позволяет сделать программное обеспечение перемещаемым, то есть не зависящим от конкретных адресов загрузки его в оперативной памяти. Образование физического адреса представлено на рисунке 1.

Каждая программа в общем случае может состоять из любого количества сегментов, но непосредственный доступ она имеет только к трем основным: кода, данных и стека, — и от одного до трех дополнительных сегментов данных. Программа никогда не знает, по каким физическим адресам будут размещены ее сегменты. Этим занимается операционная система. Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно, зависит от режима работы микропроцессора. Так в реальном режиме эти адреса помещаются непосредственно в соответствующие сегментные регистры, а в защищенном режиме они размещаются в элементы специальной системной дескрипторной таблицы. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, то есть начиная с 0 и заканчивая адресом, или смещение, который микропроцессор использует для доступа к данным внутри сегмента, называется эффективным.

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

Количество источников, участвующих в формировании смещения, определяется кодированием конкретной машинной команды, и если таких источников несколько, то значения в них складываются. В заключение заметим, что не стоит волноваться насчет того, что существует несоответствие размеров шины адреса микропроцессора i486 или Pentium и 20-битного значения физического адреса реального режима. Пока микропроцессор находится в реальном режиме, старшие 12 линий шины адреса попросту недоступны, хотя при определенных условиях и существует возможность работы с первыми 64 Кбайт оперативной памяти, лежащим сразу после первого мегабайта.

Для определения физического

адреса команды используются регистры CS и IP, Рисунок 1 – Формирование физического адреса

для физического адреса операнда – DS и смещение, указанное в команде и для физического адреса ячейки стека – SS и SP.

Недостатки такой организации памяти:

— Сегменты бесконтрольно размещаются с любого адреса, кратного 16.;

— Сегменты имеют максимальный размер 64 Кбайт;

— Сегменты могут перекрываться с другими сегментами.

Краткие теоретические сведения к лабораторной работы № 4.

Статьи к прочтению:

Все о таблицах в программе Word

Похожие статьи:

Физическая организация файла описывает правила расположения файла на устройстве внешней памяти, в частности на диске. Файл состоит из физических записей…

В реальном режиме работы (например, под управлением MSDOS) любой из процессоров семейства 80х86 функционирует просто как 16-разрядный быстрый МП 8086,…

Источник