Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Организация микропроцессоров и микропроцессорных систем. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
31
КОП
БА
dataL
dataH
Непосредственный операнд
Команда
КОП
БА
dispL
dispH
ЕА Память Операнд
Команда
КОП
БА (Рг)
Регистр Операнд
Команда
Рис. 2.10
Доступ к таким операндам производится очень быстро, так как они находятся во внутренней очереди команд и обращения к памяти не требу­ется. Применяется для инициализации регистров и переменных в памяти, для сравнения переменных с некоторыми значениями и т.д.
2. Прямая адресация. Здесь эффективный адрес ЕА является частью команды и размещается в поле disp. Никакие регистры для вычисления ЕА не используются. Режим применяется для обращения к простым перемен­ным. Схема обращения к операнду представлена на рис. 2.11.
Рис. 2.11
3. Регистровая адресация. Операнд содержится в одном из общих
регистров, указанных в байте адресации. Обращение к операнду осуществ­ляется по схеме, приведенной на рис. 2.12.
Рис. 2.12
Здесь 16-битный операнд может быть в регистрах AX, BX, CX, DX,
SI, DI, SP, BP, а 8-битный операнд - в регистрах AH, BH, CH, DH, AL, BL, CL, DL. Команда выполняется за минимальное время, так как не требуется обращение к памяти.
4. Косвенная регистровая адресация. В этом случае эффективный
адрес операнда ЕА находится в базовом ВХ или в одном из индексных ре­гистров SI или DI, определяемых байтом адресации. Схема обращения к операнду представлена на рис. 2.13.
32
dispH dispL
dispL
BP
BX
EA
dispH dispL
dispL
(DI)
(SI)
EA
КОП
БА (Рг)
Регистр
ЕА
Память Операнд
ВХ, SI, DI
Команда
КОП
БА (Рг)
dispL
dispH
Память Операнд
ЕА Базовый адрес
Рг
ВХ, ВР
Команда
Рис. 2.13
Режим позволяет вычислять адреса во время выполнения программы и применяется для обращения к элементам массивов. При модификации содержимого регистра одна и та же команда обращается к разным ячейкам памяти.
5. Базовая адресация. Эффективный адрес операнда ЕА является
суммой значений смещения и содержимого одного из базовых регистров:
,
где круглыми скобками обозначено содержимое регистра, а фигурными – логическая операция ИЛИ. Обращение к операнду в этом случае осущест­вляется по схеме, представленной на рис. 2.14.
Рис. 2.14
Применяется для доступа к элементам различных структур данных,
когда смещение (номер элемента) известно заранее (во время ассемблиро­вания), а базовый, т.е. начальный, адрес структуры определяется во время работы программы.
6. Индексная адресация. Реализуется по той же схеме, что и базовая
адресация, но эффективный адрес является суммой значений смещения и содержимого одного из индексных регистров:
.
Данный режим обычно применяется при последовательном обраще-
нии к различным элементам разных структур данных. Смещение опреде­ляет известный при ассемблировании начальный адрес массива, а значение в индексном регистре указывает на нужный элемент.
33
DI
SI
BP
BX
EA
dispHdispL
dispL
DI
SI
BP
BX
EA
КОП
БА (Рг1, Рг2 )
dispL
dispH
Память Операнд
ЕА Базовый адрес
Рг 1
ВХ, ВР
Индекс
Рг 2
SI, DI
Команда
КОП
БА (Рг1, Рг2)
Память
Операнд
ЕА Базовый адрес
Рг 1
ВХ, ВР
Индекс
Рг 2
SI, DI
Команда
7. Базовая индексная адресации. Возможны две модификации этого
режима: без использования смещения и с использованием смещения.
В первой модификации эффективный адрес операнда ЕА определя-
ется как сумма содержимого одного из базовых (BX или BP) и одного из индексных (SI или DI) регистров, определяемых байтом адресации:
.
Схема обращения к операнду представлена на рис. 2.15.
Рис. 2.15
Во 2-й модификации значение ЕА равно сумме содержимого базово-
го и индексного регистров и смещения (8- или 16-битового):
.
Схема обращения к операнду представлена на рис. 2.16.
Рис. 2.16
Базовая индексная адресация является наиболее гибким режимом,
так как две составляющие ЕА можно определять и изменять при выполне­нии программы. Применяется при обращении к элементам двумерных мас-
34
КОП
dispL
dispH
Память
Команда
ЕА
Текущий адрес
IP
Команда
сивов, т.е. матриц. Кроме того, режим удобен при организации работы подпрограмм с одномерными массивами, расположенными в стеке.
2.5.2. Виды адресации переходов
Известно, что физический адрес команды в памяти определяется со-
держимым сегментного регистра CS и указателя команд IР. Поэтому для определения адреса перехода в программе в общем случае необходимо мо­дифицировать значения этих регистров.
Сегментная организация памяти определяет две разновидности адре-
сации переходов: внутрисегментную адресацию, когда выполняется пере­дача управления в пределах текущего сегмента кода (модифицируется только значение IP); межсегментную адресацию, когда выполняется пере­дача управления за пределы текущего сегмента кода (модификация содер­жимого регистров CS и IP).
Рассмотрим способы указания адресов перехода в командах МП.
1. Относительная адресация (прямая внутрисегментная). Здесь ЕА
перехода определяется как сумма 8- или 16-битного смещения, указанного в команде, и содержимого регистра IP. Схема определения команды, на ко­торую осуществляется переход, представлена на рис. 2.17.
Рис. 2.17
Если смещение задается одним байтом, то режим адресации называ-
ется коротким переходом. Диапазон значений смещения disp L в этом слу­чае составляет от -127 до 128. Если смещение положительное, то осущест­вляется переход вперед, если отрицательное – назад. Данный вид адреса­ции допускается в командах условного и безусловного переходов. Но при условном переходе смещение может иметь длину только 8 бит.
2. Косвенная внутрисегментная адресация. При такой адресации ЕА
перехода может находиться в одном из 16-битных общих регистров или в слове памяти, которые указываются одним из возможных видов адресации данных (кроме непосредственного). Значение ЕА перехода замещает со­держимое указателя команд IP. Схема определения команды, на которую осуществляется переход, представлена на рис. 2.18. Такой вид адресации применяется только в команде безусловного перехода.
35
КОП
БА
dispL
dispH
Память
Команда
Регистр
ЕА перехода
Память
ЕА перехода
или
Вычисление источ-
ника ЕА перехода в
соответствии с ре-
жимом адресации
данных
КОП
Cмещение
IP
CS
Базовый адрес
Команда
КОП
БА
IP CS
dispL
dispН
Вычисление ЕА
в соответствии с режи­мом адресации данных
ЕА перехода
Базовый адрес
ЕА
Команда
Память
Команда
Рис. 2.18
3. Прямая межсегментная адресация. Команда такого вида состоит
из пяти байт. Первый байт содержит КОП; 2-й и 3-й байты содержат 16­битное смещение (загружается в IP); 4-й и 5-й байты – базовый адрес сег­мента (загружается в CS). Схема определения команды, на которую осу­ществляется переход, представлена на рис. 2.19. Используется только в командах безусловного перехода.
замена содержимого регистров СS и IP содержимым 2-х смежных слов па­мяти. Адресуемое слово памяти загружается в указатель команд IP, а сле­дующее слово - в сегментный регистр CS. Схема определения команды, на которую осуществляется переход, представлена на рис. 2.20.
Рис. 2.19
4. Косвенный межсегментный переход. В этом случае производится
Рис. 2.20
36
15 14 8 7 0
В данном режиме допускается только адресация памяти, потому при
вычислении ЕА возможны все виды адресации данных, кроме непосредст­венной и прямой регистровой. Этот режим допускается только в командах безусловного перехода.
3. ОРГАНИЗАЦИЯ МПС С МАТЕМАТИЧЕСКИМ СОПРОЦЕССОРОМ
3.1. Общая характеристика и форматы данных сопроцессора
Математический сопроцессор (СП) предназначен для расширения
вычислительных возможностей центрального процессора (ЦП), в качестве которого может выступать МП с архитектурой х86. Применение СП по­вышает производительность вычислений с плавающей точкой в сотни раз.
С программной точки зрения СП и ЦП выглядят как единое целое. Физически СП может быть отдельной микросхемой (I8087, I80287, I80387), подключаемой к локальной шине ЦП (I8086, I80286, I 80386). Начиная с I486 математический сопроцессор располагается на кристалле вместе с центральным процессором. Однако в любом случае СП исполняет только свои специфические команды, а всю работу по декорированию команд, доставке данных из памяти и записи результатов в память осуществляет ЦП. МС может выполнять вычисление параллельно с ЦП.
Сопроцессор работает с числовыми данными в семи форматах, кото­рые делятся на 3 класса: двоичные целые; упакованные десятичные целые; двоичные вещественные (с плавающей точкой).
Двоичные целые числа могут быть представлены в одном из 3-х фор­матов, приведенных на рис. 3.1, где а - целое слово (16-разрядное число со знаком); б - короткое целое (32-разрядное число со знаком); в - длинное целое (64-разрядное число со знаком).
Знак
31 30 24 23 16 15 8 7 0
Знак
63 62 … … … 31 30 24 23 16 15 8 7 0
Знак
а
б
в
Рис. 3.1
37
Порядок
Мантисса
31 30
23 22
0
Знак мантиссы
8 разрядов
23 разряда
Порядок
Мантисса
63 62
52 51
0
Знак мантиссы
11 разрядов
52 разряда
Порядок
Мантисса
79 78
64 63
0
Знак мантиссы
15 разрядов
64 разряда
Для всех этих форматов старший бит определяет знак числа. Для представления чисел применяется дополнительный код.
Десятичные целые числа представляются в прямом коде в упакован­ном виде, т.е. каждый байт содержит две десятичные цифры в коде 8421. Для хранения десятичных чисел отводится 10 байт. При этом старший бит левого байта отведен под знак числа, а остальные биты этого байта игно­рируются. Формат десятичных целых чисел представлен на рис. 3.2.
79 … … … … … … … … 16 15 8 7 0
Знак Игнорируются
Рис. 3.2
В этом формате могут быть представлены 18-разрядные целые деся­тичные числа со знаком в прямом коде.
Двоичные вещественные числа могут быть представлены в одном из трех форматов, приведенных на рис. 3.3, где а - короткий вещественный формат (КВФ) - 4-байтное число; б - длинный вещественный формат (ДВФ) - 8-байтное число; в - внутренний вещественный формат (ВВФ) ­10-байтное число.
а
б
в
Рис. 3.3
Максимальный диапазон возможных значений чисел в сопроцессоре
соответствует ВВФ и составляет 10
±4932
с точностью 64 бита.
38
000…000
000… ...000
1
-0
+0
000…000
000… ...000
0
111…111
000… ...000
+∞
0
Знак мантиссы
Порядок
Мантисса
111…111
000… ...000
1
-∞
111…1101
111… ...111
1
Минимальное число
111…1101
111… ...111
0
Максимальное число
Представление вещественных чисел в математическом сопро-
цессоре. В сопроцессоре введены специальные коды для представления
бесконечно больших по модулю чисел +∞ и -∞. Это все единицы в порядке и все нули в мантиссе (см. рис. 3.4)
Рис. 3.4
Значения, лежащие за пределами ±∞, обозначаются как не числа NAN (not a number), т.е. все значения, в которых мантисса отлична от нуля, а порядок содержит все единицы, не воспринимаются сопроцессором как числа. Таким образом, коды допустимых числовых значений имеют сле­дующий вид (рис. 3.5).
Рис. 3.5
Число «нуль» в вещественном формате может иметь два представле­ния: +0 и -0 (см. рис. 3.6), которые в вычислениях интерпретируются оди­наково, кроме случаев деления на 0.
Рис. 3.6
Способы записи мантиссы и порядка вещественных чисел имеют следующие особенности.
1. Числа представляются в нормализованном виде, т.е. первая знача­щая цифра после запятой не является нулем. В двоичной системе счисле­ния нормализованная мантисса всегда будет иметь единицу после запятой, т.е. число представляется как 0.1ххххх10Р, где х – двоичное число; Р – по­рядок. Показанная единица старшего разряда мантиссы в коротком и длинном вещественных форматах не хранится в памяти, т.е. является под­разумеваемой. Во внутреннем вещественном формате эта единица явная.
2. Мантисса представляется в прямом коде.
3. Порядок представляется в смещенной форме, т.е. истинный поря-
док Р суммируется со смещением С, которое представляет собой некоторую
39
12C
1N
R0
R1
R2
R3
R4
R5
R6
R7
Рг управления
Рг состояния
Рг тэгов
Указатель
команды
Указатель
операнда
ЕР
TR
SR
CR
0
15
константу
, где N – число разрядов для записи порядка. Для КВФ
значение N=8, поэтому С = 127. Для ДВФ N =11 и С = 1047. Для ВВФ N =15, С = 16383. Смещенный порядок называется характеристикой числа и всегда принимает значение больше нуля.
3.2. Программная модель математического сопроцессора
Основу программной модели сопроцессора составляет регистровый
стек из восьми 80-битовых регистров. С этим стеком связаны регистры ок­ружения. Программная модель сопроцессора представлена на рис. 3.7.
Регистровый стек Регистры окружения
79 78 64 63 0
Знак Порядок Мантисса
мантиссы
Рис. 3.7
Выбор стековой организации регистров обусловлен следующими об-
стоятельствами:
1) в математических расчетах результат текущей операции часто может заместить один или два операнда и сам является операндом для сле­дующей команды;
2) представление математических выражений в польской (бесско- бочной) записи делает стековую организацию сопроцессора наиболее удобной и естественной;
3) стековая организация в этих случаях позволяет применить безад- ресные команды небольшой длины, что сокращает число обращений к па­мяти и тем самым повышает быстродействие.
В регистрах операнды хранятся во внутреннем вещественном форма-
те. Со стеком связан трехразрядный указатель стека ST, который всегда определяет регистр, являющийся текущей вершиной стека. Указатель сте­ка ST представляет собой 3-разрядное поле регистра состояния SR.
Стек работает следующим образом. При записи в стек производится
декремент поля ST и данные загружаются в новую вершину стека. При
40
TAG7
TAG6
TAG5
TAG4
TAG3
TAG2
TAG1
TAG0
Код поля TAGi
Содержимое регистра Ri
00 01 10 11
Конечное число, не равное нулю
Нуль
NAN или ∞
Pегистр пуст (не инициализирован)
чтении из стека операнд выбирается из вершины стека и производится ин­кремент поля ST.
Регистровый стек имеет следующие особенности, отличающие его от
традиционного понятия стека.
1. Такой стек имеет кольцевую организацию. Это означает, что если поле ST содержит код 000 и производится его декремент, то новым значе­нием ST будет 111. И наоборот, если ST = 111, то после инкремента
ST = 000. Контроль за использованием стека осуществляет программист.
2. В командах сопроцессора допускается обращение к любому реги- стру стека, а не только к вершине.
3. Возможно обращение к вершине стека без модификации указателя
стека ST.
Каждому регистру стека поставлен в соответствие двухбитный при-
знак (тэг). Совокупность тэгов образует слово тэгов, хранящееся в регист­ре TR. Его формат показан на рис. 3.8.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Рис. 3.8
Информация в этих полях кодируется в соответствии с табл. 3.1.
Таблица 3.1
Наличие регистров тэгов позволяет сопроцессору быстрее обнару-
живать особые случаи в вычислениях и эффективнее обрабатывать специ­альные численные значения, например нуль. В частности, попытка извлечь число из пустого регистра фиксируется как особый случай. Аналогичный результат вызывает попытка загрузить число в непустой регистр.
Указатель исключительных ситуаций ЕР. Представляет собой две пары 16-разрядных регистров. В первой паре содержится указатель коман­ды, во второй – указатель операнда.
Когда сопроцессор выполняет обработку числовых данных, он авто­матически сохраняет в этих регистрах физический адрес команды сопро­цессора (адрес ее первого байта), физический адрес операнда (если он есть) и младшие 11 разрядов кода операций. Старшие пять бит любой ко­манды сопроцессора содержат код ESC (11011) и не сохраняются.
Расположение указанной информации в регистрах ЕР показано на
рис. 3.9.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]