Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация микропроцессоров и микропроцессорных систем. Учебное пособие
.pdf
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.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
