Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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.

Оперативная память

АЛУ

 

     
Смещение из команды   Эффективный адрес  
Линейный адрес  
15     Устройство Страничного Преобразования адреса
Базовый регистр bx или bp   S   S  
15    
Индексный регистр si или di   Сдвинуть на 4 бита влево Физический aдрес
                       

 

Сегментные регистры:     Шина Адреса
cs
  ds  
  ss  
  es  
  fs  
  gs  

Рис. 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) является старшей.

 

Целые без знака: байт   Целые со знаком: байт
Двойное слово слово     Двойное слово Слово Зн  
    Зн  
    Зн  
                 
  Байтовая строка:     Битовое поле:
                                 
                 
До 4 Гбайт                
  Неупакованное десятичное (BCD) число:     Упакованное десятичное (BCD) число:
0000IBCD …I… 0000IBCD 0000IBCD   BCDIBCD …I… BCDIBCD BCDIBCD
             
Указатель ближнего типа:
                 
СМЕЩЕНИЕ
               
       
  Указатель дальнего типа:
                         
СЕЛЕКТОР СМЕЩЕНИЕ
                       
         
                                                                                     

Рис. 5. Основные логические типы данных микропроцессора

 

 

Формат команд.

 

Программирование на уровне машинных команд – это тот минимальный уро­вень, на котором еще возможно программирование компьютера. Система ма­шинных команд должна быть достаточной для того, чтобы реализовать требуе­мые действия, выдавая указания аппаратуре машины. Каждая машинная команда состоит из двух частей: операционной части, определяющей «что делать?» и операндной части, определяющей объекты обработки, то есть то «над чем де­лать?».

Вся эта информация, разумеется, должна быть определенным образом закодиро­вана и формализована.

В машинную команду микропроцессора явно или неявно входят следующие эле­менты:

- поле префиксов – элемент команды, который уточняет либо модифицирует действие этой команды в следующих аспектах:

· замена сегмента, если нас по какой–либо причине не удовлетворяет сег­мент по умолчанию;

· изменение размерности адреса;

· изменение размерности операнда;

· указание на необходимость повторения данной команды;

- поле кода операции, определяющее действие данной команды. Одной и той же команде могут соответствовать несколько кодов операций в зависимости от ее операндов;

- поле операндов; содержит от 0 до 2 элементов.

Важной особенностью машинных команд является то, что они не могут мани­пулировать одновременно двумя операндами, находящимися в оперативной памяти. Это означает, что в команде могут быть использованы один регистр и/или регистр и некоторый операнд, который может либо непосредственно на­ходиться в команде, либо располагаться в памяти.

По этой причине возможны только следующие сочетания операндов в команде:

- регистр – регистр;

- регистр – память;

- память – регистр;

- непосредственный операнд – регистр;

- непосредственный операнд – память.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных