Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

АРХИТЕКТУРА МИКРОПРОЦЕССОРОВ ИНТЕЛ 8086/8088, 80286, 80386

3.1. Микропроцессор 8086/8088

Микропроцессор (МП) 8086/8088 выпущен в 1978 году и был первым МП с 16-разрядными данными.

МП 8086/8088 имеет длину слова 16 бит, адресное пространство памяти 1 Мбайт, 16-разрядную шину данных (8-разрядную для МП 8088), 20-разрядную шину адреса, сегментную организацию памяти. Функционально микросхема разделена на два независимых блока. дин из них называется блоком сопряжения с магистралью (рис.1.3) (Bus interface unit BIU),другой блок называется исполнительным (Execution unit EU). Блок сопряжения с магистралью выполняет две функции:

- выборка команд из памяти;

- пересылка данных между исполнительной аппаратурой и внешним миром.



Рис.3.1. Архитектура МП 8086/8088

В исполнительном блоке происходит выполнение команды. BIU содержит указатель команд (IP), в котором хранится адрес очередной выбираемой команды, байтовая очередь потока команд и регистры сегментов.

Регистры сегментов МП 8086/8088 содержат 16 разрядов и носят название CS (code segment – сегмент программы), DS (date segment сегмент данных), SS (stack segment – сегмент стека) и ES (extra segment – дополнительный сегмент).

Блоки BIU и EU работают независимо. Блок BIU осуществляет выборку команд и пересылку данных, а EU выполняет выбранные команды. Такое разделение функций стало возможным за счет использования конвейера (очереди) команд. Блок сопряжения с магистралью заполняет конвейер командами, ожидающими выполнения. В то время как исполнительный блок заканчивает выполнение текущей команды, следующая команда уже подготовлена для выполнения. В случае перехода конвейер сбрасывается. Конвейер BIU в МП 8086 хранит до 6 байт, а 8088- до 4 байт потока команд.

Исполнительный блок не имеет связи с системной магистралью. ЕU получает команда из очереди. Если команда требует обращения к памяти или внешней магистрали, EU посылает запрос ВIU на выборку или запись данных. Адреса, с которыми оперирует EU имеет 16 разрядов, но BIU выполняет преобразование адресов так, чтобы EU мог обратиться ко всему возможному адресному пространству (1Мбайт) памяти.

Исполнительный блок состоит из 16-разрядного арифметико-логического устройства (АЛУ), регистров, операндов и флагов, а также набора регистров общего назначения АН, АL, ВН, BL, СН, CL, DН, DL. Регистры АН и AL объединяются в регистр-аккумулятор АХ; ВН и BL образуют регистр базы ВХ; СН и CL образуют регистр-счетчик СХ. DН и DL образуют регистр данных DX.

К регистрам общего назначения можно адресоваться как к 8- или 16-разрядным. Это позволяет программам для 8-разрядного МП 8080 выполняться на МП 8086/8088 после повторной трансляции. МП 8086/8088 может адресовать до 1 Мбайта памяти (1048576 байт). Каждому адресу назначен уникальный адрес (беззнаковое число от 0 до 2020- 1 (от 00 000 до FFFFF в шестнадцатеричной системе счисления). Два соседних байта в памяти образуют слово. За адрес слова принимается меньший из двух адресов байтов, слово состоит из 16 бит. Младшие биты слова содержатся в адресе байта с меньшим адресом, а старшие биты слова - в байте со старшим адресом.

В МП-8086 обмен данными между процессором и памятью осуществляется словами, начинающимися с адресов, кратных двум.

Кроме байт и слов МП 8086/8088 оперирует следующими дополнительными типами данных:

1. Неупакованный двоично-десятичный тип - байтовое представление. десятичной цифры от 0 до 9.

В каждом байте хранится по одной цифре. Значение цифры определяется младшим полубайтом. Старший полубайт равен 0 при делении и умножении и принимает любое значение при вычитании и сложении.

2. Ближний указаразрядный логический адрес, который представляет собой относительный адрес внутри сегмента.

НЕ нашли? Не то? Что вы ищете?

Дальний указатель-- 32-разрядный логический адрес из двух компонентов 16-разрядного сегмента и 16-разрядного относительного адреса.
Целый тип - знаковое двоичное значение, содержащееся в 16-разрядном слове или 8-разрядном байте. Все операции выполняются в дополнительном коде. Бит знака расположен в бите 7 байта и в бите 15 слова. Знаковый бит равен 0 для положительного слова и в равен 1 - для отрицательного. Для 8-разрядных целых чисел диапазон изменения от -128 до +127,. а 16-разрядных в диапазоне от -32768 до +32767. Нулевое значение имеет положительный знак.


5. Обычный (беззнаковый) тип - беззнаковое двоичное значение содержащееся в 16-разрядном слове или 8-разрядном байте. Все биты определяют величину числа. Значение для байта составляет от 0 до 255, для слова - от 0 до 65535.

6. Строка - непрерывная последовательность байт или слов. Строка может содержать от 0 до 216 - 1 байт или 64 Кбайта.

Память МП 8086/8088 состоит из произвольного числа сегментов, каждый из которых содержит. 64К последовательных байта. С помощью сегмента производится адресация памяти при преобразований 16- или 32-разрядного логического адреса в 20-разрядный физический адрес.

Любой сегмент памяти начинается с адреса, кратного 16. Для доступа к требуемому сегменту используются сегментные регистры. МП 8086/8088 в каждый конкретный момент может непосредственно адресовать содержимое четырех сегментов: сегмента программы, сегмента данных, сегмента стека и дополнительного сегмента данных, которые могут перекрывать друг друга.

Для адресации байта или слова в сегменте 16-разрядный относительный адрес, часто называемый исполнительным (эффективным) адресом (ЕА), используется вместе с содержимым регистра сегмента. Программист указывает в программе название сегментного регистра, и обозначение этого регистра включается в саму команду.

Физический адрес МП 8086/8088 образуется из относительного адреса и содержимого указанного регистра сегмента. Для этого адрес сегмента сдвигается влево на четыре разряда, а в четыре младших разряда записываются нули.(рис.3.2).



Рис. 3.2. Формирование адресов байта или слова

К полученному таким образом 20-разрядному числу прибавляется относительный адрес, в результате чего формируется действительный физический адрес. При сложении содержимого сегментного регистра со смещением переполнение игнорируется. В результате сложения получается физический 20-битный адрес байта или - слова.

На рис.3.3 представлено распределение памяти при инициализации. Шестнадцать старших байт памяти (начиная с FFFFOH) отводятся под команды начальной загрузки, которые используются процессором, в момент включения питания. Первые 1024 байта отведены под адреса программ обработки прерываний. В МП 8080 (аналог КР 580) используются первые 64 байта под адреса программ обработки прерываний. Под процессом инициализации МП 8086/8088 понимается состояние процессора после включения питания или сигнала "сброс". Адрес первой выполняемой команды после включения питания или сигнала "Сброс" определяется начальным значением регистров МП 8086/8088 (см. рис.3.3).



Рис.3.3. Адресное пространство МП 8086/8080 при инициализации

В качестве внешних регистров в МП 8086/8088 используются ячейки памяти объемом в 1 Мбайт и 216 (64 Кбайта, 65535) 8-битовых портов.

Каждому порту, который предназначен для взаимодействия с внешним миром, присвоен уникальный адрес из диапазона от 0 до 216- 1.

На рис.3.4 представлены регистры МП 8086/8088. Микропроцессор имеет 13 16-битных регистров и 9 1-битных флагов. Биты флагов объединены в 1 регистр, называемый регистром флагов (регистр состояния). Условно регистры можно разделить на четыре группы. v

К первой группе относятся четыре регистра общего назначения (РОН). Ко второй группе относятся четыре указательных и индексных регистра. К третьей относятся четыре сегментных регистра. К четвертой группе относятся не доступные для программиста указатель команды и регистр флагов. В МП 8080 (КР 580) программный счетчик (PC) соответствует указателю команды МП 8086/8088.

Регистры общего назначения используются в арифметических и логических операциях для хранения промежуточных результатов. РОН можно использовать либо отдельно как два 8-битных регистра, либо совместно (как один 16-битный регистр). Каждой половинке РОН даны свои названия: младшие (LOW) AL, BL, CL и DL и старшие (High), которым в свою очередь даны названия АН, ВН, СH и DH.

В некоторых командах функции РОНов специализированы. Регистр АХ. - аккумулятор (accumulator) - используется при умножении и делении слов, в операциях ввода-вывода и в некоторых операциях над строками.

Регистр AL используется в аналогичных операциях над байтами, при преобразовании десятичных чисел и при выполнении над ними арифметических операций. Регистр ВХ - базовый регистр (base register) - необходим при адресации данных в памяти.

Регистр СХ - счетчик (count register) применяется для подсчета числа повторений цикла и в качестве номера позиции элемента данных при операциях над строками.



Рис.3.4. Регистры и флаги МП 8086/8088

Регистр CL служит счетчиком при операциях сдвига и циклического сдвига на несколько бит.

Регистр DX - регистр данных (data register) применяется при умножении и делении слов. Кроме того, в операциях ввода-вывода он используется как номер порта.

Ко второй группе регистров МП 8086/8088 относятся указательные и индексные регистры (см. рис.3.4) К ним относятся 16-битные регистры SP, BP, SI, DI, которые обычно содержат внутрисегментные смещения. Содержимое этих сегментов может участвовать в арифметических и логических операциях на ряду с 16-битными регистрами. Указательные регистры SP и DP используются для записи адресного смещения по отношению к стековому сегменту, а индексные реестры SI и DI - для адресного смещения по отношению к сегменту данных.. Есть некоторая специфика использования указательных регистров SP и ВР в командах PUSH и POP. Так, смещение верхнего элемента стека берется из регистраSP (указателя стека). Использовать для этой цели указатель базы ВР нельзя. Функции регистров SI и DI в строковых командах изменить нельзя, SI - это регистр индекса источника, а DI - регистр индекса приемника.

К третьей группе регистров МП 8086/8088 относятся сегментные регистры (см. рис.3.4). Они используются для задания текущих сегментов и обозначаются СS, DS, SS и ES. Каждый регистр обозначает конкретный текущий сегмент и функции их совершенно различны. ,

Регистр сегмента программы (CS) указывает на сегмент, который содержит текущую последовательность используемых команд. Процессор выбирает все команды из этого сегмента, используя содержимое указателя команд IP как относительный адрес. Содержимое регистра CS может быть изменено в результате выполнения команд переходов, прерывания и исключений, он не может быть загружен явным способом.

Регистр сегмента стека (SS) предназначен для вызова подпрограммы, передачи параметров и активизации процедур, которые обычно требуют области памяти, резервируемые под стек.

В отличие от CS регистр SS загружается явно с использованием команды программы.

Регистр сегмента данных (DS) и регистр дополнительного сегмента (ES) используются для адресации данных текущей исполняемой программой. Содержимое этих регистров загружается явным способом.

Сегмент, из которого извлекается операнд, может быть указан в форме команды специальным однобайтным префиксом. Он указывает, из какого текущего сегмента считывается операнд. При отсутствии префикса в формате команды операнд извлекается из текущего сегмента данных, но здесь возможны два случая:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5