Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Организация микропроцессоров и микропроцессорных систем. Учебное пособие
.pdf
21
ность команд программы. Каждая команда в свою очередь интерпретируется соответствующей микропрограммой. Таким образом, в УП хранятся
микропрограммы, реализующие систему команд процессора.
2. ОРГАНИЗАЦИЯ МПС НА ОСНОВЕ МИКРОПРОЦЕССОРОВ
С АРХИТЕКТУРОЙ х86/16. РЕАЛЬНЫЙ РЕЖИМ
2.1. Структурная модель МП с архитектурой х86/16
при работе в реальном режиме
Реальный режим (режим реальных адресов) МП обеспечивает одно-
пользовательскую, однозадачную работу МПС. Наиболее важной особенностью работы МП в этом режиме является конвейерный принцип выполнения команд с их предварительной выборкой. Это обеспечивает максимальную пропускную способность системы шины.
Рассмотрим, как реализуется этот принцип. В общем виде процесс
выполнения команды программы содержит следующие этапы: 1) выборка
кода команды из памяти; 2) декодирование команды; 3) чтение операндов
из памяти, если это необходимо; 4) выполнение операции в арифметикологическом устройстве (АЛУ); 5) запись результатов, если этого требует
команда.
Обычно в МП эти этапы выполняются последовательно, что приводит к малой загрузке по времени магистралей МПС. Здесь же структура
МП ориентирована на параллельную реализацию этапов выборки и выполнения команд. Поэтому в состав МП входят два относительных устройства, работающих асинхронно. Это операционное устройство (ОУ) и устройство сопряжения с системной шиной или шинный интерфейс (ШИ).
Упрощенная структурная схема МП в реальном режиме работы
представлена на рис. 2.1. Здесь ШД – шина (магистраль) данных; ША –
шина (магистраль) адресов; ШУ – шина (магистраль) управления.
В состав ОУ входят: шестнадцатиразрядное АЛУ; общие регистры
или регистры общего назначения (РОН) AX, BX, CX, DX, SI, DI, SP, BP и
буферные регистры; регистр флагов или признаков F; схема управления
МП.
Все регистры и внутренние магистрали ОУ 16-разрядные. Операци-
онное устройство не имеет связи с внешними шинами МП. На АЛУ поступают коды команд из очереди команд, расположенной в шинном интерфейсе. Получение операндов также производится через шинный интерфейс (регистр обмена).
МП ориентирован на обработку 16-разрядных слов, поэтому и адреса, которые выдает ОУ, также являются 16-разрядными. Шинный интерфейс
преобразует их в 20-разрядные, что позволяет обращаться к 1 МБ оперативной памяти. ШИ осуществляет: 1) выборку команд из памяти; 2) обращение

22
ОУ
Сумматор адреса
CS
DS
ES
SS
IP
Рг обмена
15 0
Схема
управления
системной
шиной
AH AL
BH BL
CH CL
DH DL
SP
BP
SI
DI
15 8 7 0
AX
BX
CX
DX
1 2 3 4 5
6
Схема
управ-
ления
МП
Буферные Рг
АЛУ
F
16
8
16
20
ШИ
ШД
ША
ШУ
Очередь команд
Общие регистры
Внутренняя шина данных
к памяти или внешнему устройству для считывания операндов и записи
результатов по запросам ОУ.
В состав ШИ входят: сегментные регистры CS, DS, ES, SS, необходи-
мые для обращения к памяти; сумматор адреса, используемый для преобразования 16-разрядных логических адресов в 20-разрядные физические или
исполнительные адреса; указатель команд IP, аналогичный по назначению
программному счетчику (счетчику команд); регистр обмена используется
для передачи информации между шинным интерфейсом и ОУ; очередь команд, состоящих из шести 8-битных регистров, предназначенная для хранения байтов кода команд.
Функционирование шинного интерфейса производится следующим
образом. Когда ОУ занято выполнением команды, ШИ самостоятельно производит опережающую выборку очередных байтов команд из памяти. Они
поступают во внутреннюю регистровую память и называются очередью команд. Эта очередь может содержать до 6 байт потока команд. Это позволяет
выдавать на ОУ сохраненные команды по мере их необходимости без загрузки внешних магистралей МП системы. Когда в очереди команд оказывается два свободных байта, ШИ производит выборку из памяти следующего командного слова.
Очевидно, что очередь обеспечивает положительный эффект только
при естественном порядке передачи команд. Если ОУ выполняет команду
Рис. 2.1

23
передачи управления в другую точку программы, то ШИ выполняет следующие действия: 1) очищает очередь команд; 2) получает код команды из
нового адреса; 3) передает этот код в ОУ и начинает заполнять очередь команд заново.
В том случае когда ОУ требует обращения к памяти или внешнему
устройству, ШИ приостанавливает выборку команд и запись их в очередь
для организации необходимого обмена информацией.
2.2. Организация регистров в реальном режиме
Все программно-доступные регистры можно разделить на 4 группы.
Форматы регистров представлены на рис. 2.2.
Рис. 2.2
В программной модели МП имеется четырнадцать 16-разрядных ре-
гистров.
1. Группа РОН используется обычно для хранения операндов при
выполнении арифметических и логических операций над байтами или словами. В этой группе допускается раздельная адресация старших и младших
байтов. Некоторые команды предписывают регистрам данной группы специальное назначение: АХ – 16-разрядный аккумулятор, в котором АL -

24
восьмиразрядный аккумулятор; ВХ – базовый регистр в командах с соответствующей адресацией; СХ - счетчик в циклах и командах сдвигов; DХ расширение аккумулятора до 32-х разрядов. Кроме того, DХ используется
при косвенной адресации УВВ.
Указательные и индексные регистры предназначены для хранения
индексной информации. Указательные регистры SP и ВР хранят 16разрядные значения смещений адреса в пределах сегмента памяти, выделенного под стек. При этом SP указывает на вершину стека, а ВР – на основание стека.
2. Индексные регистры SP, DI содержат смещение адреса в пределах
сегментов памяти, выделенных под данные. Используются они в качестве
индексных регистров в соответствующих способах адресации. Кроме того,
в командах работы с цепочками байт или слов SI указывает на исходную
цепочку, а DI – на результирующую цепочку. Важной особенностью регистров этой группы является возможность их использования в качестве 16разрядных РОН в арифметико-логических операциях, т.е. как и регистров
1-й группы.
3. Наличие четырех сегментных регистров объясняется способом
адресации памяти. Хотя в реальном режиме МП вырабатывает 20-разрядные исполнительные адреса, оперирует он с 16-разрядными логическими
адресами, состоит из базового адреса сегмента (базы) и внутрисегментного
адреса (смещения). Сумматор адреса преобразует эти составляющие логические адреса в 20-разрядный физический адрес. При выполнении программы МП могут одновременно обращаться к 4 сегментам памяти по 64
КБ каждый.
Начальные (базовые) адреса сегментов содержатся в сегментных регистрах: CS – регистр сегмента кода, содержащий базовый адрес сегмента
кода, откуда выбираются команды программы; DS - регистр сегмента данных, содержащий базовый адрес сегмента данных, в котором размещаются
переменные и массивы программы; SS - регистр сегмента стека, содержащий базовый адрес стека, в котором реализуются все стековые операции;
ES - регистр дополнительного сегмента, который содержит базовый адрес
сегмента, обычно использующегося для хранения промежуточных данных.
4. Последнюю группу составляют два 16-битных регистра: IP - ука-
затель команд, который является аналогом стандартного программного
счетчика РС; F- регистр флагов или признаков.
Шинный интерфейс осуществляет модификацию IP таким образом,
что он указывает на следующую по порядку команду. Изменение содержимого IP пользователем может быть выполнено только с помощью команд передачи управления.
Регистр признаков F имеет формат, представленный на рис. 2.3.

25
OF
DF
IF
TF
SF
ZF AF PF CF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Флаги управления Флаги состояния
Рис. 2.3
Флаги состояния характеризуют признаки результата.
CF – флаг переноса. Этот бит устанавливается в 1, если арифметиче-
ская операция вызвала перенос (заём) из старшего бита результата. Используется при сложении и вычитании многобайтных чисел, а также в командах сдвига.
PF – флаг паритета (четность). Устанавливается в 1, если младшие
восемь разрядов результата содержат четное число единичных бит. Используется для контроля ошибок передачи данных.
AF – флаг вспомогательного переноса. Устанавливается в 1, если
арифметическая операция вызвала перенос (заём) из младшей тетрады в
старшую, исполняется в командах десятичной арифметики при работе с
упакованными числами.
ZF – флаг нуля. При установке в 1 характеризует признак нулевого
результата.
SF – флаг знака результата. Устанавливается в состояние, в котором
находится старший бит результата.
OF – флаг переполнения. Устанавливается в 1, если результат пре-
вышает диапазон представимых чисел в разрядной сетке АЛУ.
Флаги управления воздействуют на те или иные аспекты работы МП.
DF – флаг направления. Управляет направлением обработки данных
в операциях с цепочками байт или слов. При DF=1 используется автодекрементный режим индексных регистров SI, DI, а при DF=0 - автоинкрементный режим.
IF – флаг прерывания. При IF=1 разрешается обработка внешних
маскируемых прерываний. При IF=0 – запрет.
TF - покомандный режим работы МП. Используется при отладке
программ. Если TF=1, то МП выполняет команды пошагово.
2.3. Организация памяти и ввода/вывода в МПС на основе
микропроцессоров с архитектурой х86
В реальном режиме МП обеспечивает адресацию памяти емкостью 1
мегабайт (МБ). Это пространство памяти представляет собой одномерный
массив байт, каждый из которых имеет 20-разрядный адрес. Байт является
минимально адресуемой единицей памяти. Для записи адресов используется 16-ричная система счисления. Адреса ячеек имеют значения 00000h,
00001h, …, FFFFEh, FFFFFh.

26
Базовый адрес
(CS, DS, ES, SS)
0000
0000
Смещение
(IP, SP, DI, SI, EA)
Сумматор адреса
Логический
адрес
19 4 3 0
19 16 15 0
19 0
ШИ
ША 19-0
Физический
адрес
Любые два смежных байта образуют 16-разрядное слово, где млад-
ший байт имеет меньший адрес, а старший – больший. Обращение к слову
производится путем указания адреса его младшего байта.
Каждая программа делит пространство памяти на сегменты по 64 КБ.
Сегмент состоит из смежных ячеек памяти и является независимой и отдельно адресуемой единицей памяти. Сегменты могут быть смежными (соседними), непересекающимися, пересекающимися частично или полностью.
Начальные адреса сегментов хранятся в соответствующих сегмент-
ных регистрах. Текущие сегменты обеспечивают для программы следующее рабочее пространство: 64 КБ для объектного кода; 64 КБ для стека;
128 КБ для данных. Адрес каждой ячейки (байта) памяти в реальном режиме является 20-разрядным, а МП работает с 16-разрядной информацией.
Рассмотрим, каким образом осуществляется формирование адресов
памяти. Принято считать, что каждая ячейка памяти имеет два адреса: физический и логический. Физический адрес – это 20-битное значение, которое выдается на ША и однозначно указывает положение каждого байта в
пространстве памяти 1МБ. Программы оперируют логическими адресами,
что позволяет записать их без предварительного размещения в памяти, т.е.
использовать относительные адреса. Логический адрес состоит из двух 16битных значений: базового адреса сегмента (базы); внутрисегментного адреса (смещения). Он задается в виде база: смещение.
База указывает адрес первого байта сегмента, смещение определяет
расстояние в байтах от начала сегмента до соответствующей ячейки. Значения базы и смещения задаются 16-ричными числами из диапазона от
0000h до FFFFh, например 4AC8h:8D6Eh.
Когда ШИ обращается к памяти, он формирует из логического адре-
са физический. Для этого база сегмента и смещение суммируются в соответствии со схемой, представленной на рис. 2.4.
Источники логического адреса зависят от типа обращения к памяти и
приведены в табл. 2.1.
Рис. 2.4

27
Тип обращения к памяти
База по умолчанию
Вариант базы
Смещение
Выбор команды
CS
-
IP
Стековая операция
SS
-
SP
Выборка операнда
DS
CS, ES, SS
EA
Цепочка – источник
DS
CS, ES, SS
SI
Цепочка - приёмник
ES
-
DI
МП с архитек-
турой x86
(реальный ре-
жим)
ША
ШД
ШУ
Память
1МБ
Порты
ввода/вывода
16
20
16
16
16
20
Таблица 2.1
Здесь ЕА – эффективный адрес, т.е. смещение операнда, которое вычисляет ОУ в соответствии с заданным в команде режимом адресации.
Организация ввода/вывода. Для связи с внешними устройствами МП
с архитектурой х86 в реальном режиме имеет дополнительное пространство ввода/вывода, изолированное от пространства памяти. Структурная
схема МПС, отражающая организацию памяти и ввода/вывода, показана на
рис. 2.5.
Рис. 2.5
Адресное пространство ввода/вывода МП содержит до 64К 8-битных
портов или до 32К 16-битных портов, где К=1024.
Команды ввода IN и вывода ОUТ передают данные между аккумуля-
торами AL (байты) или АХ (слова) и адресуемыми портами. Пространство
ввода/вывода не сегментируется.
Для обращения к порту ввода/вывода ШИ выдает 16-битный адрес
порта на младшие разряды шины адреса ША 15-0. Возможно использование 8-битных адресов устройств ввода/вывода (УВВ). Тогда 8-битный адрес порта дублируется на линиях ША 7-0, ША 15-8.
Доступ к портам пространства ввода/вывода может быть организо-
ван с использованием 2-х методов адресации: прямого и непрямого (косвенного). В случае прямой адресации номер порта задается 8-битовым непосредственным операндом в команде. В этом случае обеспечивается обращение к первым 256 портам с номерами от 00h до FFh.
Непрямая адресация портов подобна косвенной регистровой адреса-
ции данных в памяти. Номер требуемого порта берется из регистра DX и
может указать любую ячейку пространства ввода/вывода объемом 64 КБ.

28
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
2.4. Форматы команд микропроцессора
Команды при реальном режиме работы МП занимают от 1 до 6 байт
в памяти. На формат команд влияет выбор режима адресации. МП имеет
организацию команд типа «регистр-память». С точки зрения адресации это
означает, что команды адресуют не более двух операндов, причем одновременное обращение к двум ячейкам памяти не допускается.
Наиболее общим случаем является двухадресная команда, когда ре-
зультат замещает один из операндов. Первым операндом в такой команде
является содержимое регистра или ячейки памяти, вторым операндом –
содержимое регистра или непосредственный операнд в команде.
Рассмотрим основные форматы команд.
1. Формат двухоперандной команды для случаев, когда вторым
операндом является содержимое регистра, показан на рис. 2.6.
Смещение
Рис. 2.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. Формат двухоперандной команды с непосредственным операн-
дом приведен на рис. 2.7.
Смещение Непосредственный операнд
Рис. 2.7

29
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
Длина команды в таком формате может достигать 6 байт. Первый
операнд размещается в регистре или ячейке памяти, второй – непосредственно в команде. Непосредственный операнд имеет длину 1 или 2 байта в
зависимости от значения бита w.
По сравнению с предыдущим форматом команды здесь имеются сле-
дующие отличия: 1) в первом байте отсутствует бит d, так как результат
можно поместить только на место 1-го операнда; 2) во втором байте адресации не требуется указывать регистр для 2-го операнда. Освободившиеся
в результате этого разряды используются для расширения кода операции.
3. Формат однооперандной команды имеет вид, приведенный на
рис. 2.8.
Рис. 2.8
Он подобен второму типовому формату, но не содержит поле data
непосредственного операнда.
Структура и кодирование постбайта режима адресации. Пост-
байт режима адресация или байт адресации (БА) является вторым в большинстве команд МП. Он указывает способ адресации одного или двух
операндов. Формат этого байта представлен на рис. 2.9.
7 6 5 3 2 0
Рис. 2.9
Здесь mod – поле режим; r/m – поле регистр-память; reg – поле ре-
гистр. Поле reg используется только в том случае, когда второй операнд
команды размещается в регистре. Выбор этого регистра осуществляется в
соответствии с табл. 2.2.
Таблица 2.2

30
Код поля 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
Регистр
В командах, где требуется определенный адрес только одного опе-
ранда (в том числе двухоперандных с непосредственной адресацией), поле
reg используется для расширения поля КОП первого байта команды.
Поля mod и r/m задают расположение первого операнда в памяти или
регистре. Если операнд в памяти, то по этим полям производится вычисление его эффективного адреса ЕА. Способ вычисления ЕА определяется по
коду поля r/m в соответствии с табл. 2.3.
Таблица 2.3
го операнда, как это показано в табл. 2.4. В случае когда первый операнд
размещается в регистре, его номер кодируется в поле r/m аналогично полю
reg в табл. 2.2.
Исключением из перечисленных случаев является комбинация
mod=00 и r/m =110. Здесь эффективный адрес равен disp = dispL dispH, что
позволяет обеспечить прямую адресацию операнда без использования регистров.
класса: 1) виды адресации операндов в командах работы с данными; 2) виды адресации переходов в командах передачи управления.
1. Непосредственная адресация. Здесь операнд представляет собой
константу длиной 8 или 16 бит, которая содержится в команде. Схема обращения к операнду представлена на рис. 2.10.
Поле mod указывает величину смещения disp и расположение перво-
Таблица 2.4
2.5. Виды адресации микропроцессора
В реальном режиме все виды адресации можно разделить на два
2.5.1. Виды адресации данных
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
