Реферат: Учебное пособие (экспериментальный
МИНИСТЕРСТВО ОБРАЗОВАНИЯ
И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ,
МЕХАНИКИ И ОПТИКИ
Кафедра вычислительной техники
П.С.Довгий, В.И.Поляков
Прикладная архитектура процессора Intel 8086
Учебное пособие
(экспериментальный вариант)
Часть I
Санкт-Петербург
2006
СОДЕРЖАНИЕ
Прикладная архитектура процессора Intel 8086 1
1. ТИПЫ И ФОРМАТЫ АППАРАТНО ПОДДЕРЖИВАЕМЫХ ДАННЫХ 2
1.1. ЧИСЛА С ФИКСИРОВАННОЙ ЗАПЯТОЙ 3
1.2. ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ЦЕЛЫХ ЧИСЕЛ 5
1.3. ЧИСЛА С ПЛАВАЮЩЕЙ ЗАПЯТОЙ 7
1.5. ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ 9
1.6. ТОЧНОСТЬ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ 10
1.7. ДЕСЯТИЧНЫЕ ЧИСЛА 11
2. РЕГИСТРОВАЯ СТРУКТУРА (ПРОГРАММНАЯ МОДЕЛЬ) ПРОЦЕССОРА 14
2.1. ОБЩЕЕ ПРЕДСТАВЛЕНИЕ 14
2.2. РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ 14
2.3. СЕГМЕНТНЫЕ РЕГИСТРЫ 16
2.4. РЕГИСТР ФЛАГОВ 17
3. ОСНОВНЫЕ РЕЖИМЫ АДРЕСАЦИИ, ИСПОЛЬЗУЕМЫЕ В ЭВМ 19
3.1. КЛАССИФИКАЦИЯ ОСНОВНЫХ РЕЖИМОВ АДРЕСАЦИИ 19
3.2. РЕЖИМЫ АДРЕСАЦИИ ПРОЦЕССОРА INTEL 8086 22
И СПОСОБЫ ИХ ЗАДАНИЯ 22
4. ОСНОВНЫЕ ФОРМАТЫ КОМАНД 26
5. ПРИНЦИПЫ РАЗМЕЩЕНИЯ В ОП ЕДИНИЦ ИНФОРМАЦИИ 29
ФИКСИРОВАННОЙ ДЛИНЫ 29
6. ПРИНЦИПЫ ФОРМИРОВАНИЯ ФИЗИЧЕСКОГО АДРЕСА. 31
^ 1. ТИПЫ И ФОРМАТЫ АППАРАТНО ПОДДЕРЖИВАЕМЫХ ДАННЫХ
В первом приближении информацию, используемую в ЭВМ, можно разделить на команды, адреса и данные.
Под аппаратной поддержкой данных определенного типа, представленных в некотором формате, понимается наличие в системе команд ЭВМ таких команд, которые предназначены для обработки данных этого типа, представленных в соответствующем формате.
Классификация данных см. рис.1.1.
Рис. 1.1. Классификация данных
^ 1.1. ЧИСЛА С ФИКСИРОВАННОЙ ЗАПЯТОЙ
Их деление на 2 типа (дробные и целые) определяется местоположением запятой в числе: слева (перед старшим разрядом) – дробные числа, справа (после младшего разряда) – целые числа.
Дробные числа как таковые в современных ЭВМ не используются. Они используются лишь для представления мантисс в числах с плавающей запятой.
В правильных дробях целая часть нулевая, в неправильных –не нулевая.
Отличие знаковых и беззнаковых чисел состоит в интерпретации крайнего левого (старшего) бита числа. В знаковых целых числах он интерпретируется как знак числа (0 – "+", 1 – "-"), в беззнаковых целых числах – как старшая цифра числа.
Особенностью представления знаковых целых чисел является использование дополнительного кода. Дополнительный код n-разрядного целого числа Х определяется по правилу:
(1.1)
В свою очередь под прямым кодом знакового числа подразумевается его представление в виде:
(1.2)
Во многих литературных источниках предлагается считать, что дополнительный код положительного числа совпадает с его прямым кодом.
Прямой код отрицательного числа образуется путем записи единицы в знаковый разряд и модуля числа в цифровые разряды.
Пример 1.1.а. – Представление чисел [+50] и [-50] в байтном формате (n = 8) в прямом коде.
[+50]ПК = 0.0110010
[-50]ПК = 1.0110010
Прямой код для представления отрицательных чисел в современных ЭВМ не используется, его целесообразно использовать лишь при ручных операциях для проверки корректности отрицательного результата, представленного в дополнительном коде.
Исходя из приведенного выше правила получения дополнительного кода отрицательного числа, необходимо выполнить вычитание модуля числа из константы 2n, представленной единицей в n+1 разряде и n нулями.
П
ример 1.1.б. – Представить число [-50] в дополнительном коде.
На принципе, рассмотренном в примере, основывается аппаратная поддержка преобразования чисел из прямого кода в дополнительный или из дополнительного в прямой. В процессоре Intel 8086 это преобразование реализуется с помощью команды NEG (изменение знака). Выполнение этой команды сводится к вычитанию операнда из нуля, что дает такой же результат как в примере 1.1.б.
Для ручного преобразования из прямого в дополнительный код можно использовать один из следующих способов:
1. Инвертирование всех разрядов прямого кода с последующим добавлением единицы в младший разряд.
2. Младшие нули, включая первую младшую единицу, прямого кода сохраняются и в дополнительном коде, а остальные разряды инвертируются.
Примечания:
Если инвертирование распространяется на старший (крайний левый) разряд, интерпретируемый как знак, то преобразование из прямого кода в дополнительный меняет знак числа.
Если инвертирование не распространяется на старший (крайний левый) разряд, интерпретируемый как знак, то преобразование из прямого кода в дополнительный не меняет знак числа.
Преобразование из дополнительного кода в прямой осуществляется по аналогичным правилам, что и преобразование из прямого кода в дополнительный код.
^ 1.2. ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ЦЕЛЫХ ЧИСЕЛ
Диапазон для знаковых чисел:
(1.3)
Диапазон представления целых знаковых чисел (см. формулу 1.3) не симметричен относительно нуля, как бы сдвинут на 1 единицу в отрицательную область, что объясняется тем фактом, что к области положительных чисел относится и ноль. Из этого следует, что максимальное по модулю отрицательное число не имеет аналога в области положительных чисел. Попытка изменения знака у этого числа (например, с помощью команды NEG) приводит к переполнению формата.
Для байтного формата (n = 8) диапазон знаковых целых чисел:
(1.4.а)
Для двухбайтного формата (n = 16) диапазон знаковых целых чисел:
(1.4.б)
Представление границ диапазона знаковых чисел в байтном формате:
10000000
-128 =
7 0
01111111
127 =
7 0
Диапазон для беззнаковых чисел:
(1.5)
Для байтного формата (n = 8) диапазон беззнаковых целых чисел:
Для двухбайтного формата (n = 16) диапазон беззнаковых целых чисел:
Аппаратная поддержка целых чисел как знаковых, так и беззнаковых, осуществляется на уровне арифметических команд, причем в командах сложения ADD и вычитания SUB отсутствует разделение представляемых операндов и, соответственно, результатов на знаковые и беззнаковые целые. Соответствующая интерпретация используемых чисел при программировании на ASSEMBLER возлагается на программиста.
Единственное аппаратное отличие знаковых чисел от беззнаковых проявляется в способе фиксации переполнения при сложении. Для знаковых чисел переполнение фиксируется с помощью флага OF, а для беззнаковых чисел с помощью флага CF. Для команды вычитания флаг OF фиксирует переполнение при знаковой интерпретации чисел. Установка же флага CF при беззнаковой интерпретации свидетельствует о том, что результат вычитания отрицательный (уменьшаемое меньше вычитаемого) и представлен в дополнительном беззнаковом коде.
Пример 1.2. – Выполнить операцию сложения чисел А=59 и В=73 с одинаковыми знаками.
n = 8
|A|=59=(111011)2
|
B|=73=(1001001)2
Д
ля знаковой интерпретации полученный результат является некорректным вследствие возникшего переполнения, для беззнаковой интерпретации результат операции корректен.
В приведенном примере сложения отрицательных знаковых операндов результат оказывается некорректен как для знаковой интерпретации, так и для беззнаковой интерпретации чисел. О некорректности беззнакового сложения можно судить по наличию переноса из старшего разряда, который аппаратно фиксируется во флаге CF. О наличии переполнения при знаковом сложении можно судить с использованием одного из двух способов:
Сравнение знаков операндов и результата.
Если знаки операндов одинаковы, а знак суммы отличается от них – фиксируется переполнение.
Сравнение переносов из старшего цифрового разряда в знаковый и из знакового разряда за пределы формата.
Если один из этих переносов имеет место, а другой отсутствует, то фиксируется переполнение. Именно этот способ используется для фиксации переполнения в процессорах фирмы Intel.
Если при сложении переполнение может иметь место только при одинаковых знаках операндов, то при вычитании - только при разных знаках операндов.
П
ример 1.3. - Выполнить операцию вычитания чисел А=59 и В=73 с разными знаками.
Фиксация переполнения в операциях знакового вычитания по аналогии с операцией сложения может осуществляться одним из двух способов:
1. Сравнение знаков операндов и результата.
Если знаки операндов различны и знак результата отличается от знака первого операнда (уменьшаемого), фиксируется переполнение.
Сравнение заемов из знакового разряда в старший цифровой и в знаковый разряд из-за пределов формата.
Если один из этих заемов имеет место, а другой отсутствует, фиксируется переполнение. Если оба заема либо отсутствуют, либо имеют место, результат знакового вычитания корректен.
^ 1.3. ЧИСЛА С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
Форма с плавающей запятой используется для представления так называемых действительных чисел, которые в обобщенном виде представляются как:
(1.6)
где signA – знак числа А (0 – для положительных, 1 – для отрицательных),
МА – мантисса числа А,
S – основание порядка,
РА – порядок числа А.
В классическом представлении мантисса числа представляется правильной дробью со старшей значащей цифрой.
Порядок числа представляет собой целое число со знаком.
В качестве основания порядка в современных ЭВМ используется ^ S = 2 (двоичное представление мантиссы) и S = 16 (16-ричное представление мантиссы). Основание 2 используется в миникомпьютерах, а 16 – в компьютерах типа Main Frame, а также в суперЭВМ.
- примеры записи чисел в форме (1.6) с десятичным представлением мантиссы (S=10).
Основными особенностями представления чисел с плавающей запятой в современных ЭВМ являются:
1. Преимущественное использование так называемых нормализованных чисел.
Число с плавающей запятой называется нормализованным, если старшая цифра его мантиссы является значащей (не ноль).
Подавляющее использование именно нормализованных чисел связано с требованиями повышения точности при выполнении различных операций, т.к. именно нормализованные числа обладают наименьшей погрешностью по сравнению с ненормализованными.
2. Порядок числа представляется не как целое число со знаком в явном виде, а в виде беззнакового числа, называемого смещенным порядком или характеристикой. При этом характеристика отличается от порядка на некоторую фиксированную для данного формата величину, называемого смещением (или смещением порядка).
ХА = РА + d (ХА – характеристика числа А, d – смещение порядка). (1.7)
Существует 2 подхода к выбору величины смещения:
1) Величина смещения равна весу старшего разряда смещенного порядка (характеристики).
2) Величина смещения равна весу старшего разряда смещения порядка, уменьшенного на 1.
Первый подход используется в основном в больших ЭВМ, второй в миникомпьютерах, в том числе в ПК.
3. Для представления чисел с плавающей запятой в рамках конкретной модели ЭВМ используется несколько форматов, как правило, 2 или 3, отличающихся разрядностью мантиссы и, в некоторых случаях, порядка. Эти форматы, как правило, носят название:
1) короткий формат (32 бита) или формат одинарной точности;
2) длинный формат (64 бита) – формат двойной точности;
3) расширенный формат (128 или 80 бит) – формат расширенной точности.
Для последнего формата длина 128 бит является типичной для больших ЭВМ, а 80 бит – для миникомпьютеров, в том числе и для ПК.
Использование разнообразных форматов позволяет реализовать различные требования к точности и, возможно, диапазону представления чисел. При выборе формата для конкретных вычислений следует исходить из точности вычислений и их скорости.
В использовании различных форматов в современных ЭВМ существуют 2 тенденции к расширению форматов:
1) формат расширяется только за счет увеличения разрядности мантиссы (разрядность порядка сохраняется).
2) формат расширяется за счет увеличения как мантиссы, так и порядка.
В первом случае расширение формата сопровождается только увеличением точности при неизменном диапазоне представления чисел.
Во втором случае расширение формата приводит как к увеличению точности, так и диапазона представления чисел.
Первый подход к расширению формата в основном используется в больших ЭВМ, а второй – в ПК.
4. Независимо от знака числа мантисса чисел с плавающей запятой представляется в прямом коде.
^ 1.4. ОСОБЕННОСТИ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ
С ПЛАВАЮЩЕЙ ЗАПЯТОЙ В ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРАХ
Эти особенности регламентируются международным стандартом IEEE-754. Этот стандарт, кроме особенности представления чисел, оговаривает также все особые ситуации, связанные с обработкой чисел с плавающей запятой и стандартные реакции на эти ситуации.
1. В качестве основания порядка используется S = 2.
2. Мантисса числа представляется неправильной дробью, имеющей одну цифру в целой части. Вследствие того, что, как правило, используются только нормализованные числа с обязательной единицей в целой части мантиссы, эта единица в формате не представляется, а лишь подразумевается и носит название скрытая единица (скрытый разряд).
Скрытая единица имеет место только в коротком и длинном форматах. В расширенном формате она представляется явно.
3. Различные форматы имеют следующую структуру (см. рис.1.2):
Рис. 1.2. Форматы чисел
4. Порядок числа представляется со смещением в виде беззнакового целого числа, называемого характеристикой. Величина смещения равна весу старшего разряда характеристики, уменьшенному на 1.
Для различных форматов величина смещения различна и составляет:
КФ: d = 27 – 1 = 127,
ДФ : d = 210 – 1 = 1023,
РФ: d = 214 – 1 = 16383.
^ 1.5. ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
Его принято определять в отношении модуля нормализованного числа.
В общем виде диапазон представляется следующим двойным неравенством:
(1.8)
Диапазон представления нормализованной мантиссы, представленной неправильной m-разрядной дробью с обязательной единицей в целой части, имеет вид:
(1.9)
С учетом того, что единица целой части является скрытой для короткого и длинного форматов, диапазон представления мантиссы преобразуется:
(1.10)
При достаточно больших значениях m правую границу мантиссы можно считать с большой степенью точности равной 2.
Диапазон порядка как целого знакового числа определяется из диапазона характеристики.
При использовании n разрядов под характеристику ее диапазон как целого беззнакового числа определяется в виде:
(1.11)
Стандартом IEEE 754 (854) предусматривается зарезервирование крайних значений характеристики для представления специальных значений типа NAN (Not A Number), , ¤ (неопределенность), 0, а также денормализованных чисел. Таким образом, при определении реального диапазона характеристики и, следовательно, порядка следует исходить из неравенства (1.12):
(1.12)
На числовой оси диапазон представления располагается симметрично относительно нуля:
Рис. 1.3. Диапазон представления чисел
При выполнении арифметических операций результат операции может выходить за диапазон представления чисел.
Получение результата, меньшего по модулю минимального представления числа, приводит к особому случаю исчезновения порядка (ИП), а получение результата, по модулю большего максимального представления числа, к особому случаю переполнения порядка (ПП).
Эти случаи фиксируются специальными флагами особых случаев, которые размещаются в регистре состояний АСП (FPU) – арифметического сопроцессора (Floating Point Unit).
Возникновение особых случаев может служить причиной для прерывания выполняемой программы.
В терминологии фирмы Intel особый случай исчезновения порядка называется антипереполнением.
Как правило, стандартной реакцией на особый случай антипереполнения является присвоение результату значения 0. В стандарте предусматриваются 2 возможных значения 0 – положительное и отрицательное, отличающихся значением знакового разряда при нулевых значениях характеристики и мантиссы.
^ 1.6. ТОЧНОСТЬ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
В общем случае числа с плавающей запятой представляются в ограниченном формате приближенно. Точность представления чисел принято характеризовать абсолютной и относительной погрешностью.
^ Абсолютная погрешность является знаковой величиной и определяется как разность между приближенным (машинным) представлением числа и его точным значением.
(1.13)
В свою очередь относительная погрешность есть беззнаковая величина, определяемая в виде:
(1.14)
В отношении форматов точность представления, как правило, задается максимальной относительной погрешностью представления чисел, инвариантной к способу их округления.
Для различных форматов значения погрешности:
(1.15)
^ 1.7. ДЕСЯТИЧНЫЕ ЧИСЛА
Десятичные числа представляются в двоично-кодированной форме с использованием либо упакованного (РАСK), либо неупакованной (UNPACK) формата.
В упакованном формате в каждом байте числа кодируются две цифры, в неупакованном – одна.
Для кодирования десятичных цифр используется в основном естественный двоичный код, обычно называемый 8421.
В этом коде:
0 – 0000
1 – 0001
…
9 – 1001
Частным случаем неупакованного формата является код ASCII (American Standart Code for Interchangе Information), используемый в ПК. В этом коде десятичная цифра представляется в младшей тетраде байта, а старшая тетрада принимает стандартное значение 0011.
Упакованный формат обычно называют BCD-форматом (или BCD-числом – Binary Coded Decimal).
Пример 1.4.
Для кодирования знаков используются специальные ASCII-символы.
Д
есятичные числа используются в ЭВМ на этапах ввода и вывода информации.
Классическая схема выполнения действий над числами в ЭВМ имеет вид (см. рис.1.4):
Рис. 1.4. Схема выполнения действий над числами в ЭВМ
В классической схеме (рис. 1.4) предполагается, что компьютер содержит двоичное АЛУ для выполнения операций над числами в двоичной системе счисления. Эта схема требует 2-кратного преобразования данных на этапе ввода и на этапе вывода. В зависимости от класса ЭВМ эти преобразования могут быть реализованы либо на аппаратном, либо на программном уровне.
При аппаратной реализации преобразования в системе команд процессора должны быть соответствующие команды. Так, например, система команд классической вычислительной системы 70-х годов IBM/370 включала в себя 2 команды - CDB (Convert Decimal to Binary), CBD (Convert Binary to Decimal) для преобразования десятичных чисел в двоичные (CDB) и двоичных чисел в десятичные (CBD).
В ПК подобных команд нет, т.е. преобразование реализуется на программном уровне.
Классическая схема обработки данных оказывается целесообразной только при решении так называемых научно-технических задач, которые характеризуются большим объемом вычислений при сравнительно небольшом объеме исходных данных.
А
льтернативой научно-технических задач являются так называемые коммерческие задачи, которые характеризуются сравнительно небольшим объемом вычислений при очень большом объеме обрабатываемых данных. Для задач этого типа более целесообразно выглядит следующая схема обработки данных (рис.1.5):
Рис.1.5. Схема обработки данных
Реализация этой схемы в рамках архитектуры компьютера требует наличия в составе центрального процессора десятичного АЛУ (естественно, наряду с двоичным). Как правило, наличие десятичного АЛУ является особенностью ЭВМ класса Main Frame (ЭВМ общего назначения). В ЭВМ этих классов, как правило, используется 3 специализированных АЛУ соответственно для выполнения операций над целыми числами, над числами с плавающей запятой и над десятичными числами.
В процессорах семейства Intel 80Х86 аппаратная поддержка десятичных данных реализуется на уровне команд десятичной (BCD) и ASCII-коррекции. Основным назначением этих команд является приведение результата двоичной операции над десятичными числами в упакованном или неупакованном форматах в корректную десятичную форму. Это означает формальную возможность программной реализации псевдодесятичной арифметики с использованием команд двоичной обработки и последующим применением команд коррекции.
^ 1.8. НЕЧИСЛОВЫЕ ДАННЫЕ
Логические значения – в них каждый бит стандартного формата несет собственную смысловую нагрузку. Аппаратная поддержка данных этого типа реализована на уровне логических команд, осуществляющих побитовую обработку.
^ Символьные значения – для описания любого символа представляющего собой букву, цифру, знак препинания и т.п., используется стандартная единица, длиной в байт. На уровне системы команд поддерживаются не столько одинарные символьные данные, сколько их элементарная структура, называемая строкой (цепочкой). Эти команды относятся к специальному классу команд обработки строк.
^ 2. РЕГИСТРОВАЯ СТРУКТУРА (ПРОГРАММНАЯ МОДЕЛЬ) ПРОЦЕССОРА
2.1. ОБЩЕЕ ПРЕДСТАВЛЕНИЕ
Регистровая структура процессора включает в себя 14 16-разрядных программнодоступных регистров и может быть представлена в следующем виде:
15 8 7 0
АН (100)
AL (000)
CH (101)
CL (001)
DH (110)
DL (010)
BH (111)
BL (011)
000 AX
001 CX
010 DX HL
011 BX
Адреса РОН 100 SP GPR (РОН)
101 BP PI
110 SI
111 DI
15 0
15 0
00 ES
01 CS
10 SS SR
11 DS
15 FR(FLAGS) 0
15 IP 0
Instruction Pointer
Рис.2.1. Регистровая структура процессора
Программно-доступные регистры разделяются на:
- регистры общего назначения (GPR – General Purpose Registers), группа включает 8 регистров;
- сегментные регистры (SR – Segment Registers), группа включает 4 регистра;
- регистр флагов (Flags);
- указатель команды (Instruction Pointer).
^ 2.2. РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ
В отношении функционального назначения регистров, образующих внутреннюю регистровую память процессоров, существуют 2 противоположных подхода, реализуемых в архитектуре ЭВМ:
1. Полная специализация регистров, т.е. каждый регистр используется только по одному конкретному назначению.
2. Полная универсализация регистров, т.е. каждый регистр может использоваться по любому назначению.
В процессорах фирмы Intel используется промежуточный подход, сочетающий в себе частичную специализацию и частичную универсализацию регистров. Это означает, что по умолчанию любой регистр используется как специализированный для определенной цели, и в то же время его можно использовать и для других целей как универсальный регистр.
Использование любого регистра по его прямому назначению сокращает длину объектного кода программы по сравнению с любым другим использованием регистра, так как использование регистра по назначению, как правило, предполагает его неявную адресацию (адрес регистра не задается, но подразумевается).
Функциональная специализация РОНов отражается в их наименованиях:
АХ – Accumulator (регистр-аккумулятор) – по умолчанию используется для задания одного из операндов команды и для представления результата.
СХ – Counter (счетчик) – по умолчанию используется, во-первых, как счетчик числа повторения циклов в команде "организация цикла" (LOOP); во-вторых, для задания числа сдвигов в командах сдвигов (его младший байт – CL); в-третьих, для задания числа элементов обрабатываемых строк (цепочек) в командах обработки строк (MOVS, CMPS и т.д.).
DX –Data (регистр данных) – по умолчанию используется как расширение аккумулятора со стороны старших разрядов в командах умножения и деления.
ВХ –Base (базовый регистр) – по умолчанию используется как базовая компонента эффективного адреса операнда, находящегося в памяти. (В терминологии фирмы Intel под эффективным адресом – Effective Address (ЕА) – понимается адрес операнда, формируемый программой (программный адрес).) Для получения физического адреса ячейки памяти, в которой находится операнд, осуществляется преобразование ЕА на основе простейшей модели сегментированной памяти (механизма сегментации).
SP – Stack Pointer (указатель стека) – по умолчанию используется для адресации вершины стека.
Вершина стека указывает на адрес последнего элемента, записанного в стек.
Стек представляет собой сегмент памяти. Стек растет в область младших адресов. Это означает, что при записи (включении в стек), например, по команде PUSH, сначала производится декремент SP (уменьшение) на 2, а затем запись в память по новому значению SP как адреса.
При чтении (извлечении) из стека, например, по команде POP, сначала производится чтение слова по адресу из SP, а затем инкремент (увеличение) содержимого SP на 2.
Работа со стеком реализуется на уровне слов, но не байт.
ВР – Base Pointer (указатель базы) – по умолчанию используется как базовая компонента эффективного адреса операнда в памяти по аналогии с ВХ.
Отличие в использовании содержимого регистров ВХ и ВР как базовых компонент ЕА состоит в том, что при использовании ВХ подразумевается обращение к сегменту данных, а при использовании ВР – к сегменту стека (но не через его вершину).
Подобный способ работы со стеком не через его вершину используется в программах на ASSEMBLER для обращения к параметрам процедуры, передаваемым через стек.
SI – Source Index (индекс источника) – по умолчанию используется для задания индексной компоненты ЕА, а также для адресации элементов строки-источника в командах обработки строк.
DI – Distination Index (индекс приемника) – по умолчанию используется аналогично SI для задания индексной компоненты ЕА, а также для адресации элементов строки-приемника в командах обработки строк.
Группу из 8 РОН принято делить на 2 части:
- группа HL (High – Low);
- группа PI (Pointer – Index).
Группу HL иногда называют регистрами данных, подразумевая ее преимущественное использование для операндов и результатов команд.
Регистры группы HL могут использоваться в командах в 2-байтном (полном) и в байтном (неполном) варианте.
Отдельные байты этих регистров используют то же наименование, что и полный регистр (A, C, D, B) с добавлением приставки L – младший, Н – старший, для соответствующих байтов регистра.
Группа PI или группа указателей-индексов может использоваться только в 2-байтном варианте.
Для адресации РОН, как полных, так и не полных, в машинной команде используются 3 двоичных разряда.
Двоичные адреса полных РОН приведены на рис.2.1 слева, а их отдельных байт - в скобках.
^ 2.3. СЕГМЕНТНЫЕ РЕГИСТРЫ
CS – Code Segment (сегмент кода – машинной программы),
SS – Stack Segment (сегмент стека),
DS – Data Segment (сегмент данных),
ES – Extra Segment (дополнительный сегмент).
Сегментные регистры используются для аппаратной поддержки простейшей модели сегментированной памяти, принятой в процессоре 8086. Их содержимое определяет базовые (начальные) адреса соответствующих сегментов в физической памяти. Использование 4 сегментных регистров предполагает, что в любой момент времени программа может работать (иметь доступ) с 4 сегментами памяти. С учетом того, что длина каждого сегмента составляет 216 байт = 64 Кбайт (16-разрядный адрес) физическое адресное пространство, доступное программе, составляет 256 Кбайт.
Шина адреса процессора Intel 8086 является 20-разрядной, что обеспечивает емкость адресного пространства 220 байт = 1 Мбайт. При формировании 20-разрядного физического адреса, содержимое соответствующего сегментного регистра смещается в сторону старших разрядов путем сдвига на 4 разряда влево. Таким образом, содержимое сегментных регистров представляет собой не сам физический начальный адрес сегмента, а его значение, уменьшенное на 16 (сегменты выровнены в памяти на границу параграфа).
Содержимое одного из сегментных регистров привлекается по умолчанию каждый раз при обращении процессора к памяти для формирования физического адреса, который и выставляется на шину адреса. Например, на этапе выборки команды по умолчанию привлекается регистр CS, при обращении к стеку – регистр SS. При обращении за операндом или при записи результата – регистр DS.
^ 2.4. РЕГИСТР ФЛАГОВ
ХХХХ
OF
DF
IF
TF
SF
ZF
X
AF
X
PF
X
CF
15 12 11 10 9 8 7 6 5 4 3 2 1 0
В регистре флагов актуальными являются только 9 битов, 6 из которых представляют собой арифметические флаги (флаги состояний) и 3 – флаги управления. Остальные 7 бит являются незадействованными (обозначаются Х).
Арифметические флаги формируются в основном арифметическими командами, определяя результат арифметических операций (точнее, они являются признаками результата). Кроме того, на арифметические флаги оказывают влияние логические команды и команды сдвигов. Флаги управления оказывают влияние на процесс выполнения программы.
К арифметическим флагам относятся:
CF – Carry Flag (флаг переноса). В нем фиксируется перенос из старшего разряда при сложении и заем в старший разряд при вычитании. При умножении значения флага CF определяет возможность (CF=0) или невозможность (CF=1) представления результата (произведения) в том же формате, что и сомножители.
С помощью флага переноса фиксируется переполнение при сложении беззнаковых чисел.
PF – Parity Flag – флаг паритета (четности). Он устанавливается при наличии четного числа единиц в младшем байте результата, в противном случае – сбрасывается. Этот флаг используется как аппаратная поддержка контроля по четности (нечетности).
AF – Аuxiliary Carry Flag (флаг вспомогательного переноса). В этом флаге фиксируется межтетрадный перенос при сложении и межтетрадный заем при вычитании. Значение этого флага используется командами десятичной и ASCII-коррекции сложения и вычитания. Этот флаг можно рассматривать как аппаратную поддержку операций над десятичными числами.
ZF – Zero Flag (флаг нуля). Он устанавливается при нулевом результате операции, в противном случае (ненулевой результат) - сбрасывается.
SF – Sign Flag (флаг знака). В него копируется старший (крайний левый) бит результата, интерпретируемый как знак.
OF – Overflow Flag (флаг переполнения). Он устанавливается в командах сложения и вычитания в случае, если результат операции не помещается в формате операндов. При этом как операнды, так и результат интерпретируются как знаковые целые числа. В аппаратную установку этого флага положен принцип фиксации переполнения по сравнению переносов из двух старших разрядов при сложении или заемов в два старших разряда при вычитании. Если один из переносов (заемов) имеет место, а другой отсутствует, то происходит переполнение формата (разрядной сетки). В командах умножения флаг OF выполняет ту же функцию, что и флаг CF (их значения совпадают).
К флагам управления относятся:
TF – Trace (Trap) Flag (флаг трассировки (ловушки)). При установке флага TF процессор переводится в так называемый отладочный (покомандный, пошаговый) режим работы. В этом режиме завершение выполнения любой команды сопровождается выходом на прерывание специального типа (стандартный тип 1 – прерывание по отладке).
DF – Direction Flag (флаг направления). Его значение используется командами обработки строк (цепочек) и определяет направление обработки: от меньших адресов к большим (слева на право) при DF=0 или от больших адресов к меньшим (справа на лево) при DF=1.
IF – Interrupt Flag (флаг прерываний). С помощью этого флага разрешаются (IF=1) или запрещаются (IF=0) внешние прерывания, запросы которых поступают на специальный вход INTR (Interrupt Requester). Этот вход обычно связан с микросхемой PIC (Programmable Interrupt Controller) – программируемый контроллер прерываний.
^ 2.5. РЕГИСТР IP (Instruction Pointer)
Содержимым регистра IP является так называемый продвинутый адрес команды. Это означает, что в момент выполнения какой-либо команды регистр IP указывает на адрес следующей команды.
В качестве адреса команды фигурирует адрес ее младшего байта (по адресации).
В связи с тем, что в базовой модели используется простейший двухступенчатый конвейер команд (I ступень – выборка команды; II ступень - остальные фазы (этапы) выполнения команды, к которым относятся: декодирование команды (определение типа), формирование адресов операндов, выборка операндов, выполнение операции в АЛУ, запись результата), фактическое содержимое регистра IP, который входит в блок предварительной выборки команд, указывает на очередной байт команды, выбираемый из памяти и помещаемый в специальный буфер, называемый очередью команд (IQ – Instruction Queue). Несмотря на этот факт, для выполняемой программы IP содержит адрес следующей команды. Фактически, на аппаратном уровне при необходимости использования IP (например, для его сохранения как адреса возврата) осуществляется соответствующая коррекция его содержимого с учетом числа байт, выбранных в IQ.
Конвейер команд служит одним из важнейших средств увеличения производительности компьютера. С его помощью реализуется параллелизм на уровне машинных команд. Это означает, что в любой момент времени в процессоре на стадии одновременного выполнения находится несколько последовательных машинных команд (по возрастанию адресов). Для аппаратной реализации конвейера команд отдельные фазы команды реализуются с помощью отдельных блоков конвейера. Блоки конвейера могут функционировать параллельно во времени независимо друг от друга. При использовании классического 6-ступенчатого конвейера команд (по числу фаз выполнения команды) и условии, что каждая фаза требует одинакового времени для реализации, полная загрузка конвейера команд в принципе обеспечивает 6-кратное увеличение производительности по сравнению с последовательным (бесконвейерным) процессором. В некотором смысле конвейер команд аналогичен производственному конвейеру.
^ 3. ОСНОВНЫЕ РЕЖИМЫ АДРЕСАЦИИ, ИСПОЛЬЗУЕМЫЕ В ЭВМ
Под режимом адресации обычно понимается способ формирования так называемого исполнительного адреса операнда и/или результата на основе информации, содержащейся в адресной части команды.
Фактически, исполнительный адрес является программным адресом. В некоторых случаях исполнительный адрес совпадает с физическим, т.е. именно по нему производится обращение к памяти. Однако в подавляющем большинстве случаев исполнительный адрес не является физическим, а требует дальнейшего преобразования в физический адрес, которое, как правило, осуществляется с использованием механизма сегментации и, возможно, страничной организации. (В терминологии фирмы Intel исполнительный адрес называется эффективным адресом – Effective Address – ЕА.)
^ 3.1. КЛАССИФИКАЦИЯ ОСНОВНЫХ РЕЖИМОВ АДРЕСАЦИИ
К основным режимам адресации принято относить следующие:
1. Прямая адресация;
2. Относительная адресация;
3. Косвенная адресация;
4. Непосредственная адресация;
5. Неявная адресация.
Прямая адресация и ее виды. Достоинства и недостатки прямой адресации
При использовании прямой адресации в адресной части команды задается сам адрес операнда. Различают 2 вида прямой адресации:
- прямая регистровая адресация;
- прямая адресация памяти.
П
оследнюю иногда называют абсолютной адресацией.
Рис.3.1. Прямая адресация
При иллюстрации режимов адресации предполагается, что исполнительный адрес является в то же
еще рефераты
Еще работы по разное
Реферат по разное
Учебное пособие Москва ● 2008 удк 343. 851. 5 Ббк 67. 518. 8-91
17 Сентября 2013
Реферат по разное
О. А. Ломовцева Основы антимонопольной деятельности Учебное пособие
17 Сентября 2013
Реферат по разное
О. Г. Носкова История психологии труда в России Учебное пособие
17 Сентября 2013
Реферат по разное
Психология и педагогика
17 Сентября 2013