![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 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; просмотров: 390; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.128.206.8 (0.01 с.) |