Управления.

Понятие программной модели IA-32.

Программная модель – набор ресурсов микропроцессора, необходимых для выполнения и хранения в памяти вычислительной системы команд программы, данных и информации о текущем состоянии программы и микропроцессора

Программную модель микропроцессора Intel составляют:

1 - пространство адресуемой памяти;

2 - набор регистров для хранения данных общего назначения;

3 - набор сегментных регистров;

4 - набор регистров состояния и управления;

5 - набор регистров устройства вычислений с плавающей точкой (сопроцессора);

6 - набор регистров целочисленного MMX-расширения, отображенных на регистры сопроцессора;

7 - набор регистров SSE-расширения с плавающей точкой;

8 - программный стек. Это специальная информационная структура, работа с которой предусмотрена на уровне машинных команд.

Регистры общего назначения используются в программах для хранения:

1 - операндов логических и арифметических операций;

2 - компонентов адреса;

3 - указателей на ячейки памяти.

Все регистры этой группы позволяют обращаться к своим «младшим» частям.

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

Сегментные регистры предназначены для обеспечения доступа к оперативной памяти.

 

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

Регистры состояния и управления – регистры, которые постоянно содержат информацию о состоянии микропроцессора или программы, команды которой в данный момент загружены на конвейер.

К этим регистрам относятся:

- регистр флагов EFLAGS/FLAGS (рисунок Ошибка! Источник ссылки не найден.);

- регистр указателя команды EIP/IP.

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

Регистр EIP/IP называется указателем команд (Instruction Pointer register). Регистр EIP/IP имеет разрядность 32/16 бит и содержит смещение или адрес следующей подлежащей выполнению команды. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра EIP/IP.

Регистр EFLAGS/FLAGS называется регистром флагов (flag register). Он предназначен для сигнализации процессору о его состоянии или о том, как выполнилась та или иная арифметическая или логическая команда. Разрядность регистра EFLAGS/FLAGS – 32/16 бит.

Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами.

Флаг – это бит, принимающий значение 1, если он установлен, и 0, если он сброшен.

За битами регистра флагов закреплены соответствующие имена. Исходя из особенностей использования, флаги регистра EFLAGS/FLAGS можно разделить на следующие три группы:

- 8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд. Флаги состояния регистра EFLAGS отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм;

- 1 флаг управления. Обозначается как df (Directory Flag). Он находится в десятом бите регистра EFLAGS и используется цепочечными командами.

- 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.

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