Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / ЭВМ ответы на вопросы .docx
Скачиваний:
93
Добавлен:
08.12.2019
Размер:
255.75 Кб
Скачать

17. Регистры процессора. Типы регистров, их назначение.

Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самимпроцессором и большей частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистркоманд, к которому программист обратиться не может.

Типы регистров, их назначение

Регистры делятся на параллельные, последовательные и параллельно-последовательные

Параллельный статический регистр представляет собой совокупность D-триггеров в соответствии с рисунком 3.52, имеющих общие сигналы управления и синхронизации и индивидуальные информационные входы для приёма разрядов записываемого в регистр слова. Каждый разряд регистра в общем случае может иметь несколько информационных входов соответственно числу источников информации, подключаемых к входу регистра. Процессы записи и считывания информации в параллельных регистрах обычно разделены во времени, что позволяет использовать в разрядах регистра простейшие триггерные схемы.

их назначение:

По назначению регистры различаются на:

  • аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;

  • флаговые — хранят признаки результатов арифметических и логических операций;

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

  • индексные — хранят индексы исходных и целевых элементов массива;

  • указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);

  • сегментные — хранят адреса и селекторы сегментов памяти;

  • управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.

18. Язык Ассемблера. Директивы инициализации и описания данных. Директивы segment, Assume. Способы адресации.

Язы́к ассе́мблера (англ. assembly language) — машинно-ориентированный язык программирования низкого уровня. Его команды прямо соответствуют отдельным командам машины или их последовательностям, также он может предоставлять дополнительные возможности облегчения программирования, такие как макрокоманды, выражения, средства обеспечения модульности программ. Может рассматриваться как автокод (см. ниже), расширенный конструкциями языков программирования высокого уровня[1][2]. Является существенно платформо-зависимым. Языки ассемблера для различных аппаратных платформ несовместимы, хотя могут быть в целом подобны.

Программа на языке Assembler в соответствии с особенностями архитектуры компьютера (микропроцессора) состоит из сегментов.

 

Вспомним, что физически сегмент представляет собой область (блок) памяти, занятую командами и/или данными.

Адреса сегментов (адрес начала сегмента) хранятся в соответствующих сегментных регистрах.

Адреса команд/данных вычисляются относительно начала сегмента.

 

Микропроцессор имеет шесть сегментных регистров, посредством которых может одновременно работать:

-         с одним сегментом кода (CS);

-         с одним сегментом стека (SS);

-         с одним сегментом данных (DS);

-         с тремя дополнительными сегментами данных (ES,FS, GS).

 

Итак, исходный текст программы на языке Assembler разбивается на сегменты. Каждая программа содержит как минимум сегмент данных, сегмент стека, сегмент кода.

 

Для описания сегментов предназначены директивы сегментации.

Директивы сегментации подразделяются на

1)     стандартные (поддерживаются всеми трансляторами Assembler);

2)     упрощенные (поддерживаются транслятором TASM).

 

 

Стандартные директивы сегментации

 

Стандартно сегменты на языке Assembler описываются с помощью  директивы SEGMENT.

 

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

   

<имя сегмента> SEGMENT [тип выравнивания] [тип комбинирования]

                                  [класс сегмента] [тип размера сегмента]

          <тело сегмента>

<имя сегмента>  ENDS

 

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

 

С помощью директивы ASSUME можно сообщить транслятору, какой сегмент, к какому сегментному регистру «привязан», или, говоря боле точно, в каком сегментном регистре хранится адрес сегмента..

 

Формат директивы ASSUME:

           

ASSUME <сегментный регистр>:<имя сегмента>

 

Директивы SEGMENT и ASSUME - стандартные директивы сегментации.

Соседние файлы в папке тюмгу