Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Регистры состояния и управления



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

Регистр флагов Flags (F);

Регистр указателя команды IP.

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

Регистр флагов

CF (Carry Flag) – флаг переноса;

PF (Parity Flag) – флаг паритета;

AF (Auxiliary Flag) – вспомогательный флаг переноса;

ZF (Zero Flag) – флаг нуля;

SF (Sign Flag) – флаг знака;

OF (Overflow Flag) – флаг арифметического переполнения;

TF (Trap Flag) – флаг трассировки;

IF (Interrupt Flag) – флаг прерывания;

DF (Direction Flag) – флаг направления.

 

Таблица 5.5 Флаги состояния
№ бита Название Описание
CF (Carry Flag) - флаг переноса Устанавливается в 1, если результат математической операции не помещается в приемник или если при выполнении операции требуется заем. Также используется в командах сдвига.
PF (Parity Flag) - флаг паритета Устанавливается в 1, если младшие 8 бит результата операции содержат четное количество битов, равных 1.
AF (Auxiliary Flag) - вспомогательный флаг переноса Устанавливается в 1, если произошел заем или перенос для 3 бита результата.
ZF (Zero Flag) - флаг нуля Устанавливается в 1, если результат операции равен 0, иначе сбрасывается в 0.
SF (Sign Flag) - флаг знака Применяется при работе с числами со знаком, так как дублирует состояние старшего бита результата, который определяет его знак: 0 - результат является положительным числом, 1 - отрицательным.
OF (Overflow Flag) - флаг переполнения Применяется при работе с числами со знаком, так как устанавливается в 1, если результат операции выйдет за пределы допустимого значения для результата.

 

  Таблица 5.5 Продолжение Флаги управления
№ бита Название Описание
TF (Trap Flag) - флаг трассировки Если флаг установлен, то процессор переходит в режим покомандной работы. Используется при отладке программ отладчиками.
IF (Interrupt Flag) - флаг прерывания Если флаг установлен, то маскируемые аппаратные прерывания разрешены.
DF (Direction Flag) - флаг направления Задает направление обработки цепочек. Если флаг установлен, то значение регистров ESI и EDI при цепочечных операциях будет ав­томатически уменьшаться, то есть цепочки будут обрабатываться от конца к началу.

 

Формирование физического адреса в микропроцессоре Intel 8086

Адресное пространство микропроцессора i8086 составляет 1 Мбайт и обеспечивается 20-разрядной шиной адреса. Логически память разбивается на сегменты размером 64 Кбайт. Физический адрес (РА) памяти, поступающий на шину адреса микропроцессора, состоит из двух 16-битных частей - адреса сегмента (Seg) и исполнительного адреса (ЕА), суммируемых со смещением 4 бита. Сдвиг адреса сегмента на 4 бита влево эквивалентен его умножению на 16, т.е. физический адрес вычисляется как РА = 16 X Seg + ЕА. Адрес сегмента может храниться в одном из сегментных регистров: CS, DS, SS или ES.

Рис. 5.5 Формирование физического адреса

Исполнительный адрес, также называемый эффективным адресом, может быть константой, содержимым регистра, ячейки памяти или суммой нескольких величин (например, двух регистров и константы), но эта сумма является 16-разрядной, т.к. перенос игнорируется. Таким образом, физический адрес никогда не перейдет границу 64-килобайтного сегмента, на начало которого указывает текущий сегментный указатель.

 

Способы адресации микропроцессора

Регистровая адресация. Операнд (байт или слово) находится в регистре. Этот способ применим ко всем программно адресуемым регистрам микропроцессора.

Пример:

push es

mov dx, cx

xchg al, ah

Непосредственная адресация. Операнд (байт или слово) записывается непосредственно в коде команды.

Пример:

mov ax, 2DF4h

mov dh, C2h

Прямая адресация к памяти. В команде указывается символическое обозначение ячейки памяти, над содержимым которой требуется выполнить операцию, либо ее адрес, заключенный в квадратные скобки.

Пример:

mov dl, _byte

Mov word, cx

mov [00C1], bh

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

Базовая и индексная адресация к памяти. В этом случае, относительный адрес ячейки памяти находится в регистре, обозначение которого заключается в квадратные скобки. При использовании регистра BX адресацию называют базовой, при использовании регистров SI или DI – индексной. При адресации через регистры BX, SI или DI в качестве сегментного регистра, по умолчанию, используется сегментный регистр DS. Однако, в случае необходимости можно заменить используемый по умолчанию сегментный регистр посредствам префикса замены регистра.

Пример:

mov dl, [bx]

mov es: [di], cx

mov [si], ax

Базовая и индексная адресации к памяти со смещением. Исполнительный адрес операнда определяется суммой содержимого базового или индексного регистра ( BX, BP, SI, DI ) и смещения, указанного в коде команды.

Пример:

mov dx, [di+12h]

mov [si+3FC0h], al

mov cx, mem[si]

mov 2[bp], dl

При этом возможно несколько вариантов записи:

Регистр вместе со смещением записывается в квадратных скобках;

Записывается мнемоническое обозначение некоторого массива элементов, после которого в квадратных скобках указывается базовый или индексный регистр;

Записывается числовое смещение, после которого в квадратных скобках базовый или индексный регистр;

При использовании регистра BP необходимо помнить, что в качестве сегментного регистра по умолчанию подразумевается регистр SS.

Базовая и индексная адресация к памяти со смещением использует не физический, а эффективный адрес ячейки памяти.

Для двухоперандных команд возможны 3 варианта размещения операндов:

1) источник и приемник в регистре;

2) источник в регистре, приемник в памяти;

3) источник в памяти, приемник в регистре.

Вариант, когда оба операнда в памяти запрещен!

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

[BX][SI]

[BX][DI]

[BP][SI]

[BP][DI]

Если в качестве базового регистра выступает BX, то в качестве сегментного регистра по умолчанию подразумевается регистр DS; при использовании в качестве базового регистра BP сегментным регистром по умолчанию считается SS. При необходимости можно явно указать требуемый сегментный регистр.

Пример:

mov cx, [bx][si]

mov [bp+di], ax

mov es: [bp+si], ah

 

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

Пример:

mov mem[bx][di], dx

mov 4[bp][si], ch

mov bx, [bx+di+0C21h]

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

mov dl, mem+3

mov dl, mem[bx]; в bx заранее занесено число 3

mov dl, [si][di]; в bx заранее занесено число 3, а в si – смещение mem приведут к загрузке в регистр DL четвертого элемента массива mem (если выполнятся условия приведенные в комментариях). Но, стоит отметить, что различные методы адресации занимают различный объем памяти и выполняются за различное число тактов микропроцес­сора. Таким образом, тщательный подбор методов адресации, используемых в вашем коде, может в какой- то степени увеличить скорость выполнения программы или уменьшить объем необходимой памяти, а иногда и то и другое.

Система команд микропроцессора изучается в другой дисциплине и поэтому в данном учебном пособии не приводится.

 

5.5 Контрольные вопросы и задания

1. Что входит в регистровую модель микропроцессора К1810ВМ86?

2. Какую структуру имеет регистр флагов?

3. Как используется бит направления DF?

4. Объясните назначение блоков в минимально укомплектованной микропроцессорной системе.

5. Чем отличаются минимальный и максимальный режимы работы микропроцессора?

6. Как формируются сигналы шины управления в системе средней сложности?

7. Опишите организацию памяти микропроцессора К1810ВМ86.

8. Как работает сумматор адреса микропроцессора К1810ВМ86?

9. Какие методы адресации использует микропроцессор К1810ВМ86?

10. Расскажите о назначении сегментных регистров.

11. Что такое эффективный адрес памяти?

12. Какой сегментный регистр будет использоваться для базово-индексной адресации через регистр BP?


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-22; Просмотров: 1217; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.031 с.)
Главная | Случайная страница | Обратная связь