Архитектура 16-разрядного микропроцессора
Переход к 16-разрядным микропроцессорам - i8086 и другие аналогичной вычислительной мощности - ознаменовался качественным скачком всех основных характеристик МП: не просто увеличение разрядности, но значительное изменение архитектуры, системы команд, принципов организации структуры. Кроме показанного на Рис. 2.4, в машину пользователя i8086 включатся память объемом 1М байт и две области портов ввода и вывода по 64К каждая.
Рассмотрим "машину пользователя" на базе i8086 (К1810ВМ86):
7 0 | 7 0 | |||
AX | AH | AL | Аккумулятор | |
РОН | BX | BH | BL | База |
CX | CH | CL | Счетчик | |
DX | DH | DL | Данные | |
15 0 | ||||
Регистры- | SP | Указатель стека | ||
указатели | BP | Указатель базы | ||
Индексные | SI | Индекс операнда | ||
регистры | DI | Индекс результата | ||
15 0 | ||||
CS | Сегмент кода | |||
Сегментные | DS | Сегмент данных | ||
регистры | SS | Сегмент стека | ||
ES | Сегмент доп. данных | |||
15 0 | ||||
IP | Счетчик команд | |||
FLAGS | Регистр признаков |
Рис. 2.4. МП i8086 - машина пользователя
Разработчики i8086 старались сохранить возможность преемственности программного обеспечения i8080, поэтому в составе i8086 можно выделить подмножество регистров i8080 (соответствующие подмножество сохранено и в системе команд). Помимо операций с 16-разрядными регистрами общего назначения (РОН) AX..DX, допускается обращение к каждому байту этих регистров - AL..DL, AH..DH. В некоторых командах РОНы выполняют определенные по умолчанию функции счетчиков, индексных регистров и т.п. (см. Рис. 2.4).
16-разрядные регистры BP, SI, DI используются для образования исполнительных адресов памяти (см. ниже), SP - указатель стека, IP - программный счетчик (СчК), F - регистр флагов. Младший байт F полностью повторяет формат регистра признаков i8080, а старший имеет след. формат:
15 12 | ||||||
Зарезервировано | OF | DF | IF | TF | ||
Арифметическое переполнение Направление Разрешение прерывания Пошаговый режим | ||||||
где:
DF определяет направление модификации адресов массивов в командах цепочек (увеличение или уменьшение адреса);
IF маскирует внешнее прерывание по входу INT (при IF = 1 прерывание разрешено);
TF управляет пошаговым режимом работы микропроцессора. При TF = 1 после выполнения каждой команды автоматически формируется прерывание с вектором 4 (см. раздел 7).
Распределение адресного пространства.
Адресное пространство МП определяется в i8086 разрядностью шины адреса/данных + адреса и составляет 220 = 1М байт. В этом адресном пространстве МП одновременно доступны четыре сегмента, два из которых (DS и ES) предназначены для размещения данных, CS - сегмент кода (для размещения программы) и SS - сегмент стека.
Размеры сегментов определяются разрядностью логических адресов команд, данных и стека. Логические адреса команд и стека (верхушки) хранятся в 16-разрядных регистрах IP и SS соответственно, а логический адрес данных вычисляется в команде (см. ниже) и так же составляет 16 бит. Таким образом, размер каждого сегмента в i8086 составляет 64К байт. Положение сегмента в адресном пространстве (его начальный адрес) определяется содержимым одноименного сегментного регистра. Формирование физического адреса иллюстрируется схемой Рис. 2.5 .
Из Рис. 2.5 видно, что граница сегмента в адресном пространстве может быть установлена не произвольно, а таким образом, чтобы начальный адрес сегмента был кратен 16.
15 0 | ||
Сегментный регистр | .0 0 0 0 | |
15 0 | ||
Логический адрес | ||
19 0 | ||
Физический адрес | ||
Рис. 2.5. Формирование физического адреса
По умолчанию сегментные регистры выбираются для образования физического адреса след. образом: при считывании команды по адресу IP используется CS, при обращении к данным - DS или ES, при обращению к стеку - SS. С помощью специальных приставок к команде (префикса) можно назначить для использования произвольный сегментный регистр (кроме пары CS:IP, которая не подлежит модификации). Границы сегментов могут быть выбраны т.о., что сегменты будут изолированы друг от друга, пересекаться или даже полностью совпадать. Например, если загрузить CS=SS=DS=ES=0, то все сегменты будут совпадать друг с другом и начинаться с нулевого адреса - вариант организации адресного пространства i8080.
Способы адресации
и методы формирования исполнительного адреса
Длина команды i8086 может составлять от 1 до 6 байт. Формат команды представлен на Рис. 2.6.
1 байт | 2 байт | 3..6 байты | ||||||||
КОП | D | W | MOD | REG | R/M | [Смещение. данные] | ||||
7 2 1 0 | 7 6 5 3 2 0 | |||||||||
Рис. 2.6. Формат команды МП i8086
Большинство команд i8086 являются двухадресными, причем один адрес определяет регистр процессора, а другой - память или регистр. Поля команды имеют следующие назначения:
D - определяет направление передачи информации: при D = 1 REG является приемником, иначе - источником;
W - определяет длину операндов в команде: при W = 1 длина операндов составляет 16 бит (слово - word), иначе - 8 бит(байт);
REG - определяет регистр для первого операнда согласно Табл. 2.3:
Табл. 2.3
REG (R/M) | Регистр | |
W = 0 | W = 1 | |
AL | AX | |
CL | CX | |
DL | DX | |
BL | BX | |
AH | SP | |
CH | BP | |
DH | SI | |
BH | DI |
Поля R/M и MOD определяют способ формирования адреса второго операнда, который располагается чаще всего в памяти. В Табл. 2.4 приведены способы формирования адресов памяти для двух значений поля MOD.
Табл. 2.4
R/M | MOD = 00 | MOD = 01 | ||
Логич.адрес | Сегмент | Логич.адрес | Сегмент | |
BX+SI | DS | BX+SI+d8 | DS | |
BX+DI | DS | BX+DI+d8 | DS | |
BP+SI | SS | BP+SI+d8 | SS | |
BP+DI | SS | BP+DI+d8 | SS | |
SI | DS | SI+d8 | DS | |
DI | DS | DI+d8 | DS | |
d16 | DS | BP+d8 | DS | |
BX | DS | BX+d8 | DS |
В Табл. 2.4 d8 и d16 означают соответственно 8- и 16-разрядное смещение (3 и 3+4 байты команды). При операциях с d8 осуществляется его "знаковое расширение" до 16 бит - биты 15..8 принимают значение бита 7 (знака).
При значении MOD = 10 используются те же регистры, что при MOD = 01 (см. Табл. 2.4), но вместо d8 используется d16.
При MOD = 11 вторым операндом команды является регистр, определяемый полем R/M согласно Табл. 2.3.
Таким образом, операнд в памяти может адресоваться прямо (MOD = 00, R/M = 110) или косвенно посредством содержимого базовых (BP, BX) или индексных (SI, DI) регистров, а так же их суммы. Режимы адресации спроектированы с учетом эффективной реализации языков высокого уровня. Например, к простой переменной можно обратиться в режиме прямой адресации, а к элементу массива - в режиме косвенной адресации посредством BX, SI. Режим адресации через BP предназначен для доступа к данным из сегмента стека, что удобно при реализации рекурсивных процедур и компиляторов языков высокого уровня.
Дата добавления: 2019-02-07; просмотров: 538;