Микропроцессор 8086 разделен на два функциональных блока: EU (исполнительный модуль) и BIU (шинный интерфейсный модуль).
ЕС (исполнительный блок)
Блок выполнения дает инструкции для BIU, в которых указывается, откуда следует извлечь данные, а затем декодировать и выполнять эти инструкции. Его функция заключается в управлении операциями с данными с использованием декодера команд и ALU. EU не имеет прямого соединения с системными шинами, как показано на рисунке выше, он выполняет операции над данными через BIU.
Давайте теперь обсудим функциональные части 8086 микропроцессоров.
ALU
Он обрабатывает все арифметические и логические операции, такие как операции +, -, ×, /, OR, AND, NOT.
Флаг Регистр
Это 16-битный регистр, который ведет себя как триггер, то есть он меняет свое состояние в соответствии с результатом, сохраненным в аккумуляторе. У этого есть 9 флагов, и они разделены на 2 группы — Условные Флаги и Контрольные Флаги.
Условные флаги
Он представляет результат последней выполненной арифметической или логической инструкции. Ниже приведен список условных флагов —
-
Флаг переноса — этот флаг указывает условие переполнения для арифметических операций.
-
Вспомогательный флаг — Когда операция выполняется в ALU, это приводит к переносу / кургану от нижнего полубайта (то есть D0 — D3) к верхнему полубайту (то есть D4 — D7), тогда этот флаг устанавливается, то есть перенос, данный битом D3 для D4 — флаг AF. Процессор использует этот флаг для выполнения двоичного преобразования в BCD.
-
Флаг четности — этот флаг используется для указания четности результата, т. Е. Когда младшие 8 битов результата содержат четное число единиц, устанавливается флаг четности. Для нечетного числа 1 флаг четности сбрасывается.
-
Флаг нуля — этот флаг равен 1, если результат арифметической или логической операции равен нулю, в противном случае он равен 0.
-
Флаг знака — этот флаг содержит знак результата, т. Е. Когда результат операции отрицательный, тогда флаг знака устанавливается в 1, а в 0.
-
Флаг переполнения — этот флаг представляет результат при превышении емкости системы.
Флаг переноса — этот флаг указывает условие переполнения для арифметических операций.
Вспомогательный флаг — Когда операция выполняется в ALU, это приводит к переносу / кургану от нижнего полубайта (то есть D0 — D3) к верхнему полубайту (то есть D4 — D7), тогда этот флаг устанавливается, то есть перенос, данный битом D3 для D4 — флаг AF. Процессор использует этот флаг для выполнения двоичного преобразования в BCD.
Флаг четности — этот флаг используется для указания четности результата, т. Е. Когда младшие 8 битов результата содержат четное число единиц, устанавливается флаг четности. Для нечетного числа 1 флаг четности сбрасывается.
Флаг нуля — этот флаг равен 1, если результат арифметической или логической операции равен нулю, в противном случае он равен 0.
Флаг знака — этот флаг содержит знак результата, т. Е. Когда результат операции отрицательный, тогда флаг знака устанавливается в 1, а в 0.
Флаг переполнения — этот флаг представляет результат при превышении емкости системы.
Контрольные Флаги
Флаги управления управляют операциями исполнительного блока. Ниже приведен список контрольных флагов —
-
Флаг прерывания — используется для одноэтапного управления и позволяет пользователю выполнять одну инструкцию за один раз для отладки. Если он установлен, то программа может быть запущена в одношаговом режиме.
-
Флаг прерывания — это флаг включения / отключения прерывания, то есть используемый для разрешения / запрета прерывания программы. Он установлен в 1 для состояния разрешения прерывания и в 0 для условия отключения прерывания.
-
Флаг направления — используется в строковой операции. Как следует из названия, когда оно установлено, к строковым байтам обращаются от старшего адреса памяти к младшему адресу памяти и наоборот.
Флаг прерывания — используется для одноэтапного управления и позволяет пользователю выполнять одну инструкцию за один раз для отладки. Если он установлен, то программа может быть запущена в одношаговом режиме.
Флаг прерывания — это флаг включения / отключения прерывания, то есть используемый для разрешения / запрета прерывания программы. Он установлен в 1 для состояния разрешения прерывания и в 0 для условия отключения прерывания.
Флаг направления — используется в строковой операции. Как следует из названия, когда оно установлено, к строковым байтам обращаются от старшего адреса памяти к младшему адресу памяти и наоборот.
Регистр общего назначения
Существует 8 регистров общего назначения: AH, AL, BH, BL, CH, CL, DH и DL. Эти регистры могут использоваться отдельно для хранения 8-битных данных и могут использоваться парами для хранения 16-битных данных. Допустимые регистровые пары: AH и AL, BH и BL, CH и CL, а также DH и DL. Это относится к AX, BX, CX и DX соответственно.
-
Регистр AX — Он также известен как регистр аккумулятора. Он используется для хранения операндов для арифметических операций.
-
Регистр BX — используется в качестве базового регистра. Он используется для хранения начального базового адреса области памяти в сегменте данных.
-
Регистр CX — он называется счетчиком. Он используется в инструкции цикла для хранения счетчика цикла.
-
Регистр DX — этот регистр используется для хранения адреса порта ввода / вывода для команды ввода / вывода.
Регистр AX — Он также известен как регистр аккумулятора. Он используется для хранения операндов для арифметических операций.
Регистр BX — используется в качестве базового регистра. Он используется для хранения начального базового адреса области памяти в сегменте данных.
Регистр CX — он называется счетчиком. Он используется в инструкции цикла для хранения счетчика цикла.
Регистр DX — этот регистр используется для хранения адреса порта ввода / вывода для команды ввода / вывода.
Регистр указателя стека
Это 16-битный регистр, который содержит адрес от начала сегмента до ячейки памяти, где слово было недавно сохранено в стеке.
BIU (блок шинного интерфейса)
BIU заботится обо всех передачах данных и адресов по шинам для ЕС, таких как отправка адресов, извлечение инструкций из памяти, чтение данных из портов и памяти, а также запись данных в порты и память. ЕС не имеет направления связи с системными автобусами, так что это возможно с BIU. ЕС и BIU связаны с внутренней шиной.
Он имеет следующие функциональные части —
Очередь инструкций — BIU содержит очередь инструкций. BIU получает до 6 байтов следующих инструкций и сохраняет их в очереди инструкций. Когда EU выполняет инструкции и готов к их следующей инструкции, он просто читает инструкцию из этой очереди команд, что приводит к увеличению скорости выполнения.
Выборка следующей инструкции во время выполнения текущей инструкции называется конвейерной обработкой .
Сегментный регистр — BIU имеет 4 сегментных шины, то есть CS, DS, SS & ES. Он содержит адреса команд и данных в памяти, которые используются процессором для доступа к ячейкам памяти. Он также содержит 1 указатель регистра IP, который содержит адрес следующей инструкции, выполняемой ЕС.
CS — это означает сегмент кода. Он используется для адресации области памяти в сегменте кода памяти, где хранится исполняемая программа.
DS — это означает сегмент данных. Он состоит из данных, используемых программой и доступных в сегменте данных по адресу смещения или содержимому другого регистра, который содержит адрес смещения.
SS — это означает сегмент стека. Он обрабатывает память для хранения данных и адресов во время выполнения.
ES — Это означает дополнительный сегмент. ES — это дополнительный сегмент данных, который используется строкой для хранения дополнительных данных назначения.
Указатель инструкции — это 16-битный регистр, используемый для хранения адреса следующей инструкции, которая должна быть выполнена.