Регистры ЦП - Разработка программ на языке Ассемблер и на языке HTML

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

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

Флаговые - хранение признаков результатов арифметических и логических операций.

Общего Назначения - хранение операндов арифметических и логических выражений, индексы, адреса.

Индексные - индексы исходящих и целевых элементов массива.

Указательные - указатели на специальные области памяти, указатели текущей операции, указатели базы, указатели стека.

Сегментные - адреса и селекторы сегментов памяти.

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

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

ЕАХ (Accumulator) - хранение промежуточных данных

EBX (Base) - хранение базового адреса

ECX (Counter) - регистр-счетчик применяется в командах, производящих некоторые повторяющееся действия, его использование зачастую не явно - скрыто в алгоритме работы команды.

EDX (Data)-хранение промежуточных данных. Данные Регистры являются 32-разрядными и делятся на две части по 16 бит, старшая часть - не доступна, а младшая тоже делится на две части по 8 бит.

Регистры указатели

ESI И EDI-индексы источника и приемника, используются при обработке длинных полей.

EBP И ESP-указатели базы и вершины, используются при работе со стеком. Эти регистры также 32-разрядные и имеют младшие 16-ти разрядные части SI, DI, BP, SP соответственно.

Сегментные регистры

Структура программы разделена на блоки - сегменты, выделяют следующие типы сегментов:

Сегмент Кода содержит команды программы, адрес сегмента кода с которым в настоящий момент работает программа располагается в сегментном регистре Сs.

Сегмент Данных содержит данные, которыми оперирует программа. Программа одновременно может работать с несколькими сегментами данных. Адрес основного сегмента данных располагается в регистре Ds, а дополнительных -- в Es, Gs, Fs.

Сегмент Стека - специальная область памяти, ее адрес располагаться в регистре Ss.

Сегментные регистры являются 16-разрядными.

Регистр указателя инструкций

EIP-32

IP-16

Содержит смещение следующей подлежащей выполнению команды относительно начала сегмента кода. После выполнения команды меняется автоматически.

Полный адрес команды формирует пара регистров CS:IP

Регистр флагов

EFLAGS-32

FLAGS-16

Биты этих регистров называются флагами.

Различают флаги состояния, управляющие, системные и зарезервированные флаги.

Флаг переноса CF

(Carry Flag) идентифицирует перенос или заем при выполнении арифметических операций, а также служит индикатором ошибки при обращении к системным функциям.

Флаг паритета PF

(Parity Flag) устанавливается в 1, если младшие 8 бит результата операции содержат четное число двоичных единиц.

Флаг вспомогательного переноса AF

(Auxiliary Flag) используется в операциях над упакованными двоично-десятичными числами.

Он идентифицирует перенос или заем из старшей тетрады (бита 4).

Флаг нуля ZF

(ZeroFlag) устанавливается в 1, если результат операции равен нулю.

Флаг знака SF

(SignFlag) показывает знак результата операции, устанавливаясь в 1 при отрицательном результате.

Флаг переполнения OF

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

Управляющий флаг трассировки TF

(TraceFlag) используется в отладчиках для осуществления пошагового выполнения программы. Если TF = 1, то после выполнения каждой команды процессор реализует процедуру прерывания 1 (через вектор прерывания с номером 1).

Управляющий флаг разрешения прерываний IF

(InterruptFlag) разрешает (если равен 1) или запрещает (если равен 0) процессору реагировать на прерывания от внешних устройств.

Управляющий флаг направления DF

(DirectionFlag) используется особой группой команд, предназначенных для обработки строк. Если DF = 0, строка обрабатывается в прямом направлении, от меньших адресов к большим; если DF = 1, обработка строки идет в обратном направлении.

Похожие статьи




Регистры ЦП - Разработка программ на языке Ассемблер и на языке HTML

Предыдущая | Следующая