Регистры процессора Intel 8086 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Регистры процессора Intel 8086



Рассмотрим регистры на примере базового процессора Intel 8086, который содержит всего 14 двухбайтовых регистров. В современных процессорах их гораздо больше и большей разрядности. Однако в качестве базовой модели, в частности, для языка ассемблера, используется 14-регистровая память процессора. Регистры процессора образуют так называемую микропроцессорную память (МПП).

МПП Intel 8086 состоит из следующих регистров:

1. Регистры общего назначения (РОН), или универсальные: AX – (AH, AL), BX – (BH, BL), CX – (CH, CL), DX – (DH, DL). Могут использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком как двухбайтовым, а можно раздельно с каждой его однобайтовой половиной.

Каждый из РОН может иметь специализированное назначение при выполнении некоторых конкретных команд. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:

ax/ah/al (Accumulator register)аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно. Например, при выполнении операций умножения и деления используется для хранения первого числа, участвующего в операции, и результата операции после ее завершения.

bx/bh/bl (Base register)базовый регистр. Применяется для хранения базового адреса некоторого объекта в памяти (например, массивов).

cx/ch/cl (Count register)регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра cx.

dx/dh/dl (Data register) – регистр данных. Так же, как и регистр ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно. Используется как расширение регистра - аккумулятора при работе с 32- разрядными числами.

2. Регистры смещений: SP, BP, SI, DI. Являются неделимыми двухбайтовыми регистрами и предназначены для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов).

В архитектуре процессора на программно-аппаратном уровне поддерживается такая структура данных, как стек. Для работы со стеком в системе команд микропроцессора есть специальные команды, а в программной модели микропроцессора для этого существуют специальные регистры:

SP (Stack Pointer) – смещение вершины стека. Содержит указатель вершины стека в текущем сегменте стека.

BP (Base Pointer) – смещение начального адреса поля памяти, непосредственно отведённого под стек. Предназначен для организации произвольного доступа к данным внутри стека.

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

si (Source Index)индекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике.

di (Destination Index)индекс приемника (получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.

Большинство из перечисленных регистров могут использоваться при программировании для хранения операндов практически в любых сочетаниях. Но некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать.

3. В программной модели микропроцессора имеется четыре сегментных регистра: cs, ss, ds, es. Фактически в этих регистрах содержатся адреса памяти, с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Текущий сегмент можно указать с помощью загрузки соответствующего сегментного регистра.

Процессор поддерживает следующие типы сегментов:

1) сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register)сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ процессор;

2) сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register)сегментный регистр данных, который хранит адрес сегмента данных текущей программы;

3) сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком процессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register)сегментный регистр стека, содержащий начальный адрес сегмента стека;

4) дополнительный (расширенный) сегмент данных. Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds. Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще дополнительный сегмент данных. Но, в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительного сегмента данных его адрес требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде. Адрес дополнительного сегмента данных должен содержаться в регистре es (extension data segment registers).

4. В процессор включены несколько регистров, которые постоянно содержат информацию о состоянии, как самого микропроцессора, так и программы, команды которой в данный момент загружены на исполнение. К этим регистрам относятся:

Регистр указателя команды IP – имеет размер два байта и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра CS в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра ip.

Регистр флагов flags, или слово состояния процессора (PSW – Processor State Word), имеет размер два байта и содержит одноразрядные признаки или флаги.

Всего в регистре девять флагов: шесть из них условные, или статусные, отражают результаты операций, выполненных ОУ, остальные три – управляющие, определяют режим исполнения программы.

1. Статусные флаги. К ним относятся:

1.1. CF (Carry Flag) – флаг переноса. Устанавливается в 1, если при выполнении арифметических и некоторых операций сдвига возникает «перенос» из старшего разряда.

1.2. PF (Parity Flag) – флаг чётности. Проверяет младшие 8 битов результатов над данными. Чётное число единиц приводит к установке этого флага в 1, нечётное – в 0.

1.3. AF (Auxiliary Carry Flag) – флаг логического переноса в двоично-десятичной арифметике. Устанавливается в 1, если арифметическая операция приводит к переносу или займу четвёртого справа бита однобайтового операнда. Используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII.

1.4. ZF (Zero Flag) – флаг нуля. Устанавливается в 1, если результат операции равен 0, в противном случае ZF обнуляется.

1.5. SF (Sign Flag) – флаг знака. Устанавливается в 1, если результат арифметической операции является отрицательным, в 0, если результат положительный.

1.6. OF (Overflow Flag) – флаг переполнения. Устанавливается в единицу при арифметическом переполнении, когда результат выходит за пределы разрядной сетки.

2. Управляющие флаги. К ним относятся:

2.1. TF (Trap Flag) – флаг трассировки. Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы.

2.2. IF (Interrupt Flag) – флаг прерываний. При нулевом состоянии этого флага прерывания запрещены, при единичном – разрешены (о механизме прерываний речь пойдёт в следующей главе).

2.3. DF (Direction Flag) – флаг направления. Используется в строковых операциях для задания направления обработки данных; при единичном состояния строки обрабатываются «справа налево», при нулевом – «слева направо».

Расположение флагов в регистре PSW показано на рисунке 2. Свободные биты отведены для использования в будущем.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
        OF DF IF TF SF ZF   AF   PF   CF

Рис. 2. Схема расположения флагов в регистре PSW



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.193.232 (0.009 с.)