Основные понятия. Существует множество различных формулировок понятия ЭВМ от достаточно простых и понятных до чрезмерно вычурных, которые, однако, схожи по своей сути. По Э. Таненбауму



страница9/20
Дата09.08.2018
Размер2.45 Mb.
#43700
ТипРешение
1   ...   5   6   7   8   9   10   11   12   ...   20

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.




Поделитесь с Вашими друзьями:
1   ...   5   6   7   8   9   10   11   12   ...   20




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница