Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация вычислительных систем на базе микропроцессоров с архитектурой x86. Учебное пособие
.pdf
11
7 2
1 0
7 0
7 0
7 0
КОП
d w
Байт
адресации
dispL
dispH
Младший байт
Старший байт
7 1
0 7 0
7 0
7 0
7 0
7 0
КОП
w
Байт адре-
сации/КОП
dispL
dispH
dataL
dataH
Наиболее общим случаем является двухадресная команда, когда ре-
зультат замещает один из операндов. Первым операндом в такой команде
является содержимое регистра или ячейки памяти, вторым операндом –
содержимое регистра или непосредственный операнд в команде.
Рассмотрим основные форматы команд.
1. Формат двухоперандной команды для случаев, когда вторым
операндом является содержимое регистра, показан на рис. 1.6.
Смещение
Рис. 1.6
В первом байте команды содержатся код операции (КОП) и два специальных бита w и d. Бит w «слово» определяет тип операнда. При w =1
операндом является 16-разрядное слово, при w = 0 – байт. Бит d определяет приемник результата, т.е. какой из двух операндов замещается результатом. Если d=1, то второй операнд, при d = 0 - первый операнд. Остальные
байты команды содержат информацию об адресах операндов.
Второй байт команды называется постбайтом режима адресации
(байтом адресации). Он определяет: 1) регистр, в котором содержится 2-й
операнд; 2) где находится 1-й операнд: в регистре или в ячейке памяти. Если в регистре, то указывается его номер, если в ячейке памяти, то – режим
адресации памяти.
В 3-м и 4-м байтах команды находится смещение адреса disp. В зависимости от режима адресации смещение может быть 16-разрядным
(disp = dispL dispH), 8–разрядным (disp = dispL) или отсутствовать, когда
оба операнда находятся в регистрах.
2. Формат двухоперандной команды с непосредственным операн-
дом приведен на рис. 1.7.
Смещение Непосредственный операнд
операнд размещается в регистре или ячейке памяти, второй – непосредственно в команде. Непосредственный операнд имеет длину 1 или 2 байта в
зависимости от значения бита w.
дующие отличия: 1) в первом байте отсутствует бит d, так как результат
Рис. 1.7
Длина команды в таком формате может достигать 6 байт. Первый
По сравнению с предыдущим форматом команды здесь имеются сле-

12
7 1
0 7 0
7 0
7 0
КОП
w
Байт адресации/КОП
dispL
dispH
mod
reg
r/m
Код поля
reg
Регистр второго операнда
при w=0
при w=1
000
001
010
011
100
101
110
111
AL
CL
DL
BL
AH
CH
DH
BH
AX
CX
DH
BH
SP
BP
SI
DI
можно поместить только на место 1-го операнда; 2) во втором байте адресации не требуется указывать регистр для 2-го операнда. Освободившиеся
в результате этого разряды используются для расширения кода операции.
3. Формат однооперандной команды имеет вид, приведенный на
рис. 1.8.
Рис. 1.8
Он подобен второму типовому формату, но не содержит поле data
непосредственного операнда.
Структура и кодирование постбайта режима адресации. Пост-
байт режима адресации или байт адресации (БА) является вторым в большинстве команд МП. Он указывает способ адресации одного или двух
операндов. Формат этого байта представлен на рис. 1.9.
7 6 5 3 2 0
Рис. 1.9
Здесь mod – поле режим; r/m – поле регистр-память; reg – поле регистр. Поле reg используется только в том случае, когда второй операнд
команды размещается в регистре. Выбор этого регистра осуществляется в
соответствии с табл. 1.2.
Таблица 1.2
В командах, где требуется определенный адрес только одного операнда (в том числе двухоперандных с непосредственной адресацией), поле
reg используется для расширения поля КОП первого байта команды.
Поля mod и r/m задают расположение первого операнда в памяти или
регистре. Если операнд в памяти, то по этим полям производится вычисление его эффективного адреса ЕА. Способ вычисления ЕА определяется по
коду поля r/m в соответствии с табл. 1.3.

13
Код поля r/m
EA
000
001
010
011
100
101
110
111
(BX)+(SI)+disp
(BX)+(DI)+disp
(BP)+(SI)+disp
(BP)+(DI)+disp
(SI)+disp
(DI)+disp
(BP)+disp
(BX)+disp
Код поля
mod
Смещение
Расположение первого
операнда
00
disp = 0
Память
01
disp = dispL
Память
10
disp = dispL dispH
Память
11
disp = 0
Регистр
КОП
БА
dataL
dataH
Непосредственный операнд
Команда
Таблица 1.3
Поле mod указывает величину смещения disp и расположение первого операнда, как это показано в табл. 1.4. В случае когда первый операнд
размещается в регистре, его номер кодируется в поле r/m аналогично полю
reg в табл. 1.2.
Таблица 1.4
Исключением из перечисленных случаев является комбинация
mod=00 и r/m =110. Здесь эффективный адрес равен disp = dispL dispH, что
позволяет обеспечить прямую адресацию операнда без использования регистров.
1.5. Виды адресации микропроцессора
В реальном режиме все виды адресации можно разделить на два
класса: 1) виды адресации операндов в командах работы с данными; 2) виды адресации переходов в командах передачи управления.
1.5.1. Виды адресации данных
1. Непосредственная адресация. Здесь операнд представляет собой
константу длиной 8 или 16 бит, которая содержится в команде. Схема обращения к операнду представлена на рис. 1.10.
Рис. 1.10

14
КОП
БА
dispL
dispH
ЕА Память
Операнд
Команда
КОП
БА (Рг)
Регистр
Операнд
КОП
БА (Рг)
Регистр
ЕА
Память
Операнд
ВХ, SI, DI
Команда
Команда
Доступ к таким операндам производится очень быстро, так как они
находятся во внутренней очереди команд и обращения к памяти не требуется. Применяется для инициализации регистров и переменных в памяти,
для сравнения переменных с некоторыми значениями и т.д.
2. Прямая адресация. Здесь эффективный адрес ЕА является частью
команды и размещается в поле disp. Никакие регистры для вычисления ЕА
не используются. Режим применяется для обращения к простым переменным. Схема обращения к операнду представлена на рис. 1.11.
Рис. 1.11
3. Регистровая адресация. Операнд содержится в одном из общих
регистров, указанных в байте адресации. Обращение к операнду осуществляется по схеме, приведенной на рис. 1.12.
Рис. 1.12
Здесь 16-битный операнд может быть в регистрах AX, BX, CX, DX,
SI, DI, SP, BP, а 8-битный операнд - в регистрах AH, BH, CH, DH, AL, BL,
CL, DL. Команда выполняется за минимальное время, так как не требуется
обращение к памяти.
4. Косвенная регистровая адресация. В этом случае эффективный
адрес операнда ЕА находится в базовом ВХ или в одном из индексных регистров SI или DI, определяемых байтом адресации. Схема обращения к
операнду представлена на рис. 1.13.
Рис. 1.13

15
dispH dispL
dispL
BP
BX
EA
dispH dispL
dispL
(DI)
(SI)
EEA
(DI)
(SI)
(BP)
(BX)
EA
КОП
БА (Рг)
dispL
dispH
Память
Операнд
ЕА
Базовый адрес
Рг
ВХ, ВР
Команда
Режим позволяет вычислять адреса во время выполнения программы
и применяется для обращения к элементам массивов. При модификации
содержимого регистра одна и та же команда обращается к разным ячейкам
памяти.
5. Базовая адресация. Эффективный адрес операнда ЕА является
суммой значений смещения и содержимого одного из базовых регистров:
,
где круглыми скобками обозначено содержимое регистра, а фигурными –
логическая операция ИЛИ. Обращение к операнду в этом случае осуществляется по схеме, представленной на рис. 1.14.
Рис. 1.14
Применяется для доступа к элементам различных структур данных,
когда смещение (номер элемента) известно заранее (во время ассемблирования), а базовый, т.е. начальный, адрес структуры определяется во время
работы программы.
6. Индексная адресация. Реализуется по той же схеме, что и базовая
адресация, но эффективный адрес является суммой значений смещения и
содержимого одного из индексных регистров:
.
Данный режим обычно применяется при последовательном обраще-
нии к различным элементам разных структур данных. Смещение определяет известный при ассемблировании начальный адрес массива, а значение
в индексном регистре указывает на нужный элемент.
7. Базовая индексная адресации. Возможны две модификации этого
режима: без использования смещения и с использованием смещения.
В первой модификации эффективный адрес операнда ЕА определяется как сумма содержимого одного из базовых (BX или BP) и одного из
индексных (SI или DI) регистров, определяемых байтом адресации:
.

16
dispHdispL
dispL
(DI)
(SI)
(BP)
(BX)
EA
КОП
БА (Рг1, Рг2)
dispL
dispH
Память
Операнд
ЕА
Базовый адрес
Рг 1
ВХ, ВР
Индекс
Рг 2
SI, DI
Команда
КОП
БА (Рг1, Рг2)
Память
Операнд
ЕА
Базовый адрес
Рг 1
ВХ, ВР
Индекс
Рг 2
SI, DI
Команда
Схема обращения к операнду представлена на рис. 1.15.
Рис. 1.15
Во 2-й модификации значение ЕА равно сумме содержимого базово-
го и индексного регистров и смещения (8- или 16-битового):
.
Схема обращения к операнду представлена на рис. 1.16.
Рис. 1.16
Базовая индексная адресация является наиболее гибким режимом,
так как две составляющие ЕА можно определять и изменять при выполнении программы. Применяется при обращении к элементам двумерных массивов, т.е. матриц. Кроме того, режим удобен при организации работы
подпрограмм с одномерными массивами, расположенными в стеке.
1.5.2. Виды адресации переходов
Известно, что физический адрес команды в памяти определяется со-
держимым сегментного регистра CS и указателя команд IР. Поэтому для
определения адреса перехода в программе в общем случае необходимо модифицировать значения этих регистров.

17
КОП
dispL
dispH
Память
Команда
ЕА
Текущий адрес
IP
Команда
Сегментная организация памяти определяет две разновидности адресации переходов: внутрисегментную адресацию, когда выполняется передача управления в пределах текущего сегмента кода (модифицируется
только значение IP); межсегментную адресацию, когда выполняется передача управления за пределы текущего сегмента кода (модификация содержимого регистров CS и IP).
Рассмотрим способы указания адресов перехода в командах МП.
1. Относительная адресация (прямая внутрисегментная). Здесь ЕА
перехода определяется как сумма 8- или 16-битного смещения, указанного
в команде, и содержимого регистра IP. Схема определения команды, на которую осуществляется переход, представлена на рис. 1.17.
Рис. 1.17
Если смещение задается одним байтом, то режим адресации называется коротким переходом. Диапазон значений смещения disp L в этом случае составляет от -127 до 128. Если смещение положительное, то осуществляется переход вперед, если отрицательное – назад. Данный вид адресации допускается в командах условного и безусловного переходов. Но при
условном переходе смещение может иметь длину только 8 бит.
2. Косвенная внутрисегментная адресация. При такой адресации ЕА
перехода может находиться в одном из 16-битных общих регистров или в
слове памяти, который указывается одним из возможных видов адресации
данных (кроме непосредственного). Значение ЕА перехода замещает содержимое указателя команд IP. Схема определения команды, на которую
осуществляется переход, представлена на рис. 1.18. Такой вид адресации
применяется только в команде безусловного перехода.

18
КОП
БА
dispL
dispH
Память
Команда
Регистр
ЕА перехода
Память
ЕА перехода
или
Вычисление источ-
ника ЕА перехода в
соответствии с ре-
жимом адресации
данных
КОП
Cмещение
IP
CS
Базовый адрес
Команда
КОП
БА
IP
CS
dispL
dispН
Вычисление ЕА
в соответствии с режимом адресации данных
ЕА перехода
Базовый адрес
ЕА
Команда
Память
Команда
Рис. 1.18
3. Прямая межсегментная адресация. Команда такого вида состоит
из пяти байт. Первый байт содержит КОП; 2-й и 3-й байты содержат 16битное смещение (загружается в IP); 4-й и 5-й байты – базовый адрес сегмента (загружается в CS). Схема определения команды, на которую осуществляется переход, представлена на рис. 1.19. Используется только в командах безусловного перехода.
замена содержимого регистров СS и IP содержимым 2-х смежных слов памяти. Адресуемое слово памяти загружается в указатель команд IP, а следующее слово - в сегментный регистр CS. Схема определения команды, на
которую осуществляется переход, представлена на рис. 1.20.
Рис. 1.19
4. Косвенный межсегментный переход. В этом случае производится
Рис. 1.20

19
15 14 8 7 0
В данном режиме допускается только адресация памяти, потому при
вычислении ЕА возможны все виды адресации данных, кроме непосредственной и прямой регистровой. Этот режим допускается только в командах
безусловного перехода.
2. ОРГАНИЗАЦИЯ МПС С МАТЕМАТИЧЕСКИМ
СОПРОЦЕССОРОМ
2.1. Общая характеристика и форматы данных сопроцессора
Математический сопроцессор (СП) предназначен для расширения
вычислительных возможностей центрального процессора (ЦП), в качестве
которого может выступать МП с архитектурой х86. Применение СП повышает производительность вычислений с плавающей точкой в сотни раз.
С программной точки зрения СП и ЦП выглядят как единое целое.
Физически СП может быть отдельной микросхемой (I8087, I80287, I80387),
подключаемой к локальной шине ЦП (I8086, I80286, I 80386). Начиная с
I486 математический сопроцессор располагается на кристалле вместе с
центральным процессором. Однако в любом случае СП исполняет только
свои специфические команды, а всю работу по декорированию команд,
доставке данных из памяти и записи результатов в память осуществляет
ЦП. МС может выполнять вычисление параллельно с ЦП.
СП работает с числовыми данными в семи форматах, которые делятся на 3 класса: двоичные целые; упакованные десятичные целые; двоичные
вещественные (с плавающей точкой).
Двоичные целые числа могут быть представлены в одном из 3-х форматов, приведенных на рис. 2.1: а) целое слово (16-разрядное число со знаком); б) короткое целое (32-разрядное число со знаком); в) длинное целое
(64-разрядное число со знаком).
Знак
31 30 24 23 16 15 8 7 0
Знак
63 62 … … … 31 30 24 23 16 15 8 7 0
Знак
а
б
в
Рис. 2.1

20
Порядок
Мантисса
31 30
23 22
0
Знак мантиссы
8 разрядов
23 разряда
Порядок
Мантисса
63 62
52 51
0
Знак мантиссы
11 разрядов
52 разряда
Порядок
Мантисса
79 78
64 63
0
Знак мантиссы
15 разрядов
64 разряда
Для всех этих форматов старший бит определяет знак числа. Для
представления чисел применяется дополнительный код.
Десятичные целые числа представляются в прямом коде в упакованном виде, т.е. каждый байт содержит две десятичные цифры в коде 8421.
Для хранения десятичных чисел отводится 10 байт. При этом старший бит
левого байта отведен под знак числа, а остальные биты этого байта игнорируются. Формат десятичных целых чисел представлен на рис. 2.2.
79 … … … … … … … … 16 15 8 7 0
Знак Игнорируются
Рис. 2.2
В этом формате могут быть представлены 18-разрядные целые десятичные числа со знаком в прямом коде.
Двоичные вещественные числа могут быть представлены в одном из
трех форматов, приведенных на рис. 2.3: а) короткий вещественный формат (КВФ) - 4-байтное число; б) длинный вещественный формат (ДВФ) - 8байтное число; в) внутренний вещественный формат (ВВФ) - 10-байтное
число.
а
б
в
Рис. 2.3
Максимальный диапазон возможных значений чисел в сопроцессоре
соответствует ВВФ и составляет 10
±4932
с точностью 64 бита.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
