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

К регистрам общего назначения относятся:

• AX (Accumulate – регистр-аккумулятор);

• ВХ (Base – базовый регистр);

• СХ (Count – регистр счетчика);

• DX (Data – регистр данных);

• SP (Stack Pointer – указатель стека);

• ВР (Base Pointer – указатель базы);

• DI (Destination Index – индекс приемника); .

• SI (Source Index – индекс источника).

Хотя многие команды процессора работают с какими-то определенными регистрами, например команды пересылки строк – с регистрами Dl и SI, умножения и деления – с регистрами DX и АХ, перекодировки – с регистром ВХ и т. д., все регистры общего назначения могут почти без ограничений участвовать в арифметических и логических операциях. Каждый из регистров АХ, ВХ, СХ и DX может рассматриваться не только как один 16-разрядный, но и как два восьмиразрядных. В этом случае байт, содержащий биты с 0 по 7, называется младшим (Low), а с 8 по 15 - старшим (High). Обращение к этим восьмиразрядным регистрам осуществляется по именам АН, AL, ВН, BL, СН, CL, DH и DL.

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

• CS (Code Segment – сегмент кода);

• DS (Data Segment –сегмент данных);

• SS (Stack Segment – сегмент стека);

• ES (Enhanced Segment – дополнительный сегмент данных).

Значения, находящиеся в регистрах DS, SS и ES, используются совместно со значениями, находящимися в регистрах общего назначения, для вычисления эффективных адресов данных.

Для определения эффективного адреса очередной команды, предназначенной для выполнения процессором, используется значение сегмента, находящееся в регистре CS, и значение смещения, находящееся в регистре адреса команды IP (Instruction Pointer). Регистр IP не может непосредственно использоваться в ассемблерных программах.

Флаговый регистр тоже имеет длину 16 разрядов и используется строковыми, арифметическими и логическими командами, а также для отражения результатов выполнения команд сравнения. Кроме того, содержимое флатового регистра может анализироваться командами условных переходов и самим процессором для выполнения тех или иных действий. Во всех случаях выполняется обращение к отдельным разрядам флагового регистра, называемых флагами, каждый из которых имеет свое название и назначение:

• О (Overflow) – флаг переполнения. Указывает, что в результате выполнения арифметической команды возникло переполнение старшего разряда результата.

• D (Direction) – флаг направления. Определяет, в каком направлении будут пересылаться данные строковыми командами - от младших адресов к старшим или наоборот.

• I (Interrupt) – флаг разрешения прерываний. Указывает на возможность внешних прерываний.

• Т (Trap) – флаг пошагового выполнения. Устанавливает выполнение команд процессора в пошаговом режиме (для отладки программ).

• S (Sign) – знаковый флаг. Содержит знак результата после выполнения арифметических операций (0 = '+', 1 = '-').

• Z (Zero) – флаг ноля. Содержит 1, если результат арифметической операции или операции сравнения ненулевой, в противном случае содержит 0.

• A (Auxiliary) – дополнительный флаг переноса. Используется некоторыми арифметическими командами и содержит значение переноса из 3-го бита восьмибитовых данных.

• Р (Parity) – флаг контроля четности. Содержит 1, если сумма единиц в восьми младших разрядах регистра является четным числом, или 0, если она нечетна (Р=1 для числа 0101 и для ОНО).

• С (Carry) – флаг переноса. Используется арифметическими командами и командами сдвигов.

Ниже приведена схема флагового регистра с обозначением размещения в нем отдельных флагов. Биты, обозначенные как X, программами на ассемблере не используются.

15____________________________________0_ fxTxlxxlOlDlllTlSlZlxlAlxlPlxlCl

Наши рекомендации