Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Регистры процессора 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. Свободные биты отведены для использования в будущем.
Рис. 2. Схема расположения флагов в регистре PSW
|
|||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2020-12-09; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.193.232 (0.009 с.) |