Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Ответы на билеты по дисциплине Организация ЭВМ и систем - файл 1.doc


Ответы на билеты по дисциплине Организация ЭВМ и систем
скачать (1876 kb.)

Доступные файлы (1):

1.doc1876kb.16.11.2011 22:22скачать

содержание
Загрузка...

1.doc

1   2   3   4   5   6   7   8
Реклама MarketGid:
Загрузка...
^

Кодировка ASCII


Чтобы представить текст числами, каждой букве присваивают числовое значение - кодируют значения букв. Присвоив всем буквам уникальное значение, мы получим кодировку (character set, endoding). Но использовать свою кодировку нет никакого смысла - вы сможете использовать её только в своей программе. На данный момент наибольшее распространение получила кодировка ASCII.

Первоначально один символ в кодировке ASCII занимал 7 бит. Но когда распространение получил 8-битный байт (да, существовали байты разных размеров), то ASCII была расширена до восьми бит. 7-битная кодировка в два раза меньше восьмибитной: 27=128 < 28=256.

Итак, первоначально в кодировке ASCII было 128 значений: от 0 до 127 (0x00 до 0x7f). Этого достаточно чтобы закодировать все буквы латинского алфавита, арабские цифры и ещё ряд знаков.

7-битная кодировка ASCII является основой для всех распространённых сейчас кодировок и чрезвычайно важна в программировании
^

Кодировка (encoding) Юникод - Unicode


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

Для решения этой (и некоторых других) проблемы в начале девяностых была создана кодировка Юникод(Unicode). Первоначально все символы юникода занимали два байта. Соответственно, в unicode можно было закодировать 216 = 65536 значений. Затем кодовое пространство было расширено до более чем миллиона символов. В результате этого появилось несколько представлений юникода.

Наиболее популярными представлениями юникода являются два: UTF-8 - используется в интернете и UTF-16 - используется в Windows (Windows XP, Windows Vista, Windows 7).

^ Двоично-десятичный код — ( binary-coded decimal [BCD] ) форма записи целых чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода. Например, десятичное число 31110 будет записано в двоичной системе счисления в двоичном коде как 1 0011 01112, а в двоично-десятичном коде как 0011 0001 0001BCD.



  1. Машинный формат с фиксированной точкой (Fixed Point Representation). Специальные коды для представления знаковых целых двоичных чисел и операций с ними(прямой, обратный, дополнительный).


Форма представление чисел с фиксированной запятой

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

 

^ Машинное (автоматное) изображение числа это есть представление числа в разрядной сетке цифрового автомата. Условное обозначение машинного изображения числа, например, A будем представлять как [A].

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

В повседневной практике наиболее распространенной является форма представления чисел в виде последовательности цифр, разделенной запятой на целую и дробную части. Числа, представленные в такой форме, называются числами с естественной запятой или числами в естественной форме. В естественной форме число записывается в естественном натуральном виде, например 12560 - целое число, 0,003572 - правильная дробь, 4,89760 - неправильная дробь.

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

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

Так как числа бывают положительные и отрицательные, то формат (разрядная сетка) машинного изображения разбивается на знаковую часть и поле числа. В поле числа размещается само изображение числа, которое мы будем условно называть мантиссой числа. Для кодирования знака числа используется самый старший разряд разрядной сетки, отведенной для изображения двоичного числа, а остальные разряды отводятся под мантиссу числа. Положение запятой в разрядной сетке строго фиксируется, обычно или правее самого младшего разряда мантиссы, или левее самого старшего. В первом случае число представляется как целое, во втором - как правильная дробь. В настоящее время в подавляющем большинстве в компьютерах в формате с фиксированной точкой представляются целые числа.

В знаковую часть записывается информация о знаке числа. Принято, что знак положительного числа "+" изображается символом 0, а знак отрицательного числа "-" изображается символом 1.

Например, в двоичном коде, используя 6-разрядную сетку, число 7 в форме с фиксированной запятой можно представить в виде:

0.001112,

где цифра левее точки это знак числа, а пять цифр правее точки - мантисса числа в прямом коде. Здесь подразумевается, что запятая фиксирована правее младшего разряда, а точка в изображении числа в данном случае просто разделяет знаковый бит от мантиссы числа.

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

[0]001112,

где знаковый разряд выделяется квадратными скобками.

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

|A|max = (2(n-1) - 1),

где n - полная длина разрядной сетки. В случае 16-разрядной сетки

|A|max = (2(16-1) - 1) = 3276710 ,

т.е. диапазон представления целых чисел в этом случае будет от +3276710  до  -3276710 .

Для случая, когда запятая фиксируется правее младшего разряда мантиссы, т.е. для целых чисел, числа, у которых модуль больше, чем

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

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

Представление отрицательных чисел в формате с фиксированной запятой (точкой)

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

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

А - В = А + ( - В)

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

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

[A]пр = 0.an an-1 an-2.....a1 a0,

тогда число -А в этом же коде представляется как

[-A]пр = 1.an an-1 an-2.....a1 a0,

а в обратном (инверсном) коде это число будет иметь вид:

[-A]об = 1.an an-1 an-2.....a1 a0,

где

ai = 1, если ai = 0,

ai = 0, если ai = 1,

ai - цифра i-того разряда двоичного числа. Следовательно, при переходе от прямого кода к обратному все цифры разрядов матиссы числа инвертируются.

Тогда число -A в дополнительном коде изображается в виде

[-A]доп = [-A]об + 1

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

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

Представим, что мы имеем только два разряда для представления чисел в десятичной системе счисления. Тогда максимальное число, которое можно изобразить будет 99, а вес третьего несуществующего старшего разряда будет 102, т.е. 100. В таком случае для числа 20 дополнительным будет число 80, которое дополняет 20 до 100 (100 - 20 = 80). Следовательно по определению вычитание

50 - 20 = 30

можно заменить на сложение:

50 + 80 = 1  30

Здесь старшая единица выходит за пределы выделенной разрядной сетки, в которой остается только число 30, т.е. результат вычитания из 50 числа 20.

А теперь рассмотрим похожий пример для чисел, представленных 4-х разрядным двоичным кодом. Найдем дополнительное число для 00102 = 210. Надо из [1]0000 вычесть [0]0010, получим [0]1110, которое и является дополнительным кодом 2. Разряд, изображенный в квадратных скобках на самом деле не существует. Но так как у нас 4-х разрядная сетка, то выполнить такое вычитание в принципе невозможно, а тем более мы стараемся избавиться от вычитания. Поэтому дополнительный код числа получают способом, описанным ранее, т.е. сначала получают обратный код числа, а затем прибавляют к нему 1. Проделав все это с нашим числом (2), нетрудно убедиться, что получится аналогичный ответ.

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

Таким образом, цифровые разряды отрицательного числа в прямом коде остаются неизменными, а в знаковой части записывается единица.


^ 11. Машинный формат с плавающей точкой (Float Point Representation). Параметры форматов сопроцессора INTEL (FPU 80x87).


Типы с плавающей точкой


Типы значений с плавающей точкой Real, Single, Double, Extended и Comp (вещественный, с одинарной точностью, с двойной точностью, с повышенной точностью и сложный) хранятся в виде двоичного представления знака (+ или -), показателя степени и значащей части числа. Представляемое число имеет значение:

+/- значащая часть Х 2^показатель степени, где значащая часть числа представляет собой отдельный бит слева от двоичной десятичной точки (то есть 0 <= значащая часть <= 2).

В следующей далее схеме слева расположены старшие значащие биты, а справа - младшие значащие биты. Самое левое значение хранится в самых старших адресах. Например, для значения вещественного типа e сохраняется в первом байте, f - в следующих пяти байтах, а s - в старшем значащем бите последнего байта.


^ Вещественный тип


Шестибайтовое (48-битовое) вещественное число (Real) подраз-

деляется на три поля:

1 39 8

+---+------..-------+--------+

| s | f | e |

+---+------..-------+--------+

msb lsb msb lsb

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

Здесь и далее msb означает более значащий бит (старшие разряды), lsb - менее значащий (младшие разряды).


^ Тип числа с одинарной точностью


Четырехбайтовое (32-битовое) число типа Single подразделяется на три поля:

1 8 23

+---+------+-------..---------+

| s | e | f |

+---+------+-------..---------+

msb lsb msb lsb


^ Тип числа с двойной точностью


Восьмибайтовое (64-битовое) число типа Double подразделяется на три поля:

1 11 52

+---+------+-------..--------+

| s | e | f |

+---+------+-------..--------+

msb lsb msb lsb


^ Тип числа с повышенной точностью


Десятибайтовое (80-битовое) число типа Extended подразделя-

ется на четыре поля:

1 15 1 63

+---+--------+---+--------..-------+

| s | e | i | f |

+---+--------+---+--------..-------+

msb lsb msb lsb


^ Сложный тип


Восьмибайтовое (64-битовое) число сложного типа (Comp) подразделяется на два поля:

1 63

+---+-----------..--------------+

| s | d |

+---+-----------..--------------+

msb lsb


в противном случае переменная представляет собой 64-битовое значение, являющееся дополнением до двух.


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

Он может работать с двоичными и десятичными целыми, а также вещественными числами, длина которых составляет 2 – 10 байт.


К восьми регистрам данных сопроцессора можно обращаться или как к стеку, из которого можно извлечь или включить операнд, или пользуясь индексированием относительно указателя стека, или произвольным образом. При относительной стековой адресации, когда требуемый регистр выбирается индексированием относительно указателя стека, регистры располагаются как бы по окружности, причем регистр 7 следует за регистром 0. Так как все числа внутри процессора 8087 хранятся во временном вещественном формате, каждый регистр имеет длину 80 бит. С каждым регистром данных ассоциирован 16-битный регистр признака (тэга), который показывает, является содержимое регистра данных действительным, нулевым, специальным значением или пустым.


Процессор 8087 распознает шесть типов ошибок, причём каждый тип можно индивидуально замаскировать от генерирования прерывания установкой соответствующих битов в 16-битном регистре управления. Если ошибка замаскирована, она не вызывает прерывания, а процессор 8087 реализует стандартную реакцию и переходит к следующей команде. Стандартными реакциями являются:


-для недействительной операции – возвращение «не-числа», если один из операндов – «не-число», и неопределённости в других случаях;

-для ненормализованности операнда – продолжение операции над этим числом;

-для деления на нуль и переполнения порядка – возвращение бесконечности с правильным знаком;

-для антипереполнения – денормализация результата;

-для ошибки точности – округление результата.


Как правило, ошибку точности следует замаскировать в арифметике с плавающей точкой, так как в большинстве применений ошибки точности возникают очень часто.


Процессор 8087 содержит около 75000 транзисторов на кристалле размером 5,5x5,5 мм; его напряжение питания составляет +5 В, а потребляемая мощность – около 2 Вт. Так же, как и процессоры 8086/8088, сопроцессор 8087 выпускается в 40-контактном корпусе с двухрядным расположением контактов.


Процессор 8087 имеет 68 команд, которые по выполняемым им функциям можно разделить на шесть групп: 15 команд управления процессором, 9 – передачи данных, 7 – сравнения, 7 – операций с константами, 25 – арифметических и 5 – трансцендентных.


Все команды арифметического сопроцессора начинаются с буквы F. Далее, для удобства программиста все команды работы с целыми двоичными числами начинаются с комбинации FI, а с упакованными двоично-десятичными – с комбинации FB. От генерации ассемблером команды ожидания можно отказаться, явно указав в команде сопроцессора префикс FN вместо F.



  1. Функционально-логическая организация микропроцессоров серии INTEL 80x86. Основные блоки и устройства: - назначение, функции, принципы действия. Режимы работы МП и способы адресации операндов.


Функционально-логическая схема МП Intel 80486


┌───────────────────┐

┌──┤BIU-шинный итерфейс│ <══════> шина CP

A │ └───────────────────┘

│ ┌───────┐ ┌─────────────┬─────────────┐

└>│cache 1│<────┐ │Project Unit │очередь кодов│

╔═══╡ 8 kb │ │ │ устройство └──────┐ 32 │

║ └───────┘ │ │ опережающей выборки│ байт │

B ║ ┌──────────┐ │ A320 └─────────┬──────────┴──────┘

U ║ │Page Unit │ │ │

S ╠═>├──────────┤ │ ┌──────V──────┐

║ │Acc Buffer│ │ ┌──┬──┬───┤ Дешифратор │

64 ║ └──────────┘ │ │ │ │ ├──────┬──────┤

бит ║ ┌──────────────V─V┐ │ │ │1 ступ│2 ступ│

║ │ Segment Unit │ │ │ └───┬──┴──┬───┘

╠═>├───┬─────────────┤ │ │ │ │

║ │key│Схема конроля│ │ │ ┌───V─────V───┐

║ └───┴─────────────┘ │ │ │ УУ │

║ │ │ ├─────────────┤

║ ┌───────────┬─────┐ │ │ │ПЗУ микрокода│

║ │││ сдвиг-ль│ АЛУ │ │ │ └─────────────┘

╠═>├───────────┴─────┤<┘ │

║ │Файл рег-ов. РОНы│ │

║ └─────────────────┘ │ MK

║ ┌───┬──────────┐ │

║ │FPU│ стековый │ │

║ ├───┘ файл │<──────┘

╚═>│ рег-ов R0-R7 │

└──────────────┘


16-битный микропроцессор Intel 8086, выпущенный 8 июня 1978 г., содержал на кристалле размером 5,5x5,5 мм около 29000 транзисторов и производился по высококачественной nМОП-технологии. Производительность процессора 8086 значительно превышает производительность его 8-битного предшественника – микропроцессора 8080 – и составляет от 330 до 750 тыс. операций в секунду.


Внутри микропроцессора имеются следующие регистры: регистр команд, которым фактически служит 6-байтная очередь; 4 регистра данных, представляющих собой, по существу, набор арифметических регистров; группа указательных регистров, содержащая базовый и два индексных регистра, а также программный счётчик и указатель стека; группа из четырёх сегментных регистров; 16-битное слово состояния процессора (регистр флажков). Все регистры имеют длину 16 бит. Регистры данных допускают адресацию не только целых регистров, но и их младшей и старшей половин.


Наличие сегментных регистров обеспечивает следующие преимущества:

- ёмкость памяти может доходить до 1 Мбайт, хотя команды оперируют 16- битными адресами;


-секции кода, данных и стека могут иметь длину более 64 Кбайт благодаря использованию нескольких сегментов кода, данных или стека;


-упрощается использование отдельных областей памяти для программы, её данных и стека;


-при каждом выполнении программы она сама и (или) её данные могут размещаться в разных областях памяти. (Это связано также с мультипрограммированием, поскольку позволяет динамически перемещать программы между различными областями памяти.)


Система команд микропроцессора 8086 состоит из 98 команд: 19 команд передачи данных, 38 команд их обработки, 24 команд перехода и 17 команд управления процессором. Каждая команда состоит из кода операции (КОП, или опкод), идентифицирующего её, и операндов, несущих требуемую для операции информацию. Команды могут содержать несколько операндов, но чем больше операндов и чем они длиннее, тем больше места занимает команда в памяти и тем больше времени требуется для передачи её в ЦП. КОП и операнды могут иметь произвольную длину и не обязаны быть непрерывными; в то же время общая длина команды должна выражаться целым числом байт. Часто КОП занимает первый байт команды и три средних бита второго байта (это 3-битовое поле часто называют mod). КОП других команд занимает часть первого байта команды, а остальные биты этого байта занимает(ют) операнд(ы). Команды, добавленные к системе команд процессора 8086 в более совершенных процессорах (главным образом, в процессорах 80186 и 80386), содержат КОП в первых двух байтах и операнд(ы) – в остальных. Всего же в системе команд процессора 8086 насчитывается более 3800 команд вместе со всеми их вариантами.


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


Центральный процессор 8086 имеет четыре 16-битных регистра общего назначения AX, BX, CX, DX, четыре регистра-указателя SI, DI, BP и SP, четыре регистра сегментов CS, DS, ES, SS, один 16-битовый регистр флагов FLAGS и указатель программ IP



Регистр-аккумулятор AX используется для хранения промежуточных данных и результатов.

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

Регистр-счетчик CX предназначен для управления числом итераций в цикле или числом повторений в командах REP в строковых операциях.Регистр данных DX используется как вторичный аккумулятор для хранения промежуточных данных и результатов.Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова в таких строковых командах, как LODS ("загрузить строку"), CMPS ("сравнить строку"), MOVS ("переслать строку"). При базово-индексной адресации содержимое регистра SI может суммироваться с содержимым регистра BX.

Индексный регистр-приемник DI используется как указатель назначения для адреса байта или слова в строковых командах, таких как SCAS (сканировать строку), CMPS, MOVS, STOS (записать строку). При базово-индексной адресации для получения адреса операнда содержимое регистра DI может суммироваться с содержимым регистра BX.

Регистр-указатель стека SP применяется для работы с данными в стековых структурах. Его содержимое указывает адрес элемента на вершине стека, что удобно при организации обработки прерываний, процедур вызова подпрограммы и выхода из нее путем сохранения адреса возврата на вершине стека.

Регистр-указатель базы BP используется как дополнительный указатель для работы с данными в стековых структурах. В режиме базово-индексной адресации содержимое регистра BP может суммироваться с содержимым регистров SI или DI. Регистры сегментов используются для идентификации текущего сегмента адресного пространства.

Регистр сегмента команд CS указывает сегмент, содержащий адрес текущей выполняемой программы.

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

Регистр сегмента стека SS содержит начальный адрес стековой структуры в памяти ЭВМ.

Указатель команд IP содержит адрес следующей команды в сегменте памяти, определяемом содержимым регистра сегмента команд CS.

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


  1. ^ Программная модель МП Intel (IA-32). Система регистров МП. Назначение, типы регистров. Регистры прикладного программиста. Флаги.


Intel IA-32:

- ЦП 8086

- ЦП 80286


  1. ЦП 8086 – билет 12




  1. ЦП 80286:


Программная модель процессора 80286 включает 14 регистров ЦП 8086, пять новых регистров:

GDTR - 40-разрядный регистр определяет размер и положение глобальной дескрипторной таблицы;

LDTR - 16-разрядный регистр определяет базовый адрес локальной дескрипторной таблицы;

IDTR - 40-разрядный регистр определяет начало и размер таблицы векторов прерываний;

MSW - слово состояния программы (, если флаг PE = 1 в MSW, то процессор переключается в защищенный режим).;

TR - 16-разрядный регистр содержит селектор сегмента состояния задачи, используется для многозадачности,


и шесть программно недоступных регистров, связанных с CS, DS, ES, SS, GDTR, IDTR.


Режимы работы


С появлением Inte-l286 впервые стали говорить о различных режимах работы IA-32. Это первый представитель данного семейства микропроцессоров, в котором были реализованы многозадачность и защищенная архитектура. Чтобы обеспечить совместимость с предыдущими представителями этого семейства (8086/88, 80186/188), в Intel-286 было реализовано два режима функционирования: режим реального адреса (режим эмуляции 8086) и защищенный режим, в котором используются все возможности МП. В последующих поколениях МП этого семейства защищенный режим становится основным режимом работы.


^ Формирование линейного адреса без участия селекторов


В режиме реального адреса используется упрощенная схема формирования линейного адреса.


В этом случае базовый адрес сегмента берется из сегментного регистра. Значение в сегментном регистре представляет собой биты 4-19 базового адреса сегмента. Из этого следует, что сегменты в этих режимах выровнены по 16-битной границе и все сегменты начинаются в пределах нижнего мегабайта линейного адресного пространства. Действительный физический адрес получается умножением на 16 базового адреса сегмента. Предел для всех сегментов одинаков. В режиме реального адреса предел сегмента - 64 Кбайт.



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


Формирование линейного адреса в защищенном режиме


Значения, помещаемые в сегментные регистры, называются селекторами. Селектор содержит индекс дескриптора, определяющий номер записи в дескрипторной таблице, бит TI, указывающий, к какой дескрипторной таблице производится обращение LDT (TI = 1) или GDT (TI = 0), а также запрашиваемые права доступа к сегменту - RPL



^ Рис. Структура селектора


По указанному в селекторе номеру записи в соответствующей (бит TI селектора) дескрипторной таблице определяется дескриптор сегмента.


Дескриптор - это 8-байтная единица описательной информации, распознаваемая устройством управления памятью в защищенном режиме, хранящаяся в дескрипторной таблице.


Дескриптор сегмента содержит базовый адрес описываемого сегмента, предел (размер) сегмента и права доступа к сегменту. В защищенном режиме сегменты могут начинаться с любого линейного адреса.


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


Существуют две обязательных дескрипторных таблицы - глобальная (GDT) и дескрипторная таблица прерывания (IDT), - а также множество (до 8192) локальных дескрипторных таблиц (LDT), из которых в одинединый момент времени процессору доступна только одна. Расположение дескрипторных таблиц определяется регистрами процессора GDTR, IDTR, LDTR.


Регистры GDTR и IDTR - содержат базовый адрес и предел дескрипторной таблицы.


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



  1. ^ Специальные типы регистров защищенного режима МП (IA-32): управляющие, отладки, системные адресные регистры. Селекторы сегментов: - организация в разных режимах.


По сравнению с реальным режимом МП IA-16 в защищенном режиме МП IA-32 регистровый файл увеличился до 32 регистров. К регистрам пользователей (16) добавились системные регистры (16).

^ Регистры пользователей:

регистры общего назначения (РОНы) 8 регистров по 32 бита,

указатель команд 1 регистр – 32 бита,

регистр состояния (флагов) 1 регистр – 32 бита

сегментные регистры 6 регистров по 16 бит,


^ В состав системных регистров входят:

регистры системных адресов 4 регистра,

регистры управления, отладки и тестирования 16 регистров.


В защищенном режиме команды межсегментных переходов содержат полный указатель CS (сегмента) и IP (адрес команды в сегменте – offset). Указатель CS, в свою очередь, может указывать на:

- дескриптор сегмента,

- шлюз дескриптора сегмента,

- дескриптор TSS,

- дескриптор шлюза TSS.


Все зависит от выбора стратегии разработчиков ОС.

В первых двух случаях реализуется процедура передачи управления:

прямой передачи управления (без изменения уровней привилегий) или

через шлюз (с возможностью увеличения уровня привилегий, но по командам, предусматривающим возвращение, – например Call).


В двух последних случаях реализуется процедура переключения задач:

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

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


Как и в МП IA-16 с точки зрения использования регистров они не являются классическими регистрами общего назначения. Они могут задаваться по умолчанию (кодом операции, постбайтом и т.д.) По использованию регистров по умолчанию, они делятся на две группы :

регистры данных – eax, ecx, edx и ebx (по возрастанию адресов),

регистры адресов – esp, ebp, esi и edi (по возрастанию адресов)




Регистр ebx, хотя и относят к группе регистров данных, но он же является одним из регистров адреса базы сегмента данных.

При работе с 16-ти битовыми операндами и компонентами адреса используются 16- битовые РОНы – ax, cx, dx, bx, sp, bp, si и di (по возрастанию адресов).

При работе с байтовыми операндами используются 8 – битовые РОНы: al, cl, dl, bl, ah, ch, dh и bh (по возрастанию адресов).

В защищенном режиме по отношению к их содержимому (данные, компоненты адреса) регистры стали более симметричными.

1   2   3   4   5   6   7   8



Скачать файл (1876 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru