В других регистрах содержатся данные или указатели на данные, размещенные в основной памяти. Ассемблерные программы обращаются к этим регистрам напрямую. Помимо регистров, процессор содержит другое аппаратное обеспечение, необходимое для работы, но программисту эти компоненты доступны только посредством команд.
Цикл процессора
Работа процессора 8088 (равно как и всех других вычислительных машин) сводится к выполнению команд в определенной последовательности. Процесс выполнения отдельной команды делится на несколько этапов:
1. С помощью регистра РС команда выбирается из кодового сегмента памяти.
2. К текущему значению счетчика команд прибавляется единица.
3. Выбранная команда декодируется.
4. Все необходимые для выполнения команды данные выбираются из памяти и (или) регистров процессора.
5. Команда выполняется.
6. Результаты выполнения команды сохраняются в памяти и (или) регистрах.
7. Начинается процесс выполнения следующей команды (переход к шагу 1).
Выполнение команды похоже на выполнение очень маленькой программы. Более того, в некоторых машинах для выполнения команд действительно предусмотрена небольшая программа (так называемая микропрограмма). Микропрограммы в подробностях рассматриваются в главе 4.
С точки зрения программиста, пишущего на ассемблере, в процессоре 8088 предусмотрено 14 регистров. Эти регистры выполняют функцию сверхоперативной памяти, с которой работают многочисленные команды; результаты, сохраняемые в них, меняются с очень большой частотой. Все эти регистры изображены на рис. В.2. Совершенно очевидно сходство между этим рисунком и окном трассера, приведенным на рис. В.1.
Рис. В.2. Регистры процессора 8088
Разрядность регистров процессора 8088 составляет 16 бит. Не существует ни одной пары полностью функционально идентичных регистров. В то же время некоторые из них близки по некоторым своим характеристикам, в связи с чем их подразделяют не несколько групп, что также отражено на рис. В.2. Эти группы мы сейчас и обсудим.
Регистры общего назначения
Регистры АХ, ВХ, СХ и DX входят в группу регистров общего назначения. Первый регистр в этой группе, АХ, называется регистром-сумматором. Он применяется для накапливания результатов вычислений и часто выступает в роли приемника результатов выполнения различных команд. Хотя каждый регистр способен решать множество разнообразных задач, результаты выполнения некоторых команд (в частности, команд умножения) отправляются в регистр АХ по умолчанию.
Второй регистр этой группы, ВХ, называется базовым регистром. По назначению он во многом аналогичен регистру АХ, но есть и одно существенное отличие. В ВХ можно записать адрес памяти, а затем выполнить команду, операнд которой располагается по этому адресу памяти. Другими словами, ВХ может содержать указатель на область памяти, а АХ — не может. Чтобы проиллюстрировать это утверждение, сравним две команды. Первая команда:
MOV АХ.ВХ
Эта команда копирует содержимое ВХ в АХ. Вторая команда:
M0V АХ,(ВХ)
Эта команда копирует в АХ содержимое слова памяти, адрес которого содержится в ВХ. В первом примере исходный операнд содержится в регистре ВХ; во втором примере фигурирует указатель на исходный операнд. В обоих примерах, как видите, для команды M0V заданы оба операнда: исходный (источник) и целевой (приемник). При этом целевой операнд указывается перед исходным.