Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0_МПиИСТС_Все главы.doc
Скачиваний:
518
Добавлен:
27.03.2016
Размер:
10.5 Mб
Скачать

5.2. Программная модель микропроцессора Intel 8086

Процессор имеет 14 регистров разрядностью 16 бит (рис. 5.4), операнды могут иметь разрядность 8 и 16 бит и представлять знаковые и беззнаковые двоичные и двоично-десятичные числа. Среднее время выполнения команды занимает 12 тактов синхронизации, один цикл обмена на внешней шине занимает 4 такта (без такта ожидания).

Рис. 5.4 Регистры микропроцессора i8086

5.2.1. Пользовательские регистры

Как следует из названия, пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся:

Восемь 16-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения (РОН)):

AX/AH/AL;

BX/BH/BL;

DX/DH/DL;

CX/CH/CL;

BP;

SI;

DI;

SP;

Четыре сегментных регистра:

CS, DS, SS, ES;

Регистры состояния и управления:

Flags (F), IP;

Многие из этих регистров приведены с наклонной разделительной чертой – это части одного большого 16-разрядного регистра. Их можно использовать в программе как отдельные объекты.

Отметим, также, что регистр IP недоступен программисту непосредственно для манипуляций, однако, его значение может изменяться косвенно, командами ветвления, вызова подпрограмм и выхода и подпрограмм.

5.2.2. Регистры общего назначения

Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устрой­ства (АЛУ), то их еще называют регистрами АЛУ:

AX/AH/AL (Accumulator register) – аккумулятор.Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;

BX/DH/BL (Base register) – базовый регистр, или регистр базы. Применяется для хранения базового адреса некоторого объекта, находящегося в памяти;

CX/CH/CL (Count register) – регистр-счетчик.Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды. К примеру, команда организации цикла loop, кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра CX;

DX/DH/DL (Data register) – регистрданных.Так же, как и регистр AX/AH/AL, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно, например, при умножении слов.

Следующие два регистра используются для поддержки так называемых цепочечных команд, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 16 или 8 бит:

SI (Source Index register) – индексисточника.Этот регистр используется цепочечными командами и содержит текущий адрес элемента цепочки-источника;

DI (Destination Index register) – индексприемника.Этот регистр используется цепочечными командами и содержит текущий адрес цепочки-приемника.

В архитектуре микропроцессора i8086, на программно-аппаратном уровне, поддерживается такая структура данных, как стек. Для работы со стеком микропроцессор имеет специальный набор команд, а в программной модели микропроцессора для этого существуют специальные регистры:

SP (Stack Pointer register) – регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека.

BP (Base Pointer register) – регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.

На самом деле, большинство из регистров могут использоваться при программировании для хранения операндов практически в любых сочетаниях. Но, как мы отметили выше, некоторые команды используют фиксированные регистры для выполнения своих действий. Это нужно обязательно учитывать. Использование жесткого закрепления регистров для некоторых команд уменьшает их функциональность, но позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит вам при необходимости хотя бы на несколько байт сэкономить память, занимаемую кодом вашей программы.