Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен информатика.doc
Скачиваний:
27
Добавлен:
25.04.2019
Размер:
464.38 Кб
Скачать
  1. Регистры центрального процессора. Сегментные регистры и указатель команд. Регистр флагов.

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

Доступ к регистрам осуществляется намного быстрее, чем к ячейкам памяти, поэтому использование регистров заметно уменьшает время выполнения программ.

Все регистры имеют размер двойного слова (32 разряда), за каждым из них закреплено определенное имя

Сегментные регистры cs — code segment, сегмент команд

ds — data segment, сегмент данных

ss — stack segment, сегмент стека

es, fs, gs дополнительный сегмент

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

Указатель команд eip/ip — intruction pointer register

Имеет разрядность 32/16 и содержит смещение следующей команды относительно содержимого сегментного регистра CS. Этот регистр недоступен программисту и меняется командами управления в программе. Мы с ним так же не будем непосредственно работать.

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

Содержит 32 разряда. Классификация флагов:

Флаги условий авт.меняются при выполнении команд и фиксируют те или иные свойства результата

Флаги состояний - сами по себе они не меняются, и менять их должна программа; состояние этих флагов оказывает влияние на дальнейшее поведение процессора.

Флаги условий:

CF (carry flag) – флаг переноса. Наиболее полезен в арифметических операциях над числами без знака; например, при сложении беззнаковых чисел получилась слишком большая сумма – с единицей переноса, которой нет места в ячейке, тогда флаг CF принимает значение 1, а если сумма укладывается в размер ячейки, то значение CF - 0.

OF (overlow flag) – флаг переполнения. Полезен в арифметических операциях над числами со знаком; например, если при сложении или вычитании знаковых чисел получился результат, по модулю превосходящий допустимую величину (произошло переполнение мантиссы), тогда флаг OF получает значение 1, а если переполнения мантиссы не было – значение 0

ZF (zero flag) – флаг нуля. Устанавливается в 1, если результат команды оказался нулевым.

SF (sign flag) – флаг знака. Устанавливается в 1, если в операции над знаковыми числами получился отрицательный результат.

PF (parity flag) – флаг четности. Равен 1, если в 8 младших битах результата очередной команды содержится четное количество двоичных единиц. Учитывается обычно только в операциях ввода-вывода.

AF (auxiliary carry flag) – флаг дополнительного переноса. Фиксирует особенности выполнения операций над двоично-десятичными числами.

Флаги состояний:

DF (direction flag) – флаг направления. Устанавливает направление просмотра строк в строковых командах: при DF=0 строки просматриваются «вперед» (от начала к концу), при DF=1 – в обратном направлении.

IF (interrupt flag) – флаг прерываний. При IF=0 процессор перестает реагировать на поступающие к нему прерывания, а при IF=1 блокировка прерываний снимается.

TF (trap flag) – флаг трассировки. При TF=1 после выполнения каждой команды процессор делает прерывание, чем можно воспользоваться при отладке программы – для ее трассировки

Мнемокоды значений флагов

Имя флага

Назначение

Установлен

Сброшен

OF

Переполнение (да/нет)

OV

NV

DF

Направление (уменьшение/увеличение)

DN

UP

IF

Прерывания (включены/отключены)

EI

DI

SF

Знак (отрицательный/положительный)

NG

PL

ZF

Нуль (да/нет)

ZR

NZ

AF

Вспомогательные перенос (да/нет)

AC

NA

PF

Четность (чет/нечет)

PE

PO

CF

Перенос (да/нет)

CY

NC