ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Формирование физического адреса в реальном режиме.
В реальном режиме механизм адресации физической памяти имеет следующие характеристики: - диапазон изменения физического адреса от 0 до 1 Мбайт. Эта величина определяется тем, что шина адреса i8086 имела 20 линий; - максимальный размер сегмента 64 Кбайт. Это объясняется 16–разрядной архитектурой i8086. Нетрудно подсчитать, что максимальное значение, которое могут содержать 16–разрядные регистры, составляет 216 – 1, что применительно к памяти и определяет величину 64 Кбайт; - для обращения к конкретному физическому адресу оперативной памяти необходимо определить адрес начала сегмента (сегментную составляющую) и смещение внутри сегмента. Но следует помнить, что сегментная составляющая адреса (или база сегмента) представляет собой всего лишь 16–битное значение, помещенное в один из сегментных регистров. Максимальное значение, которое при этом получается, соответствует 216 – 1. Если так рассуждать, то получается, что адрес начала сегмента может быть только в диапазоне 0–64 Кбайт от начала оперативной памяти. Возникает вопрос о том, как адресовать остальную часть оперативной памяти вплоть до 1 Мбайт с учетом того, что размер самого сегмента не превышает 64 Кбайт. Дело в том, что в сегментном регистре содержатся только старшие 16 бит физического адреса начала сегмента. Недостающие младшие четыре бита 20–битного адреса получаются сдвигом значения в сегментном регистре влево на 4 разряда. Эта операция сдвига выполняется аппаратно и для программного обеспечения абсолютно прозрачна. Получившееся 20–битное значение и является настоящим физическим адресом, соответствующим началу сегмента. Что касается второго компонента, участвующего в образовании физического адреса некоторого объекта в памяти, – смещения – то оно представляет собой 16–битное значение. Это значение может содержаться явно в команде либо косвенно в одном из регистров общего назначения. В микропроцессоре эти две составляющие складываются на аппаратном уровне, в результате чего получается физический адрес памяти размерностью 20 бит. Данный механизм образования физического адреса позволяет сделать программное обеспечение перемещаемым, то есть не зависящим от конкретных адресов загрузки его в оперативной памяти. Он показан на рис. 2.3.
АЛУ
Рис. 3. Механизм формирования физического адреса в реальном режиме
На рис. 3 хорошо видно, как формируется некоторый целевой физический адрес: сегментная часть извлекается из одного из сегментных регистров, сдвигается на четыре разряда влево и суммируется со смещением. В свою очередь видно, что значение смещения можно получить минимум из одного и максимум из трех источников: из значения смещения в самой машинной команде и (или) из содержимого одного базового и (или) одного индексного регистра. Количество источников, участвующих в формировании смещения, определяется кодированием конкретной машинной команды, и если таких источников несколько, то значения в них складываются. Не стоит волноваться насчет того, что существует несоответствие размеров шины адреса микропроцессора i486 или Pentium (32 бита) и 20–битного значения физического адреса реального режима. Пока микропроцессор находится в реальном режиме, старшие 12 линий шины адреса попросту недоступны, хотя при определенных условиях и существует возможность работы с первыми 64 Кбайт оперативной памяти, лежащими сразу после первого мегабайта. Недостатки такой организации памяти: - сегменты бесконтрольно размещаются с любого адреса, кратного 16 (так как содержимое сегментного регистра аппаратно смещается на 4 разряда). Как следствие, программа может обращаться по любым адресам, в том числе и реально не существующим; - сегменты имеют максимальный размер 64 Кбайт; - сегменты могут перекрываться с другими сегментами. Желанием ввести в архитектуру средства, позволяющие избавиться от указанных недостатков, в частности, и обусловлено появление защищенного режима.
Типы данных.
Понятие типа данных носит двойственный характер. С точки зрения размерности микропроцессор аппаратно поддерживает следующие основные типы данных (рис. 4): - Байт – восемь последовательно расположенных битов, пронумерованных от 0 до 7, при этом бит 0 является самым младшим значащим битом. - Слово – последовательность из двух байт, имеющих последовательные адреса. Размер слова – 16 бит; биты в слове нумеруются от 0 до 15. Байт, содержащий нулевой бит, называется младшим байтом, а байт, содержащий 15–й бит – старшим байтом. Микропроцессоры Intel имеют важную особенность – младший байт всегда хранится по меньшему адресу. Адресом слова считается адрес его младшего байта. Адрес старшего байта может быть использован для доступа к старшей половине слова. - Двойное слово – последовательность из четырех байт (32 бита), расположенных по последовательным адресам. Нумерация этих бит производится от 0 до 31. Слово, содержащее нулевой бит, называется младшим словом, а слово, содержащее 31–й бит, – старшим словом. Младшее слово хранится по меньшему адресу. Адресом двойного слова считается адрес его младшего слова. Адрес старшего слова может быть использован для доступа к старшей половине двойного слова. - Учетверенное слово – последовательность из восьми байт (64 бита), расположенных по последовательным адресам. Нумерация бит производится от 0 до 63. Двойное слово, содержащее нулевой бит, называется младшим двойным словом, а двойное слово, содержащее 63–й бит, – старшим двойным словом. Младшее двойное слово хранится по меньшему адресу. Адресом учетверенного слова считается адрес его младшего двойного слова. Адрес старшего двойного слова может быть использован для доступа к старшей половине учетверенного слова.
Рис. 4. Основные типы данных микропроцессора
Кроме трактовки типов данных с точки зрения их разрядности, микропроцессор на уровне команд поддерживает логическую интерпретацию этих типов (рис. 5). - Целый тип со знаком – двоичное значение со знаком размером 8, 16 или 32 бита. Знак в этом двоичном числе содержится в 7, 15 или 31–м бите соответственно. Ноль в этих битах в операндах соответствует положительному числу, а единица – отрицательному. Отрицательные числа представляются в дополнительном коде. Числовые диапазоны для этого типа данных следующие: 8-разрядное целое – от – 128 до +127; 16-разрядное целое – от – 32 768 до +32 767; 32-разрядное целое – от – 231 до +231 – 1. - Целый тип без знака – двоичное значение без знака размером 8, 16 или 32 бита. Числовой диапазон для этого типа следующий: байт – от 0 до 255; слово – от 0 до 65 535; двойное слово – от 0 до 232 – 1. - Указатель на память бывает двух типов. · Ближний тип – 32-разрядный логический адрес, представляющий собой относительное смещение в байтах от начала сегмента. Эти указатели могут также использоваться в сплошной (плоской) модели памяти, где сегментные составляющие одинаковы. · Дальний тип – 48-разрядный логический адрес, состоящий из двух частей: 16-разрядной сегментной части – селектора и 32-разрядного смещения. - Цепочка представляет собой некоторый непрерывный набор байтов, слов или двойных слов максимальной длиной до 4 Гбайт. - Битовое поле представляет собой непрерывную последовательность бит, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита любого байта и содержать до 32 бит. - Неупакованный двоично-десятичный тип – байтовое представление десятичной цифры от 0 до 9. Неупакованные десятичные числа хранятся как байтовые значения без знака по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом. - Упакованный двоично-десятичный тип представляет собой упакованное представление двух десятичных цифр от 0 до 9 в одном байте. Каждая цифра хранится в своем полубайте. Цифра в старшем полубайте (биты 4–7) является старшей.
Рис. 5. Основные логические типы данных микропроцессора
Формат команд.
Программирование на уровне машинных команд – это тот минимальный уровень, на котором еще возможно программирование компьютера. Система машинных команд должна быть достаточной для того, чтобы реализовать требуемые действия, выдавая указания аппаратуре машины. Каждая машинная команда состоит из двух частей: операционной части, определяющей «что делать?» и операндной части, определяющей объекты обработки, то есть то «над чем делать?». Вся эта информация, разумеется, должна быть определенным образом закодирована и формализована. В машинную команду микропроцессора явно или неявно входят следующие элементы: - поле префиксов – элемент команды, который уточняет либо модифицирует действие этой команды в следующих аспектах: · замена сегмента, если нас по какой–либо причине не удовлетворяет сегмент по умолчанию; · изменение размерности адреса; · изменение размерности операнда; · указание на необходимость повторения данной команды; - поле кода операции, определяющее действие данной команды. Одной и той же команде могут соответствовать несколько кодов операций в зависимости от ее операндов; - поле операндов; содержит от 0 до 2 элементов. Важной особенностью машинных команд является то, что они не могут манипулировать одновременно двумя операндами, находящимися в оперативной памяти. Это означает, что в команде могут быть использованы один регистр и/или регистр и некоторый операнд, который может либо непосредственно находиться в команде, либо располагаться в памяти. По этой причине возможны только следующие сочетания операндов в команде: - регистр – регистр; - регистр – память; - память – регистр; - непосредственный операнд – регистр; - непосредственный операнд – память.
Не нашли, что искали? Воспользуйтесь поиском:
|